mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-04-28 15:57:59 +03:00
Fix key binding settings saving for current session after hitting Esc to cancel
This commit is contained in:
parent
c2c6b5f072
commit
22195b3267
3 changed files with 18 additions and 10 deletions
|
@ -9,12 +9,13 @@ TombEngine releases are located in this repository (alongside with Tomb Editor):
|
||||||
* Added live console input to perform Lua commands in realtime.
|
* Added live console input to perform Lua commands in realtime.
|
||||||
|
|
||||||
### Bug fixes
|
### Bug fixes
|
||||||
* Fixed pathfinding for friendly NPCs, such as monkeys.
|
* Fixed pathfinding for friendly NPCs such as monkeys.
|
||||||
* Fixed particles remaining in the level after reloading from the savegame.
|
* Fixed particles remaining in the level after reloading from the savegame.
|
||||||
* Fixed particles being canceled by fog bulbs.
|
* Fixed particles being canceled by fog bulbs.
|
||||||
* Fixed crash in case hair object is the last object in a level.
|
* Fixed crash in case hair object is the last object in a level.
|
||||||
* Fixed crash with incorrectly applied animated textures on static meshes.
|
* Fixed crash with incorrectly applied animated textures on static meshes.
|
||||||
* Fixed console window not hiding in non-debug mode on Windows 11.
|
* Fixed console window not hiding in non-debug mode on Windows 11.
|
||||||
|
* Fixed key binding settings saving for the current play session after hitting Esc to cancel.
|
||||||
|
|
||||||
### Lua API changes
|
### Lua API changes
|
||||||
* Added missing constructor for `Collision.Probe` without room number.
|
* Added missing constructor for `Collision.Probe` without room number.
|
||||||
|
|
|
@ -690,7 +690,7 @@ namespace TEN::Gui
|
||||||
CurrentSettings.IgnoreInput = true;
|
CurrentSettings.IgnoreInput = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CurrentSettings.NewKeyWaitTimer > 0.0f)
|
if (CurrentSettings.NewKeyWaitTimer > 0)
|
||||||
{
|
{
|
||||||
ClearAllActions();
|
ClearAllActions();
|
||||||
|
|
||||||
|
@ -699,15 +699,15 @@ namespace TEN::Gui
|
||||||
bool legacy30FpsDoneDraw = false;
|
bool legacy30FpsDoneDraw = false;
|
||||||
bool decreaseCounter = false;
|
bool decreaseCounter = false;
|
||||||
|
|
||||||
while (CurrentSettings.NewKeyWaitTimer > 0.0f)
|
while (CurrentSettings.NewKeyWaitTimer > 0)
|
||||||
{
|
{
|
||||||
g_Synchronizer.Sync();
|
g_Synchronizer.Sync();
|
||||||
|
|
||||||
while (g_Synchronizer.Synced())
|
while (g_Synchronizer.Synced())
|
||||||
{
|
{
|
||||||
CurrentSettings.NewKeyWaitTimer -= 1.0f;
|
CurrentSettings.NewKeyWaitTimer--;
|
||||||
if (CurrentSettings.NewKeyWaitTimer <= 0.0f)
|
if (CurrentSettings.NewKeyWaitTimer <= 0)
|
||||||
CurrentSettings.NewKeyWaitTimer = 0.0f;
|
CurrentSettings.NewKeyWaitTimer = 0;
|
||||||
|
|
||||||
if (!fromPauseMenu)
|
if (!fromPauseMenu)
|
||||||
{
|
{
|
||||||
|
@ -760,7 +760,7 @@ namespace TEN::Gui
|
||||||
g_Bindings.SetKeyBinding(InputDeviceID::Custom, InputActionID(baseIndex + SelectedOption), selectedKeyID);
|
g_Bindings.SetKeyBinding(InputDeviceID::Custom, InputActionID(baseIndex + SelectedOption), selectedKeyID);
|
||||||
DefaultConflict();
|
DefaultConflict();
|
||||||
|
|
||||||
CurrentSettings.NewKeyWaitTimer = 0.0f;
|
CurrentSettings.NewKeyWaitTimer = 0;
|
||||||
CurrentSettings.IgnoreInput = true;
|
CurrentSettings.IgnoreInput = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -850,6 +850,7 @@ namespace TEN::Gui
|
||||||
if (SelectedOption == (OptionCount - 2))
|
if (SelectedOption == (OptionCount - 2))
|
||||||
{
|
{
|
||||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
||||||
|
|
||||||
ApplyDefaultBindings();
|
ApplyDefaultBindings();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -858,9 +859,11 @@ namespace TEN::Gui
|
||||||
if (SelectedOption == (OptionCount - 1))
|
if (SelectedOption == (OptionCount - 1))
|
||||||
{
|
{
|
||||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
||||||
|
|
||||||
CurrentSettings.Configuration.Bindings = g_Bindings.GetBindingProfile(InputDeviceID::Custom);
|
CurrentSettings.Configuration.Bindings = g_Bindings.GetBindingProfile(InputDeviceID::Custom);
|
||||||
g_Configuration.Bindings = g_Bindings.GetBindingProfile(InputDeviceID::Custom);
|
g_Configuration.Bindings = g_Bindings.GetBindingProfile(InputDeviceID::Custom);
|
||||||
SaveConfiguration();
|
SaveConfiguration();
|
||||||
|
|
||||||
MenuToDisplay = fromPauseMenu ? Menu::Pause : Menu::Options;
|
MenuToDisplay = fromPauseMenu ? Menu::Pause : Menu::Options;
|
||||||
SelectedOption = 2;
|
SelectedOption = 2;
|
||||||
return;
|
return;
|
||||||
|
@ -870,7 +873,9 @@ namespace TEN::Gui
|
||||||
if (SelectedOption == OptionCount)
|
if (SelectedOption == OptionCount)
|
||||||
{
|
{
|
||||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
||||||
|
|
||||||
g_Bindings.SetBindingProfile(InputDeviceID::Custom, CurrentSettings.Configuration.Bindings);
|
g_Bindings.SetBindingProfile(InputDeviceID::Custom, CurrentSettings.Configuration.Bindings);
|
||||||
|
|
||||||
MenuToDisplay = fromPauseMenu ? Menu::Pause : Menu::Options;
|
MenuToDisplay = fromPauseMenu ? Menu::Pause : Menu::Options;
|
||||||
SelectedOption = 2;
|
SelectedOption = 2;
|
||||||
return;
|
return;
|
||||||
|
@ -881,6 +886,8 @@ namespace TEN::Gui
|
||||||
{
|
{
|
||||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
||||||
|
|
||||||
|
g_Bindings.SetBindingProfile(InputDeviceID::Custom, CurrentSettings.Configuration.Bindings);
|
||||||
|
|
||||||
MenuToDisplay = Menu::Options;
|
MenuToDisplay = Menu::Options;
|
||||||
SelectedOption = 2;
|
SelectedOption = 2;
|
||||||
}
|
}
|
||||||
|
|
|
@ -111,9 +111,9 @@ namespace TEN::Gui
|
||||||
|
|
||||||
GameConfiguration Configuration = {};
|
GameConfiguration Configuration = {};
|
||||||
|
|
||||||
int SelectedScreenResolution = 0;
|
int SelectedScreenResolution = 0;
|
||||||
bool IgnoreInput = false; // Ignore input until all actions are inactive.
|
bool IgnoreInput = false; // Ignore input until all actions are inactive.
|
||||||
float NewKeyWaitTimer = 0.0f;
|
int NewKeyWaitTimer = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class GuiController
|
class GuiController
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue