tr2: add ability to skip credits

Resolves #1800.
This commit is contained in:
Marcin Kurczewski 2024-11-02 16:31:02 +01:00
parent 2989b9b1c2
commit 94a2d2a4a5
5 changed files with 23 additions and 23 deletions

View file

@ -2,6 +2,7 @@
- added a fly cheat key (#1642)
- added an items cheat key (#1641)
- added a level skip cheat key (#1640)
- added the ability to skip end credits with the action and escape keys (#1800)
- changed the inputs backend from DirectX to SDL (#1695)
- improved controller support to match TR1X
- changed the number of custom layouts to 3

View file

@ -2783,13 +2783,13 @@ void __cdecl S_Wait(int32_t frames, const BOOL input_check)
{
if (input_check) {
while (frames > 0) {
if (g_Input.any) {
break;
}
Shell_ProcessEvents();
Input_Update();
Shell_ProcessInput();
if (!g_Input.any) {
break;
}
int32_t passed;
do {
passed = Sync();
@ -2806,7 +2806,7 @@ void __cdecl S_Wait(int32_t frames, const BOOL input_check)
Shell_ProcessEvents();
Input_Update();
Shell_ProcessInput();
if (input_check && g_Input.any) {
if (input_check && g_InputDB.any) {
break;
}
@ -2893,7 +2893,7 @@ void __cdecl DisplayCredits(void)
S_DumpScreen();
FadeToPal(30, g_GamePalette8);
S_Wait(450, 0);
S_Wait(450, true);
S_FadeToBlack();
S_DontDisplayPicture();
@ -2903,7 +2903,7 @@ void __cdecl DisplayCredits(void)
}
memcpy(g_GamePalette8, old_palette, sizeof(g_GamePalette8));
S_Wait(300, 0);
S_Wait(300, true);
FadeToPal(30, g_GamePalette8);
g_IsVidModeLock = 0;
}

View file

@ -319,12 +319,6 @@ int32_t __cdecl LevelStats(const int32_t level_num)
Overlay_HideGameInfo();
S_CopyScreenToBuffer();
while (g_Input.menu_confirm) {
Shell_ProcessEvents();
Input_Update();
Shell_ProcessInput();
}
while (true) {
S_InitialisePolyList(0);
S_CopyBufferToScreen();
@ -337,6 +331,10 @@ int32_t __cdecl LevelStats(const int32_t level_num)
break;
}
if (g_InputDB.menu_back || g_InputDB.menu_confirm) {
break;
}
if (g_GF_OverrideDir != (GAME_FLOW_DIR)-1) {
break;
}
@ -346,10 +344,6 @@ int32_t __cdecl LevelStats(const int32_t level_num)
Text_Draw();
S_OutputPolyList();
S_DumpScreen();
if (g_InputDB.menu_confirm) {
break;
}
}
Requester_Shutdown(&g_StatsRequester);
@ -374,7 +368,8 @@ int32_t __cdecl GameStats(const int32_t level_num)
start->statistics.medipacks = g_SaveGame.statistics.medipacks;
Overlay_HideGameInfo();
while (g_Input.menu_confirm) {
while (g_Input.any) {
Shell_ProcessEvents();
Input_Update();
Shell_ProcessInput();
@ -392,6 +387,10 @@ int32_t __cdecl GameStats(const int32_t level_num)
break;
}
if (g_InputDB.menu_back || g_InputDB.menu_confirm) {
break;
}
if (g_GF_OverrideDir != (GAME_FLOW_DIR)-1) {
break;
}
@ -401,10 +400,6 @@ int32_t __cdecl GameStats(const int32_t level_num)
Text_Draw();
S_OutputPolyList();
S_DumpScreen();
if (g_InputDB.menu_confirm) {
break;
}
}
Requester_Shutdown(&g_StatsRequester);

View file

@ -92,9 +92,13 @@ void Input_Update(void)
M_UpdateFromBackend(
&g_Input, &g_Input_Controller, g_Config.input.controller_layout);
g_Input.menu_up |= g_Input.forward;
g_Input.menu_down |= g_Input.back;
g_Input.menu_left |= g_Input.left;
g_Input.menu_right |= g_Input.right;
g_Input.menu_back |= g_Input.option;
g_Input.option &= g_Camera.type != CAM_CINEMATIC;
g_Input.roll |= g_Input.forward && g_Input.back;
g_Input.menu_back |= g_Input.option;
if (g_Input.left && g_Input.right) {
g_Input.left = 0;
g_Input.right = 0;

View file

@ -80,7 +80,7 @@ void __cdecl Shell_Main(void)
S_DumpScreen();
Shell_ProcessEvents();
FadeToPal(30, g_GamePalette8);
S_Wait(180, 1);
S_Wait(180, true);
S_FadeToBlack();
S_DontDisplayPicture();
g_IsVidModeLock = 0;