diff --git a/CHANGELOG.md b/CHANGELOG.md index de11c2375..a3cd8a2f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ - fixed `/tp` console command not always picking the closest item (#1486, regression from 4.1) - fixed `/tp` console command reporting teleport fails as success (#1484, regression from 4.1) - fixed `/tp` console command allowing teleporting to consumed savegame crystals (#1518) +- fixed `/hp` console command taking arbitrary integers - fixed `/set` console command not sanitizing numeric values (#1515) - fixed console commands causing improper ring shutdown with selected inventory item (#1460, regression from 3.0) - fixed console input immediately ending demo (#1480, regression from 4.1) diff --git a/data/ship/cfg/TR1X_gameflow.json5 b/data/ship/cfg/TR1X_gameflow.json5 index 8a9c49f13..0e3317856 100644 --- a/data/ship/cfg/TR1X_gameflow.json5 +++ b/data/ship/cfg/TR1X_gameflow.json5 @@ -586,206 +586,206 @@ ], "strings": { - "HEADING_INVENTORY": "INVENTORY", - "HEADING_GAME_OVER": "GAME OVER", - "HEADING_OPTION": "OPTION", - "HEADING_ITEMS": "ITEMS", - "PASSPORT_SELECT_LEVEL": "Select Level", - "PASSPORT_RESTART_LEVEL": "Restart Level", - "PASSPORT_STORY_SO_FAR": "Story so far...", - "PASSPORT_LEGACY_SELECT_LEVEL_1": "Legacy saves do not", - "PASSPORT_LEGACY_SELECT_LEVEL_2": "support this feature.", - "PASSPORT_SELECT_MODE": "Select Mode", - "PASSPORT_MODE_NEW_GAME": "New Game", - "PASSPORT_MODE_NEW_GAME_PLUS": "New Game+", - "PASSPORT_MODE_NEW_GAME_JP": "Japanese NG", - "PASSPORT_MODE_NEW_GAME_JP_PLUS": "Japanese NG+", - "PASSPORT_NEW_GAME": "New Game", - "PASSPORT_LOAD_GAME": "Load Game", - "PASSPORT_SAVE_GAME": "Save Game", - "PASSPORT_EXIT_GAME": "Exit Game", - "PASSPORT_EXIT_TO_TITLE": "Exit to Title", - "DETAIL_SELECT_DETAIL": "Select Detail", + "CONTROL_CONTROLLER": "Controller", + "CONTROL_CUSTOMIZE": "Customize Controls", + "CONTROL_CUSTOM_1": "Custom Scheme 1", + "CONTROL_CUSTOM_2": "Custom Scheme 2", + "CONTROL_CUSTOM_3": "Custom Scheme 3", + "CONTROL_DEFAULT_KEYS": "Default Keys", + "CONTROL_KEYBOARD": "Keyboard", + "CONTROL_RESET_DEFAULTS_BTN": "Reset All: Hold %s", + "CONTROL_RESET_DEFAULTS_KEY": "Reset All: Hold R", + "CONTROL_UNBIND_BTN": "Unbind: Hold %s", + "CONTROL_UNBIND_KEY": "Unbind: Hold Backspace", + "DETAIL_BILINEAR": "Bilinear", + "DETAIL_BRIGHTNESS": "Brightness", + "DETAIL_DECIMAL_FMT": "%d", + "DETAIL_FBO_FILTER": "FBO filter", + "DETAIL_FLOAT_FMT": "%.1f", + "DETAIL_FPS": "FPS", "DETAIL_LEVEL_HIGH": "High", - "DETAIL_LEVEL_MEDIUM": "Medium", "DETAIL_LEVEL_LOW": "Low", - "DETAIL_FPS": "FPS", + "DETAIL_LEVEL_MEDIUM": "Medium", "DETAIL_PERSPECTIVE": "Perspective", "DETAIL_PRETTY_PIXELS": "Pretty pixels", "DETAIL_REFLECTIONS": "Reflections", - "DETAIL_BILINEAR": "Bilinear", - "DETAIL_TEXTURE_FILTER": "Texture filter", - "DETAIL_FBO_FILTER": "FBO filter", - "DETAIL_VSYNC": "VSync", - "DETAIL_BRIGHTNESS": "Brightness", - "DETAIL_UI_TEXT_SCALE": "UI text scale", - "DETAIL_UI_BAR_SCALE": "UI bar scale", "DETAIL_RENDER_MODE": "Render mode", - "DETAIL_RENDER_MODE_LEGACY": "Window size", "DETAIL_RENDER_MODE_FBO": "Framebuffer", + "DETAIL_RENDER_MODE_LEGACY": "Window size", "DETAIL_RESOLUTION": "Resolution", - "DETAIL_DECIMAL_FMT": "%d", - "DETAIL_STRING_FMT": "%s", - "DETAIL_FLOAT_FMT": "%.1f", "DETAIL_RESOLUTION_FMT": "%dx%d", - "SOUND_SET_VOLUMES": "Set Volumes", - "CONTROL_CUSTOMIZE": "Customize Controls", - "CONTROL_KEYBOARD": "Keyboard", - "CONTROL_CONTROLLER": "Controller", - "CONTROL_DEFAULT_KEYS": "Default Keys", - "CONTROL_CUSTOM_1": "Custom Scheme 1", - "CONTROL_CUSTOM_2": "Custom Scheme 2", - "CONTROL_CUSTOM_3": "Custom Scheme 3", - "CONTROL_RESET_DEFAULTS_KEY": "Reset All: Hold R", - "CONTROL_UNBIND_KEY": "Unbind: Hold Backspace", - "CONTROL_RESET_DEFAULTS_BTN": "Reset All: Hold %s", - "CONTROL_UNBIND_BTN": "Unbind: Hold %s", - "KEYMAP_RUN": "Run", - "KEYMAP_BACK": "Back", - "KEYMAP_LEFT": "Left", - "KEYMAP_RIGHT": "Right", - "KEYMAP_STEP_LEFT": "Step Left", - "KEYMAP_STEP_RIGHT": "Step Right", - "KEYMAP_WALK": "Walk", - "KEYMAP_JUMP": "Jump", - "KEYMAP_ACTION": "Action", - "KEYMAP_DRAW_WEAPON": "Draw Weapon", - "KEYMAP_LOOK": "Look", - "KEYMAP_ROLL": "Roll", - "KEYMAP_INVENTORY": "Inventory", - "KEYMAP_PAUSE": "Pause", - "KEYMAP_FLY_CHEAT": "Fly Cheat", - "KEYMAP_ITEM_CHEAT": "Item Cheat", - "KEYMAP_LEVEL_SKIP_CHEAT": "Level Skip", - "KEYMAP_TURBO_CHEAT": "Turbo Speed", - "KEYMAP_ENTER_CONSOLE": "Enter Console", - "KEYMAP_CHANGE_TARGET": "Change Target", - "KEYMAP_CAMERA_UP": "Camera Up", - "KEYMAP_CAMERA_DOWN": "Camera Down", - "KEYMAP_CAMERA_LEFT": "Camera Left", - "KEYMAP_CAMERA_RIGHT": "Camera Right", - "KEYMAP_CAMERA_RESET": "Reset Camera", - "KEYMAP_EQUIP_PISTOLS": "Equip Pistols", - "KEYMAP_EQUIP_SHOTGUN": "Equip Shotgun", - "KEYMAP_EQUIP_MAGNUMS": "Equip Magnums", - "KEYMAP_EQUIP_UZIS": "Equip Uzis", - "KEYMAP_USE_SMALL_MEDI": "Small Medi", - "KEYMAP_USE_BIG_MEDI": "Large Medi", - "KEYMAP_SAVE": "Quick Save", - "KEYMAP_LOAD": "Quick Load", - "KEYMAP_FPS": "Show FPS", - "KEYMAP_BILINEAR": "Toggle Texture Filter", - "STATS_KILLS_DETAIL_FMT": "KILLS %d of %d", - "STATS_KILLS_BASIC_FMT": "KILLS %d", - "STATS_PICKUPS_DETAIL_FMT": "PICKUPS %d of %d", - "STATS_PICKUPS_BASIC_FMT": "PICKUPS %d", - "STATS_SECRETS_FMT": "SECRETS %d of %d", - "STATS_DEATHS_FMT": "DEATHS %d", - "STATS_TIME_TAKEN_FMT": "TIME TAKEN %s", - "STATS_FINAL_STATISTICS": "Final Statistics", - "STATS_BONUS_STATISTICS": "Bonus Statistics", - "PAUSE_PAUSED": "Paused", - "PAUSE_EXIT_TO_TITLE": "Exit to title?", - "PAUSE_CONTINUE": "Continue", - "PAUSE_QUIT": "Quit", - "PAUSE_ARE_YOU_SURE": "Are you sure?", - "PAUSE_YES": "Yes", - "PAUSE_NO": "No", - "MISC_ON": "On", - "MISC_OFF": "Off", - "MISC_EMPTY_SLOT_FMT": "- EMPTY SLOT %d -", - "MISC_DEMO_MODE": "Demo Mode", - "INV_ITEM_MEDI": "Small Medi Pack", + "DETAIL_SELECT_DETAIL": "Select Detail", + "DETAIL_STRING_FMT": "%s", + "DETAIL_TEXTURE_FILTER": "Texture filter", + "DETAIL_UI_BAR_SCALE": "UI bar scale", + "DETAIL_UI_TEXT_SCALE": "UI text scale", + "DETAIL_VSYNC": "VSync", + "HEADING_GAME_OVER": "GAME OVER", + "HEADING_INVENTORY": "INVENTORY", + "HEADING_ITEMS": "ITEMS", + "HEADING_OPTION": "OPTION", "INV_ITEM_BIG_MEDI": "Large Medi Pack", - "INV_ITEM_PUZZLE1": "Puzzle", - "INV_ITEM_PUZZLE2": "Puzzle", - "INV_ITEM_PUZZLE3": "Puzzle", - "INV_ITEM_PUZZLE4": "Puzzle", + "INV_ITEM_COMPASS": "Compass", + "INV_ITEM_CONTROLS": "Controls", + "INV_ITEM_DETAILS": "Detail Levels", + "INV_ITEM_GAME": "Game", + "INV_ITEM_GRENADE": "Grenade", "INV_ITEM_KEY1": "Key", "INV_ITEM_KEY2": "Key", "INV_ITEM_KEY3": "Key", "INV_ITEM_KEY4": "Key", + "INV_ITEM_LARAS_HOME": "Lara's Home", + "INV_ITEM_LEADBAR": "Lead Bar", + "INV_ITEM_MAGNUM": "Magnums", + "INV_ITEM_MAGNUM_AMMO": "Magnum Clips", + "INV_ITEM_MEDI": "Small Medi Pack", "INV_ITEM_PICKUP1": "Pickup", "INV_ITEM_PICKUP2": "Pickup", - "INV_ITEM_LEADBAR": "Lead Bar", - "INV_ITEM_SCION": "Scion", "INV_ITEM_PISTOLS": "Pistols", - "INV_ITEM_SHOTGUN": "Shotgun", - "INV_ITEM_MAGNUM": "Magnums", - "INV_ITEM_UZI": "Uzis", - "INV_ITEM_GRENADE": "Grenade", "INV_ITEM_PISTOL_AMMO": "Pistol Clips", + "INV_ITEM_PUZZLE1": "Puzzle", + "INV_ITEM_PUZZLE2": "Puzzle", + "INV_ITEM_PUZZLE3": "Puzzle", + "INV_ITEM_PUZZLE4": "Puzzle", + "INV_ITEM_SCION": "Scion", + "INV_ITEM_SHOTGUN": "Shotgun", "INV_ITEM_SHOTGUN_AMMO": "Shotgun Shells", - "INV_ITEM_MAGNUM_AMMO": "Magnum Clips", - "INV_ITEM_UZI_AMMO": "Uzi Clips", - "INV_ITEM_COMPASS": "Compass", - "INV_ITEM_GAME": "Game", - "INV_ITEM_DETAILS": "Detail Levels", "INV_ITEM_SOUND": "Sound", - "INV_ITEM_CONTROLS": "Controls", - "INV_ITEM_LARAS_HOME": "Lara's Home", - "OSD_FLY_MODE_ON": "Fly mode enabled", + "INV_ITEM_UZI": "Uzis", + "INV_ITEM_UZI_AMMO": "Uzi Clips", + "KEYMAP_ACTION": "Action", + "KEYMAP_BACK": "Back", + "KEYMAP_BILINEAR": "Toggle Texture Filter", + "KEYMAP_CAMERA_DOWN": "Camera Down", + "KEYMAP_CAMERA_LEFT": "Camera Left", + "KEYMAP_CAMERA_RESET": "Reset Camera", + "KEYMAP_CAMERA_RIGHT": "Camera Right", + "KEYMAP_CAMERA_UP": "Camera Up", + "KEYMAP_CHANGE_TARGET": "Change Target", + "KEYMAP_DRAW_WEAPON": "Draw Weapon", + "KEYMAP_ENTER_CONSOLE": "Enter Console", + "KEYMAP_EQUIP_MAGNUMS": "Equip Magnums", + "KEYMAP_EQUIP_PISTOLS": "Equip Pistols", + "KEYMAP_EQUIP_SHOTGUN": "Equip Shotgun", + "KEYMAP_EQUIP_UZIS": "Equip Uzis", + "KEYMAP_FLY_CHEAT": "Fly Cheat", + "KEYMAP_FPS": "Show FPS", + "KEYMAP_INVENTORY": "Inventory", + "KEYMAP_ITEM_CHEAT": "Item Cheat", + "KEYMAP_JUMP": "Jump", + "KEYMAP_LEFT": "Left", + "KEYMAP_LEVEL_SKIP_CHEAT": "Level Skip", + "KEYMAP_LOAD": "Quick Load", + "KEYMAP_LOOK": "Look", + "KEYMAP_PAUSE": "Pause", + "KEYMAP_RIGHT": "Right", + "KEYMAP_ROLL": "Roll", + "KEYMAP_RUN": "Run", + "KEYMAP_SAVE": "Quick Save", + "KEYMAP_STEP_LEFT": "Step Left", + "KEYMAP_STEP_RIGHT": "Step Right", + "KEYMAP_TURBO_CHEAT": "Turbo Speed", + "KEYMAP_USE_BIG_MEDI": "Large Medi", + "KEYMAP_USE_SMALL_MEDI": "Small Medi", + "KEYMAP_WALK": "Walk", + "MISC_DEMO_MODE": "Demo Mode", + "MISC_EMPTY_SLOT_FMT": "- EMPTY SLOT %d -", + "MISC_OFF": "Off", + "MISC_ON": "On", + "OSD_BRAID_OFF": "Braid disabled", + "OSD_BRAID_ON": "Braid enabled", + "OSD_CHEATS_OFF": "Cheats disabled", + "OSD_CHEATS_ON": "Cheats enabled", + "OSD_COMMAND_BAD_INVOCATION": "Invalid invocation: %s", + "OSD_COMMAND_UNAVAILABLE": "This command is not currently available", + "OSD_COMPLETE_LEVEL": "Level complete!", + "OSD_CONFIG_OPTION_GET": "%s is currently set to %s", + "OSD_CONFIG_OPTION_SET": "%s changed to %s", + "OSD_CURRENT_HEALTH_GET": "Current Lara's health: %d", + "OSD_CURRENT_HEALTH_SET": "Lara's health set to %d", + "OSD_DOOR_CLOSE": "Close Sesame!", + "OSD_DOOR_OPEN": "Open Sesame!", + "OSD_DOOR_OPEN_FAIL": "No doors in Lara's proximity", + "OSD_FLIPMAP_FAIL_ALREADY_OFF": "Flipmap is already OFF", + "OSD_FLIPMAP_FAIL_ALREADY_ON": "Flipmap is already ON", + "OSD_FLIPMAP_OFF": "Flipmap set to OFF", + "OSD_FLIPMAP_ON": "Flipmap set to ON", "OSD_FLY_MODE_OFF": "Fly mode disabled", + "OSD_FLY_MODE_ON": "Fly mode enabled", + "OSD_FPS_COUNTER_OFF": "FPS counter disabled", + "OSD_FPS_COUNTER_ON": "FPS counter enabled", "OSD_FPS_GET": "FPS currently set to %d", "OSD_FPS_SET": "FPS set to %d", - "OSD_POS_GET": "Room: %d\nPosition: %.3f, %.3f, %.3f\nRotation: %.3f,%.3f,%.3f", - "OSD_POS_SET_POS": "Teleported to position: %.3f %.3f %.3f", - "OSD_POS_SET_POS_FAIL": "Failed to teleport to position: %.3f %.3f %.3f", - "OSD_POS_SET_ROOM": "Teleported to room: %d", - "OSD_POS_SET_ROOM_FAIL": "Failed to teleport to room: %d", - "OSD_POS_SET_ITEM": "Teleported to object: %s", - "OSD_POS_SET_ITEM_FAIL": "Failed to teleport to object: %s", - "OSD_SPEED_GET": "Current speed: %d", - "OSD_SPEED_SET": "Speed set to %d", - "OSD_BRAID_ON": "Braid enabled", - "OSD_BRAID_OFF": "Braid disabled", - "OSD_WIREFRAME_ON": "Wireframe enabled", - "OSD_WIREFRAME_OFF": "Wireframe disabled", - "OSD_VSYNC_ON": "VSync enabled", - "OSD_VSYNC_OFF": "VSync disabled", - "OSD_CHEATS_ON": "Cheats enabled", - "OSD_CHEATS_OFF": "Cheats disabled", "OSD_GIVE_ITEM": "Added %s to Lara's inventory", - "OSD_GIVE_ITEM_ALL_KEYS": "Surprise! Every key item Lara needs is now in her backpack.", "OSD_GIVE_ITEM_ALL_GUNS": "Lock'n'load - Lara's armed to the teeth!", + "OSD_GIVE_ITEM_ALL_KEYS": "Surprise! Every key item Lara needs is now in her backpack.", "OSD_GIVE_ITEM_CHEAT": "Lara's backpack just got way heavier!", - "OSD_FLIPMAP_ON": "Flipmap set to ON", - "OSD_FLIPMAP_OFF": "Flipmap set to OFF", - "OSD_FLIPMAP_FAIL_ALREADY_ON": "Flipmap is already ON", - "OSD_FLIPMAP_FAIL_ALREADY_OFF": "Flipmap is already OFF", + "OSD_HEAL_ALREADY_FULL_HP": "Lara's already at full health", + "OSD_HEAL_SUCCESS": "Healed Lara back to full health", + "OSD_INVALID_ITEM": "Unknown item: %s", + "OSD_INVALID_LEVEL": "Invalid level", + "OSD_INVALID_ROOM": "Invalid room: %d. Valid rooms are 0-%d", + "OSD_KILL": "Bye-bye!", "OSD_KILL_ALL": "Poof! %d enemies gone!", "OSD_KILL_ALL_FAIL": "Uh-oh, there are no enemies left to kill...", - "OSD_KILL": "Bye-bye!", "OSD_KILL_FAIL": "No enemy nearby...", - "OSD_COMPLETE_LEVEL": "Level complete!", - "OSD_PLAY_LEVEL": "Loading %s", - "OSD_TEXTURE_FILTER_SET": "Texture filter set to %s", - "OSD_TEXTURE_FILTER_NN": "nearest-neighbor", - "OSD_TEXTURE_FILTER_BILINEAR": "bilinear", - "OSD_PERSPECTIVE_FILTER_ON": "Perspective filter enabled", - "OSD_PERSPECTIVE_FILTER_OFF": "Perspective filter disabled", - "OSD_FPS_COUNTER_ON": "FPS counter enabled", - "OSD_FPS_COUNTER_OFF": "FPS counter disabled", - "OSD_INVALID_ITEM": "Unknown item: %s", - "OSD_INVALID_ROOM": "Invalid room: %d. Valid rooms are 0-%d", - "OSD_INVALID_LEVEL": "Invalid level", - "OSD_UNKNOWN_COMMAND": "Unknown command: %s", - "OSD_COMMAND_BAD_INVOCATION": "Invalid invocation: %s", - "OSD_COMMAND_UNAVAILABLE": "This command is not currently available", - "OSD_DOOR_OPEN": "Open Sesame!", - "OSD_DOOR_CLOSE": "Close Sesame!", - "OSD_DOOR_OPEN_FAIL": "No doors in Lara's proximity", "OSD_LOAD_GAME": "Loaded game from save slot %d", - "OSD_LOAD_GAME_FAIL_UNAVAILABLE_SLOT": "Save slot %d is not available", "OSD_LOAD_GAME_FAIL_INVALID_SLOT": "Invalid save slot %d", + "OSD_LOAD_GAME_FAIL_UNAVAILABLE_SLOT": "Save slot %d is not available", + "OSD_PERSPECTIVE_FILTER_OFF": "Perspective filter disabled", + "OSD_PERSPECTIVE_FILTER_ON": "Perspective filter enabled", + "OSD_PLAY_LEVEL": "Loading %s", + "OSD_POS_GET": "Room: %d\nPosition: %.3f, %.3f, %.3f\nRotation: %.3f,%.3f,%.3f", + "OSD_POS_SET_ITEM": "Teleported to object: %s", + "OSD_POS_SET_ITEM_FAIL": "Failed to teleport to object: %s", + "OSD_POS_SET_POS": "Teleported to position: %.3f %.3f %.3f", + "OSD_POS_SET_POS_FAIL": "Failed to teleport to position: %.3f %.3f %.3f", + "OSD_POS_SET_ROOM": "Teleported to room: %d", + "OSD_POS_SET_ROOM_FAIL": "Failed to teleport to room: %d", "OSD_SAVE_GAME": "Saved game to save slot %d", "OSD_SAVE_GAME_FAIL": "Cannot save the game in the current state", "OSD_SAVE_GAME_FAIL_INVALID_SLOT": "Invalid save slot %d", - "OSD_CURRENT_HEALTH_GET": "Current Lara's health: %d", - "OSD_CURRENT_HEALTH_SET": "Lara's health set to %d", - "OSD_HEAL_ALREADY_FULL_HP": "Lara's already at full health", - "OSD_HEAL_SUCCESS": "Healed Lara back to full health", - "OSD_CONFIG_OPTION_GET": "%s is currently set to %s", - "OSD_CONFIG_OPTION_SET": "%s changed to %s", + "OSD_SPEED_GET": "Current speed: %d", + "OSD_SPEED_SET": "Speed set to %d", + "OSD_TEXTURE_FILTER_BILINEAR": "bilinear", + "OSD_TEXTURE_FILTER_NN": "nearest-neighbor", + "OSD_TEXTURE_FILTER_SET": "Texture filter set to %s", + "OSD_UNKNOWN_COMMAND": "Unknown command: %s", + "OSD_VSYNC_OFF": "VSync disabled", + "OSD_VSYNC_ON": "VSync enabled", + "OSD_WIREFRAME_OFF": "Wireframe disabled", + "OSD_WIREFRAME_ON": "Wireframe enabled", + "PASSPORT_EXIT_GAME": "Exit Game", + "PASSPORT_EXIT_TO_TITLE": "Exit to Title", + "PASSPORT_LEGACY_SELECT_LEVEL_1": "Legacy saves do not", + "PASSPORT_LEGACY_SELECT_LEVEL_2": "support this feature.", + "PASSPORT_LOAD_GAME": "Load Game", + "PASSPORT_MODE_NEW_GAME": "New Game", + "PASSPORT_MODE_NEW_GAME_JP": "Japanese NG", + "PASSPORT_MODE_NEW_GAME_JP_PLUS": "Japanese NG+", + "PASSPORT_MODE_NEW_GAME_PLUS": "New Game+", + "PASSPORT_NEW_GAME": "New Game", + "PASSPORT_RESTART_LEVEL": "Restart Level", + "PASSPORT_SAVE_GAME": "Save Game", + "PASSPORT_SELECT_LEVEL": "Select Level", + "PASSPORT_SELECT_MODE": "Select Mode", + "PASSPORT_STORY_SO_FAR": "Story so far...", + "PAUSE_ARE_YOU_SURE": "Are you sure?", + "PAUSE_CONTINUE": "Continue", + "PAUSE_EXIT_TO_TITLE": "Exit to title?", + "PAUSE_NO": "No", + "PAUSE_PAUSED": "Paused", + "PAUSE_QUIT": "Quit", + "PAUSE_YES": "Yes", + "SOUND_SET_VOLUMES": "Set Volumes", + "STATS_BONUS_STATISTICS": "Bonus Statistics", + "STATS_DEATHS_FMT": "DEATHS %d", + "STATS_FINAL_STATISTICS": "Final Statistics", + "STATS_KILLS_BASIC_FMT": "KILLS %d", + "STATS_KILLS_DETAIL_FMT": "KILLS %d of %d", + "STATS_PICKUPS_BASIC_FMT": "PICKUPS %d", + "STATS_PICKUPS_DETAIL_FMT": "PICKUPS %d of %d", + "STATS_SECRETS_FMT": "SECRETS %d of %d", + "STATS_TIME_TAKEN_FMT": "TIME TAKEN %s", }, } diff --git a/data/ship/cfg/TR1X_gameflow_demo_pc.json5 b/data/ship/cfg/TR1X_gameflow_demo_pc.json5 index cd0112c60..4252f41d1 100644 --- a/data/ship/cfg/TR1X_gameflow_demo_pc.json5 +++ b/data/ship/cfg/TR1X_gameflow_demo_pc.json5 @@ -81,206 +81,206 @@ ], "strings": { - "HEADING_INVENTORY": "INVENTORY", - "HEADING_GAME_OVER": "GAME OVER", - "HEADING_OPTION": "OPTION", - "HEADING_ITEMS": "ITEMS", - "PASSPORT_SELECT_LEVEL": "Select Level", - "PASSPORT_RESTART_LEVEL": "Restart Level", - "PASSPORT_STORY_SO_FAR": "Story so far...", - "PASSPORT_LEGACY_SELECT_LEVEL_1": "Legacy saves do not", - "PASSPORT_LEGACY_SELECT_LEVEL_2": "support this feature.", - "PASSPORT_SELECT_MODE": "Select Mode", - "PASSPORT_MODE_NEW_GAME": "New Game", - "PASSPORT_MODE_NEW_GAME_PLUS": "New Game+", - "PASSPORT_MODE_NEW_GAME_JP": "Japanese NG", - "PASSPORT_MODE_NEW_GAME_JP_PLUS": "Japanese NG+", - "PASSPORT_NEW_GAME": "New Game", - "PASSPORT_LOAD_GAME": "Load Game", - "PASSPORT_SAVE_GAME": "Save Game", - "PASSPORT_EXIT_GAME": "Exit Game", - "PASSPORT_EXIT_TO_TITLE": "Exit to Title", - "DETAIL_SELECT_DETAIL": "Select Detail", + "CONTROL_CONTROLLER": "Controller", + "CONTROL_CUSTOMIZE": "Customize Controls", + "CONTROL_CUSTOM_1": "Custom Scheme 1", + "CONTROL_CUSTOM_2": "Custom Scheme 2", + "CONTROL_CUSTOM_3": "Custom Scheme 3", + "CONTROL_DEFAULT_KEYS": "Default Keys", + "CONTROL_KEYBOARD": "Keyboard", + "CONTROL_RESET_DEFAULTS_BTN": "Reset All: Hold %s", + "CONTROL_RESET_DEFAULTS_KEY": "Reset All: Hold R", + "CONTROL_UNBIND_BTN": "Unbind: Hold %s", + "CONTROL_UNBIND_KEY": "Unbind: Hold Backspace", + "DETAIL_BILINEAR": "Bilinear", + "DETAIL_BRIGHTNESS": "Brightness", + "DETAIL_DECIMAL_FMT": "%d", + "DETAIL_FBO_FILTER": "FBO filter", + "DETAIL_FLOAT_FMT": "%.1f", + "DETAIL_FPS": "FPS", "DETAIL_LEVEL_HIGH": "High", - "DETAIL_LEVEL_MEDIUM": "Medium", "DETAIL_LEVEL_LOW": "Low", - "DETAIL_FPS": "FPS", + "DETAIL_LEVEL_MEDIUM": "Medium", "DETAIL_PERSPECTIVE": "Perspective", "DETAIL_PRETTY_PIXELS": "Pretty pixels", "DETAIL_REFLECTIONS": "Reflections", - "DETAIL_BILINEAR": "Bilinear", - "DETAIL_TEXTURE_FILTER": "Texture filter", - "DETAIL_FBO_FILTER": "FBO filter", - "DETAIL_VSYNC": "VSync", - "DETAIL_BRIGHTNESS": "Brightness", - "DETAIL_UI_TEXT_SCALE": "UI text scale", - "DETAIL_UI_BAR_SCALE": "UI bar scale", "DETAIL_RENDER_MODE": "Render mode", - "DETAIL_RENDER_MODE_LEGACY": "Window size", "DETAIL_RENDER_MODE_FBO": "Framebuffer", + "DETAIL_RENDER_MODE_LEGACY": "Window size", "DETAIL_RESOLUTION": "Resolution", - "DETAIL_DECIMAL_FMT": "%d", - "DETAIL_STRING_FMT": "%s", - "DETAIL_FLOAT_FMT": "%.1f", "DETAIL_RESOLUTION_FMT": "%dx%d", - "SOUND_SET_VOLUMES": "Set Volumes", - "CONTROL_CUSTOMIZE": "Customize Controls", - "CONTROL_KEYBOARD": "Keyboard", - "CONTROL_CONTROLLER": "Controller", - "CONTROL_DEFAULT_KEYS": "Default Keys", - "CONTROL_CUSTOM_1": "Custom Scheme 1", - "CONTROL_CUSTOM_2": "Custom Scheme 2", - "CONTROL_CUSTOM_3": "Custom Scheme 3", - "CONTROL_RESET_DEFAULTS_KEY": "Reset All: Hold R", - "CONTROL_UNBIND_KEY": "Unbind: Hold Backspace", - "CONTROL_RESET_DEFAULTS_BTN": "Reset All: Hold %s", - "CONTROL_UNBIND_BTN": "Unbind: Hold %s", - "KEYMAP_RUN": "Run", - "KEYMAP_BACK": "Back", - "KEYMAP_LEFT": "Left", - "KEYMAP_RIGHT": "Right", - "KEYMAP_STEP_LEFT": "Step Left", - "KEYMAP_STEP_RIGHT": "Step Right", - "KEYMAP_WALK": "Walk", - "KEYMAP_JUMP": "Jump", - "KEYMAP_ACTION": "Action", - "KEYMAP_DRAW_WEAPON": "Draw Weapon", - "KEYMAP_LOOK": "Look", - "KEYMAP_ROLL": "Roll", - "KEYMAP_INVENTORY": "Inventory", - "KEYMAP_PAUSE": "Pause", - "KEYMAP_FLY_CHEAT": "Fly Cheat", - "KEYMAP_ITEM_CHEAT": "Item Cheat", - "KEYMAP_LEVEL_SKIP_CHEAT": "Level Skip", - "KEYMAP_TURBO_CHEAT": "Turbo Speed", - "KEYMAP_ENTER_CONSOLE": "Enter Console", - "KEYMAP_CHANGE_TARGET": "Change Target", - "KEYMAP_CAMERA_UP": "Camera Up", - "KEYMAP_CAMERA_DOWN": "Camera Down", - "KEYMAP_CAMERA_LEFT": "Camera Left", - "KEYMAP_CAMERA_RIGHT": "Camera Right", - "KEYMAP_CAMERA_RESET": "Reset Camera", - "KEYMAP_EQUIP_PISTOLS": "Equip Pistols", - "KEYMAP_EQUIP_SHOTGUN": "Equip Shotgun", - "KEYMAP_EQUIP_MAGNUMS": "Equip Magnums", - "KEYMAP_EQUIP_UZIS": "Equip Uzis", - "KEYMAP_USE_SMALL_MEDI": "Small Medi", - "KEYMAP_USE_BIG_MEDI": "Large Medi", - "KEYMAP_SAVE": "Quick Save", - "KEYMAP_LOAD": "Quick Load", - "KEYMAP_FPS": "Show FPS", - "KEYMAP_BILINEAR": "Toggle Texture Filter", - "STATS_KILLS_DETAIL_FMT": "KILLS %d of %d", - "STATS_KILLS_BASIC_FMT": "KILLS %d", - "STATS_PICKUPS_DETAIL_FMT": "PICKUPS %d of %d", - "STATS_PICKUPS_BASIC_FMT": "PICKUPS %d", - "STATS_SECRETS_FMT": "SECRETS %d of %d", - "STATS_DEATHS_FMT": "DEATHS %d", - "STATS_TIME_TAKEN_FMT": "TIME TAKEN %s", - "STATS_FINAL_STATISTICS": "Final Statistics", - "STATS_BONUS_STATISTICS": "Bonus Statistics", - "PAUSE_PAUSED": "Paused", - "PAUSE_EXIT_TO_TITLE": "Exit to title?", - "PAUSE_CONTINUE": "Continue", - "PAUSE_QUIT": "Quit", - "PAUSE_ARE_YOU_SURE": "Are you sure?", - "PAUSE_YES": "Yes", - "PAUSE_NO": "No", - "MISC_ON": "On", - "MISC_OFF": "Off", - "MISC_EMPTY_SLOT_FMT": "- EMPTY SLOT %d -", - "MISC_DEMO_MODE": "Demo Mode", - "INV_ITEM_MEDI": "Small Medi Pack", + "DETAIL_SELECT_DETAIL": "Select Detail", + "DETAIL_STRING_FMT": "%s", + "DETAIL_TEXTURE_FILTER": "Texture filter", + "DETAIL_UI_BAR_SCALE": "UI bar scale", + "DETAIL_UI_TEXT_SCALE": "UI text scale", + "DETAIL_VSYNC": "VSync", + "HEADING_GAME_OVER": "GAME OVER", + "HEADING_INVENTORY": "INVENTORY", + "HEADING_ITEMS": "ITEMS", + "HEADING_OPTION": "OPTION", "INV_ITEM_BIG_MEDI": "Large Medi Pack", - "INV_ITEM_PUZZLE1": "Puzzle", - "INV_ITEM_PUZZLE2": "Puzzle", - "INV_ITEM_PUZZLE3": "Puzzle", - "INV_ITEM_PUZZLE4": "Puzzle", + "INV_ITEM_COMPASS": "Compass", + "INV_ITEM_CONTROLS": "Controls", + "INV_ITEM_DETAILS": "Detail Levels", + "INV_ITEM_GAME": "Game", + "INV_ITEM_GRENADE": "Grenade", "INV_ITEM_KEY1": "Key", "INV_ITEM_KEY2": "Key", "INV_ITEM_KEY3": "Key", "INV_ITEM_KEY4": "Key", + "INV_ITEM_LARAS_HOME": "Lara's Home", + "INV_ITEM_LEADBAR": "Lead Bar", + "INV_ITEM_MAGNUM": "Magnums", + "INV_ITEM_MAGNUM_AMMO": "Magnum Clips", + "INV_ITEM_MEDI": "Small Medi Pack", "INV_ITEM_PICKUP1": "Pickup", "INV_ITEM_PICKUP2": "Pickup", - "INV_ITEM_LEADBAR": "Lead Bar", - "INV_ITEM_SCION": "Scion", "INV_ITEM_PISTOLS": "Pistols", - "INV_ITEM_SHOTGUN": "Shotgun", - "INV_ITEM_MAGNUM": "Magnums", - "INV_ITEM_UZI": "Uzis", - "INV_ITEM_GRENADE": "Grenade", "INV_ITEM_PISTOL_AMMO": "Pistol Clips", + "INV_ITEM_PUZZLE1": "Puzzle", + "INV_ITEM_PUZZLE2": "Puzzle", + "INV_ITEM_PUZZLE3": "Puzzle", + "INV_ITEM_PUZZLE4": "Puzzle", + "INV_ITEM_SCION": "Scion", + "INV_ITEM_SHOTGUN": "Shotgun", "INV_ITEM_SHOTGUN_AMMO": "Shotgun Shells", - "INV_ITEM_MAGNUM_AMMO": "Magnum Clips", - "INV_ITEM_UZI_AMMO": "Uzi Clips", - "INV_ITEM_COMPASS": "Compass", - "INV_ITEM_GAME": "Game", - "INV_ITEM_DETAILS": "Detail Levels", "INV_ITEM_SOUND": "Sound", - "INV_ITEM_CONTROLS": "Controls", - "INV_ITEM_LARAS_HOME": "Lara's Home", - "OSD_FLY_MODE_ON": "Fly mode enabled", + "INV_ITEM_UZI": "Uzis", + "INV_ITEM_UZI_AMMO": "Uzi Clips", + "KEYMAP_ACTION": "Action", + "KEYMAP_BACK": "Back", + "KEYMAP_BILINEAR": "Toggle Texture Filter", + "KEYMAP_CAMERA_DOWN": "Camera Down", + "KEYMAP_CAMERA_LEFT": "Camera Left", + "KEYMAP_CAMERA_RESET": "Reset Camera", + "KEYMAP_CAMERA_RIGHT": "Camera Right", + "KEYMAP_CAMERA_UP": "Camera Up", + "KEYMAP_CHANGE_TARGET": "Change Target", + "KEYMAP_DRAW_WEAPON": "Draw Weapon", + "KEYMAP_ENTER_CONSOLE": "Enter Console", + "KEYMAP_EQUIP_MAGNUMS": "Equip Magnums", + "KEYMAP_EQUIP_PISTOLS": "Equip Pistols", + "KEYMAP_EQUIP_SHOTGUN": "Equip Shotgun", + "KEYMAP_EQUIP_UZIS": "Equip Uzis", + "KEYMAP_FLY_CHEAT": "Fly Cheat", + "KEYMAP_FPS": "Show FPS", + "KEYMAP_INVENTORY": "Inventory", + "KEYMAP_ITEM_CHEAT": "Item Cheat", + "KEYMAP_JUMP": "Jump", + "KEYMAP_LEFT": "Left", + "KEYMAP_LEVEL_SKIP_CHEAT": "Level Skip", + "KEYMAP_LOAD": "Quick Load", + "KEYMAP_LOOK": "Look", + "KEYMAP_PAUSE": "Pause", + "KEYMAP_RIGHT": "Right", + "KEYMAP_ROLL": "Roll", + "KEYMAP_RUN": "Run", + "KEYMAP_SAVE": "Quick Save", + "KEYMAP_STEP_LEFT": "Step Left", + "KEYMAP_STEP_RIGHT": "Step Right", + "KEYMAP_TURBO_CHEAT": "Turbo Speed", + "KEYMAP_USE_BIG_MEDI": "Large Medi", + "KEYMAP_USE_SMALL_MEDI": "Small Medi", + "KEYMAP_WALK": "Walk", + "MISC_DEMO_MODE": "Demo Mode", + "MISC_EMPTY_SLOT_FMT": "- EMPTY SLOT %d -", + "MISC_OFF": "Off", + "MISC_ON": "On", + "OSD_BRAID_OFF": "Braid disabled", + "OSD_BRAID_ON": "Braid enabled", + "OSD_CHEATS_OFF": "Cheats disabled", + "OSD_CHEATS_ON": "Cheats enabled", + "OSD_COMMAND_BAD_INVOCATION": "Invalid invocation: %s", + "OSD_COMMAND_UNAVAILABLE": "This command is not currently available", + "OSD_COMPLETE_LEVEL": "Level complete!", + "OSD_CONFIG_OPTION_GET": "%s is currently set to %s", + "OSD_CONFIG_OPTION_SET": "%s changed to %s", + "OSD_CURRENT_HEALTH_GET": "Current Lara's health: %d", + "OSD_CURRENT_HEALTH_SET": "Lara's health set to %d", + "OSD_DOOR_CLOSE": "Close Sesame!", + "OSD_DOOR_OPEN": "Open Sesame!", + "OSD_DOOR_OPEN_FAIL": "No doors in Lara's proximity", + "OSD_FLIPMAP_FAIL_ALREADY_OFF": "Flipmap is already OFF", + "OSD_FLIPMAP_FAIL_ALREADY_ON": "Flipmap is already ON", + "OSD_FLIPMAP_OFF": "Flipmap set to OFF", + "OSD_FLIPMAP_ON": "Flipmap set to ON", "OSD_FLY_MODE_OFF": "Fly mode disabled", + "OSD_FLY_MODE_ON": "Fly mode enabled", + "OSD_FPS_COUNTER_OFF": "FPS counter disabled", + "OSD_FPS_COUNTER_ON": "FPS counter enabled", "OSD_FPS_GET": "FPS currently set to %d", "OSD_FPS_SET": "FPS set to %d", - "OSD_POS_GET": "Room: %d\nPosition: %.3f, %.3f, %.3f\nRotation: %.3f,%.3f,%.3f", - "OSD_POS_SET_POS": "Teleported to position: %.3f %.3f %.3f", - "OSD_POS_SET_POS_FAIL": "Failed to teleport to position: %.3f %.3f %.3f", - "OSD_POS_SET_ROOM": "Teleported to room: %d", - "OSD_POS_SET_ROOM_FAIL": "Failed to teleport to room: %d", - "OSD_POS_SET_ITEM": "Teleported to object: %s", - "OSD_POS_SET_ITEM_FAIL": "Failed to teleport to object: %s", - "OSD_SPEED_GET": "Current speed: %d", - "OSD_SPEED_SET": "Speed set to %d", - "OSD_BRAID_ON": "Braid enabled", - "OSD_BRAID_OFF": "Braid disabled", - "OSD_WIREFRAME_ON": "Wireframe enabled", - "OSD_WIREFRAME_OFF": "Wireframe disabled", - "OSD_VSYNC_ON": "VSync enabled", - "OSD_VSYNC_OFF": "VSync disabled", - "OSD_CHEATS_ON": "Cheats enabled", - "OSD_CHEATS_OFF": "Cheats disabled", "OSD_GIVE_ITEM": "Added %s to Lara's inventory", - "OSD_GIVE_ITEM_ALL_KEYS": "Surprise! Every key item Lara needs is now in her backpack.", "OSD_GIVE_ITEM_ALL_GUNS": "Lock'n'load - Lara's armed to the teeth!", + "OSD_GIVE_ITEM_ALL_KEYS": "Surprise! Every key item Lara needs is now in her backpack.", "OSD_GIVE_ITEM_CHEAT": "Lara's backpack just got way heavier!", - "OSD_FLIPMAP_ON": "Flipmap set to ON", - "OSD_FLIPMAP_OFF": "Flipmap set to OFF", - "OSD_FLIPMAP_FAIL_ALREADY_ON": "Flipmap is already ON", - "OSD_FLIPMAP_FAIL_ALREADY_OFF": "Flipmap is already OFF", + "OSD_HEAL_ALREADY_FULL_HP": "Lara's already at full health", + "OSD_HEAL_SUCCESS": "Healed Lara back to full health", + "OSD_INVALID_ITEM": "Unknown item: %s", + "OSD_INVALID_LEVEL": "Invalid level", + "OSD_INVALID_ROOM": "Invalid room: %d. Valid rooms are 0-%d", + "OSD_KILL": "Bye-bye!", "OSD_KILL_ALL": "Poof! %d enemies gone!", "OSD_KILL_ALL_FAIL": "Uh-oh, there are no enemies left to kill...", - "OSD_KILL": "Bye-bye!", "OSD_KILL_FAIL": "No enemy nearby...", - "OSD_COMPLETE_LEVEL": "Level complete!", - "OSD_PLAY_LEVEL": "Loading %s", - "OSD_TEXTURE_FILTER_SET": "Texture filter set to %s", - "OSD_TEXTURE_FILTER_NN": "nearest-neighbor", - "OSD_TEXTURE_FILTER_BILINEAR": "bilinear", - "OSD_PERSPECTIVE_FILTER_ON": "Perspective filter enabled", - "OSD_PERSPECTIVE_FILTER_OFF": "Perspective filter disabled", - "OSD_FPS_COUNTER_ON": "FPS counter enabled", - "OSD_FPS_COUNTER_OFF": "FPS counter disabled", - "OSD_INVALID_ITEM": "Unknown item: %s", - "OSD_INVALID_ROOM": "Invalid room: %d. Valid rooms are 0-%d", - "OSD_INVALID_LEVEL": "Invalid level", - "OSD_UNKNOWN_COMMAND": "Unknown command: %s", - "OSD_COMMAND_BAD_INVOCATION": "Invalid invocation: %s", - "OSD_COMMAND_UNAVAILABLE": "This command is not currently available", - "OSD_DOOR_OPEN": "Open Sesame!", - "OSD_DOOR_CLOSE": "Close Sesame!", - "OSD_DOOR_OPEN_FAIL": "No doors in Lara's proximity", "OSD_LOAD_GAME": "Loaded game from save slot %d", - "OSD_LOAD_GAME_FAIL_UNAVAILABLE_SLOT": "Save slot %d is not available", "OSD_LOAD_GAME_FAIL_INVALID_SLOT": "Invalid save slot %d", + "OSD_LOAD_GAME_FAIL_UNAVAILABLE_SLOT": "Save slot %d is not available", + "OSD_PERSPECTIVE_FILTER_OFF": "Perspective filter disabled", + "OSD_PERSPECTIVE_FILTER_ON": "Perspective filter enabled", + "OSD_PLAY_LEVEL": "Loading %s", + "OSD_POS_GET": "Room: %d\nPosition: %.3f, %.3f, %.3f\nRotation: %.3f,%.3f,%.3f", + "OSD_POS_SET_ITEM": "Teleported to object: %s", + "OSD_POS_SET_ITEM_FAIL": "Failed to teleport to object: %s", + "OSD_POS_SET_POS": "Teleported to position: %.3f %.3f %.3f", + "OSD_POS_SET_POS_FAIL": "Failed to teleport to position: %.3f %.3f %.3f", + "OSD_POS_SET_ROOM": "Teleported to room: %d", + "OSD_POS_SET_ROOM_FAIL": "Failed to teleport to room: %d", "OSD_SAVE_GAME": "Saved game to save slot %d", "OSD_SAVE_GAME_FAIL": "Cannot save the game in the current state", "OSD_SAVE_GAME_FAIL_INVALID_SLOT": "Invalid save slot %d", - "OSD_CURRENT_HEALTH_GET": "Current Lara's health: %d", - "OSD_CURRENT_HEALTH_SET": "Lara's health set to %d", - "OSD_HEAL_ALREADY_FULL_HP": "Lara's already at full health", - "OSD_HEAL_SUCCESS": "Healed Lara back to full health", - "OSD_CONFIG_OPTION_GET": "%s is currently set to %s", - "OSD_CONFIG_OPTION_SET": "%s changed to %s", + "OSD_SPEED_GET": "Current speed: %d", + "OSD_SPEED_SET": "Speed set to %d", + "OSD_TEXTURE_FILTER_BILINEAR": "bilinear", + "OSD_TEXTURE_FILTER_NN": "nearest-neighbor", + "OSD_TEXTURE_FILTER_SET": "Texture filter set to %s", + "OSD_UNKNOWN_COMMAND": "Unknown command: %s", + "OSD_VSYNC_OFF": "VSync disabled", + "OSD_VSYNC_ON": "VSync enabled", + "OSD_WIREFRAME_OFF": "Wireframe disabled", + "OSD_WIREFRAME_ON": "Wireframe enabled", + "PASSPORT_EXIT_GAME": "Exit Game", + "PASSPORT_EXIT_TO_TITLE": "Exit to Title", + "PASSPORT_LEGACY_SELECT_LEVEL_1": "Legacy saves do not", + "PASSPORT_LEGACY_SELECT_LEVEL_2": "support this feature.", + "PASSPORT_LOAD_GAME": "Load Game", + "PASSPORT_MODE_NEW_GAME": "New Game", + "PASSPORT_MODE_NEW_GAME_JP": "Japanese NG", + "PASSPORT_MODE_NEW_GAME_JP_PLUS": "Japanese NG+", + "PASSPORT_MODE_NEW_GAME_PLUS": "New Game+", + "PASSPORT_NEW_GAME": "New Game", + "PASSPORT_RESTART_LEVEL": "Restart Level", + "PASSPORT_SAVE_GAME": "Save Game", + "PASSPORT_SELECT_LEVEL": "Select Level", + "PASSPORT_SELECT_MODE": "Select Mode", + "PASSPORT_STORY_SO_FAR": "Story so far...", + "PAUSE_ARE_YOU_SURE": "Are you sure?", + "PAUSE_CONTINUE": "Continue", + "PAUSE_EXIT_TO_TITLE": "Exit to title?", + "PAUSE_NO": "No", + "PAUSE_PAUSED": "Paused", + "PAUSE_QUIT": "Quit", + "PAUSE_YES": "Yes", + "SOUND_SET_VOLUMES": "Set Volumes", + "STATS_BONUS_STATISTICS": "Bonus Statistics", + "STATS_DEATHS_FMT": "DEATHS %d", + "STATS_FINAL_STATISTICS": "Final Statistics", + "STATS_KILLS_BASIC_FMT": "KILLS %d", + "STATS_KILLS_DETAIL_FMT": "KILLS %d of %d", + "STATS_PICKUPS_BASIC_FMT": "PICKUPS %d", + "STATS_PICKUPS_DETAIL_FMT": "PICKUPS %d of %d", + "STATS_SECRETS_FMT": "SECRETS %d of %d", + "STATS_TIME_TAKEN_FMT": "TIME TAKEN %s", }, } diff --git a/data/ship/cfg/TR1X_gameflow_ub.json5 b/data/ship/cfg/TR1X_gameflow_ub.json5 index 363ad8f71..27e8bd2e8 100644 --- a/data/ship/cfg/TR1X_gameflow_ub.json5 +++ b/data/ship/cfg/TR1X_gameflow_ub.json5 @@ -153,206 +153,206 @@ ], "strings": { - "HEADING_INVENTORY": "INVENTORY", - "HEADING_GAME_OVER": "GAME OVER", - "HEADING_OPTION": "OPTION", - "HEADING_ITEMS": "ITEMS", - "PASSPORT_SELECT_LEVEL": "Select Level", - "PASSPORT_RESTART_LEVEL": "Restart Level", - "PASSPORT_STORY_SO_FAR": "Story so far...", - "PASSPORT_LEGACY_SELECT_LEVEL_1": "Legacy saves do not", - "PASSPORT_LEGACY_SELECT_LEVEL_2": "support this feature.", - "PASSPORT_SELECT_MODE": "Select Mode", - "PASSPORT_MODE_NEW_GAME": "New Game", - "PASSPORT_MODE_NEW_GAME_PLUS": "New Game+", - "PASSPORT_MODE_NEW_GAME_JP": "Japanese NG", - "PASSPORT_MODE_NEW_GAME_JP_PLUS": "Japanese NG+", - "PASSPORT_NEW_GAME": "New Game", - "PASSPORT_LOAD_GAME": "Load Game", - "PASSPORT_SAVE_GAME": "Save Game", - "PASSPORT_EXIT_GAME": "Exit Game", - "PASSPORT_EXIT_TO_TITLE": "Exit to Title", - "DETAIL_SELECT_DETAIL": "Select Detail", + "CONTROL_CONTROLLER": "Controller", + "CONTROL_CUSTOMIZE": "Customize Controls", + "CONTROL_CUSTOM_1": "Custom Scheme 1", + "CONTROL_CUSTOM_2": "Custom Scheme 2", + "CONTROL_CUSTOM_3": "Custom Scheme 3", + "CONTROL_DEFAULT_KEYS": "Default Keys", + "CONTROL_KEYBOARD": "Keyboard", + "CONTROL_RESET_DEFAULTS_BTN": "Reset All: Hold %s", + "CONTROL_RESET_DEFAULTS_KEY": "Reset All: Hold R", + "CONTROL_UNBIND_BTN": "Unbind: Hold %s", + "CONTROL_UNBIND_KEY": "Unbind: Hold Backspace", + "DETAIL_BILINEAR": "Bilinear", + "DETAIL_BRIGHTNESS": "Brightness", + "DETAIL_DECIMAL_FMT": "%d", + "DETAIL_FBO_FILTER": "FBO filter", + "DETAIL_FLOAT_FMT": "%.1f", + "DETAIL_FPS": "FPS", "DETAIL_LEVEL_HIGH": "High", - "DETAIL_LEVEL_MEDIUM": "Medium", "DETAIL_LEVEL_LOW": "Low", - "DETAIL_FPS": "FPS", + "DETAIL_LEVEL_MEDIUM": "Medium", "DETAIL_PERSPECTIVE": "Perspective", "DETAIL_PRETTY_PIXELS": "Pretty pixels", "DETAIL_REFLECTIONS": "Reflections", - "DETAIL_BILINEAR": "Bilinear", - "DETAIL_TEXTURE_FILTER": "Texture filter", - "DETAIL_FBO_FILTER": "FBO filter", - "DETAIL_VSYNC": "VSync", - "DETAIL_BRIGHTNESS": "Brightness", - "DETAIL_UI_TEXT_SCALE": "UI text scale", - "DETAIL_UI_BAR_SCALE": "UI bar scale", "DETAIL_RENDER_MODE": "Render mode", - "DETAIL_RENDER_MODE_LEGACY": "Window size", "DETAIL_RENDER_MODE_FBO": "Framebuffer", + "DETAIL_RENDER_MODE_LEGACY": "Window size", "DETAIL_RESOLUTION": "Resolution", - "DETAIL_DECIMAL_FMT": "%d", - "DETAIL_STRING_FMT": "%s", - "DETAIL_FLOAT_FMT": "%.1f", "DETAIL_RESOLUTION_FMT": "%dx%d", - "SOUND_SET_VOLUMES": "Set Volumes", - "CONTROL_CUSTOMIZE": "Customize Controls", - "CONTROL_KEYBOARD": "Keyboard", - "CONTROL_CONTROLLER": "Controller", - "CONTROL_DEFAULT_KEYS": "Default Keys", - "CONTROL_CUSTOM_1": "Custom Scheme 1", - "CONTROL_CUSTOM_2": "Custom Scheme 2", - "CONTROL_CUSTOM_3": "Custom Scheme 3", - "CONTROL_RESET_DEFAULTS_KEY": "Reset All: Hold R", - "CONTROL_UNBIND_KEY": "Unbind: Hold Backspace", - "CONTROL_RESET_DEFAULTS_BTN": "Reset All: Hold %s", - "CONTROL_UNBIND_BTN": "Unbind: Hold %s", - "KEYMAP_RUN": "Run", - "KEYMAP_BACK": "Back", - "KEYMAP_LEFT": "Left", - "KEYMAP_RIGHT": "Right", - "KEYMAP_STEP_LEFT": "Step Left", - "KEYMAP_STEP_RIGHT": "Step Right", - "KEYMAP_WALK": "Walk", - "KEYMAP_JUMP": "Jump", - "KEYMAP_ACTION": "Action", - "KEYMAP_DRAW_WEAPON": "Draw Weapon", - "KEYMAP_LOOK": "Look", - "KEYMAP_ROLL": "Roll", - "KEYMAP_INVENTORY": "Inventory", - "KEYMAP_PAUSE": "Pause", - "KEYMAP_FLY_CHEAT": "Fly Cheat", - "KEYMAP_ITEM_CHEAT": "Item Cheat", - "KEYMAP_LEVEL_SKIP_CHEAT": "Level Skip", - "KEYMAP_TURBO_CHEAT": "Turbo Speed", - "KEYMAP_ENTER_CONSOLE": "Enter Console", - "KEYMAP_CHANGE_TARGET": "Change Target", - "KEYMAP_CAMERA_UP": "Camera Up", - "KEYMAP_CAMERA_DOWN": "Camera Down", - "KEYMAP_CAMERA_LEFT": "Camera Left", - "KEYMAP_CAMERA_RIGHT": "Camera Right", - "KEYMAP_CAMERA_RESET": "Reset Camera", - "KEYMAP_EQUIP_PISTOLS": "Equip Pistols", - "KEYMAP_EQUIP_SHOTGUN": "Equip Shotgun", - "KEYMAP_EQUIP_MAGNUMS": "Equip Magnums", - "KEYMAP_EQUIP_UZIS": "Equip Uzis", - "KEYMAP_USE_SMALL_MEDI": "Small Medi", - "KEYMAP_USE_BIG_MEDI": "Large Medi", - "KEYMAP_SAVE": "Quick Save", - "KEYMAP_LOAD": "Quick Load", - "KEYMAP_FPS": "Show FPS", - "KEYMAP_BILINEAR": "Toggle Texture Filter", - "STATS_KILLS_DETAIL_FMT": "KILLS %d of %d", - "STATS_KILLS_BASIC_FMT": "KILLS %d", - "STATS_PICKUPS_DETAIL_FMT": "PICKUPS %d of %d", - "STATS_PICKUPS_BASIC_FMT": "PICKUPS %d", - "STATS_SECRETS_FMT": "SECRETS %d of %d", - "STATS_DEATHS_FMT": "DEATHS %d", - "STATS_TIME_TAKEN_FMT": "TIME TAKEN %s", - "STATS_FINAL_STATISTICS": "Final Statistics", - "STATS_BONUS_STATISTICS": "Bonus Statistics", - "PAUSE_PAUSED": "Paused", - "PAUSE_EXIT_TO_TITLE": "Exit to title?", - "PAUSE_CONTINUE": "Continue", - "PAUSE_QUIT": "Quit", - "PAUSE_ARE_YOU_SURE": "Are you sure?", - "PAUSE_YES": "Yes", - "PAUSE_NO": "No", - "MISC_ON": "On", - "MISC_OFF": "Off", - "MISC_EMPTY_SLOT_FMT": "- EMPTY SLOT %d -", - "MISC_DEMO_MODE": "Demo Mode", - "INV_ITEM_MEDI": "Small Medi Pack", + "DETAIL_SELECT_DETAIL": "Select Detail", + "DETAIL_STRING_FMT": "%s", + "DETAIL_TEXTURE_FILTER": "Texture filter", + "DETAIL_UI_BAR_SCALE": "UI bar scale", + "DETAIL_UI_TEXT_SCALE": "UI text scale", + "DETAIL_VSYNC": "VSync", + "HEADING_GAME_OVER": "GAME OVER", + "HEADING_INVENTORY": "INVENTORY", + "HEADING_ITEMS": "ITEMS", + "HEADING_OPTION": "OPTION", "INV_ITEM_BIG_MEDI": "Large Medi Pack", - "INV_ITEM_PUZZLE1": "Puzzle", - "INV_ITEM_PUZZLE2": "Puzzle", - "INV_ITEM_PUZZLE3": "Puzzle", - "INV_ITEM_PUZZLE4": "Puzzle", + "INV_ITEM_COMPASS": "Compass", + "INV_ITEM_CONTROLS": "Controls", + "INV_ITEM_DETAILS": "Detail Levels", + "INV_ITEM_GAME": "Game", + "INV_ITEM_GRENADE": "Grenade", "INV_ITEM_KEY1": "Key", "INV_ITEM_KEY2": "Key", "INV_ITEM_KEY3": "Key", "INV_ITEM_KEY4": "Key", + "INV_ITEM_LARAS_HOME": "Lara's Home", + "INV_ITEM_LEADBAR": "Lead Bar", + "INV_ITEM_MAGNUM": "Magnums", + "INV_ITEM_MAGNUM_AMMO": "Magnum Clips", + "INV_ITEM_MEDI": "Small Medi Pack", "INV_ITEM_PICKUP1": "Pickup", "INV_ITEM_PICKUP2": "Pickup", - "INV_ITEM_LEADBAR": "Lead Bar", - "INV_ITEM_SCION": "Scion", "INV_ITEM_PISTOLS": "Pistols", - "INV_ITEM_SHOTGUN": "Shotgun", - "INV_ITEM_MAGNUM": "Magnums", - "INV_ITEM_UZI": "Uzis", - "INV_ITEM_GRENADE": "Grenade", "INV_ITEM_PISTOL_AMMO": "Pistol Clips", + "INV_ITEM_PUZZLE1": "Puzzle", + "INV_ITEM_PUZZLE2": "Puzzle", + "INV_ITEM_PUZZLE3": "Puzzle", + "INV_ITEM_PUZZLE4": "Puzzle", + "INV_ITEM_SCION": "Scion", + "INV_ITEM_SHOTGUN": "Shotgun", "INV_ITEM_SHOTGUN_AMMO": "Shotgun Shells", - "INV_ITEM_MAGNUM_AMMO": "Magnum Clips", - "INV_ITEM_UZI_AMMO": "Uzi Clips", - "INV_ITEM_COMPASS": "Compass", - "INV_ITEM_GAME": "Game", - "INV_ITEM_DETAILS": "Detail Levels", "INV_ITEM_SOUND": "Sound", - "INV_ITEM_CONTROLS": "Controls", - "INV_ITEM_LARAS_HOME": "Lara's Home", - "OSD_FLY_MODE_ON": "Fly mode enabled", + "INV_ITEM_UZI": "Uzis", + "INV_ITEM_UZI_AMMO": "Uzi Clips", + "KEYMAP_ACTION": "Action", + "KEYMAP_BACK": "Back", + "KEYMAP_BILINEAR": "Toggle Texture Filter", + "KEYMAP_CAMERA_DOWN": "Camera Down", + "KEYMAP_CAMERA_LEFT": "Camera Left", + "KEYMAP_CAMERA_RESET": "Reset Camera", + "KEYMAP_CAMERA_RIGHT": "Camera Right", + "KEYMAP_CAMERA_UP": "Camera Up", + "KEYMAP_CHANGE_TARGET": "Change Target", + "KEYMAP_DRAW_WEAPON": "Draw Weapon", + "KEYMAP_ENTER_CONSOLE": "Enter Console", + "KEYMAP_EQUIP_MAGNUMS": "Equip Magnums", + "KEYMAP_EQUIP_PISTOLS": "Equip Pistols", + "KEYMAP_EQUIP_SHOTGUN": "Equip Shotgun", + "KEYMAP_EQUIP_UZIS": "Equip Uzis", + "KEYMAP_FLY_CHEAT": "Fly Cheat", + "KEYMAP_FPS": "Show FPS", + "KEYMAP_INVENTORY": "Inventory", + "KEYMAP_ITEM_CHEAT": "Item Cheat", + "KEYMAP_JUMP": "Jump", + "KEYMAP_LEFT": "Left", + "KEYMAP_LEVEL_SKIP_CHEAT": "Level Skip", + "KEYMAP_LOAD": "Quick Load", + "KEYMAP_LOOK": "Look", + "KEYMAP_PAUSE": "Pause", + "KEYMAP_RIGHT": "Right", + "KEYMAP_ROLL": "Roll", + "KEYMAP_RUN": "Run", + "KEYMAP_SAVE": "Quick Save", + "KEYMAP_STEP_LEFT": "Step Left", + "KEYMAP_STEP_RIGHT": "Step Right", + "KEYMAP_TURBO_CHEAT": "Turbo Speed", + "KEYMAP_USE_BIG_MEDI": "Large Medi", + "KEYMAP_USE_SMALL_MEDI": "Small Medi", + "KEYMAP_WALK": "Walk", + "MISC_DEMO_MODE": "Demo Mode", + "MISC_EMPTY_SLOT_FMT": "- EMPTY SLOT %d -", + "MISC_OFF": "Off", + "MISC_ON": "On", + "OSD_BRAID_OFF": "Braid disabled", + "OSD_BRAID_ON": "Braid enabled", + "OSD_CHEATS_OFF": "Cheats disabled", + "OSD_CHEATS_ON": "Cheats enabled", + "OSD_COMMAND_BAD_INVOCATION": "Invalid invocation: %s", + "OSD_COMMAND_UNAVAILABLE": "This command is not currently available", + "OSD_COMPLETE_LEVEL": "Level complete!", + "OSD_CONFIG_OPTION_GET": "%s is currently set to %s", + "OSD_CONFIG_OPTION_SET": "%s changed to %s", + "OSD_CURRENT_HEALTH_GET": "Current Lara's health: %d", + "OSD_CURRENT_HEALTH_SET": "Lara's health set to %d", + "OSD_DOOR_CLOSE": "Close Sesame!", + "OSD_DOOR_OPEN": "Open Sesame!", + "OSD_DOOR_OPEN_FAIL": "No doors in Lara's proximity", + "OSD_FLIPMAP_FAIL_ALREADY_OFF": "Flipmap is already OFF", + "OSD_FLIPMAP_FAIL_ALREADY_ON": "Flipmap is already ON", + "OSD_FLIPMAP_OFF": "Flipmap set to OFF", + "OSD_FLIPMAP_ON": "Flipmap set to ON", "OSD_FLY_MODE_OFF": "Fly mode disabled", + "OSD_FLY_MODE_ON": "Fly mode enabled", + "OSD_FPS_COUNTER_OFF": "FPS counter disabled", + "OSD_FPS_COUNTER_ON": "FPS counter enabled", "OSD_FPS_GET": "FPS currently set to %d", "OSD_FPS_SET": "FPS set to %d", - "OSD_POS_GET": "Room: %d\nPosition: %.3f, %.3f, %.3f\nRotation: %.3f,%.3f,%.3f", - "OSD_POS_SET_POS": "Teleported to position: %.3f %.3f %.3f", - "OSD_POS_SET_POS_FAIL": "Failed to teleport to position: %.3f %.3f %.3f", - "OSD_POS_SET_ROOM": "Teleported to room: %d", - "OSD_POS_SET_ROOM_FAIL": "Failed to teleport to room: %d", - "OSD_POS_SET_ITEM": "Teleported to object: %s", - "OSD_POS_SET_ITEM_FAIL": "Failed to teleport to object: %s", - "OSD_SPEED_GET": "Current speed: %d", - "OSD_SPEED_SET": "Speed set to %d", - "OSD_BRAID_ON": "Braid enabled", - "OSD_BRAID_OFF": "Braid disabled", - "OSD_WIREFRAME_ON": "Wireframe enabled", - "OSD_WIREFRAME_OFF": "Wireframe disabled", - "OSD_VSYNC_ON": "VSync enabled", - "OSD_VSYNC_OFF": "VSync disabled", - "OSD_CHEATS_ON": "Cheats enabled", - "OSD_CHEATS_OFF": "Cheats disabled", "OSD_GIVE_ITEM": "Added %s to Lara's inventory", - "OSD_GIVE_ITEM_ALL_KEYS": "Surprise! Every key item Lara needs is now in her backpack.", "OSD_GIVE_ITEM_ALL_GUNS": "Lock'n'load - Lara's armed to the teeth!", + "OSD_GIVE_ITEM_ALL_KEYS": "Surprise! Every key item Lara needs is now in her backpack.", "OSD_GIVE_ITEM_CHEAT": "Lara's backpack just got way heavier!", - "OSD_FLIPMAP_ON": "Flipmap set to ON", - "OSD_FLIPMAP_OFF": "Flipmap set to OFF", - "OSD_FLIPMAP_FAIL_ALREADY_ON": "Flipmap is already ON", - "OSD_FLIPMAP_FAIL_ALREADY_OFF": "Flipmap is already OFF", + "OSD_HEAL_ALREADY_FULL_HP": "Lara's already at full health", + "OSD_HEAL_SUCCESS": "Healed Lara back to full health", + "OSD_INVALID_ITEM": "Unknown item: %s", + "OSD_INVALID_LEVEL": "Invalid level", + "OSD_INVALID_ROOM": "Invalid room: %d. Valid rooms are 0-%d", + "OSD_KILL": "Bye-bye!", "OSD_KILL_ALL": "Poof! %d enemies gone!", "OSD_KILL_ALL_FAIL": "Uh-oh, there are no enemies left to kill...", - "OSD_KILL": "Bye-bye!", "OSD_KILL_FAIL": "No enemy nearby...", - "OSD_COMPLETE_LEVEL": "Level complete!", - "OSD_PLAY_LEVEL": "Loading %s", - "OSD_TEXTURE_FILTER_SET": "Texture filter set to %s", - "OSD_TEXTURE_FILTER_NN": "nearest-neighbor", - "OSD_TEXTURE_FILTER_BILINEAR": "bilinear", - "OSD_PERSPECTIVE_FILTER_ON": "Perspective filter enabled", - "OSD_PERSPECTIVE_FILTER_OFF": "Perspective filter disabled", - "OSD_FPS_COUNTER_ON": "FPS counter enabled", - "OSD_FPS_COUNTER_OFF": "FPS counter disabled", - "OSD_INVALID_ITEM": "Unknown item: %s", - "OSD_INVALID_ROOM": "Invalid room: %d. Valid rooms are 0-%d", - "OSD_INVALID_LEVEL": "Invalid level", - "OSD_UNKNOWN_COMMAND": "Unknown command: %s", - "OSD_COMMAND_BAD_INVOCATION": "Invalid invocation: %s", - "OSD_COMMAND_UNAVAILABLE": "This command is not currently available", - "OSD_DOOR_OPEN": "Open Sesame!", - "OSD_DOOR_CLOSE": "Close Sesame!", - "OSD_DOOR_OPEN_FAIL": "No doors in Lara's proximity", "OSD_LOAD_GAME": "Loaded game from save slot %d", - "OSD_LOAD_GAME_FAIL_UNAVAILABLE_SLOT": "Save slot %d is not available", "OSD_LOAD_GAME_FAIL_INVALID_SLOT": "Invalid save slot %d", + "OSD_LOAD_GAME_FAIL_UNAVAILABLE_SLOT": "Save slot %d is not available", + "OSD_PERSPECTIVE_FILTER_OFF": "Perspective filter disabled", + "OSD_PERSPECTIVE_FILTER_ON": "Perspective filter enabled", + "OSD_PLAY_LEVEL": "Loading %s", + "OSD_POS_GET": "Room: %d\nPosition: %.3f, %.3f, %.3f\nRotation: %.3f,%.3f,%.3f", + "OSD_POS_SET_ITEM": "Teleported to object: %s", + "OSD_POS_SET_ITEM_FAIL": "Failed to teleport to object: %s", + "OSD_POS_SET_POS": "Teleported to position: %.3f %.3f %.3f", + "OSD_POS_SET_POS_FAIL": "Failed to teleport to position: %.3f %.3f %.3f", + "OSD_POS_SET_ROOM": "Teleported to room: %d", + "OSD_POS_SET_ROOM_FAIL": "Failed to teleport to room: %d", "OSD_SAVE_GAME": "Saved game to save slot %d", "OSD_SAVE_GAME_FAIL": "Cannot save the game in the current state", "OSD_SAVE_GAME_FAIL_INVALID_SLOT": "Invalid save slot %d", - "OSD_CURRENT_HEALTH_GET": "Current Lara's health: %d", - "OSD_CURRENT_HEALTH_SET": "Lara's health set to %d", - "OSD_HEAL_ALREADY_FULL_HP": "Lara's already at full health", - "OSD_HEAL_SUCCESS": "Healed Lara back to full health", - "OSD_CONFIG_OPTION_GET": "%s is currently set to %s", - "OSD_CONFIG_OPTION_SET": "%s changed to %s", + "OSD_SPEED_GET": "Current speed: %d", + "OSD_SPEED_SET": "Speed set to %d", + "OSD_TEXTURE_FILTER_BILINEAR": "bilinear", + "OSD_TEXTURE_FILTER_NN": "nearest-neighbor", + "OSD_TEXTURE_FILTER_SET": "Texture filter set to %s", + "OSD_UNKNOWN_COMMAND": "Unknown command: %s", + "OSD_VSYNC_OFF": "VSync disabled", + "OSD_VSYNC_ON": "VSync enabled", + "OSD_WIREFRAME_OFF": "Wireframe disabled", + "OSD_WIREFRAME_ON": "Wireframe enabled", + "PASSPORT_EXIT_GAME": "Exit Game", + "PASSPORT_EXIT_TO_TITLE": "Exit to Title", + "PASSPORT_LEGACY_SELECT_LEVEL_1": "Legacy saves do not", + "PASSPORT_LEGACY_SELECT_LEVEL_2": "support this feature.", + "PASSPORT_LOAD_GAME": "Load Game", + "PASSPORT_MODE_NEW_GAME": "New Game", + "PASSPORT_MODE_NEW_GAME_JP": "Japanese NG", + "PASSPORT_MODE_NEW_GAME_JP_PLUS": "Japanese NG+", + "PASSPORT_MODE_NEW_GAME_PLUS": "New Game+", + "PASSPORT_NEW_GAME": "New Game", + "PASSPORT_RESTART_LEVEL": "Restart Level", + "PASSPORT_SAVE_GAME": "Save Game", + "PASSPORT_SELECT_LEVEL": "Select Level", + "PASSPORT_SELECT_MODE": "Select Mode", + "PASSPORT_STORY_SO_FAR": "Story so far...", + "PAUSE_ARE_YOU_SURE": "Are you sure?", + "PAUSE_CONTINUE": "Continue", + "PAUSE_EXIT_TO_TITLE": "Exit to title?", + "PAUSE_NO": "No", + "PAUSE_PAUSED": "Paused", + "PAUSE_QUIT": "Quit", + "PAUSE_YES": "Yes", + "SOUND_SET_VOLUMES": "Set Volumes", + "STATS_BONUS_STATISTICS": "Bonus Statistics", + "STATS_DEATHS_FMT": "DEATHS %d", + "STATS_FINAL_STATISTICS": "Final Statistics", + "STATS_KILLS_BASIC_FMT": "KILLS %d", + "STATS_KILLS_DETAIL_FMT": "KILLS %d of %d", + "STATS_PICKUPS_BASIC_FMT": "PICKUPS %d", + "STATS_PICKUPS_DETAIL_FMT": "PICKUPS %d of %d", + "STATS_SECRETS_FMT": "SECRETS %d of %d", + "STATS_TIME_TAKEN_FMT": "TIME TAKEN %s", }, } diff --git a/src/game/console.c b/src/game/console.c index c58d10ec1..1d0778667 100644 --- a/src/game/console.c +++ b/src/game/console.c @@ -2,7 +2,6 @@ #include "config.h" #include "game/clock.h" -#include "game/console_cmd.h" #include "game/game_string.h" #include "game/input.h" #include "game/output.h" @@ -12,6 +11,7 @@ #include "global/const.h" #include "global/types.h" +#include #include #include @@ -53,6 +53,8 @@ static void Console_UpdatePromptTextstring(void); static void Console_UpdateCaretTextstring(void); static COMMAND_RESULT Console_Eval(const char *const cmdline); +extern CONSOLE_COMMAND *g_ConsoleCommands[]; + static void Console_UpdatePromptTextstring(void) { Text_ChangeText(m_Prompt.prompt_ts, m_Prompt.text); @@ -74,8 +76,12 @@ static COMMAND_RESULT Console_Eval(const char *const cmdline) const char *args = NULL; const CONSOLE_COMMAND *matching_cmd = NULL; - for (CONSOLE_COMMAND *cur_cmd = &g_ConsoleCommands[0]; - cur_cmd->prefix != NULL; cur_cmd++) { + for (int32_t i = 0;; i++) { + CONSOLE_COMMAND *const cur_cmd = g_ConsoleCommands[i]; + if (cur_cmd == NULL) { + break; + } + if (strstr(cmdline, cur_cmd->prefix) != cmdline) { continue; } diff --git a/src/game/console_cmd.c b/src/game/console_cmd.c index 258ca62a5..7db4c0ae3 100644 --- a/src/game/console_cmd.c +++ b/src/game/console_cmd.c @@ -1,5 +1,3 @@ -#include "game/console_cmd.h" - #include "config.h" #include "config_map.h" #include "game/clock.h" @@ -23,6 +21,9 @@ #include "global/types.h" #include "global/vars.h" +#include +#include +#include #include #include @@ -39,9 +40,7 @@ static bool Console_Cmd_GetCurrentValue( static bool Console_Cmd_SetCurrentValue(const char *key, const char *new_value); static bool Console_Cmd_IsFloatRound(const float num); static COMMAND_RESULT Console_Cmd_Fps(const char *const args); -static COMMAND_RESULT Console_Cmd_Pos(const char *const args); static COMMAND_RESULT Console_Cmd_Teleport(const char *const args); -static COMMAND_RESULT Console_Cmd_SetHealth(const char *const args); static COMMAND_RESULT Console_Cmd_Heal(const char *const args); static COMMAND_RESULT Console_Cmd_Fly(const char *const args); static COMMAND_RESULT Console_Cmd_Speed(const char *const args); @@ -91,22 +90,6 @@ static COMMAND_RESULT Console_Cmd_Fps(const char *const args) return CR_BAD_INVOCATION; } -static COMMAND_RESULT Console_Cmd_Pos(const char *const args) -{ - if (!g_Objects[O_LARA].loaded) { - return CR_UNAVAILABLE; - } - - Console_Log( - GS(OSD_POS_GET), g_LaraItem->room_num, - g_LaraItem->pos.x / (float)WALL_L, g_LaraItem->pos.y / (float)WALL_L, - g_LaraItem->pos.z / (float)WALL_L, - g_LaraItem->rot.x * 360.0f / (float)PHD_ONE, - g_LaraItem->rot.y * 360.0f / (float)PHD_ONE, - g_LaraItem->rot.z * 360.0f / (float)PHD_ONE); - return CR_SUCCESS; -} - static COMMAND_RESULT Console_Cmd_Teleport(const char *const args) { if (g_GameInfo.current_level_type == GFL_TITLE @@ -232,33 +215,6 @@ static COMMAND_RESULT Console_Cmd_Teleport(const char *const args) return CR_BAD_INVOCATION; } -static COMMAND_RESULT Console_Cmd_SetHealth(const char *const args) -{ - if (g_GameInfo.current_level_type == GFL_TITLE - || g_GameInfo.current_level_type == GFL_DEMO - || g_GameInfo.current_level_type == GFL_CUTSCENE) { - return CR_UNAVAILABLE; - } - - if (!g_Objects[O_LARA].loaded) { - return CR_UNAVAILABLE; - } - - if (String_Equivalent(args, "")) { - Console_Log(GS(OSD_CURRENT_HEALTH_GET), g_LaraItem->hit_points); - return CR_SUCCESS; - } - - int32_t hp; - if (sscanf(args, "%d", &hp) != 1) { - return CR_BAD_INVOCATION; - } - - g_LaraItem->hit_points = hp; - Console_Log(GS(OSD_CURRENT_HEALTH_SET), hp); - return CR_SUCCESS; -} - static COMMAND_RESULT Console_Cmd_Heal(const char *const args) { if (g_GameInfo.current_level_type == GFL_TITLE @@ -871,33 +827,34 @@ static COMMAND_RESULT Console_Cmd_Abortion(const char *args) return CR_SUCCESS; } -CONSOLE_COMMAND g_ConsoleCommands[] = { - { .prefix = "fps", .proc = Console_Cmd_Fps }, - { .prefix = "pos", .proc = Console_Cmd_Pos }, - { .prefix = "tp", .proc = Console_Cmd_Teleport }, - { .prefix = "hp", .proc = Console_Cmd_SetHealth }, - { .prefix = "heal", .proc = Console_Cmd_Heal }, - { .prefix = "fly", .proc = Console_Cmd_Fly }, - { .prefix = "speed", .proc = Console_Cmd_Speed }, - { .prefix = "vsync", .proc = Console_Cmd_VSync }, - { .prefix = "braid", .proc = Console_Cmd_Braid }, - { .prefix = "wireframe", .proc = Console_Cmd_Wireframe }, - { .prefix = "cheats", .proc = Console_Cmd_Cheats }, - { .prefix = "give", .proc = Console_Cmd_GiveItem }, - { .prefix = "gimme", .proc = Console_Cmd_GiveItem }, - { .prefix = "set", .proc = Console_Cmd_Set }, - { .prefix = "flip", .proc = Console_Cmd_FlipMap }, - { .prefix = "flipmap", .proc = Console_Cmd_FlipMap }, - { .prefix = "kill", .proc = Console_Cmd_Kill }, - { .prefix = "endlevel", .proc = Console_Cmd_EndLevel }, - { .prefix = "play", .proc = Console_Cmd_StartLevel }, - { .prefix = "level", .proc = Console_Cmd_StartLevel }, - { .prefix = "load", .proc = Console_Cmd_LoadGame }, - { .prefix = "save", .proc = Console_Cmd_SaveGame }, - { .prefix = "demo", .proc = Console_Cmd_StartDemo }, - { .prefix = "title", .proc = Console_Cmd_ExitToTitle }, - { .prefix = "exit", .proc = Console_Cmd_ExitGame }, - { .prefix = "abortion", .proc = Console_Cmd_Abortion }, - { .prefix = "natlastinks", .proc = Console_Cmd_Abortion }, - { .prefix = NULL, .proc = NULL }, +CONSOLE_COMMAND *g_ConsoleCommands[] = { + &(CONSOLE_COMMAND) { .prefix = "fps", .proc = Console_Cmd_Fps }, + &(CONSOLE_COMMAND) { .prefix = "tp", .proc = Console_Cmd_Teleport }, + &(CONSOLE_COMMAND) { .prefix = "heal", .proc = Console_Cmd_Heal }, + &(CONSOLE_COMMAND) { .prefix = "fly", .proc = Console_Cmd_Fly }, + &(CONSOLE_COMMAND) { .prefix = "speed", .proc = Console_Cmd_Speed }, + &(CONSOLE_COMMAND) { .prefix = "vsync", .proc = Console_Cmd_VSync }, + &(CONSOLE_COMMAND) { .prefix = "braid", .proc = Console_Cmd_Braid }, + &(CONSOLE_COMMAND) { .prefix = "wireframe", .proc = Console_Cmd_Wireframe }, + &(CONSOLE_COMMAND) { .prefix = "cheats", .proc = Console_Cmd_Cheats }, + &(CONSOLE_COMMAND) { .prefix = "give", .proc = Console_Cmd_GiveItem }, + &(CONSOLE_COMMAND) { .prefix = "gimme", .proc = Console_Cmd_GiveItem }, + &(CONSOLE_COMMAND) { .prefix = "set", .proc = Console_Cmd_Set }, + &(CONSOLE_COMMAND) { .prefix = "flip", .proc = Console_Cmd_FlipMap }, + &(CONSOLE_COMMAND) { .prefix = "flipmap", .proc = Console_Cmd_FlipMap }, + &(CONSOLE_COMMAND) { .prefix = "kill", .proc = Console_Cmd_Kill }, + &(CONSOLE_COMMAND) { .prefix = "endlevel", .proc = Console_Cmd_EndLevel }, + &(CONSOLE_COMMAND) { .prefix = "play", .proc = Console_Cmd_StartLevel }, + &(CONSOLE_COMMAND) { .prefix = "level", .proc = Console_Cmd_StartLevel }, + &(CONSOLE_COMMAND) { .prefix = "load", .proc = Console_Cmd_LoadGame }, + &(CONSOLE_COMMAND) { .prefix = "save", .proc = Console_Cmd_SaveGame }, + &(CONSOLE_COMMAND) { .prefix = "demo", .proc = Console_Cmd_StartDemo }, + &(CONSOLE_COMMAND) { .prefix = "title", .proc = Console_Cmd_ExitToTitle }, + &(CONSOLE_COMMAND) { .prefix = "exit", .proc = Console_Cmd_ExitGame }, + &(CONSOLE_COMMAND) { .prefix = "abortion", .proc = Console_Cmd_Abortion }, + &(CONSOLE_COMMAND) { .prefix = "natlastinks", + .proc = Console_Cmd_Abortion }, + &g_Console_Cmd_Pos, + &g_Console_Cmd_SetHealth, + NULL, }; diff --git a/src/game/console_cmd.h b/src/game/console_cmd.h deleted file mode 100644 index cfd5fe7a0..000000000 --- a/src/game/console_cmd.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once - -#include - -typedef enum { - CR_SUCCESS, - CR_FAILURE, - CR_UNAVAILABLE, - CR_BAD_INVOCATION, -} COMMAND_RESULT; - -typedef struct CONSOLE_COMMAND { - const char *prefix; - COMMAND_RESULT (*proc)(const char *args); -} CONSOLE_COMMAND; - -extern CONSOLE_COMMAND g_ConsoleCommands[]; diff --git a/src/game/game.h b/src/game/game.h index 2c4d7efe6..1c121763b 100644 --- a/src/game/game.h +++ b/src/game/game.h @@ -13,3 +13,5 @@ void Game_ProcessInput(void); void Game_DrawScene(bool draw_overlay); GAMEFLOW_COMMAND Game_MainMenu(void); + +bool Game_IsPlayable(void); diff --git a/src/game/game/game.c b/src/game/game/game.c index fa7186de4..913004e84 100644 --- a/src/game/game/game.c +++ b/src/game/game/game.c @@ -241,3 +241,18 @@ GAMEFLOW_COMMAND Game_Stop(void) return (GAMEFLOW_COMMAND) { .action = GF_EXIT_TO_TITLE }; } } + +bool Game_IsPlayable(void) +{ + if (g_GameInfo.current_level_type == GFL_TITLE + || g_GameInfo.current_level_type == GFL_DEMO + || g_GameInfo.current_level_type == GFL_CUTSCENE) { + return false; + } + + if (!g_Objects[O_LARA].loaded) { + return false; + } + + return true; +} diff --git a/src/game/game_string.c b/src/game/game_string.c index aff8bd572..56bf3122b 100644 --- a/src/game/game_string.c +++ b/src/game/game_string.c @@ -5,6 +5,8 @@ void GameString_Init(void) { #include "game_string.def" + +#include } void GameString_Shutdown(void) diff --git a/src/game/game_string.def b/src/game/game_string.def index a50935f52..bb1ecabd9 100644 --- a/src/game/game_string.def +++ b/src/game/game_string.def @@ -140,7 +140,6 @@ GS_DEFINE(OSD_FLY_MODE_ON, "Fly mode enabled") GS_DEFINE(OSD_FLY_MODE_OFF, "Fly mode disabled") GS_DEFINE(OSD_FPS_GET, "FPS currently set to %d") GS_DEFINE(OSD_FPS_SET, "FPS set to %d") -GS_DEFINE(OSD_POS_GET, "Room: %d\nPosition: %.3f, %.3f, %.3f\nRotation: %.3f,%.3f,%.3f") GS_DEFINE(OSD_POS_SET_POS, "Teleported to position: %.3f %.3f %.3f") GS_DEFINE(OSD_POS_SET_POS_FAIL, "Failed to teleport to position: %.3f %.3f %.3f") GS_DEFINE(OSD_POS_SET_ROOM, "Teleported to room: %d") @@ -193,8 +192,6 @@ GS_DEFINE(OSD_LOAD_GAME_FAIL_INVALID_SLOT, "Invalid save slot %d") GS_DEFINE(OSD_SAVE_GAME, "Saved game to save slot %d") GS_DEFINE(OSD_SAVE_GAME_FAIL, "Cannot save the game in the current state") GS_DEFINE(OSD_SAVE_GAME_FAIL_INVALID_SLOT, "Invalid save slot %d") -GS_DEFINE(OSD_CURRENT_HEALTH_GET, "Current Lara's health: %d") -GS_DEFINE(OSD_CURRENT_HEALTH_SET, "Lara's health set to %d") GS_DEFINE(OSD_HEAL_ALREADY_FULL_HP, "Lara's already at full health") GS_DEFINE(OSD_HEAL_SUCCESS, "Healed Lara back to full health") GS_DEFINE(OSD_CONFIG_OPTION_GET, "%s is currently set to %s") diff --git a/src/game/lara/lara.c b/src/game/lara/lara.c index e3986349a..ec4c7f0d5 100644 --- a/src/game/lara/lara.c +++ b/src/game/lara/lara.c @@ -31,6 +31,11 @@ #define LARA_MOVE_SPEED 16 #define LARA_UW_DAMAGE 5 +ITEM_INFO *Lara_GetItem(void) +{ + return g_LaraItem; +} + void Lara_Control(void) { COLL_INFO coll = { 0 }; diff --git a/src/game/objects/common.c b/src/game/objects/common.c index a5f77785e..879fa80db 100644 --- a/src/game/objects/common.c +++ b/src/game/objects/common.c @@ -228,6 +228,11 @@ const GAME_OBJECT_PAIR g_ItemToInvObjectMap[] = { // clang-format on }; +OBJECT_INFO *Object_GetObject(GAME_OBJECT_ID object_id) +{ + return &g_Objects[object_id]; +} + GAME_OBJECT_ID Object_GetCognate( GAME_OBJECT_ID key_id, const GAME_OBJECT_PAIR *test_map) { diff --git a/src/global/types.h b/src/global/types.h index edc7d9608..c7841362d 100644 --- a/src/global/types.h +++ b/src/global/types.h @@ -2,8 +2,10 @@ #include "global/const.h" +#include #include #include +#include #include #include @@ -579,13 +581,6 @@ typedef enum HEIGHT_TYPE { HT_BIG_SLOPE = 2, } HEIGHT_TYPE; -typedef enum DIRECTION { - DIR_NORTH = 0, - DIR_EAST = 1, - DIR_SOUTH = 2, - DIR_WEST = 3, -} DIRECTION; - typedef enum ANIM_COMMAND { AC_NULL = 0, AC_MOVE_ORIGIN = 1, @@ -1072,18 +1067,6 @@ typedef struct CINE_POSITION { XYZ_16 rot; } CINE_POSITION; -typedef struct BOUNDS_16 { - XYZ_16 min; - XYZ_16 max; -} BOUNDS_16; - -typedef struct FRAME_INFO { - BOUNDS_16 bounds; - XYZ_16 offset; - int16_t nmeshes; - int32_t *mesh_rots; -} FRAME_INFO; - typedef struct LARA_ARM { FRAME_INFO *frame_base; int16_t frame_num; @@ -1373,74 +1356,6 @@ typedef struct TEXTSTRING { struct BAR_INFO progress_bar; } TEXTSTRING; -typedef struct COLL_INFO { - int32_t mid_floor; - int32_t mid_ceiling; - int32_t mid_type; - int32_t front_floor; - int32_t front_ceiling; - int32_t front_type; - int32_t left_floor; - int32_t left_ceiling; - int32_t left_type; - int32_t right_floor; - int32_t right_ceiling; - int32_t right_type; - int32_t radius; - int32_t bad_pos; - int32_t bad_neg; - int32_t bad_ceiling; - XYZ_32 shift; - XYZ_32 old; - int16_t facing; - DIRECTION quadrant; - int16_t coll_type; - int8_t tilt_x; - int8_t tilt_z; - int8_t hit_by_baddie; - int8_t hit_static; - uint16_t slopes_are_walls : 1; - uint16_t slopes_are_pits : 1; - uint16_t lava_is_pit : 1; - uint16_t enable_baddie_push : 1; - uint16_t enable_spaz : 1; -} COLL_INFO; - -typedef struct OBJECT_BOUNDS { - struct { - XYZ_16 min; - XYZ_16 max; - } shift, rot; -} OBJECT_BOUNDS; - -typedef struct OBJECT_INFO { - int16_t nmeshes; - int16_t mesh_index; - int32_t bone_index; - FRAME_INFO *frame_base; - void (*initialise)(int16_t item_num); - void (*control)(int16_t item_num); - int16_t (*floor_height_func)( - const ITEM_INFO *item, int32_t x, int32_t y, int32_t z, int16_t height); - int16_t (*ceiling_height_func)( - const ITEM_INFO *item, int32_t x, int32_t y, int32_t z, int16_t height); - void (*draw_routine)(ITEM_INFO *item); - void (*collision)(int16_t item_num, ITEM_INFO *lara_item, COLL_INFO *coll); - const OBJECT_BOUNDS *(*bounds)(void); - int16_t anim_index; - int16_t hit_points; - int16_t pivot_length; - int16_t radius; - int16_t smartness; - int16_t shadow_size; - uint16_t loaded : 1; - uint16_t intelligent : 1; - uint16_t save_position : 1; - uint16_t save_hitpoints : 1; - uint16_t save_flags : 1; - uint16_t save_anim : 1; -} OBJECT_INFO; - typedef struct SHADOW_INFO { int16_t poly_count; int16_t vertex_count; diff --git a/subprojects/libtrx b/subprojects/libtrx index c1f3ab51a..b95beda54 160000 --- a/subprojects/libtrx +++ b/subprojects/libtrx @@ -1 +1 @@ -Subproject commit c1f3ab51a07bd8ff93f975b3112830f838147a21 +Subproject commit b95beda546dc57bb42dcd781471e13e10a82b9fd diff --git a/tools/tr1x/paths.py b/tools/tr1x/paths.py index 173289dc9..782808042 100644 --- a/tools/tr1x/paths.py +++ b/tools/tr1x/paths.py @@ -4,3 +4,7 @@ TR1X_REPO_DIR = TR1X_TOOLS_DIR.parent TR1X_DATA_DIR = TR1X_REPO_DIR / "data" TR1X_SRC_DIR = TR1X_REPO_DIR / "src" + +LIBTRX_REPO_DIR = TR1X_REPO_DIR / "subprojects/libtrx" +LIBTRX_SRC_DIR = LIBTRX_REPO_DIR / "src" +LIBTRX_INCLUDE_DIR = LIBTRX_REPO_DIR / "include/libtrx" diff --git a/tools/update_gameflow b/tools/update_gameflow index 174f4556f..8828edc4a 100755 --- a/tools/update_gameflow +++ b/tools/update_gameflow @@ -1,28 +1,35 @@ #!/usr/bin/env python3 import json import re +from pathlib import Path -from tr1x.paths import TR1X_DATA_DIR, TR1X_SRC_DIR +from tr1x.paths import LIBTRX_INCLUDE_DIR, TR1X_DATA_DIR, TR1X_SRC_DIR SHIP_DIR = TR1X_DATA_DIR / "ship" -GAME_STRING_DEF_PATH = TR1X_SRC_DIR / "game/game_string.def" +GAME_STRING_DEF_PATHS = [ + TR1X_SRC_DIR / "game/game_string.def", + LIBTRX_INCLUDE_DIR / "game/game_string.def", +] -def get_default_string_map() -> dict[str, str]: +def get_default_strings_map(paths: list[Path]) -> dict[str, str]: result: dict[str, str] = {} - for line in GAME_STRING_DEF_PATH.read_text().splitlines(): - if match := re.match(r'^GS_DEFINE\((\w+),\s*"([^"]+)"\)$', line.strip()): - result[match.group(1)] = match.group(2) + for path in paths: + for line in path.read_text().splitlines(): + if match := re.match( + r'^GS_DEFINE\((\w+),\s*"([^"]+)"\)$', line.strip() + ): + result[match.group(1)] = match.group(2) return result -def postprocess_gameflow(gameflow: str, string_map: dict[str, str]) -> str: +def postprocess_gameflow(gameflow: str, strings_map: dict[str, str]) -> str: gameflow = re.sub( r'^( "strings": {)[^}]*(})', ' "strings": {\n' + "\n".join( f" {json.dumps(key)}: {json.dumps(value)}," - for key, value in string_map.items() + for key, value in sorted(strings_map.items(), key=lambda kv: kv[0]) ) + "\n }", gameflow, @@ -32,12 +39,12 @@ def postprocess_gameflow(gameflow: str, string_map: dict[str, str]) -> str: def main() -> None: - string_map = get_default_string_map() - assert string_map + strings_map = get_default_strings_map(GAME_STRING_DEF_PATHS) + assert strings_map for gameflow_path in SHIP_DIR.rglob("*gameflow*.json*"): old_gameflow = gameflow_path.read_text() - new_gameflow = postprocess_gameflow(old_gameflow, string_map) + new_gameflow = postprocess_gameflow(old_gameflow, strings_map) if new_gameflow != old_gameflow: gameflow_path.write_text(new_gameflow)