From 6fa494b093861fc72620ca538fbde99862e1ab6c Mon Sep 17 00:00:00 2001 From: Sezz Date: Thu, 6 Jun 2024 11:42:54 +1000 Subject: [PATCH] Make monkey swing auto jump a player setting; Lua formatting --- Scripts/Settings.lua | 1 - Scripts/SystemStrings.lua | 3 +- TombEngine/Game/Lara/lara_tests.cpp | 6 +-- TombEngine/Game/Lara/lara_tests.h | 2 +- TombEngine/Game/gui.cpp | 15 +++++-- TombEngine/Renderer/RendererDrawMenu.cpp | 33 ++++++++------ .../Include/Flow/ScriptInterfaceFlowHandler.h | 2 +- .../Scripting/Internal/LanguageScript.h | 3 +- TombEngine/Scripting/Internal/LuaHandler.cpp | 16 +++---- TombEngine/Scripting/Internal/LuaHandler.h | 30 ++++++------- .../TEN/Flow/Animations/Animations.cpp | 7 +-- .../Internal/TEN/Flow/Animations/Animations.h | 4 +- .../Internal/TEN/Flow/FlowHandler.cpp | 44 +++++++++---------- .../Scripting/Internal/TEN/Flow/FlowHandler.h | 27 ++++++------ .../Internal/TEN/Strings/StringsHandler.cpp | 2 +- TombEngine/Specific/configuration.cpp | 9 +++- TombEngine/Specific/configuration.h | 2 + 17 files changed, 114 insertions(+), 92 deletions(-) diff --git a/Scripts/Settings.lua b/Scripts/Settings.lua index 4b7a4c226..f50976766 100644 --- a/Scripts/Settings.lua +++ b/Scripts/Settings.lua @@ -11,7 +11,6 @@ local anims = Flow.Animations.new() anims.crawlExtended = true anims.crouchRoll = true anims.crawlspaceSwandive = true -anims.monkeyAutoJump = false anims.overhangClimb = false anims.slideExtended = false anims.sprintJump = false diff --git a/Scripts/SystemStrings.lua b/Scripts/SystemStrings.lua index 2bb0d2e47..23f4c749b 100644 --- a/Scripts/SystemStrings.lua +++ b/Scripts/SystemStrings.lua @@ -51,7 +51,8 @@ local strings = ammo_used = { "Ammo Used" }, antialiasing = { "Antialiasing" }, apply = { "Apply" }, - automatic_targeting = { "Automatic Targeting" }, + auto_monkey_swing_jump = { "Auto Monkey Jump" }, + auto_targeting = { "Auto Targeting" }, back = { "Back" }, cancel = { "Cancel" }, caustics = { "Underwater Caustics" }, diff --git a/TombEngine/Game/Lara/lara_tests.cpp b/TombEngine/Game/Lara/lara_tests.cpp index dc631857c..97cd5d730 100644 --- a/TombEngine/Game/Lara/lara_tests.cpp +++ b/TombEngine/Game/Lara/lara_tests.cpp @@ -1427,7 +1427,7 @@ std::optional TestLaraLadderMount(ItemInfo* item, CollisionInfo return std::nullopt; } -std::optional TestLaraMonkeyAutoJump(ItemInfo* item, CollisionInfo* coll) +std::optional TestLaraAutoMonkeySwingJump(ItemInfo* item, CollisionInfo* coll) { auto* lara = GetLaraInfo(item); @@ -1530,8 +1530,8 @@ std::optional TestLaraVault(ItemInfo* item, CollisionInfo* coll // In this case, they fail due to a reliance on ShiftItem(). @Sezz 2021.02.05 // Auto jump to monkey swing. - vaultResult = TestLaraMonkeyAutoJump(item, coll); - if (vaultResult.has_value() && g_GameFlow->HasMonkeyAutoJump()) + vaultResult = TestLaraAutoMonkeySwingJump(item, coll); + if (vaultResult.has_value() && g_Configuration.EnableAutoMonkeySwingJump) { vaultResult->TargetState = LS_AUTO_JUMP; if (!HasStateDispatch(item, vaultResult->TargetState)) diff --git a/TombEngine/Game/Lara/lara_tests.h b/TombEngine/Game/Lara/lara_tests.h index 1081a1d79..3777783a0 100644 --- a/TombEngine/Game/Lara/lara_tests.h +++ b/TombEngine/Game/Lara/lara_tests.h @@ -56,7 +56,7 @@ std::optional TestLaraVault3StepsToCrouch(ItemInfo* item, Colli std::optional TestLaraLedgeAutoJump(ItemInfo* item, CollisionInfo* coll); std::optional TestLaraLadderAutoJump(ItemInfo* item, CollisionInfo* coll); std::optional TestLaraLadderMount(ItemInfo* item, CollisionInfo* coll); -std::optional TestLaraMonkeyAutoJump(ItemInfo* item, CollisionInfo* coll); +std::optional TestLaraAutoMonkeySwingJump(ItemInfo* item, CollisionInfo* coll); std::optional TestLaraVault(ItemInfo* item, CollisionInfo* coll); bool TestAndDoLaraLadderClimb(ItemInfo* item, CollisionInfo* coll); diff --git a/TombEngine/Game/gui.cpp b/TombEngine/Game/gui.cpp index 2e2bf148d..baf36f0e6 100644 --- a/TombEngine/Game/gui.cpp +++ b/TombEngine/Game/gui.cpp @@ -886,7 +886,9 @@ namespace TEN::Gui Reverb, MusicVolume, SfxVolume, + Subtitles, + AutoMonkeySwingJump, AutoTargeting, TargetHighlighter, ToggleRumble, @@ -895,12 +897,12 @@ namespace TEN::Gui MouseSmoothing, Apply, - Cancel + Cancel, + + Count }; - static const auto numOtherSettingsOptions = 11; - - OptionCount = numOtherSettingsOptions; + OptionCount = (int)OtherSettingsOption::Count - 1; if (GuiIsDeselected()) { @@ -923,6 +925,11 @@ namespace TEN::Gui CurrentSettings.Configuration.EnableReverb = !CurrentSettings.Configuration.EnableReverb; break; + case OtherSettingsOption::AutoMonkeySwingJump: + SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SoundEnvironment::Always); + CurrentSettings.Configuration.EnableAutoMonkeySwingJump = !CurrentSettings.Configuration.EnableAutoMonkeySwingJump; + break; + case OtherSettingsOption::Subtitles: SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SoundEnvironment::Always); CurrentSettings.Configuration.EnableSubtitles = !CurrentSettings.Configuration.EnableSubtitles; diff --git a/TombEngine/Renderer/RendererDrawMenu.cpp b/TombEngine/Renderer/RendererDrawMenu.cpp index 8289f1453..4553f5630 100644 --- a/TombEngine/Renderer/RendererDrawMenu.cpp +++ b/TombEngine/Renderer/RendererDrawMenu.cpp @@ -231,42 +231,47 @@ namespace TEN::Renderer AddString(MenuRightSideEntry, y, Str_Enabled(g_Gui.GetCurrentSettings().Configuration.EnableSubtitles), PRINTSTRING_COLOR_WHITE, SF(titleOption == 3)); GetNextLinePosition(&y); + // Auto monkey swing jump + AddString(MenuLeftSideEntry, y, g_GameFlow->GetString(STRING_AUTO_MONKEY_SWING_JUMP), PRINTSTRING_COLOR_ORANGE, SF(titleOption == 4)); + AddString(MenuRightSideEntry, y, Str_Enabled(g_Gui.GetCurrentSettings().Configuration.EnableAutoMonkeySwingJump), PRINTSTRING_COLOR_WHITE, SF(titleOption == 4)); + GetNextLinePosition(&y); + // Auto targeting - AddString(MenuLeftSideEntry, y, g_GameFlow->GetString(STRING_AUTOMATIC_TARGETING), PRINTSTRING_COLOR_ORANGE, SF(titleOption == 4)); - AddString(MenuRightSideEntry, y, Str_Enabled(g_Gui.GetCurrentSettings().Configuration.EnableAutoTargeting), PRINTSTRING_COLOR_WHITE, SF(titleOption == 4)); + AddString(MenuLeftSideEntry, y, g_GameFlow->GetString(STRING_AUTO_TARGETING), PRINTSTRING_COLOR_ORANGE, SF(titleOption == 5)); + AddString(MenuRightSideEntry, y, Str_Enabled(g_Gui.GetCurrentSettings().Configuration.EnableAutoTargeting), PRINTSTRING_COLOR_WHITE, SF(titleOption == 5)); GetNextLinePosition(&y); // Target highlighter - AddString(MenuLeftSideEntry, y, g_GameFlow->GetString(STRING_TARGET_HIGHLIGHTER), PRINTSTRING_COLOR_ORANGE, SF(titleOption == 5)); - AddString(MenuRightSideEntry, y, Str_Enabled(g_Gui.GetCurrentSettings().Configuration.EnableTargetHighlighter), PRINTSTRING_COLOR_WHITE, SF(titleOption == 5)); + AddString(MenuLeftSideEntry, y, g_GameFlow->GetString(STRING_TARGET_HIGHLIGHTER), PRINTSTRING_COLOR_ORANGE, SF(titleOption == 6)); + AddString(MenuRightSideEntry, y, Str_Enabled(g_Gui.GetCurrentSettings().Configuration.EnableTargetHighlighter), PRINTSTRING_COLOR_WHITE, SF(titleOption == 6)); GetNextLinePosition(&y); // Vibration - AddString(MenuLeftSideEntry, y, g_GameFlow->GetString(STRING_RUMBLE), PRINTSTRING_COLOR_ORANGE, SF(titleOption == 6)); - AddString(MenuRightSideEntry, y, Str_Enabled(g_Gui.GetCurrentSettings().Configuration.EnableRumble), PRINTSTRING_COLOR_WHITE, SF(titleOption == 6)); + AddString(MenuLeftSideEntry, y, g_GameFlow->GetString(STRING_RUMBLE), PRINTSTRING_COLOR_ORANGE, SF(titleOption == 7)); + AddString(MenuRightSideEntry, y, Str_Enabled(g_Gui.GetCurrentSettings().Configuration.EnableRumble), PRINTSTRING_COLOR_WHITE, SF(titleOption == 7)); GetNextLinePosition(&y); // Thumbstick camera - AddString(MenuLeftSideEntry, y, g_GameFlow->GetString(STRING_THUMBSTICK_CAMERA), PRINTSTRING_COLOR_ORANGE, SF(titleOption == 7)); - AddString(MenuRightSideEntry, y, Str_Enabled(g_Gui.GetCurrentSettings().Configuration.EnableThumbstickCamera), PRINTSTRING_COLOR_WHITE, SF(titleOption == 7)); + AddString(MenuLeftSideEntry, y, g_GameFlow->GetString(STRING_THUMBSTICK_CAMERA), PRINTSTRING_COLOR_ORANGE, SF(titleOption == 8)); + AddString(MenuRightSideEntry, y, Str_Enabled(g_Gui.GetCurrentSettings().Configuration.EnableThumbstickCamera), PRINTSTRING_COLOR_WHITE, SF(titleOption == 8)); GetNextBlockPosition(&y); // Mouse sensitivity - AddString(MenuLeftSideEntry, y, g_GameFlow->GetString(STRING_MOUSE_SENSITIVITY), PRINTSTRING_COLOR_ORANGE, SF(titleOption == 8)); - AddString(MenuRightSideEntry, y, std::to_string(g_Gui.GetCurrentSettings().Configuration.MouseSensitivity).c_str(), PRINTSTRING_COLOR_WHITE, SF(titleOption == 8)); + AddString(MenuLeftSideEntry, y, g_GameFlow->GetString(STRING_MOUSE_SENSITIVITY), PRINTSTRING_COLOR_ORANGE, SF(titleOption == 9)); + AddString(MenuRightSideEntry, y, std::to_string(g_Gui.GetCurrentSettings().Configuration.MouseSensitivity).c_str(), PRINTSTRING_COLOR_WHITE, SF(titleOption == 9)); GetNextLinePosition(&y); // Mouse smoothing - AddString(MenuLeftSideEntry, y, g_GameFlow->GetString(STRING_MOUSE_SMOOTHING), PRINTSTRING_COLOR_ORANGE, SF(titleOption == 9)); - AddString(MenuRightSideEntry, y, std::to_string(g_Gui.GetCurrentSettings().Configuration.MouseSmoothing).c_str(), PRINTSTRING_COLOR_WHITE, SF(titleOption == 9)); + AddString(MenuLeftSideEntry, y, g_GameFlow->GetString(STRING_MOUSE_SMOOTHING), PRINTSTRING_COLOR_ORANGE, SF(titleOption == 10)); + AddString(MenuRightSideEntry, y, std::to_string(g_Gui.GetCurrentSettings().Configuration.MouseSmoothing).c_str(), PRINTSTRING_COLOR_WHITE, SF(titleOption == 10)); GetNextBlockPosition(&y); // Apply - AddString(MenuCenterEntry, y, g_GameFlow->GetString(STRING_APPLY), PRINTSTRING_COLOR_ORANGE, SF_Center(titleOption == 10)); + AddString(MenuCenterEntry, y, g_GameFlow->GetString(STRING_APPLY), PRINTSTRING_COLOR_ORANGE, SF_Center(titleOption == 11)); GetNextLinePosition(&y); // Cancel - AddString(MenuCenterEntry, y, g_GameFlow->GetString(STRING_CANCEL), PRINTSTRING_COLOR_ORANGE, SF_Center(titleOption == 11)); + AddString(MenuCenterEntry, y, g_GameFlow->GetString(STRING_CANCEL), PRINTSTRING_COLOR_ORANGE, SF_Center(titleOption == 12)); break; case Menu::GeneralActions: diff --git a/TombEngine/Scripting/Include/Flow/ScriptInterfaceFlowHandler.h b/TombEngine/Scripting/Include/Flow/ScriptInterfaceFlowHandler.h index ac3382e1c..5c679f359 100644 --- a/TombEngine/Scripting/Include/Flow/ScriptInterfaceFlowHandler.h +++ b/TombEngine/Scripting/Include/Flow/ScriptInterfaceFlowHandler.h @@ -39,7 +39,7 @@ public: virtual bool HasCrawlExtended() const = 0; virtual bool HasCrouchRoll() const = 0; virtual bool HasCrawlspaceDive() const = 0; - virtual bool HasMonkeyAutoJump() const = 0; + virtual bool HasAutoMonkeySwingJump() const = 0; virtual bool HasSprintJump() const = 0; virtual bool HasAFKPose() const = 0; virtual bool HasOverhangClimb() const = 0; diff --git a/TombEngine/Scripting/Internal/LanguageScript.h b/TombEngine/Scripting/Internal/LanguageScript.h index a2c04feaf..5eb728917 100644 --- a/TombEngine/Scripting/Internal/LanguageScript.h +++ b/TombEngine/Scripting/Internal/LanguageScript.h @@ -80,7 +80,8 @@ #define STRING_SOUND "sound" #define STRING_ENABLE_SOUND "enable_sound" #define STRING_REVERB "reverb" -#define STRING_AUTOMATIC_TARGETING "automatic_targeting" +#define STRING_AUTO_MONKEY_SWING_JUMP "auto_monkey_swing_jump" +#define STRING_AUTO_TARGETING "auto_targeting" #define STRING_TARGET_HIGHLIGHTER "target_highlighter" #define STRING_RUMBLE "rumble" #define STRING_THUMBSTICK_CAMERA "thumbstick_camera" diff --git a/TombEngine/Scripting/Internal/LuaHandler.cpp b/TombEngine/Scripting/Internal/LuaHandler.cpp index acbb76621..1b3140f9a 100644 --- a/TombEngine/Scripting/Internal/LuaHandler.cpp +++ b/TombEngine/Scripting/Internal/LuaHandler.cpp @@ -4,18 +4,18 @@ #include #include "Scripting/Internal/LuaHandler.h" -LuaHandler::LuaHandler(sol::state* lua) : m_lua{ lua } +LuaHandler::LuaHandler(sol::state* lua) : _lua{ lua } { } void LuaHandler::ResetGlobals() { - auto mt = sol::table{ *m_lua, sol::create }; - m_globals = sol::table{ *m_lua, sol::create }; - mt.set(sol::meta_function::new_index, m_globals); - mt.set(sol::meta_function::index, m_globals); + auto mt = sol::table{ *_lua, sol::create }; + _globals = sol::table{ *_lua, sol::create }; + mt.set(sol::meta_function::new_index, _globals); + mt.set(sol::meta_function::index, _globals); - m_lua->set(sol::metatable_key, mt); + _lua->set(sol::metatable_key, mt); } void LuaHandler::ExecuteScript(const std::string& luaFilename, bool isOptional) @@ -23,7 +23,7 @@ void LuaHandler::ExecuteScript(const std::string& luaFilename, bool isOptional) if (isOptional && !std::filesystem::is_regular_file(luaFilename)) return; - auto result = m_lua->safe_script_file(luaFilename, sol::script_pass_on_error); + auto result = _lua->safe_script_file(luaFilename, sol::script_pass_on_error); if (!result.valid()) { sol::error error = result; @@ -33,7 +33,7 @@ void LuaHandler::ExecuteScript(const std::string& luaFilename, bool isOptional) void LuaHandler::ExecuteString(const std::string& command) { - auto result = m_lua->safe_script(command, sol::environment(m_lua->lua_state(), sol::create, m_lua->globals()), sol::script_pass_on_error); + auto result = _lua->safe_script(command, sol::environment(_lua->lua_state(), sol::create, _lua->globals()), sol::script_pass_on_error); if (!result.valid()) { sol::error error = result; diff --git a/TombEngine/Scripting/Internal/LuaHandler.h b/TombEngine/Scripting/Internal/LuaHandler.h index 050e93dac..53e59eaba 100644 --- a/TombEngine/Scripting/Internal/LuaHandler.h +++ b/TombEngine/Scripting/Internal/LuaHandler.h @@ -6,8 +6,8 @@ class LuaHandler { protected: - sol::state* m_lua; - sol::table m_globals; + sol::state* _lua; + sol::table _globals; public: LuaHandler(sol::state* lua); @@ -22,17 +22,17 @@ public: sol::state* GetState() { - return m_lua; + return _lua; }; template void MakeReadOnlyTable(sol::table parent, const std::string& tableName, const T& container) { // Put all data into metatable. auto metatable = tableName + "Meta"; - m_lua->set(metatable, sol::as_table(container)); + _lua->set(metatable, sol::as_table(container)); auto mtmt = tableName + "MetaMeta"; - auto mtmtTable = m_lua->create_named_table(mtmt); + auto mtmtTable = _lua->create_named_table(mtmt); // Make metatable's metatable's __index fail an assert to generate warning/error when trying to use missing variable. auto lam = [tableName](sol::table tab, std::string const& key) @@ -41,29 +41,29 @@ public: }; mtmtTable[sol::meta_method::index] = lam; - m_lua->safe_script("setmetatable(" + metatable + ", " + mtmt + ")"); + _lua->safe_script("setmetatable(" + metatable + ", " + mtmt + ")"); // Make metatable's __index refer to itself so that requests to main table will go through to metatable // (and thus container's members). - m_lua->safe_script(metatable + ".__index = " + metatable); + _lua->safe_script(metatable + ".__index = " + metatable); - m_lua->safe_script(metatable + ".__type = \"readonly\""); + _lua->safe_script(metatable + ".__type = \"readonly\""); // Don't allow table to have new elements put into it. - m_lua->safe_script(metatable + ".__newindex = function() error('" + tableName + " is read-only') end"); + _lua->safe_script(metatable + ".__newindex = function() error('" + tableName + " is read-only') end"); // Protect metatable. - m_lua->safe_script(metatable + ".__metatable = 'metatable is protected'"); + _lua->safe_script(metatable + ".__metatable = 'metatable is protected'"); - auto tab = m_lua->create_named_table(tableName); + auto tab = _lua->create_named_table(tableName); - m_lua->safe_script("setmetatable(" + tableName + ", " + metatable + ")"); + _lua->safe_script("setmetatable(" + tableName + ", " + metatable + ")"); // Point initial metatable variable away from its contents. This is just for cleanliness. parent.set(tableName, tab); - m_lua->safe_script(tableName + " = nil"); - m_lua->safe_script(metatable + " = nil"); - m_lua->safe_script(mtmt + " = nil"); + _lua->safe_script(tableName + " = nil"); + _lua->safe_script(metatable + " = nil"); + _lua->safe_script(mtmt + " = nil"); } }; diff --git a/TombEngine/Scripting/Internal/TEN/Flow/Animations/Animations.cpp b/TombEngine/Scripting/Internal/TEN/Flow/Animations/Animations.cpp index 856472784..eb820fb21 100644 --- a/TombEngine/Scripting/Internal/TEN/Flow/Animations/Animations.cpp +++ b/TombEngine/Scripting/Internal/TEN/Flow/Animations/Animations.cpp @@ -15,11 +15,12 @@ void Animations::Register(sol::table& parent) "crawlExtended", &Animations::HasCrawlExtended, "crouchRoll", &Animations::HasCrouchRoll, "crawlspaceSwandive", &Animations::HasCrawlspaceDive, - "monkeyAutoJump", &Animations::HasMonkeyAutoJump, "overhangClimb", &Animations::HasOverhangClimb, "slideExtended", &Animations::HasSlideExtended, "sprintJump", &Animations::HasSprintJump, "pose", &Animations::HasPose, - "ledgeJumps", &Animations::HasLedgeJumps - ); + "ledgeJumps", &Animations::HasLedgeJumps, + + // NOTE: Removed. Keep for now to maintain compatibility. -- Sezz 2024.06.06 + "monkeyAutoJump", & Animations::HasAutoMonkeySwingJump); } diff --git a/TombEngine/Scripting/Internal/TEN/Flow/Animations/Animations.h b/TombEngine/Scripting/Internal/TEN/Flow/Animations/Animations.h index 763fc789c..781f62653 100644 --- a/TombEngine/Scripting/Internal/TEN/Flow/Animations/Animations.h +++ b/TombEngine/Scripting/Internal/TEN/Flow/Animations/Animations.h @@ -13,12 +13,14 @@ struct Animations bool HasPose; // Crossed arms AFK posing. bool HasSlideExtended; // Extended slope sliding functionality (not ready yet). bool HasSprintJump; // Sprint jump. - bool HasMonkeyAutoJump; // Auto jump to monkey swing when pressing UP + ACTION. TODO: Make this a player setting. bool HasCrawlspaceDive; // Dive into crawlspaces. bool HasCrawlExtended; // Extended crawl moveset. bool HasCrouchRoll; // Crouch roll. bool HasOverhangClimb; // Overhang functionality. bool HasLedgeJumps; // Jump up or back from a ledge. + // NOTE: Removed. Keep for now to maintain compatibility. -- Sezz 2024.06.06 + bool HasAutoMonkeySwingJump; + static void Register(sol::table&); }; diff --git a/TombEngine/Scripting/Internal/TEN/Flow/FlowHandler.cpp b/TombEngine/Scripting/Internal/TEN/Flow/FlowHandler.cpp index 5240789f8..73dfe787c 100644 --- a/TombEngine/Scripting/Internal/TEN/Flow/FlowHandler.cpp +++ b/TombEngine/Scripting/Internal/TEN/Flow/FlowHandler.cpp @@ -30,7 +30,7 @@ ScriptInterfaceStringsHandler* g_GameStringsHandler; ScriptInterfaceFlowHandler* g_GameFlow; FlowHandler::FlowHandler(sol::state* lua, sol::table& parent) : - m_handler(lua) + _handler(lua) { /*** gameflow.lua. These functions are called in gameflow.lua, a file loosely equivalent to winroomedit's SCRIPT.DAT. @@ -38,7 +38,7 @@ They handle a game's 'metadata'; i.e., things such as level titles, loading scre ambient tracks. @section Flowlua */ - sol::table tableFlow{ m_handler.GetState()->lua_state(), sol::create }; + sol::table tableFlow{ _handler.GetState()->lua_state(), sol::create }; parent.set(ScriptReserved_Flow, tableFlow); /*** @@ -265,12 +265,12 @@ Specify which translations in the strings table correspond to which languages. Settings::Register(tableFlow); Fog::Register(tableFlow); - m_handler.MakeReadOnlyTable(tableFlow, ScriptReserved_WeatherType, WEATHER_TYPES); - m_handler.MakeReadOnlyTable(tableFlow, ScriptReserved_LaraType, PLAYER_TYPES); - m_handler.MakeReadOnlyTable(tableFlow, ScriptReserved_RotationAxis, ROTATION_AXES); - m_handler.MakeReadOnlyTable(tableFlow, ScriptReserved_ItemAction, ITEM_MENU_ACTIONS); - m_handler.MakeReadOnlyTable(tableFlow, ScriptReserved_ErrorMode, ERROR_MODES); - m_handler.MakeReadOnlyTable(tableFlow, ScriptReserved_GameStatus, GAME_STATUSES); + _handler.MakeReadOnlyTable(tableFlow, ScriptReserved_WeatherType, WEATHER_TYPES); + _handler.MakeReadOnlyTable(tableFlow, ScriptReserved_LaraType, PLAYER_TYPES); + _handler.MakeReadOnlyTable(tableFlow, ScriptReserved_RotationAxis, ROTATION_AXES); + _handler.MakeReadOnlyTable(tableFlow, ScriptReserved_ItemAction, ITEM_MENU_ACTIONS); + _handler.MakeReadOnlyTable(tableFlow, ScriptReserved_ErrorMode, ERROR_MODES); + _handler.MakeReadOnlyTable(tableFlow, ScriptReserved_GameStatus, GAME_STATUSES); } FlowHandler::~FlowHandler() @@ -281,35 +281,35 @@ FlowHandler::~FlowHandler() std::string FlowHandler::GetGameDir() { - return m_gameDir; + return _gameDir; } void FlowHandler::SetGameDir(const std::string& assetDir) { - m_gameDir = assetDir; + _gameDir = assetDir; } void FlowHandler::SetLanguageNames(sol::as_table_t>&& src) { - m_languageNames = std::move(src); + _languageNames = std::move(src); } void FlowHandler::SetStrings(sol::nested>>&& src) { - if (m_translationsMap.empty()) + if (_translationMap.empty()) { - m_translationsMap = std::move(src); + _translationMap = std::move(src); } else { for (auto& stringPair : src.value()) - m_translationsMap.insert_or_assign(stringPair.first, stringPair.second); + _translationMap.insert_or_assign(stringPair.first, stringPair.second); } } void FlowHandler::SetSettings(Settings const & src) { - m_settings = src; + _settings = src; } void FlowHandler::SetAnimations(Animations const& src) @@ -339,10 +339,10 @@ void FlowHandler::SetTotalSecretCount(int secretsNumber) void FlowHandler::LoadFlowScript() { - m_handler.ExecuteScript(m_gameDir + "Scripts/Gameflow.lua"); - m_handler.ExecuteScript(m_gameDir + "Scripts/SystemStrings.lua", true); - m_handler.ExecuteScript(m_gameDir + "Scripts/Strings.lua", true); - m_handler.ExecuteScript(m_gameDir + "Scripts/Settings.lua", true); + _handler.ExecuteScript(_gameDir + "Scripts/Gameflow.lua"); + _handler.ExecuteScript(_gameDir + "Scripts/SystemStrings.lua", true); + _handler.ExecuteScript(_gameDir + "Scripts/Strings.lua", true); + _handler.ExecuteScript(_gameDir + "Scripts/Settings.lua", true); SetScriptErrorMode(GetSettings()->ErrorMode); @@ -359,19 +359,19 @@ void FlowHandler::LoadFlowScript() char const * FlowHandler::GetString(const char* id) const { - if (!ScriptAssert(m_translationsMap.find(id) != m_translationsMap.end(), std::string{ "Couldn't find string " } + id)) + if (!ScriptAssert(_translationMap.find(id) != _translationMap.end(), std::string{ "Couldn't find string " } + id)) { return id; } else { - return m_translationsMap.at(std::string(id)).at(0).c_str(); + return _translationMap.at(std::string(id)).at(0).c_str(); } } Settings* FlowHandler::GetSettings() { - return &m_settings; + return &_settings; } Level* FlowHandler::GetLevel(int id) diff --git a/TombEngine/Scripting/Internal/TEN/Flow/FlowHandler.h b/TombEngine/Scripting/Internal/TEN/Flow/FlowHandler.h index b6aa5a417..84b267d36 100644 --- a/TombEngine/Scripting/Internal/TEN/Flow/FlowHandler.h +++ b/TombEngine/Scripting/Internal/TEN/Flow/FlowHandler.h @@ -1,29 +1,27 @@ #pragma once #include +#include "Scripting/Include/Flow/ScriptInterfaceFlowHandler.h" +#include "Scripting/Include/ScriptInterfaceGame.h" #include "Scripting/Internal/LanguageScript.h" #include "Scripting/Internal/LuaHandler.h" -#include "Scripting/Internal/TEN/Logic/LogicHandler.h" #include "Scripting/Internal/TEN/Color/Color.h" +#include "Scripting/Internal/TEN/Logic/LogicHandler.h" +#include "Scripting/Internal/TEN/Flow/Animations/Animations.h" #include "Scripting/Internal/TEN/Flow/Level/FlowLevel.h" #include "Scripting/Internal/TEN/Flow/Settings/Settings.h" -#include "Scripting/Internal/TEN/Flow/Animations/Animations.h" -#include "Scripting/Include/ScriptInterfaceGame.h" -#include "Scripting/Include/Flow/ScriptInterfaceFlowHandler.h" class FlowHandler : public ScriptInterfaceFlowHandler { private: - Settings m_settings; + LuaHandler _handler; + Settings _settings = {}; + std::string _gameDir = {}; - std::unordered_map> m_translationsMap; - std::vector m_languageNames; + std::map _moveableMap = {}; - std::map m_itemsMap; - - std::string m_gameDir; - - LuaHandler m_handler; + std::unordered_map> _translationMap = {}; + std::vector _languageNames = {}; void PrepareInventoryObjects(); @@ -91,12 +89,13 @@ public: bool HasCrawlExtended() const override { return Anims.HasCrawlExtended; } bool HasCrouchRoll() const override { return Anims.HasCrouchRoll; } bool HasCrawlspaceDive() const override { return Anims.HasCrawlspaceDive; } - bool HasMonkeyAutoJump() const override { return Anims.HasMonkeyAutoJump; } bool HasAFKPose() const override { return Anims.HasPose; } bool HasOverhangClimb() const override { return Anims.HasOverhangClimb; } bool HasSlideExtended() const override { return Anims.HasSlideExtended; } bool HasSprintJump() const override { return Anims.HasSprintJump; } bool HasLedgeJumps() const override { return Anims.HasLedgeJumps; } bool DoFlow() override; -}; + // NOTE: Removed. Keep for now to maintain compatibility. -- Sezz 2024.06.06 + bool HasAutoMonkeySwingJump() const override { return Anims.HasAutoMonkeySwingJump; } +}; diff --git a/TombEngine/Scripting/Internal/TEN/Strings/StringsHandler.cpp b/TombEngine/Scripting/Internal/TEN/Strings/StringsHandler.cpp index 2f34efd13..e90ea50b6 100644 --- a/TombEngine/Scripting/Internal/TEN/Strings/StringsHandler.cpp +++ b/TombEngine/Scripting/Internal/TEN/Strings/StringsHandler.cpp @@ -16,7 +16,7 @@ Display strings. StringsHandler::StringsHandler(sol::state* lua, sol::table& parent) : LuaHandler(lua) { - auto table = sol::table(m_lua->lua_state(), sol::create); + auto table = sol::table(_lua->lua_state(), sol::create); parent.set(ScriptReserved_Strings, table); /*** diff --git a/TombEngine/Specific/configuration.cpp b/TombEngine/Specific/configuration.cpp index 6e0b39d26..8d479c44f 100644 --- a/TombEngine/Specific/configuration.cpp +++ b/TombEngine/Specific/configuration.cpp @@ -230,6 +230,7 @@ bool SaveConfiguration() // Set Gameplay keys. if (SetBoolRegKey(gameplayKey, REGKEY_ENABLE_SUBTITLES, g_Configuration.EnableSubtitles) != ERROR_SUCCESS || + SetBoolRegKey(gameplayKey, REGKEY_ENABLE_AUTO_MONKEY_JUMP, g_Configuration.EnableAutoMonkeySwingJump) != ERROR_SUCCESS || SetBoolRegKey(gameplayKey, REGKEY_ENABLE_AUTO_TARGETING, g_Configuration.EnableAutoTargeting) != ERROR_SUCCESS || SetBoolRegKey(gameplayKey, REGKEY_ENABLE_TARGET_HIGHLIGHTER, g_Configuration.EnableTargetHighlighter) != ERROR_SUCCESS || SetBoolRegKey(gameplayKey, REGKEY_ENABLE_RUMBLE, g_Configuration.EnableRumble) != ERROR_SUCCESS || @@ -322,6 +323,7 @@ void InitDefaultConfiguration() g_Configuration.SfxVolume = 100; g_Configuration.EnableSubtitles = true; + g_Configuration.EnableAutoMonkeySwingJump = false; g_Configuration.EnableAutoTargeting = true; g_Configuration.EnableTargetHighlighter = true; g_Configuration.EnableRumble = true; @@ -419,6 +421,7 @@ bool LoadConfiguration() return false; } + bool enableAutoMonkeySwingJump = false; bool enableSubtitles = true; bool enableAutoTargeting = true; bool enableTargetHighlighter = true; @@ -426,7 +429,8 @@ bool LoadConfiguration() bool enableThumbstickCamera = true; // Load Gameplay keys. - if (GetBoolRegKey(gameplayKey, REGKEY_ENABLE_SUBTITLES, &enableSubtitles, true) != ERROR_SUCCESS || + if (GetBoolRegKey(gameplayKey, REGKEY_ENABLE_AUTO_MONKEY_JUMP, &enableAutoMonkeySwingJump, true) != ERROR_SUCCESS || + GetBoolRegKey(gameplayKey, REGKEY_ENABLE_SUBTITLES, &enableSubtitles, true) != ERROR_SUCCESS || GetBoolRegKey(gameplayKey, REGKEY_ENABLE_AUTO_TARGETING, &enableAutoTargeting, true) != ERROR_SUCCESS || GetBoolRegKey(gameplayKey, REGKEY_ENABLE_TARGET_HIGHLIGHTER, &enableTargetHighlighter, true) != ERROR_SUCCESS || GetBoolRegKey(gameplayKey, REGKEY_ENABLE_RUMBLE, &enableRumble, true) != ERROR_SUCCESS || @@ -507,11 +511,12 @@ bool LoadConfiguration() g_Configuration.SfxVolume = sfxVolume; g_Configuration.SoundDevice = soundDevice; + g_Configuration.EnableSubtitles = enableSubtitles; + g_Configuration.EnableAutoMonkeySwingJump = enableAutoMonkeySwingJump; g_Configuration.EnableAutoTargeting = enableAutoTargeting; g_Configuration.EnableTargetHighlighter = enableTargetHighlighter; g_Configuration.EnableRumble = enableRumble; g_Configuration.EnableThumbstickCamera = enableThumbstickCamera; - g_Configuration.EnableSubtitles = enableSubtitles; g_Configuration.MouseSensitivity = mouseSensitivity; g_Configuration.MouseSmoothing = mouseSmoothing; diff --git a/TombEngine/Specific/configuration.h b/TombEngine/Specific/configuration.h index cf10f970c..ab3694e01 100644 --- a/TombEngine/Specific/configuration.h +++ b/TombEngine/Specific/configuration.h @@ -33,6 +33,7 @@ constexpr auto REGKEY_SFX_VOLUME = "SfxVolume"; // Gameplay keys constexpr auto REGKEY_ENABLE_SUBTITLES = "EnableSubtitles"; +constexpr auto REGKEY_ENABLE_AUTO_MONKEY_JUMP = "EnableAutoMonkeySwingJump"; constexpr auto REGKEY_ENABLE_AUTO_TARGETING = "EnableAutoTargeting"; constexpr auto REGKEY_ENABLE_TARGET_HIGHLIGHTER = "EnableTargetHighlighter"; constexpr auto REGKEY_ENABLE_RUMBLE = "EnableRumble"; @@ -69,6 +70,7 @@ struct GameConfiguration // Gameplay bool EnableSubtitles = false; + bool EnableAutoMonkeySwingJump = false; bool EnableAutoTargeting = false; bool EnableTargetHighlighter = false; bool EnableRumble = false;