Make monkey swing auto jump a player setting; Lua formatting

This commit is contained in:
Sezz 2024-06-06 11:42:54 +10:00
parent d33d1ced19
commit 6fa494b093
17 changed files with 114 additions and 92 deletions

View file

@ -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

View file

@ -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" },

View file

@ -1427,7 +1427,7 @@ std::optional<VaultTestResult> TestLaraLadderMount(ItemInfo* item, CollisionInfo
return std::nullopt;
}
std::optional<VaultTestResult> TestLaraMonkeyAutoJump(ItemInfo* item, CollisionInfo* coll)
std::optional<VaultTestResult> TestLaraAutoMonkeySwingJump(ItemInfo* item, CollisionInfo* coll)
{
auto* lara = GetLaraInfo(item);
@ -1530,8 +1530,8 @@ std::optional<VaultTestResult> 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))

View file

@ -56,7 +56,7 @@ std::optional<VaultTestResult> TestLaraVault3StepsToCrouch(ItemInfo* item, Colli
std::optional<VaultTestResult> TestLaraLedgeAutoJump(ItemInfo* item, CollisionInfo* coll);
std::optional<VaultTestResult> TestLaraLadderAutoJump(ItemInfo* item, CollisionInfo* coll);
std::optional<VaultTestResult> TestLaraLadderMount(ItemInfo* item, CollisionInfo* coll);
std::optional<VaultTestResult> TestLaraMonkeyAutoJump(ItemInfo* item, CollisionInfo* coll);
std::optional<VaultTestResult> TestLaraAutoMonkeySwingJump(ItemInfo* item, CollisionInfo* coll);
std::optional<VaultTestResult> TestLaraVault(ItemInfo* item, CollisionInfo* coll);
bool TestAndDoLaraLadderClimb(ItemInfo* item, CollisionInfo* coll);

View file

@ -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;

View file

@ -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:

View file

@ -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;

View file

@ -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"

View file

@ -4,18 +4,18 @@
#include <filesystem>
#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;

View file

@ -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 <typename T>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");
}
};

View file

@ -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);
}

View file

@ -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&);
};

View file

@ -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<std::vector<std::string>>&& src)
{
m_languageNames = std::move(src);
_languageNames = std::move(src);
}
void FlowHandler::SetStrings(sol::nested<std::unordered_map<std::string, std::vector<std::string>>>&& 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)

View file

@ -1,29 +1,27 @@
#pragma once
#include <string_view>
#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<std::string, std::vector<std::string>> m_translationsMap;
std::vector<std::string> m_languageNames;
std::map<int, int> _moveableMap = {};
std::map<short, short> m_itemsMap;
std::string m_gameDir;
LuaHandler m_handler;
std::unordered_map<std::string, std::vector<std::string>> _translationMap = {};
std::vector<std::string> _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; }
};

View file

@ -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);
/***

View file

@ -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;

View file

@ -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;