#pragma once

typedef enum {
    ASPECT_MODE_4_3,
    ASPECT_MODE_16_9,
    ASPECT_MODE_16_10,
    ASPECT_MODE_ANY,
} ASPECT_MODE;

typedef enum {
    INPUT_BACKEND_KEYBOARD,
    INPUT_BACKEND_CONTROLLER,
    INPUT_BACKEND_TOUCH,
    INPUT_BACKEND_NUMBER_OF,
} INPUT_BACKEND;

typedef enum {
    INPUT_LAYOUT_DEFAULT,
    INPUT_LAYOUT_CUSTOM_1,
    INPUT_LAYOUT_CUSTOM_2,
    INPUT_LAYOUT_CUSTOM_3,
    INPUT_LAYOUT_NUMBER_OF,
} INPUT_LAYOUT;

typedef enum {
    SCREENSHOT_FORMAT_JPEG,
    SCREENSHOT_FORMAT_PNG,
} SCREENSHOT_FORMAT;

typedef enum {
    BK_NONE,
    BK_TRANSPARENT_MEDIUM,
    BK_TRANSPARENT_DARK,
    BK_BLACK,
    BK_PATTERN_STATIC,
    BK_PATTERN_WAVE,
    BK_IMAGE,
    BK_MONOCHROME,
    BK_MONOCHROME_COOL,
    BK_MONOCHROME_WARM,
} BACKGROUND_TYPE;

typedef enum {
    UI_ELEMENT_LOCATION_TOP_LEFT,
    UI_ELEMENT_LOCATION_TOP_CENTER,
    UI_ELEMENT_LOCATION_TOP_RIGHT,
    UI_ELEMENT_LOCATION_BOTTOM_LEFT,
    UI_ELEMENT_LOCATION_BOTTOM_CENTER,
    UI_ELEMENT_LOCATION_BOTTOM_RIGHT,
    UI_ELEMENT_LOCATION_CUSTOM,
} UI_ELEMENT_LOCATION;

typedef enum {
    BAR_SHOW_MODE_NEVER,
    BAR_SHOW_MODE_ALWAYS,
    BAR_SHOW_MODE_BOSS_ONLY,
} BAR_SHOW_MODE;

typedef enum {
    MUSIC_LOAD_CONDITION_NEVER,
    MUSIC_LOAD_CONDITION_NON_AMBIENT,
    MUSIC_LOAD_CONDITION_ALWAYS,
} MUSIC_LOAD_CONDITION;

typedef enum {
    LOADING_SCREENS_DISABLED,
    LOADING_SCREENS_ALWAYS,
    LOADING_SCREENS_NEW_GAMES,
} LOADING_SCREENS_MODE;

typedef enum {
    INTRO_FMV_NEW_GAME,
    INTRO_FMV_LAUNCH,
} INTRO_FMV_MODE;

typedef enum {
    UI_STYLE_PS1,
    UI_STYLE_PC,
} UI_STYLE;

typedef enum {
    CAMERA_MODE_TR1,
    CAMERA_MODE_TR2,
    CAMERA_MODE_TR3,
    CAMERA_MODE_TR4,
    CAMERA_MODE_NUMBER_OF,
} CAMERA_MODE;

typedef enum {
    SAVE_CRYSTAL_OFF,
    SAVE_CRYSTAL_SAVE,
    SAVE_CRYSTAL_SAVE_PICKUP,
    SAVE_CRYSTAL_HEAL,
    SAVE_CRYSTAL_PICKUP,
} SAVE_CRYSTAL_MODE;

typedef enum {
    WALL_GLITCH_FIXED,
    WALL_GLITCH_TR1,
    WALL_GLITCH_TR2,
} WALL_GLITCH_MODE;

typedef enum {
    JUMP_LOCK_LEGACY,
    JUMP_LOCK_TUNED,
    JUMP_LOCK_DISABLED,
    JUMP_LOCK_NUMBER_OF,
} JUMP_LOCK_MODE;

typedef enum {
    LOOK_MODE_RESTRICTED,
    LOOK_MODE_ENHANCED,
    LOOK_MODE_UNRESTRICTED,
} LOOK_MODE;

typedef enum {
    RING_MEMORY_OFF,
    RING_MEMORY_MAIN,
    RING_MEMORY_ALL,
} RING_MEMORY_MODE;

typedef enum {
    QUICK_GUNS_MODE_DRAW_ONLY,
    QUICK_GUNS_MODE_DRAW_AND_HOLSTER,
} QUICK_GUNS_MODE;

typedef enum {
    LIGHTING_CONTRAST_LOW,
    LIGHTING_CONTRAST_MEDIUM,
    LIGHTING_CONTRAST_HIGH,
    LIGHTING_CONTRAST_NUMBER_OF,
} LIGHTING_CONTRAST;

typedef enum {
    BILLBOARD_LOCK_NONE,
    BILLBOARD_LOCK_ROLL,
    BILLBOARD_LOCK_ROLL_PITCH,
    BILLBOARD_LOCK_PERSPECTIVE,
    BILLBOARD_LOCK_NUMBER_OF,
} BILLBOARD_LOCK_MODE;

typedef enum {
    TARGET_LOCK_MODE_FULL,
    TARGET_LOCK_MODE_SEMI,
    TARGET_LOCK_MODE_NONE,
} TARGET_LOCK_MODE;

typedef enum {
    STATS_STYLE_BARE,
    STATS_STYLE_BORDERED,
} STATS_STYLE;

typedef enum {
    SHADOW_TYPE_OCTAGON,
    SHADOW_TYPE_CIRCLE,
    SHADOW_TYPE_SPRITE,
    SHADOW_TYPE_NUMBER_OF,
} SHADOW_TYPE;

typedef enum {
    BLOOD_EFFECTS_DISABLED,
    BLOOD_EFFECTS_PINK,
    BLOOD_EFFECTS_RED,
    BLOOD_EFFECTS_NUMBER_OF,
} BLOOD_EFFECTS;

typedef enum {
    ALLY_HOSTILITY_POLICY_INDIVIDUAL,
    ALLY_HOSTILITY_POLICY_SHARED,
} ALLY_HOSTILITY_POLICY;

typedef enum {
    CREATURE_DROWN_POLICY_NEVER,
    CREATURE_DROWN_POLICY_DEFAULT,
    CREATURE_DROWN_POLICY_SUBMERGED,
} CREATURE_DROWN_POLICY;

typedef enum {
    PROJECTILE_AREA_DAMAGE_SINGLE_SWEEP,
    PROJECTILE_AREA_DAMAGE_MULTI_SWEEP,
} PROJECTILE_AREA_DAMAGE;

typedef enum {
    SUNGLASSES_MODE_OFF,
    SUNGLASSES_MODE_OPAQUE,
    SUNGLASSES_MODE_TRANSPARENT,
} SUNGLASSES_MODE;

typedef enum {
    GAME_MODES_POLICY_NEVER,
    GAME_MODES_POLICY_ALWAYS,
    GAME_MODES_POLICY_ON_COMPLETION,
} GAME_MODES_POLICY;

typedef enum {
    TARGET_CHANGE_MODE_OFF,
    TARGET_CHANGE_MODE_ENHANCED,
    TARGET_CHANGE_MODE_TR4,
} TARGET_CHANGE_MODE;

typedef enum {
    BREEZE_MODE_OFF,
    BREEZE_MODE_TR2,
    BREEZE_MODE_TR3,
} BREEZE_MODE;
