mirror of
https://github.com/LostArtefacts/TRX.git
synced 2025-04-28 20:58:07 +03:00
config: use macros to define the config map
This commit is contained in:
parent
49916e3563
commit
0260b45dcd
15 changed files with 352 additions and 249 deletions
|
@ -262,6 +262,7 @@ sources = [
|
|||
'src/gfx/renderers/fbo_renderer.c',
|
||||
'src/gfx/renderers/legacy_renderer.c',
|
||||
'src/gfx/screenshot.c',
|
||||
'src/global/enum_str.c',
|
||||
'src/global/vars.c',
|
||||
'src/math/math.c',
|
||||
'src/math/math_misc.c',
|
||||
|
|
106
src/config.c
106
src/config.c
|
@ -5,6 +5,7 @@
|
|||
#include "game/music.h"
|
||||
#include "game/sound.h"
|
||||
#include "global/const.h"
|
||||
#include "global/enum_str.h"
|
||||
#include "global/types.h"
|
||||
|
||||
#include <libtrx/filesystem.h>
|
||||
|
@ -21,12 +22,14 @@ CONFIG g_Config = { 0 };
|
|||
|
||||
static const char *m_TR1XGlobalSettingsPath = "cfg/TR1X.json5";
|
||||
|
||||
static const char *Config_ResolveOptionName(const char *option_name);
|
||||
|
||||
static int Config_ReadEnum(
|
||||
struct json_object_s *obj, const char *name, int default_value,
|
||||
const CONFIG_OPTION_ENUM_MAP *enum_map);
|
||||
const ENUM_STRING_MAP *enum_map);
|
||||
static void Config_WriteEnum(
|
||||
struct json_object_s *obj, const char *name, int value,
|
||||
const CONFIG_OPTION_ENUM_MAP *enum_map);
|
||||
const ENUM_STRING_MAP *enum_map);
|
||||
|
||||
static void Config_ReadKeyboardLayout(
|
||||
struct json_object_s *parent_obj, INPUT_LAYOUT layout);
|
||||
|
@ -38,9 +41,18 @@ static void Config_WriteKeyboardLayout(
|
|||
static void Config_WriteControllerLayout(
|
||||
struct json_object_s *parent_obj, INPUT_LAYOUT layout);
|
||||
|
||||
static const char *Config_ResolveOptionName(const char *option_name)
|
||||
{
|
||||
const char *dot = strrchr(option_name, '.');
|
||||
if (dot) {
|
||||
return dot + 1;
|
||||
}
|
||||
return option_name;
|
||||
}
|
||||
|
||||
static int Config_ReadEnum(
|
||||
struct json_object_s *obj, const char *name, int default_value,
|
||||
const CONFIG_OPTION_ENUM_MAP *enum_map)
|
||||
const ENUM_STRING_MAP *enum_map)
|
||||
{
|
||||
const char *value_str = json_object_get_string(obj, name, NULL);
|
||||
if (value_str) {
|
||||
|
@ -56,7 +68,7 @@ static int Config_ReadEnum(
|
|||
|
||||
static void Config_WriteEnum(
|
||||
struct json_object_s *obj, const char *name, int value,
|
||||
const CONFIG_OPTION_ENUM_MAP *enum_map)
|
||||
const ENUM_STRING_MAP *enum_map)
|
||||
{
|
||||
while (enum_map->text) {
|
||||
if (enum_map->value == value) {
|
||||
|
@ -186,6 +198,19 @@ static void Config_ReadLegacyOptions(struct json_object_s *const parent_obj)
|
|||
g_Config.enemy_healthbar_show_mode = BSM_NEVER;
|
||||
}
|
||||
}
|
||||
|
||||
// ..4.1.2: healthbar_show_mode, airbar_show_mode, enemy_healthbar_show_mode
|
||||
{
|
||||
g_Config.healthbar_show_mode = Config_ReadEnum(
|
||||
parent_obj, "healthbar_showing_mode", g_Config.healthbar_show_mode,
|
||||
ENUM_STR_MAP(BAR_SHOW_MODE));
|
||||
g_Config.airbar_show_mode = Config_ReadEnum(
|
||||
parent_obj, "airbar_showing_mode", g_Config.airbar_show_mode,
|
||||
ENUM_STR_MAP(BAR_SHOW_MODE));
|
||||
g_Config.enemy_healthbar_show_mode = Config_ReadEnum(
|
||||
parent_obj, "enemy_healthbar_showing_mode",
|
||||
g_Config.enemy_healthbar_show_mode, ENUM_STR_MAP(BAR_SHOW_MODE));
|
||||
}
|
||||
}
|
||||
|
||||
static void Config_WriteKeyboardLayout(
|
||||
|
@ -284,22 +309,36 @@ bool Config_ReadFromJSON(const char *cfg_data)
|
|||
|
||||
const CONFIG_OPTION *opt = g_ConfigOptionMap;
|
||||
while (opt->target) {
|
||||
if (opt->type == COT_BOOL) {
|
||||
switch (opt->type) {
|
||||
case COT_BOOL:
|
||||
*(bool *)opt->target = json_object_get_bool(
|
||||
root_obj, opt->name, *(bool *)opt->default_value);
|
||||
} else if (opt->type == COT_INT32) {
|
||||
root_obj, Config_ResolveOptionName(opt->name),
|
||||
*(bool *)opt->default_value);
|
||||
break;
|
||||
|
||||
case COT_INT32:
|
||||
*(int32_t *)opt->target = json_object_get_int(
|
||||
root_obj, opt->name, *(int32_t *)opt->default_value);
|
||||
} else if (opt->type == COT_FLOAT) {
|
||||
root_obj, Config_ResolveOptionName(opt->name),
|
||||
*(int32_t *)opt->default_value);
|
||||
break;
|
||||
|
||||
case COT_FLOAT:
|
||||
*(float *)opt->target = json_object_get_double(
|
||||
root_obj, opt->name, *(float *)opt->default_value);
|
||||
} else if (opt->type == COT_DOUBLE) {
|
||||
root_obj, Config_ResolveOptionName(opt->name),
|
||||
*(float *)opt->default_value);
|
||||
break;
|
||||
|
||||
case COT_DOUBLE:
|
||||
*(double *)opt->target = json_object_get_double(
|
||||
root_obj, opt->name, *(double *)opt->default_value);
|
||||
} else if (opt->type == COT_ENUM) {
|
||||
root_obj, Config_ResolveOptionName(opt->name),
|
||||
*(double *)opt->default_value);
|
||||
break;
|
||||
|
||||
case COT_ENUM:
|
||||
*(int *)opt->target = Config_ReadEnum(
|
||||
root_obj, opt->name, *(int *)opt->default_value,
|
||||
(const CONFIG_OPTION_ENUM_MAP *)opt->param);
|
||||
root_obj, Config_ResolveOptionName(opt->name),
|
||||
*(int *)opt->default_value,
|
||||
(const ENUM_STRING_MAP *)opt->param);
|
||||
}
|
||||
opt++;
|
||||
}
|
||||
|
@ -375,21 +414,36 @@ bool Config_Write(void)
|
|||
|
||||
const CONFIG_OPTION *opt = g_ConfigOptionMap;
|
||||
while (opt->target) {
|
||||
if (opt->type == COT_BOOL) {
|
||||
json_object_append_bool(root_obj, opt->name, *(bool *)opt->target);
|
||||
} else if (opt->type == COT_INT32) {
|
||||
switch (opt->type) {
|
||||
case COT_BOOL:
|
||||
json_object_append_bool(
|
||||
root_obj, Config_ResolveOptionName(opt->name),
|
||||
*(bool *)opt->target);
|
||||
break;
|
||||
|
||||
case COT_INT32:
|
||||
json_object_append_int(
|
||||
root_obj, opt->name, *(int32_t *)opt->target);
|
||||
} else if (opt->type == COT_FLOAT) {
|
||||
root_obj, Config_ResolveOptionName(opt->name),
|
||||
*(int32_t *)opt->target);
|
||||
break;
|
||||
|
||||
case COT_FLOAT:
|
||||
json_object_append_double(
|
||||
root_obj, opt->name, *(float *)opt->target);
|
||||
} else if (opt->type == COT_DOUBLE) {
|
||||
root_obj, Config_ResolveOptionName(opt->name),
|
||||
*(float *)opt->target);
|
||||
break;
|
||||
|
||||
case COT_DOUBLE:
|
||||
json_object_append_double(
|
||||
root_obj, opt->name, *(double *)opt->target);
|
||||
} else if (opt->type == COT_ENUM) {
|
||||
root_obj, Config_ResolveOptionName(opt->name),
|
||||
*(double *)opt->target);
|
||||
break;
|
||||
|
||||
case COT_ENUM:
|
||||
Config_WriteEnum(
|
||||
root_obj, opt->name, *(int *)opt->target,
|
||||
(const CONFIG_OPTION_ENUM_MAP *)opt->param);
|
||||
root_obj, Config_ResolveOptionName(opt->name),
|
||||
*(int *)opt->target, (const ENUM_STRING_MAP *)opt->param);
|
||||
break;
|
||||
}
|
||||
opt++;
|
||||
}
|
||||
|
|
50
src/config.h
50
src/config.h
|
@ -2,59 +2,11 @@
|
|||
|
||||
#include "gfx/common.h"
|
||||
#include "gfx/context.h"
|
||||
#include "global/types.h"
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
||||
typedef enum {
|
||||
SCREENSHOT_FORMAT_JPEG,
|
||||
SCREENSHOT_FORMAT_PNG,
|
||||
} SCREENSHOT_FORMAT;
|
||||
|
||||
typedef enum {
|
||||
UI_STYLE_PS1 = 0,
|
||||
UI_STYLE_PC = 1,
|
||||
} UI_STYLE;
|
||||
|
||||
typedef enum {
|
||||
BL_TOP_LEFT = 0,
|
||||
BL_TOP_CENTER = 1,
|
||||
BL_TOP_RIGHT = 2,
|
||||
BL_BOTTOM_LEFT = 3,
|
||||
BL_BOTTOM_CENTER = 4,
|
||||
BL_BOTTOM_RIGHT = 5,
|
||||
BL_CUSTOM = 6,
|
||||
} BAR_LOCATION;
|
||||
|
||||
typedef enum {
|
||||
BC_GOLD = 0,
|
||||
BC_BLUE = 1,
|
||||
BC_GREY = 2,
|
||||
BC_RED = 3,
|
||||
BC_SILVER = 4,
|
||||
BC_GREEN = 5,
|
||||
BC_GOLD2 = 6,
|
||||
BC_BLUE2 = 7,
|
||||
BC_PINK = 8,
|
||||
BC_PURPLE = 9,
|
||||
} BAR_COLOR;
|
||||
|
||||
typedef enum {
|
||||
BSM_DEFAULT,
|
||||
BSM_FLASHING_OR_DEFAULT,
|
||||
BSM_FLASHING_ONLY,
|
||||
BSM_ALWAYS,
|
||||
BSM_NEVER,
|
||||
BSM_PS1,
|
||||
BSM_BOSS_ONLY,
|
||||
} BAR_SHOW_MODE;
|
||||
|
||||
typedef enum {
|
||||
TLM_FULL = 0,
|
||||
TLM_SEMI = 1,
|
||||
TLM_NONE = 2,
|
||||
} TARGET_LOCK_MODE;
|
||||
|
||||
typedef struct {
|
||||
bool loaded;
|
||||
|
||||
|
|
184
src/config_map.c
184
src/config_map.c
|
@ -3,168 +3,50 @@
|
|||
#include "config.h"
|
||||
#include "gfx/common.h"
|
||||
#include "global/const.h"
|
||||
#include "global/enum_str.h"
|
||||
#include "global/types.h"
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
static const CONFIG_OPTION_ENUM_MAP m_UIStyles[] = {
|
||||
{ "ps1", UI_STYLE_PS1 },
|
||||
{ "pc", UI_STYLE_PC },
|
||||
{ NULL, -1 },
|
||||
};
|
||||
#define CFG_BOOL(target_, default_value_) \
|
||||
{ .name = QUOTE(target_), \
|
||||
.type = COT_BOOL, \
|
||||
.target = &g_Config.target_, \
|
||||
.default_value = &(bool) { default_value_ }, \
|
||||
.param = NULL },
|
||||
|
||||
static const CONFIG_OPTION_ENUM_MAP m_BarShowModes[] = {
|
||||
{ "default", BSM_DEFAULT },
|
||||
{ "flashing-or-default", BSM_FLASHING_OR_DEFAULT },
|
||||
{ "flashing-only", BSM_FLASHING_ONLY },
|
||||
{ "always", BSM_ALWAYS },
|
||||
{ "never", BSM_NEVER },
|
||||
{ "ps1", BSM_PS1 },
|
||||
{ "boss-only", BSM_BOSS_ONLY },
|
||||
{ NULL, -1 },
|
||||
};
|
||||
#define CFG_INT32(target_, default_value_) \
|
||||
{ .name = QUOTE(target_), \
|
||||
.type = COT_INT32, \
|
||||
.target = &g_Config.target_, \
|
||||
.default_value = &(int32_t) { default_value_ }, \
|
||||
.param = NULL },
|
||||
|
||||
static const CONFIG_OPTION_ENUM_MAP m_BarLocations[] = {
|
||||
{ "top-left", BL_TOP_LEFT },
|
||||
{ "top-center", BL_TOP_CENTER },
|
||||
{ "top-right", BL_TOP_RIGHT },
|
||||
{ "bottom-left", BL_BOTTOM_LEFT },
|
||||
{ "bottom-center", BL_BOTTOM_CENTER },
|
||||
{ "bottom-right", BL_BOTTOM_RIGHT },
|
||||
{ NULL, -1 },
|
||||
};
|
||||
#define CFG_FLOAT(target_, default_value_) \
|
||||
{ .name = QUOTE(target_), \
|
||||
.type = COT_FLOAT, \
|
||||
.target = &g_Config.target_, \
|
||||
.default_value = &(float) { default_value_ }, \
|
||||
.param = NULL },
|
||||
|
||||
static const CONFIG_OPTION_ENUM_MAP m_BarColors[] = {
|
||||
{ "gold", BC_GOLD }, { "blue", BC_BLUE }, { "grey", BC_GREY },
|
||||
{ "red", BC_RED }, { "silver", BC_SILVER }, { "green", BC_GREEN },
|
||||
{ "gold2", BC_GOLD2 }, { "blue2", BC_BLUE2 }, { "pink", BC_PINK },
|
||||
{ NULL, -1 },
|
||||
};
|
||||
#define CFG_DOUBLE(target_, default_value_) \
|
||||
{ .name = QUOTE(target_), \
|
||||
.type = COT_DOUBLE, \
|
||||
.target = &g_Config.target_, \
|
||||
.default_value = &(double) { default_value_ }, \
|
||||
.param = NULL },
|
||||
|
||||
static const CONFIG_OPTION_ENUM_MAP m_TargetLockModes[] = {
|
||||
{ "full-lock", TLM_FULL },
|
||||
{ "semi-lock", TLM_SEMI },
|
||||
{ "no-lock", TLM_NONE },
|
||||
{ NULL, -1 },
|
||||
};
|
||||
|
||||
static const CONFIG_OPTION_ENUM_MAP m_ScreenshotFormats[] = {
|
||||
{ "jpg", SCREENSHOT_FORMAT_JPEG },
|
||||
{ "jpeg", SCREENSHOT_FORMAT_JPEG },
|
||||
{ "png", SCREENSHOT_FORMAT_PNG },
|
||||
{ NULL, -1 },
|
||||
};
|
||||
#define CFG_ENUM(target_, default_value_, enum_map) \
|
||||
{ .name = QUOTE(target_), \
|
||||
.type = COT_ENUM, \
|
||||
.target = &g_Config.target_, \
|
||||
.default_value = &(int32_t) { default_value_ }, \
|
||||
.param = ENUM_STR_MAP(enum_map) },
|
||||
|
||||
const CONFIG_OPTION g_ConfigOptionMap[] = {
|
||||
// clang-format off
|
||||
{ .name = "disable_healing_between_levels", .type = COT_BOOL, .target = &g_Config.disable_healing_between_levels, .default_value = &(bool){false}, 0},
|
||||
{ .name = "disable_medpacks", .type = COT_BOOL, .target = &g_Config.disable_medpacks, .default_value = &(bool){false}, 0},
|
||||
{ .name = "disable_magnums", .type = COT_BOOL, .target = &g_Config.disable_magnums, .default_value = &(bool){false}, 0},
|
||||
{ .name = "disable_uzis", .type = COT_BOOL, .target = &g_Config.disable_uzis, .default_value = &(bool){false}, 0},
|
||||
{ .name = "disable_shotgun", .type = COT_BOOL, .target = &g_Config.disable_shotgun, .default_value = &(bool){false}, 0},
|
||||
{ .name = "enable_detailed_stats", .type = COT_BOOL, .target = &g_Config.enable_detailed_stats, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enable_deaths_counter", .type = COT_BOOL, .target = &g_Config.enable_deaths_counter, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enable_enhanced_look", .type = COT_BOOL, .target = &g_Config.enable_enhanced_look, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enable_shotgun_flash", .type = COT_BOOL, .target = &g_Config.enable_shotgun_flash, .default_value = &(bool){true}, 0},
|
||||
{ .name = "fix_shotgun_targeting", .type = COT_BOOL, .target = &g_Config.fix_shotgun_targeting, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enable_cheats", .type = COT_BOOL, .target = &g_Config.enable_cheats, .default_value = &(bool){false}, 0},
|
||||
{ .name = "enable_console", .type = COT_BOOL, .target = &g_Config.enable_console, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enable_numeric_keys", .type = COT_BOOL, .target = &g_Config.enable_numeric_keys, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enable_tr3_sidesteps", .type = COT_BOOL, .target = &g_Config.enable_tr3_sidesteps, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enable_braid", .type = COT_BOOL, .target = &g_Config.enable_braid, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enable_compass_stats", .type = COT_BOOL, .target = &g_Config.enable_compass_stats, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enable_total_stats", .type = COT_BOOL, .target = &g_Config.enable_total_stats, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enable_timer_in_inventory", .type = COT_BOOL, .target = &g_Config.enable_timer_in_inventory, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enable_smooth_bars", .type = COT_BOOL, .target = &g_Config.enable_smooth_bars, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enable_fade_effects", .type = COT_BOOL, .target = &g_Config.enable_fade_effects, .default_value = &(bool){true}, 0},
|
||||
{ .name = "fix_tihocan_secret_sound", .type = COT_BOOL, .target = &g_Config.fix_tihocan_secret_sound, .default_value = &(bool){true}, 0},
|
||||
{ .name = "fix_floor_data_issues", .type = COT_BOOL, .target = &g_Config.fix_floor_data_issues, .default_value = &(bool){true}, 0},
|
||||
{ .name = "fix_secrets_killing_music", .type = COT_BOOL, .target = &g_Config.fix_secrets_killing_music, .default_value = &(bool){true}, 0},
|
||||
{ .name = "fix_speeches_killing_music", .type = COT_BOOL, .target = &g_Config.fix_speeches_killing_music, .default_value = &(bool){true}, 0},
|
||||
{ .name = "fix_descending_glitch", .type = COT_BOOL, .target = &g_Config.fix_descending_glitch, .default_value = &(bool){false}, 0},
|
||||
{ .name = "fix_wall_jump_glitch", .type = COT_BOOL, .target = &g_Config.fix_wall_jump_glitch, .default_value = &(bool){false}, 0},
|
||||
{ .name = "fix_bridge_collision", .type = COT_BOOL, .target = &g_Config.fix_bridge_collision, .default_value = &(bool){true}, 0},
|
||||
{ .name = "fix_qwop_glitch", .type = COT_BOOL, .target = &g_Config.fix_qwop_glitch, .default_value = &(bool){false}, 0},
|
||||
{ .name = "fix_alligator_ai", .type = COT_BOOL, .target = &g_Config.fix_alligator_ai, .default_value = &(bool){true}, 0},
|
||||
{ .name = "change_pierre_spawn", .type = COT_BOOL, .target = &g_Config.change_pierre_spawn, .default_value = &(bool){true}, 0},
|
||||
{ .name = "fix_bear_ai", .type = COT_BOOL, .target = &g_Config.fix_bear_ai, .default_value = &(bool){true}, 0},
|
||||
{ .name = "fov_value", .type = COT_INT32, .target = &g_Config.fov_value, .default_value = &(int32_t){65}, 0},
|
||||
{ .name = "resolution_width", .type = COT_INT32, .target = &g_Config.resolution_width, .default_value = &(int32_t){-1}, 0},
|
||||
{ .name = "resolution_height", .type = COT_INT32, .target = &g_Config.resolution_height, .default_value = &(int32_t){-1}, 0},
|
||||
{ .name = "fov_vertical", .type = COT_BOOL, .target = &g_Config.fov_vertical, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enable_demo", .type = COT_BOOL, .target = &g_Config.enable_demo, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enable_fmv", .type = COT_BOOL, .target = &g_Config.enable_fmv, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enable_eidos_logo", .type = COT_BOOL, .target = &g_Config.enable_eidos_logo, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enable_loading_screens", .type = COT_BOOL, .target = &g_Config.enable_loading_screens, .default_value = &(bool){false}, 0},
|
||||
{ .name = "enable_cine", .type = COT_BOOL, .target = &g_Config.enable_cine, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enable_music_in_menu", .type = COT_BOOL, .target = &g_Config.enable_music_in_menu, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enable_music_in_inventory", .type = COT_BOOL, .target = &g_Config.enable_music_in_inventory, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enable_round_shadow", .type = COT_BOOL, .target = &g_Config.enable_round_shadow, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enable_3d_pickups", .type = COT_BOOL, .target = &g_Config.enable_3d_pickups, .default_value = &(bool){true}, 0},
|
||||
{ .name = "anisotropy_filter", .type = COT_FLOAT, .target = &g_Config.rendering.anisotropy_filter, .default_value = &(float){16.0f}, 0},
|
||||
{ .name = "turbo_speed", .type = COT_INT32, .target = &g_Config.rendering.turbo_speed, .default_value = &(int32_t){0}, 0},
|
||||
{ .name = "walk_to_items", .type = COT_BOOL, .target = &g_Config.walk_to_items, .default_value = &(bool){false}, 0},
|
||||
{ .name = "disable_trex_collision", .type = COT_BOOL, .target = &g_Config.disable_trex_collision, .default_value = &(bool){false}, 0},
|
||||
{ .name = "start_lara_hitpoints", .type = COT_INT32, .target = &g_Config.start_lara_hitpoints, .default_value = &(int32_t){LARA_MAX_HITPOINTS}, 0},
|
||||
{ .name = "healthbar_showing_mode", .type = COT_ENUM, .target = &g_Config.healthbar_show_mode, .default_value = &(int32_t){BSM_FLASHING_OR_DEFAULT}, .param = m_BarShowModes},
|
||||
{ .name = "airbar_showing_mode", .type = COT_ENUM, .target = &g_Config.airbar_show_mode, .default_value = &(int32_t){BSM_DEFAULT}, .param = m_BarShowModes},
|
||||
{ .name = "enemy_healthbar_showing_mode", .type = COT_ENUM, .target = &g_Config.enemy_healthbar_show_mode, .default_value = &(int32_t){BSM_ALWAYS}, .param = m_BarShowModes},
|
||||
{ .name = "healthbar_location", .type = COT_ENUM, .target = &g_Config.healthbar_location, .default_value = &(int32_t){BL_TOP_LEFT}, .param = m_BarLocations},
|
||||
{ .name = "airbar_location", .type = COT_ENUM, .target = &g_Config.airbar_location, .default_value = &(int32_t){BL_TOP_RIGHT}, .param = m_BarLocations},
|
||||
{ .name = "enemy_healthbar_location", .type = COT_ENUM, .target = &g_Config.enemy_healthbar_location, .default_value = &(int32_t){BL_BOTTOM_LEFT}, .param = m_BarLocations},
|
||||
{ .name = "healthbar_color", .type = COT_ENUM, .target = &g_Config.healthbar_color, .default_value = &(int32_t){BC_RED}, .param = m_BarColors},
|
||||
{ .name = "airbar_color", .type = COT_ENUM, .target = &g_Config.airbar_color, .default_value = &(int32_t){BC_BLUE}, .param = m_BarColors},
|
||||
{ .name = "enemy_healthbar_color", .type = COT_ENUM, .target = &g_Config.enemy_healthbar_color, .default_value = &(int32_t){BC_GREY}, .param = m_BarColors},
|
||||
{ .name = "screenshot_format", .type = COT_ENUM, .target = &g_Config.screenshot_format, .default_value = &(int32_t){SCREENSHOT_FORMAT_JPEG}, .param = m_ScreenshotFormats},
|
||||
{ .name = "menu_style", .type = COT_ENUM, .target = &g_Config.ui.menu_style, .default_value = &(int32_t){UI_STYLE_PC}, .param = m_UIStyles},
|
||||
{ .name = "target_mode", .type = COT_ENUM, .target = &g_Config.target_mode, .default_value = &(TARGET_LOCK_MODE){TLM_FULL}, .param = m_TargetLockModes},
|
||||
{ .name = "maximum_save_slots", .type = COT_INT32, .target = &g_Config.maximum_save_slots, .default_value = &(int32_t){25}, 0},
|
||||
{ .name = "revert_to_pistols", .type = COT_BOOL, .target = &g_Config.revert_to_pistols, .default_value = &(bool){false}, 0},
|
||||
{ .name = "enable_enhanced_saves", .type = COT_BOOL, .target = &g_Config.enable_enhanced_saves, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enable_pitched_sounds", .type = COT_BOOL, .target = &g_Config.enable_pitched_sounds, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enable_ps_uzi_sfx", .type = COT_BOOL, .target = &g_Config.enable_ps_uzi_sfx, .default_value = &(bool){false}, 0},
|
||||
{ .name = "enable_jump_twists", .type = COT_BOOL, .target = &g_Config.enable_jump_twists, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enabled_inverted_look", .type = COT_BOOL, .target = &g_Config.enabled_inverted_look, .default_value = &(bool){false}, 0},
|
||||
{ .name = "camera_speed", .type = COT_INT32, .target = &g_Config.camera_speed, .default_value = &(int32_t){5}, 0},
|
||||
{ .name = "fix_texture_issues", .type = COT_BOOL, .target = &g_Config.fix_texture_issues, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enable_swing_cancel", .type = COT_BOOL, .target = &g_Config.enable_swing_cancel, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enable_tr2_jumping", .type = COT_BOOL, .target = &g_Config.enable_tr2_jumping, .default_value = &(bool){false}, 0},
|
||||
{ .name = "load_current_music", .type = COT_BOOL, .target = &g_Config.load_current_music, .default_value = &(bool){true}, 0},
|
||||
{ .name = "load_music_triggers", .type = COT_BOOL, .target = &g_Config.load_music_triggers, .default_value = &(bool){true}, 0},
|
||||
{ .name = "fix_item_rots", .type = COT_BOOL, .target = &g_Config.fix_item_rots, .default_value = &(bool){true}, 0},
|
||||
{ .name = "restore_ps1_enemies", .type = COT_BOOL, .target = &g_Config.restore_ps1_enemies, .default_value = &(bool){false}, 0},
|
||||
{ .name = "enable_game_modes", .type = COT_BOOL, .target = &g_Config.enable_game_modes, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enable_save_crystals", .type = COT_BOOL, .target = &g_Config.enable_save_crystals, .default_value = &(bool){false}, 0},
|
||||
{ .name = "enable_uw_roll", .type = COT_BOOL, .target = &g_Config.enable_uw_roll, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enable_buffering", .type = COT_BOOL, .target = &g_Config.enable_buffering, .default_value = &(bool){false}, 0},
|
||||
{ .name = "enable_lean_jumping", .type = COT_BOOL, .target = &g_Config.enable_lean_jumping, .default_value = &(bool){false}, 0},
|
||||
{ .name = "enable_target_change", .type = COT_BOOL, .target = &g_Config.enable_target_change, .default_value = &(bool){true}, 0},
|
||||
{ .name = "render_mode", .type = COT_INT32, .target = &g_Config.rendering.render_mode, .default_value = &(int32_t){GFX_RM_LEGACY}, 0},
|
||||
{ .name = "enable_fullscreen", .type = COT_BOOL, .target = &g_Config.rendering.enable_fullscreen, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enable_maximized", .type = COT_BOOL, .target = &g_Config.rendering.enable_maximized, .default_value = &(bool){true}, 0},
|
||||
{ .name = "window_x", .type = COT_INT32, .target = &g_Config.rendering.window_x, .default_value = &(int32_t){-1}, 0},
|
||||
{ .name = "window_y", .type = COT_INT32, .target = &g_Config.rendering.window_y, .default_value = &(int32_t){-1}, 0},
|
||||
{ .name = "window_width", .type = COT_INT32, .target = &g_Config.rendering.window_width, .default_value = &(int32_t){-1}, 0},
|
||||
{ .name = "window_height", .type = COT_INT32, .target = &g_Config.rendering.window_height, .default_value = &(int32_t){-1}, 0},
|
||||
{ .name = "fps", .type = COT_INT32, .target = &g_Config.rendering.fps, .default_value = &(int32_t){30}, 0},
|
||||
{ .name = "texture_filter", .type = COT_INT32, .target = &g_Config.rendering.texture_filter, .default_value = &(int32_t){GFX_TF_BILINEAR}, 0},
|
||||
{ .name = "fbo_filter", .type = COT_INT32, .target = &g_Config.rendering.fbo_filter, .default_value = &(int32_t){GFX_TF_NN}, 0},
|
||||
{ .name = "enable_wireframe", .type = COT_BOOL, .target = &g_Config.rendering.enable_wireframe, .default_value = &(bool){false}, 0},
|
||||
{ .name = "wireframe_width", .type = COT_DOUBLE, .target = &g_Config.rendering.wireframe_width, .default_value = &(double){2.5}, 0},
|
||||
{ .name = "enable_perspective_filter", .type = COT_BOOL, .target = &g_Config.rendering.enable_perspective_filter, .default_value = &(bool){true}, 0},
|
||||
{ .name = "enable_vsync", .type = COT_BOOL, .target = &g_Config.rendering.enable_vsync, .default_value = &(bool){true}, 0},
|
||||
{ .name = "music_volume", .type = COT_INT32, .target = &g_Config.music_volume, .default_value = &(int32_t){8}, 0},
|
||||
{ .name = "sound_volume", .type = COT_INT32, .target = &g_Config.sound_volume, .default_value = &(int32_t){8}, 0},
|
||||
{ .name = "layout", .type = COT_INT32, .target = &g_Config.input.layout, .default_value = &(int32_t){0}, 0},
|
||||
{ .name = "cntlr_layout", .type = COT_INT32, .target = &g_Config.input.cntlr_layout, .default_value = &(int32_t){0}, 0},
|
||||
{ .name = "brightness", .type = COT_FLOAT, .target = &g_Config.brightness, .default_value = &(float){DEFAULT_BRIGHTNESS}, 0},
|
||||
{ .name = "text_scale", .type = COT_DOUBLE, .target = &g_Config.ui.text_scale, .default_value = &(double){DEFAULT_UI_SCALE}, 0},
|
||||
{ .name = "bar_scale", .type = COT_DOUBLE, .target = &g_Config.ui.bar_scale, .default_value = &(double){DEFAULT_UI_SCALE}, 0},
|
||||
{ .name = "new_game_plus_unlock", .type = COT_BOOL, .target = &g_Config.profile.new_game_plus_unlock, .default_value = &(bool){false}, 0},
|
||||
{ .name = "fix_animated_sprites", .type = COT_BOOL, .target = &g_Config.fix_animated_sprites, .default_value = &(bool){true}, 0},
|
||||
// clang-format on
|
||||
|
||||
#include "config_map.def"
|
||||
// guard
|
||||
{ 0 },
|
||||
};
|
||||
|
|
105
src/config_map.def
Normal file
105
src/config_map.def
Normal file
|
@ -0,0 +1,105 @@
|
|||
CFG_BOOL(disable_healing_between_levels, false)
|
||||
CFG_BOOL(disable_medpacks, false)
|
||||
CFG_BOOL(disable_magnums, false)
|
||||
CFG_BOOL(disable_uzis, false)
|
||||
CFG_BOOL(disable_shotgun, false)
|
||||
CFG_BOOL(enable_detailed_stats, true)
|
||||
CFG_BOOL(enable_deaths_counter, true)
|
||||
CFG_BOOL(enable_enhanced_look, true)
|
||||
CFG_BOOL(enable_shotgun_flash, true)
|
||||
CFG_BOOL(fix_shotgun_targeting, true)
|
||||
CFG_BOOL(enable_cheats, false)
|
||||
CFG_BOOL(enable_console, true)
|
||||
CFG_BOOL(enable_numeric_keys, true)
|
||||
CFG_BOOL(enable_tr3_sidesteps, true)
|
||||
CFG_BOOL(enable_braid, true)
|
||||
CFG_BOOL(enable_compass_stats, true)
|
||||
CFG_BOOL(enable_total_stats, true)
|
||||
CFG_BOOL(enable_timer_in_inventory, true)
|
||||
CFG_BOOL(enable_smooth_bars, true)
|
||||
CFG_BOOL(enable_fade_effects, true)
|
||||
CFG_BOOL(fix_tihocan_secret_sound, true)
|
||||
CFG_BOOL(fix_floor_data_issues, true)
|
||||
CFG_BOOL(fix_secrets_killing_music, true)
|
||||
CFG_BOOL(fix_speeches_killing_music, true)
|
||||
CFG_BOOL(fix_descending_glitch, false)
|
||||
CFG_BOOL(fix_wall_jump_glitch, false)
|
||||
CFG_BOOL(fix_bridge_collision, true)
|
||||
CFG_BOOL(fix_qwop_glitch, false)
|
||||
CFG_BOOL(fix_alligator_ai, true)
|
||||
CFG_BOOL(change_pierre_spawn, true)
|
||||
CFG_BOOL(fix_bear_ai, true)
|
||||
CFG_INT32(fov_value, 65)
|
||||
CFG_INT32(resolution_width, -1)
|
||||
CFG_INT32(resolution_height, -1)
|
||||
CFG_BOOL(fov_vertical, true)
|
||||
CFG_BOOL(enable_demo, true)
|
||||
CFG_BOOL(enable_fmv, true)
|
||||
CFG_BOOL(enable_eidos_logo, true)
|
||||
CFG_BOOL(enable_loading_screens, false)
|
||||
CFG_BOOL(enable_cine, true)
|
||||
CFG_BOOL(enable_music_in_menu, true)
|
||||
CFG_BOOL(enable_music_in_inventory, true)
|
||||
CFG_BOOL(enable_round_shadow, true)
|
||||
CFG_BOOL(enable_3d_pickups, true)
|
||||
CFG_FLOAT(rendering.anisotropy_filter, 16.0f)
|
||||
CFG_INT32(rendering.turbo_speed, 0)
|
||||
CFG_BOOL(walk_to_items, false)
|
||||
CFG_BOOL(disable_trex_collision, false)
|
||||
CFG_INT32(start_lara_hitpoints, LARA_MAX_HITPOINTS)
|
||||
CFG_ENUM(healthbar_show_mode, BSM_FLASHING_OR_DEFAULT, BAR_SHOW_MODE)
|
||||
CFG_ENUM(airbar_show_mode, BSM_DEFAULT, BAR_SHOW_MODE)
|
||||
CFG_ENUM(enemy_healthbar_show_mode, BSM_ALWAYS, BAR_SHOW_MODE)
|
||||
CFG_ENUM(healthbar_location, BL_TOP_LEFT, BAR_LOCATION)
|
||||
CFG_ENUM(airbar_location, BL_TOP_RIGHT, BAR_LOCATION)
|
||||
CFG_ENUM(enemy_healthbar_location, BL_BOTTOM_LEFT, BAR_LOCATION)
|
||||
CFG_ENUM(healthbar_color, BC_RED, BAR_COLOR)
|
||||
CFG_ENUM(airbar_color, BC_BLUE, BAR_COLOR)
|
||||
CFG_ENUM(enemy_healthbar_color, BC_GREY, BAR_COLOR)
|
||||
CFG_ENUM(screenshot_format, SCREENSHOT_FORMAT_JPEG, SCREENSHOT_FORMAT)
|
||||
CFG_ENUM(ui.menu_style, UI_STYLE_PC, UI_STYLE)
|
||||
CFG_ENUM(target_mode, TLM_FULL, TARGET_LOCK_MODE)
|
||||
CFG_INT32(maximum_save_slots, 25)
|
||||
CFG_BOOL(revert_to_pistols, false)
|
||||
CFG_BOOL(enable_enhanced_saves, true)
|
||||
CFG_BOOL(enable_pitched_sounds, true)
|
||||
CFG_BOOL(enable_ps_uzi_sfx, false)
|
||||
CFG_BOOL(enable_jump_twists, true)
|
||||
CFG_BOOL(enabled_inverted_look, false)
|
||||
CFG_INT32(camera_speed, 5)
|
||||
CFG_BOOL(fix_texture_issues, true)
|
||||
CFG_BOOL(enable_swing_cancel, true)
|
||||
CFG_BOOL(enable_tr2_jumping, false)
|
||||
CFG_BOOL(load_current_music, true)
|
||||
CFG_BOOL(load_music_triggers, true)
|
||||
CFG_BOOL(fix_item_rots, true)
|
||||
CFG_BOOL(restore_ps1_enemies, false)
|
||||
CFG_BOOL(enable_game_modes, true)
|
||||
CFG_BOOL(enable_save_crystals, false)
|
||||
CFG_BOOL(enable_uw_roll, true)
|
||||
CFG_BOOL(enable_buffering, false)
|
||||
CFG_BOOL(enable_lean_jumping, false)
|
||||
CFG_BOOL(enable_target_change, true)
|
||||
CFG_INT32(rendering.render_mode, GFX_RM_LEGACY)
|
||||
CFG_BOOL(rendering.enable_fullscreen, true)
|
||||
CFG_BOOL(rendering.enable_maximized, true)
|
||||
CFG_INT32(rendering.window_x, -1)
|
||||
CFG_INT32(rendering.window_y, -1)
|
||||
CFG_INT32(rendering.window_width, -1)
|
||||
CFG_INT32(rendering.window_height, -1)
|
||||
CFG_INT32(rendering.fps, 30)
|
||||
CFG_INT32(rendering.texture_filter, GFX_TF_BILINEAR)
|
||||
CFG_INT32(rendering.fbo_filter, GFX_TF_NN)
|
||||
CFG_BOOL(rendering.enable_wireframe, false)
|
||||
CFG_DOUBLE(rendering.wireframe_width, 2.5)
|
||||
CFG_BOOL(rendering.enable_perspective_filter, true)
|
||||
CFG_BOOL(rendering.enable_vsync, true)
|
||||
CFG_INT32(music_volume, 8)
|
||||
CFG_INT32(sound_volume, 8)
|
||||
CFG_INT32(input.layout, 0)
|
||||
CFG_INT32(input.cntlr_layout, 0)
|
||||
CFG_FLOAT(brightness, DEFAULT_BRIGHTNESS)
|
||||
CFG_DOUBLE(ui.text_scale, DEFAULT_UI_SCALE)
|
||||
CFG_DOUBLE(ui.bar_scale, DEFAULT_UI_SCALE)
|
||||
CFG_BOOL(profile.new_game_plus_unlock, false)
|
||||
CFG_BOOL(fix_animated_sprites, true)
|
|
@ -1,10 +1,5 @@
|
|||
#pragma once
|
||||
|
||||
typedef struct CONFIG_OPTION_ENUM_MAP {
|
||||
const char *text;
|
||||
int value;
|
||||
} CONFIG_OPTION_ENUM_MAP;
|
||||
|
||||
typedef enum CONFIG_OPTION_TYPE {
|
||||
COT_BOOL = 0,
|
||||
COT_INT32 = 1,
|
||||
|
|
51
src/global/enum_str.c
Normal file
51
src/global/enum_str.c
Normal file
|
@ -0,0 +1,51 @@
|
|||
#include "global/enum_str.h"
|
||||
|
||||
#include "global/types.h"
|
||||
|
||||
const ENUM_STRING_MAP g_EnumStr_UI_STYLE[] = {
|
||||
{ "ps1", UI_STYLE_PS1 },
|
||||
{ "pc", UI_STYLE_PC },
|
||||
{ NULL, -1 },
|
||||
};
|
||||
|
||||
const ENUM_STRING_MAP g_EnumStr_BAR_SHOW_MODE[] = {
|
||||
{ "default", BSM_DEFAULT },
|
||||
{ "flashing-or-default", BSM_FLASHING_OR_DEFAULT },
|
||||
{ "flashing-only", BSM_FLASHING_ONLY },
|
||||
{ "always", BSM_ALWAYS },
|
||||
{ "never", BSM_NEVER },
|
||||
{ "ps1", BSM_PS1 },
|
||||
{ "boss-only", BSM_BOSS_ONLY },
|
||||
{ NULL, -1 },
|
||||
};
|
||||
|
||||
const ENUM_STRING_MAP g_EnumStr_BAR_LOCATION[] = {
|
||||
{ "top-left", BL_TOP_LEFT },
|
||||
{ "top-center", BL_TOP_CENTER },
|
||||
{ "top-right", BL_TOP_RIGHT },
|
||||
{ "bottom-left", BL_BOTTOM_LEFT },
|
||||
{ "bottom-center", BL_BOTTOM_CENTER },
|
||||
{ "bottom-right", BL_BOTTOM_RIGHT },
|
||||
{ NULL, -1 },
|
||||
};
|
||||
|
||||
const ENUM_STRING_MAP g_EnumStr_BAR_COLOR[] = {
|
||||
{ "gold", BC_GOLD }, { "blue", BC_BLUE }, { "grey", BC_GREY },
|
||||
{ "red", BC_RED }, { "silver", BC_SILVER }, { "green", BC_GREEN },
|
||||
{ "gold2", BC_GOLD2 }, { "blue2", BC_BLUE2 }, { "pink", BC_PINK },
|
||||
{ NULL, -1 },
|
||||
};
|
||||
|
||||
const ENUM_STRING_MAP g_EnumStr_TARGET_LOCK_MODE[] = {
|
||||
{ "full-lock", TLM_FULL },
|
||||
{ "semi-lock", TLM_SEMI },
|
||||
{ "no-lock", TLM_NONE },
|
||||
{ NULL, -1 },
|
||||
};
|
||||
|
||||
const ENUM_STRING_MAP g_EnumStr_SCREENSHOT_FORMAT[] = {
|
||||
{ "jpg", SCREENSHOT_FORMAT_JPEG },
|
||||
{ "jpeg", SCREENSHOT_FORMAT_JPEG },
|
||||
{ "png", SCREENSHOT_FORMAT_PNG },
|
||||
{ NULL, -1 },
|
||||
};
|
15
src/global/enum_str.h
Normal file
15
src/global/enum_str.h
Normal file
|
@ -0,0 +1,15 @@
|
|||
#pragma once
|
||||
|
||||
typedef struct {
|
||||
const char *text;
|
||||
int value;
|
||||
} ENUM_STRING_MAP;
|
||||
|
||||
extern const ENUM_STRING_MAP g_EnumStr_UI_STYLE[];
|
||||
extern const ENUM_STRING_MAP g_EnumStr_BAR_SHOW_MODE[];
|
||||
extern const ENUM_STRING_MAP g_EnumStr_BAR_LOCATION[];
|
||||
extern const ENUM_STRING_MAP g_EnumStr_BAR_COLOR[];
|
||||
extern const ENUM_STRING_MAP g_EnumStr_TARGET_LOCK_MODE[];
|
||||
extern const ENUM_STRING_MAP g_EnumStr_SCREENSHOT_FORMAT[];
|
||||
|
||||
#define ENUM_STR_MAP(type) g_EnumStr_##type
|
|
@ -1,6 +1,5 @@
|
|||
#pragma once
|
||||
|
||||
#include "config.h"
|
||||
#include "global/const.h"
|
||||
|
||||
#include <stdbool.h>
|
||||
|
@ -1510,6 +1509,26 @@ typedef enum {
|
|||
MC_NUMBER_OF,
|
||||
} MENU_COLOR;
|
||||
|
||||
typedef enum {
|
||||
BSM_DEFAULT,
|
||||
BSM_FLASHING_OR_DEFAULT,
|
||||
BSM_FLASHING_ONLY,
|
||||
BSM_ALWAYS,
|
||||
BSM_NEVER,
|
||||
BSM_PS1,
|
||||
BSM_BOSS_ONLY,
|
||||
} BAR_SHOW_MODE;
|
||||
|
||||
typedef enum {
|
||||
BL_TOP_LEFT,
|
||||
BL_TOP_CENTER,
|
||||
BL_TOP_RIGHT,
|
||||
BL_BOTTOM_LEFT,
|
||||
BL_BOTTOM_CENTER,
|
||||
BL_BOTTOM_RIGHT,
|
||||
BL_CUSTOM,
|
||||
} BAR_LOCATION;
|
||||
|
||||
typedef struct BAR_INFO {
|
||||
BAR_TYPE type;
|
||||
int32_t value;
|
||||
|
@ -2063,3 +2082,32 @@ typedef enum TRISTATE_BOOL {
|
|||
TB_OFF = 0,
|
||||
TB_ON = 1,
|
||||
} TRISTATE_BOOL;
|
||||
|
||||
typedef enum {
|
||||
SCREENSHOT_FORMAT_JPEG,
|
||||
SCREENSHOT_FORMAT_PNG,
|
||||
} SCREENSHOT_FORMAT;
|
||||
|
||||
typedef enum {
|
||||
UI_STYLE_PS1,
|
||||
UI_STYLE_PC,
|
||||
} UI_STYLE;
|
||||
|
||||
typedef enum {
|
||||
BC_GOLD,
|
||||
BC_BLUE,
|
||||
BC_GREY,
|
||||
BC_RED,
|
||||
BC_SILVER,
|
||||
BC_GREEN,
|
||||
BC_GOLD2,
|
||||
BC_BLUE2,
|
||||
BC_PINK,
|
||||
BC_PURPLE,
|
||||
} BAR_COLOR;
|
||||
|
||||
typedef enum {
|
||||
TLM_FULL,
|
||||
TLM_SEMI,
|
||||
TLM_NONE,
|
||||
} TARGET_LOCK_MODE;
|
||||
|
|
|
@ -15,14 +15,14 @@
|
|||
"change_pierre_spawn": {
|
||||
"Title": "Change Pierre spawn behaviour"
|
||||
},
|
||||
"healthbar_showing_mode": {
|
||||
"healthbar_show_mode": {
|
||||
"Title": "Healthbar behaviour"
|
||||
},
|
||||
"healthbar_color": {
|
||||
"Title": "Healthbar colour",
|
||||
"Description": "Colour of the healthbar."
|
||||
},
|
||||
"airbar_showing_mode": {
|
||||
"airbar_show_mode": {
|
||||
"Title": "Airbar behaviour"
|
||||
},
|
||||
"airbar_color": {
|
||||
|
|
|
@ -377,7 +377,7 @@
|
|||
"Title": "Menu style",
|
||||
"Description": "Changes how menus are displayed.\n - PC: UI style matches the PC version.\n - PS1: UI style matches the PS1 version."
|
||||
},
|
||||
"healthbar_showing_mode": {
|
||||
"healthbar_show_mode": {
|
||||
"Title": "Healthbar behavior",
|
||||
"Description": "Changes how the healthbar is displayed.\n- Default: show the healthbar at the start of a level, after getting hit, or while having weapons equipped; flash the healthbar if it's already on screen when Lara's health is 20% or below (TombATI).\n- Flashing or default: constantly flash the healthbar when Lara's health is 20% or below, or show under default circumstances.\n- Flashing only: show the healthbar *only* when Lara's health is 20% or below (for challenge runs).\n- Always: always show the healthbar.\n- Never: never display the healthbar (for challenge runs).\n- PS1: show the healthbar under default circumstances with no flashing."
|
||||
},
|
||||
|
@ -389,7 +389,7 @@
|
|||
"Title": "Healthbar color",
|
||||
"Description": "Color of the healthbar."
|
||||
},
|
||||
"airbar_showing_mode": {
|
||||
"airbar_show_mode": {
|
||||
"Title": "Airbar behavior",
|
||||
"Description": "Changes how the airbar is displayed.\n- Default: show the airbar only in the water and flash the airbar when Lara's oxygen is 20% or below (TombATI).\n- Flashing only: show the airbar *only* when Lara's oxygen is 20% or below (for challenge runs).\n- Never: never display the airbar (for challenge runs).\n- PS1: show the airbar under default circumstances with no flashing."
|
||||
},
|
||||
|
@ -401,7 +401,7 @@
|
|||
"Title": "Airbar color",
|
||||
"Description": "Color of the airbar."
|
||||
},
|
||||
"enemy_healthbar_showing_mode": {
|
||||
"enemy_healthbar_show_mode": {
|
||||
"Title": "Show enemy healthbars",
|
||||
"Description": "Enables showing a healthbar for the active enemy."
|
||||
},
|
||||
|
|
|
@ -101,7 +101,7 @@
|
|||
"Title": "Ubicación de la barra de aire",
|
||||
"Description": "Ubicación donde se muestra la barra de aire."
|
||||
},
|
||||
"airbar_showing_mode": {
|
||||
"airbar_show_mode": {
|
||||
"Title": "Modo de visualización de la barra de aire",
|
||||
"Description": "Cambia la forma en que se muestra la barra de aire.\n- Predeterminado: muestra la barra de aire solo cuando Lara está bajo el agua y parpadea cuando el oxígeno está al 20% o menos (TombATI).\n- Solo parpadeo: muestra la barra de aire *solo* cuando el oxígeno de Lara está al 20% o menos (para carreras de desafío).\n- Nunca: nunca muestra la barra de aire (para carreras de desafío).\n- PS1: muestra la barra de aire en circunstancias predeterminadas sin parpadeo."
|
||||
},
|
||||
|
@ -177,7 +177,7 @@
|
|||
"Title": "Mostrar total de objetos y muertes",
|
||||
"Description": "Permite mostrar el recuento máximo de objetos recogidos y el recuento de muertes en cada nivel. Esto incluye objetos que no se pueden obtener."
|
||||
},
|
||||
"enemy_healthbar_showing_mode": {
|
||||
"enemy_healthbar_show_mode": {
|
||||
"Title": "Mostrar barra de salud enemiga",
|
||||
"Description": "Permite mostrar una barra de salud para el enemigo activo."
|
||||
},
|
||||
|
@ -381,7 +381,7 @@
|
|||
"Title": "Ubicación de la barra de salud",
|
||||
"Description": "Ubicación donde se muestra la barra de salud."
|
||||
},
|
||||
"healthbar_showing_mode": {
|
||||
"healthbar_show_mode": {
|
||||
"Title": "Modo de visualización de la barra de salud",
|
||||
"Description": "Cambia cómo se muestra la barra de salud.\n- Predeterminado: muestra la barra de salud al comienzo de un nivel, después de recibir un golpe o mientras tiene armas equipadas; muestra la barra de salud si ya está en la pantalla cuando la salud de Lara es del 20% o menos (TombATI).\n- Intermitente o predeterminada: la barra de salud parpadea constantemente cuando la salud de Lara es del 20% o menos, o se muestra en circunstancias predeterminadas.\n- Solo intermitente: muestra la barra de salud *solo* cuando la salud de Lara es del 20% o menos (para carreras de desafío).\n- Siempre: muestra siempre la barra de salud.\n- Nunca: nunca mostrar la barra de salud (para carreras de desafío).\n- PS1: muestra la barra de salud en circunstancias predeterminadas sin parpadear."
|
||||
},
|
||||
|
|
|
@ -377,7 +377,7 @@
|
|||
"Title": "Style des menus",
|
||||
"Description": "Changer le rendu des menus.\n - PC: Style d'interface de la version PC.\n - PS1: Style d'interface de la version PlayStation."
|
||||
},
|
||||
"healthbar_showing_mode": {
|
||||
"healthbar_show_mode": {
|
||||
"Title": "Comportement de la barre de santé",
|
||||
"Description": "Modifie l'affichage de la barre de santé.\n- Par défaut : affiche la barre de santé au début d'un niveau, après avoir été touché ou lorsque des armes sont équipées ; fait clignoter la barre de santé si elle est déjà à l'écran lorsque la santé de Lara est de 20 % ou moins (TombATI).\n- Clignotant ou par défaut : la barre de santé clignotte constamment lorsque la santé de Lara est à 20 % ou moins, ou s'affiche dans des circonstances par défaut.\n- Clignotant uniquement : affiche la barre de santé *uniquement* lorsque la santé de Lara est à 20 % ou moins (pour les courses de défi ).\n- Toujours : affiche toujours la barre de santé.\n- Jamais : n'affiche jamais la barre de santé (pour les défis).\n- PS1 : affiche la barre de santé dans les circonstances par défaut sans clignoter."
|
||||
},
|
||||
|
@ -389,7 +389,7 @@
|
|||
"Title": "Couleur de la barre de santé",
|
||||
"Description": "Choisir la couleur de la barre de santé de Lara."
|
||||
},
|
||||
"airbar_showing_mode": {
|
||||
"airbar_show_mode": {
|
||||
"Title": "Comportement de la barre d'air",
|
||||
"Description": "Modifie l'affichage de la barre d'air.\n- Par défaut : affiche la barre d'air uniquement dans l'eau et clignote lorsque l'oxygène de Lara est à 20 % ou moins (TombATI).\n- Clignotant uniquement : affiche la barre d'air *uniquement* lorsque l'oxygène de Lara est à 20 % ou moins (pour challenge runs).\n- Jamais : n'affiche jamais la barre d'air (pour les challenge runs).\n- PS1 : affiche la barre d'air dans les circonstances par défaut sans clignoter."
|
||||
},
|
||||
|
@ -401,7 +401,7 @@
|
|||
"Title": "Couleur de la barre d'air",
|
||||
"Description": "Choisir la couleur de la barre d'air."
|
||||
},
|
||||
"enemy_healthbar_showing_mode": {
|
||||
"enemy_healthbar_show_mode": {
|
||||
"Title": "Afficher la barre de santé des ennemis",
|
||||
"Description": "Affiche la barre de santé de l'ennemi sur lequel Lara vise et tire"
|
||||
},
|
||||
|
|
|
@ -377,7 +377,7 @@
|
|||
"Title": "Stile del menù",
|
||||
"Description": "Modifica la modalità di visualizzazione dei menu.\n - PC: Lo stile dell'interfaccia utente corrisponde alla versione PC.\n - PS1: Lo stile dell'interfaccia utente corrisponde alla versione PS1."
|
||||
},
|
||||
"healthbar_showing_mode": {
|
||||
"healthbar_show_mode": {
|
||||
"Title": "Comportamento della barra della salute",
|
||||
"Description": "Modifica la modalità di visualizzazione della barra della salute.\n- Predefinito: mostra la barra della salute all'inizio di un livello, dopo essere stato colpito o mentre si equipaggiano\n le armi; se già sullo schermo, la barra della salute lampeggia quando la salute di Lara è pari o inferiore al 20%\n (TombATI).\n- Lampeggiante o predefinito: la barra della salute lampeggia costantemente quando la salute di Lara è pari o\n inferiore al 20%, oppure viene visualizzata in circostanze predefinite.\n- Solo lampeggiante: mostra la barra della salute *solo* quando la salute di Lara è pari o inferiore al 20%\n (per le sfide).\n- Sempre: mostra sempre la barra della salute.\n- Mai: non visualizzare mai la barra della salute (per le sfide).\n- PS1: mostra la barra della salute in circostanze predefinite senza mai lampeggiare."
|
||||
},
|
||||
|
@ -389,7 +389,7 @@
|
|||
"Title": "Colore della barra della salute",
|
||||
"Description": "Colore utilizzato per la barra della salute."
|
||||
},
|
||||
"airbar_showing_mode": {
|
||||
"airbar_show_mode": {
|
||||
"Title": "Comportamento della barra dell'ossigeno",
|
||||
"Description": "Modifica la modalità di visualizzazione della barra dell'ossigeno.\n- Predefinito: mostra la barra dell'ossigeno solo in acqua e lampeggia quando l'ossigeno di Lara è pari o inferiore\n al 20% (TombATI).\n- Solo lampeggiante: mostra la barra dell'ossigeno *solo* quando l'ossigeno di Lara è pari o inferiore al 20%\n (per le sfide).\n- Mai: non visualizzare mai la barra dell'ossigeno (per le sfide).\n- PS1: mostra la barra dell'ossigeno in circostanze predefinite senza mai lampeggiare."
|
||||
},
|
||||
|
@ -401,7 +401,7 @@
|
|||
"Title": "Colore della barra dell'ossigeno",
|
||||
"Description": "Colore utilizzato per la barra dell'ossigeno."
|
||||
},
|
||||
"enemy_healthbar_showing_mode": {
|
||||
"enemy_healthbar_show_mode": {
|
||||
"Title": "Mostra la barra della salute dei nemici",
|
||||
"Description": "Abilita la visualizzazione della barra della salute per il nemico ingaggiato."
|
||||
},
|
||||
|
|
|
@ -464,7 +464,7 @@
|
|||
"DefaultValue": "pc"
|
||||
},
|
||||
{
|
||||
"Field": "healthbar_showing_mode",
|
||||
"Field": "healthbar_show_mode",
|
||||
"DataType": "Enum",
|
||||
"EnumKey": "healthbar_mode",
|
||||
"DefaultValue": "flashing-or-default"
|
||||
|
@ -482,7 +482,7 @@
|
|||
"DefaultValue": "red"
|
||||
},
|
||||
{
|
||||
"Field": "airbar_showing_mode",
|
||||
"Field": "airbar_show_mode",
|
||||
"DataType": "Enum",
|
||||
"EnumKey": "airbar_mode",
|
||||
"DefaultValue": "default"
|
||||
|
@ -500,7 +500,7 @@
|
|||
"DefaultValue": "blue"
|
||||
},
|
||||
{
|
||||
"Field": "enemy_healthbar_showing_mode",
|
||||
"Field": "enemy_healthbar_show_mode",
|
||||
"DataType": "Enum",
|
||||
"EnumKey": "enemy_healthbar_mode",
|
||||
"DefaultValue": "always"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue