Skip to content

Commit

Permalink
photo_mode: add photo mode UI
Browse files Browse the repository at this point in the history
Adds a UI for photo mode, with customizable strings where applicable.
  • Loading branch information
lahm86 committed Oct 5, 2024
1 parent 708141d commit 4ee6781
Show file tree
Hide file tree
Showing 9 changed files with 297 additions and 1 deletion.
13 changes: 13 additions & 0 deletions data/tr1/ship/cfg/TR1X_gameflow.json5
Original file line number Diff line number Diff line change
Expand Up @@ -697,8 +697,10 @@
"KEYMAP_WALK": "Walk",
"MISC_DEMO_MODE": "Demo Mode",
"MISC_EMPTY_SLOT_FMT": "- EMPTY SLOT %d -",
"MISC_EXIT": "Exit",
"MISC_OFF": "Off",
"MISC_ON": "On",
"MISC_TOGGLE_HELP": "Toggle help",
"OSD_AMBIGUOUS_INPUT_2": "Ambiguous input: %s and %s",
"OSD_AMBIGUOUS_INPUT_3": "Ambiguous input: %s, %s, ...",
"OSD_COMMAND_BAD_INVOCATION": "Invalid invocation: %s",
Expand Down Expand Up @@ -743,6 +745,7 @@
"OSD_OBJECT_NOT_FOUND": "Object not found",
"OSD_PERSPECTIVE_FILTER_OFF": "Perspective filter disabled",
"OSD_PERSPECTIVE_FILTER_ON": "Perspective filter enabled",
"OSD_PHOTO_MODE_LAUNCHED": "Entering photo mode, press %s for help",
"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",
Expand Down Expand Up @@ -786,6 +789,16 @@
"PAUSE_PAUSED": "Paused",
"PAUSE_QUIT": "Quit",
"PAUSE_YES": "Yes",
"PHOTO_MODE_FOV_PROMPT": "Adjust FOV",
"PHOTO_MODE_FOV_ROLE": "Draw <+Walk>",
"PHOTO_MODE_MOVE_PROMPT": "Move camera",
"PHOTO_MODE_RESET_PROMPT": "Reset camera",
"PHOTO_MODE_ROLL_PROMPT": "Roll camera",
"PHOTO_MODE_ROLL_ROLE": "Sidestep L/R",
"PHOTO_MODE_ROTATE90_PROMPT": "Rotate 90 degrees",
"PHOTO_MODE_ROTATE_PROMPT": "Rotate camera",
"PHOTO_MODE_SNAP_PROMPT": "Take picture",
"PHOTO_MODE_TITLE": "Photo Mode",
"SOUND_SET_VOLUMES": "Set Volumes",
"STATS_BONUS_STATISTICS": "Bonus Statistics",
"STATS_DEATHS_FMT": "DEATHS %d",
Expand Down
13 changes: 13 additions & 0 deletions data/tr1/ship/cfg/TR1X_gameflow_demo_pc.json5
Original file line number Diff line number Diff line change
Expand Up @@ -190,8 +190,10 @@
"KEYMAP_WALK": "Walk",
"MISC_DEMO_MODE": "Demo Mode",
"MISC_EMPTY_SLOT_FMT": "- EMPTY SLOT %d -",
"MISC_EXIT": "Exit",
"MISC_OFF": "Off",
"MISC_ON": "On",
"MISC_TOGGLE_HELP": "Toggle help",
"OSD_AMBIGUOUS_INPUT_2": "Ambiguous input: %s and %s",
"OSD_AMBIGUOUS_INPUT_3": "Ambiguous input: %s, %s, ...",
"OSD_COMMAND_BAD_INVOCATION": "Invalid invocation: %s",
Expand Down Expand Up @@ -236,6 +238,7 @@
"OSD_OBJECT_NOT_FOUND": "Object not found",
"OSD_PERSPECTIVE_FILTER_OFF": "Perspective filter disabled",
"OSD_PERSPECTIVE_FILTER_ON": "Perspective filter enabled",
"OSD_PHOTO_MODE_LAUNCHED": "Entering photo mode, press %s for help",
"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",
Expand Down Expand Up @@ -279,6 +282,16 @@
"PAUSE_PAUSED": "Paused",
"PAUSE_QUIT": "Quit",
"PAUSE_YES": "Yes",
"PHOTO_MODE_FOV_PROMPT": "Adjust FOV",
"PHOTO_MODE_FOV_ROLE": "Draw <+Walk>",
"PHOTO_MODE_MOVE_PROMPT": "Move camera",
"PHOTO_MODE_RESET_PROMPT": "Reset camera",
"PHOTO_MODE_ROLL_PROMPT": "Roll camera",
"PHOTO_MODE_ROLL_ROLE": "Sidestep L/R",
"PHOTO_MODE_ROTATE90_PROMPT": "Rotate 90 degrees",
"PHOTO_MODE_ROTATE_PROMPT": "Rotate camera",
"PHOTO_MODE_SNAP_PROMPT": "Take picture",
"PHOTO_MODE_TITLE": "Photo Mode",
"SOUND_SET_VOLUMES": "Set Volumes",
"STATS_BONUS_STATISTICS": "Bonus Statistics",
"STATS_DEATHS_FMT": "DEATHS %d",
Expand Down
13 changes: 13 additions & 0 deletions data/tr1/ship/cfg/TR1X_gameflow_ub.json5
Original file line number Diff line number Diff line change
Expand Up @@ -262,8 +262,10 @@
"KEYMAP_WALK": "Walk",
"MISC_DEMO_MODE": "Demo Mode",
"MISC_EMPTY_SLOT_FMT": "- EMPTY SLOT %d -",
"MISC_EXIT": "Exit",
"MISC_OFF": "Off",
"MISC_ON": "On",
"MISC_TOGGLE_HELP": "Toggle help",
"OSD_AMBIGUOUS_INPUT_2": "Ambiguous input: %s and %s",
"OSD_AMBIGUOUS_INPUT_3": "Ambiguous input: %s, %s, ...",
"OSD_COMMAND_BAD_INVOCATION": "Invalid invocation: %s",
Expand Down Expand Up @@ -308,6 +310,7 @@
"OSD_OBJECT_NOT_FOUND": "Object not found",
"OSD_PERSPECTIVE_FILTER_OFF": "Perspective filter disabled",
"OSD_PERSPECTIVE_FILTER_ON": "Perspective filter enabled",
"OSD_PHOTO_MODE_LAUNCHED": "Entering photo mode, press %s for help",
"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",
Expand Down Expand Up @@ -351,6 +354,16 @@
"PAUSE_PAUSED": "Paused",
"PAUSE_QUIT": "Quit",
"PAUSE_YES": "Yes",
"PHOTO_MODE_FOV_PROMPT": "Adjust FOV",
"PHOTO_MODE_FOV_ROLE": "Draw <+Walk>",
"PHOTO_MODE_MOVE_PROMPT": "Move camera",
"PHOTO_MODE_RESET_PROMPT": "Reset camera",
"PHOTO_MODE_ROLL_PROMPT": "Roll camera",
"PHOTO_MODE_ROLL_ROLE": "Sidestep L/R",
"PHOTO_MODE_ROTATE90_PROMPT": "Rotate 90 degrees",
"PHOTO_MODE_ROTATE_PROMPT": "Rotate camera",
"PHOTO_MODE_SNAP_PROMPT": "Take picture",
"PHOTO_MODE_TITLE": "Photo Mode",
"SOUND_SET_VOLUMES": "Set Volumes",
"STATS_BONUS_STATISTICS": "Bonus Statistics",
"STATS_DEATHS_FMT": "DEATHS %d",
Expand Down
13 changes: 13 additions & 0 deletions src/tr1/game/game_string.def
Original file line number Diff line number Diff line change
Expand Up @@ -153,10 +153,23 @@ GS_DEFINE(OSD_TEXTURE_FILTER_NN, "nearest-neighbor")
GS_DEFINE(OSD_TEXTURE_FILTER_BILINEAR, "bilinear")
GS_DEFINE(OSD_PERSPECTIVE_FILTER_ON, "Perspective filter enabled")
GS_DEFINE(OSD_PERSPECTIVE_FILTER_OFF, "Perspective filter disabled")
GS_DEFINE(OSD_PHOTO_MODE_LAUNCHED, "Entering photo mode, press %s for help")
GS_DEFINE(OSD_FPS_COUNTER_ON, "FPS counter enabled")
GS_DEFINE(OSD_FPS_COUNTER_OFF, "FPS counter disabled")
GS_DEFINE(OSD_UI_ON, "UI enabled")
GS_DEFINE(OSD_UI_OFF, "UI disabled")
GS_DEFINE(OSD_DOOR_OPEN, "Open Sesame!")
GS_DEFINE(OSD_DOOR_CLOSE, "Close Sesame!")
GS_DEFINE(OSD_DOOR_OPEN_FAIL, "No doors in Lara's proximity")
GS_DEFINE(MISC_TOGGLE_HELP, "Toggle help")
GS_DEFINE(MISC_EXIT, "Exit")
GS_DEFINE(PHOTO_MODE_TITLE, "Photo Mode")
GS_DEFINE(PHOTO_MODE_MOVE_PROMPT, "Move camera")
GS_DEFINE(PHOTO_MODE_ROTATE_PROMPT, "Rotate camera")
GS_DEFINE(PHOTO_MODE_ROLL_PROMPT, "Roll camera")
GS_DEFINE(PHOTO_MODE_ROTATE90_PROMPT, "Rotate 90 degrees")
GS_DEFINE(PHOTO_MODE_FOV_PROMPT, "Adjust FOV")
GS_DEFINE(PHOTO_MODE_RESET_PROMPT, "Reset camera")
GS_DEFINE(PHOTO_MODE_SNAP_PROMPT, "Take picture")
GS_DEFINE(PHOTO_MODE_ROLL_ROLE, "Sidestep L/R")
GS_DEFINE(PHOTO_MODE_FOV_ROLE, "Draw <+Walk>")
3 changes: 2 additions & 1 deletion src/tr1/game/overlay.c
Original file line number Diff line number Diff line change
Expand Up @@ -741,7 +741,8 @@ void Overlay_DrawGameInfo(void)

void Overlay_DrawFPSInfo(void)
{
if (g_Config.rendering.enable_fps_counter && g_Config.ui.enable_ui) {
if (g_Config.rendering.enable_fps_counter && g_Config.ui.enable_ui
&& Phase_Get() != PHASE_PHOTO_MODE) {
const int32_t text_offset_x = 3;
const int32_t text_height = 17;
const int32_t text_inv_offset_y = 3;
Expand Down
27 changes: 27 additions & 0 deletions src/tr1/game/phase/phase_photo_mode.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#include "game/phase/phase_photo_mode.h"

#include "config.h"
#include "game/camera.h"
#include "game/game.h"
#include "game/input.h"
Expand All @@ -8,9 +9,11 @@
#include "game/overlay.h"
#include "game/shell.h"
#include "game/sound.h"
#include "game/ui/widgets/photo_mode.h"
#include "game/viewport.h"

#include <libtrx/game/console/common.h>
#include <libtrx/game/game_string.h>

#include <stdio.h>

Expand All @@ -23,10 +26,12 @@ typedef enum {
PS_COOLDOWN,
} PHOTO_STATUS;

static bool m_OldUIState;
static int32_t m_OldFOV;
static int32_t m_CurrentFOV;

static PHOTO_STATUS m_Status = PS_NONE;
static UI_WIDGET *m_PhotoMode = NULL;

static void M_Start(void *arg);
static void M_End(void);
Expand All @@ -38,19 +43,36 @@ static void M_Start(void *arg)
{
m_Status = PS_NONE;
g_OldInputDB = g_Input;
m_OldUIState = g_Config.ui.enable_ui;
m_OldFOV = Viewport_GetFOV();
m_CurrentFOV = m_OldFOV / PHD_DEGREE;

Overlay_HideGameInfo();
Music_Pause();
Sound_PauseAll();

m_PhotoMode = UI_PhotoMode_Create();
if (!g_Config.ui.enable_ui) {
Console_Log(
GS(OSD_PHOTO_MODE_LAUNCHED),
Input_GetKeyName(
CM_KEYBOARD, g_Config.input.layout, INPUT_ROLE_TOGGLE_UI));
}
}

static void M_End(void)
{
g_Input = g_OldInputDB;
Viewport_SetFOV(m_OldFOV);

if (m_OldUIState != g_Config.ui.enable_ui) {
g_Config.ui.enable_ui ^= true;
Config_Write();
}

m_PhotoMode->free(m_PhotoMode);
m_PhotoMode = NULL;

Music_Unpause();
Sound_UnpauseAll();
}
Expand All @@ -73,6 +95,7 @@ static PHASE_CONTROL M_Control(int32_t nframes)
} else if (g_InputDB.action) {
m_Status = PS_ACTIVE;
} else {
m_PhotoMode->control(m_PhotoMode);
M_AdjustFOV();
Camera_Update();
}
Expand Down Expand Up @@ -111,6 +134,10 @@ static void M_Draw(void)
Interpolation_Disable();
Game_DrawScene(false);
Interpolation_Enable();

if (m_Status == PS_NONE) {
m_PhotoMode->draw(m_PhotoMode);
}
}

PHASER g_PhotoModePhaser = {
Expand Down
Loading

0 comments on commit 4ee6781

Please sign in to comment.