mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-04-29 00:07:58 +03:00
Make monkey swing auto jump a player setting; Lua formatting
This commit is contained in:
parent
d33d1ced19
commit
6fa494b093
17 changed files with 114 additions and 92 deletions
|
@ -11,7 +11,6 @@ local anims = Flow.Animations.new()
|
||||||
anims.crawlExtended = true
|
anims.crawlExtended = true
|
||||||
anims.crouchRoll = true
|
anims.crouchRoll = true
|
||||||
anims.crawlspaceSwandive = true
|
anims.crawlspaceSwandive = true
|
||||||
anims.monkeyAutoJump = false
|
|
||||||
anims.overhangClimb = false
|
anims.overhangClimb = false
|
||||||
anims.slideExtended = false
|
anims.slideExtended = false
|
||||||
anims.sprintJump = false
|
anims.sprintJump = false
|
||||||
|
|
|
@ -51,7 +51,8 @@ local strings =
|
||||||
ammo_used = { "Ammo Used" },
|
ammo_used = { "Ammo Used" },
|
||||||
antialiasing = { "Antialiasing" },
|
antialiasing = { "Antialiasing" },
|
||||||
apply = { "Apply" },
|
apply = { "Apply" },
|
||||||
automatic_targeting = { "Automatic Targeting" },
|
auto_monkey_swing_jump = { "Auto Monkey Jump" },
|
||||||
|
auto_targeting = { "Auto Targeting" },
|
||||||
back = { "Back" },
|
back = { "Back" },
|
||||||
cancel = { "Cancel" },
|
cancel = { "Cancel" },
|
||||||
caustics = { "Underwater Caustics" },
|
caustics = { "Underwater Caustics" },
|
||||||
|
|
|
@ -1427,7 +1427,7 @@ std::optional<VaultTestResult> TestLaraLadderMount(ItemInfo* item, CollisionInfo
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::optional<VaultTestResult> TestLaraMonkeyAutoJump(ItemInfo* item, CollisionInfo* coll)
|
std::optional<VaultTestResult> TestLaraAutoMonkeySwingJump(ItemInfo* item, CollisionInfo* coll)
|
||||||
{
|
{
|
||||||
auto* lara = GetLaraInfo(item);
|
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
|
// In this case, they fail due to a reliance on ShiftItem(). @Sezz 2021.02.05
|
||||||
|
|
||||||
// Auto jump to monkey swing.
|
// Auto jump to monkey swing.
|
||||||
vaultResult = TestLaraMonkeyAutoJump(item, coll);
|
vaultResult = TestLaraAutoMonkeySwingJump(item, coll);
|
||||||
if (vaultResult.has_value() && g_GameFlow->HasMonkeyAutoJump())
|
if (vaultResult.has_value() && g_Configuration.EnableAutoMonkeySwingJump)
|
||||||
{
|
{
|
||||||
vaultResult->TargetState = LS_AUTO_JUMP;
|
vaultResult->TargetState = LS_AUTO_JUMP;
|
||||||
if (!HasStateDispatch(item, vaultResult->TargetState))
|
if (!HasStateDispatch(item, vaultResult->TargetState))
|
||||||
|
|
|
@ -56,7 +56,7 @@ std::optional<VaultTestResult> TestLaraVault3StepsToCrouch(ItemInfo* item, Colli
|
||||||
std::optional<VaultTestResult> TestLaraLedgeAutoJump(ItemInfo* item, CollisionInfo* coll);
|
std::optional<VaultTestResult> TestLaraLedgeAutoJump(ItemInfo* item, CollisionInfo* coll);
|
||||||
std::optional<VaultTestResult> TestLaraLadderAutoJump(ItemInfo* item, CollisionInfo* coll);
|
std::optional<VaultTestResult> TestLaraLadderAutoJump(ItemInfo* item, CollisionInfo* coll);
|
||||||
std::optional<VaultTestResult> TestLaraLadderMount(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);
|
std::optional<VaultTestResult> TestLaraVault(ItemInfo* item, CollisionInfo* coll);
|
||||||
bool TestAndDoLaraLadderClimb(ItemInfo* item, CollisionInfo* coll);
|
bool TestAndDoLaraLadderClimb(ItemInfo* item, CollisionInfo* coll);
|
||||||
|
|
||||||
|
|
|
@ -886,7 +886,9 @@ namespace TEN::Gui
|
||||||
Reverb,
|
Reverb,
|
||||||
MusicVolume,
|
MusicVolume,
|
||||||
SfxVolume,
|
SfxVolume,
|
||||||
|
|
||||||
Subtitles,
|
Subtitles,
|
||||||
|
AutoMonkeySwingJump,
|
||||||
AutoTargeting,
|
AutoTargeting,
|
||||||
TargetHighlighter,
|
TargetHighlighter,
|
||||||
ToggleRumble,
|
ToggleRumble,
|
||||||
|
@ -895,12 +897,12 @@ namespace TEN::Gui
|
||||||
MouseSmoothing,
|
MouseSmoothing,
|
||||||
|
|
||||||
Apply,
|
Apply,
|
||||||
Cancel
|
Cancel,
|
||||||
|
|
||||||
|
Count
|
||||||
};
|
};
|
||||||
|
|
||||||
static const auto numOtherSettingsOptions = 11;
|
OptionCount = (int)OtherSettingsOption::Count - 1;
|
||||||
|
|
||||||
OptionCount = numOtherSettingsOptions;
|
|
||||||
|
|
||||||
if (GuiIsDeselected())
|
if (GuiIsDeselected())
|
||||||
{
|
{
|
||||||
|
@ -923,6 +925,11 @@ namespace TEN::Gui
|
||||||
CurrentSettings.Configuration.EnableReverb = !CurrentSettings.Configuration.EnableReverb;
|
CurrentSettings.Configuration.EnableReverb = !CurrentSettings.Configuration.EnableReverb;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case OtherSettingsOption::AutoMonkeySwingJump:
|
||||||
|
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SoundEnvironment::Always);
|
||||||
|
CurrentSettings.Configuration.EnableAutoMonkeySwingJump = !CurrentSettings.Configuration.EnableAutoMonkeySwingJump;
|
||||||
|
break;
|
||||||
|
|
||||||
case OtherSettingsOption::Subtitles:
|
case OtherSettingsOption::Subtitles:
|
||||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SoundEnvironment::Always);
|
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SoundEnvironment::Always);
|
||||||
CurrentSettings.Configuration.EnableSubtitles = !CurrentSettings.Configuration.EnableSubtitles;
|
CurrentSettings.Configuration.EnableSubtitles = !CurrentSettings.Configuration.EnableSubtitles;
|
||||||
|
|
|
@ -231,42 +231,47 @@ namespace TEN::Renderer
|
||||||
AddString(MenuRightSideEntry, y, Str_Enabled(g_Gui.GetCurrentSettings().Configuration.EnableSubtitles), PRINTSTRING_COLOR_WHITE, SF(titleOption == 3));
|
AddString(MenuRightSideEntry, y, Str_Enabled(g_Gui.GetCurrentSettings().Configuration.EnableSubtitles), PRINTSTRING_COLOR_WHITE, SF(titleOption == 3));
|
||||||
GetNextLinePosition(&y);
|
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
|
// Auto targeting
|
||||||
AddString(MenuLeftSideEntry, y, g_GameFlow->GetString(STRING_AUTOMATIC_TARGETING), PRINTSTRING_COLOR_ORANGE, 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 == 4));
|
AddString(MenuRightSideEntry, y, Str_Enabled(g_Gui.GetCurrentSettings().Configuration.EnableAutoTargeting), PRINTSTRING_COLOR_WHITE, SF(titleOption == 5));
|
||||||
GetNextLinePosition(&y);
|
GetNextLinePosition(&y);
|
||||||
|
|
||||||
// Target highlighter
|
// Target highlighter
|
||||||
AddString(MenuLeftSideEntry, y, g_GameFlow->GetString(STRING_TARGET_HIGHLIGHTER), PRINTSTRING_COLOR_ORANGE, 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 == 5));
|
AddString(MenuRightSideEntry, y, Str_Enabled(g_Gui.GetCurrentSettings().Configuration.EnableTargetHighlighter), PRINTSTRING_COLOR_WHITE, SF(titleOption == 6));
|
||||||
GetNextLinePosition(&y);
|
GetNextLinePosition(&y);
|
||||||
|
|
||||||
// Vibration
|
// Vibration
|
||||||
AddString(MenuLeftSideEntry, y, g_GameFlow->GetString(STRING_RUMBLE), PRINTSTRING_COLOR_ORANGE, 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 == 6));
|
AddString(MenuRightSideEntry, y, Str_Enabled(g_Gui.GetCurrentSettings().Configuration.EnableRumble), PRINTSTRING_COLOR_WHITE, SF(titleOption == 7));
|
||||||
GetNextLinePosition(&y);
|
GetNextLinePosition(&y);
|
||||||
|
|
||||||
// Thumbstick camera
|
// Thumbstick camera
|
||||||
AddString(MenuLeftSideEntry, y, g_GameFlow->GetString(STRING_THUMBSTICK_CAMERA), PRINTSTRING_COLOR_ORANGE, 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 == 7));
|
AddString(MenuRightSideEntry, y, Str_Enabled(g_Gui.GetCurrentSettings().Configuration.EnableThumbstickCamera), PRINTSTRING_COLOR_WHITE, SF(titleOption == 8));
|
||||||
GetNextBlockPosition(&y);
|
GetNextBlockPosition(&y);
|
||||||
|
|
||||||
// Mouse sensitivity
|
// Mouse sensitivity
|
||||||
AddString(MenuLeftSideEntry, y, g_GameFlow->GetString(STRING_MOUSE_SENSITIVITY), PRINTSTRING_COLOR_ORANGE, 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 == 8));
|
AddString(MenuRightSideEntry, y, std::to_string(g_Gui.GetCurrentSettings().Configuration.MouseSensitivity).c_str(), PRINTSTRING_COLOR_WHITE, SF(titleOption == 9));
|
||||||
GetNextLinePosition(&y);
|
GetNextLinePosition(&y);
|
||||||
|
|
||||||
// Mouse smoothing
|
// Mouse smoothing
|
||||||
AddString(MenuLeftSideEntry, y, g_GameFlow->GetString(STRING_MOUSE_SMOOTHING), PRINTSTRING_COLOR_ORANGE, 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 == 9));
|
AddString(MenuRightSideEntry, y, std::to_string(g_Gui.GetCurrentSettings().Configuration.MouseSmoothing).c_str(), PRINTSTRING_COLOR_WHITE, SF(titleOption == 10));
|
||||||
GetNextBlockPosition(&y);
|
GetNextBlockPosition(&y);
|
||||||
|
|
||||||
// Apply
|
// 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);
|
GetNextLinePosition(&y);
|
||||||
|
|
||||||
// Cancel
|
// 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;
|
break;
|
||||||
|
|
||||||
case Menu::GeneralActions:
|
case Menu::GeneralActions:
|
||||||
|
|
|
@ -39,7 +39,7 @@ public:
|
||||||
virtual bool HasCrawlExtended() const = 0;
|
virtual bool HasCrawlExtended() const = 0;
|
||||||
virtual bool HasCrouchRoll() const = 0;
|
virtual bool HasCrouchRoll() const = 0;
|
||||||
virtual bool HasCrawlspaceDive() const = 0;
|
virtual bool HasCrawlspaceDive() const = 0;
|
||||||
virtual bool HasMonkeyAutoJump() const = 0;
|
virtual bool HasAutoMonkeySwingJump() const = 0;
|
||||||
virtual bool HasSprintJump() const = 0;
|
virtual bool HasSprintJump() const = 0;
|
||||||
virtual bool HasAFKPose() const = 0;
|
virtual bool HasAFKPose() const = 0;
|
||||||
virtual bool HasOverhangClimb() const = 0;
|
virtual bool HasOverhangClimb() const = 0;
|
||||||
|
|
|
@ -80,7 +80,8 @@
|
||||||
#define STRING_SOUND "sound"
|
#define STRING_SOUND "sound"
|
||||||
#define STRING_ENABLE_SOUND "enable_sound"
|
#define STRING_ENABLE_SOUND "enable_sound"
|
||||||
#define STRING_REVERB "reverb"
|
#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_TARGET_HIGHLIGHTER "target_highlighter"
|
||||||
#define STRING_RUMBLE "rumble"
|
#define STRING_RUMBLE "rumble"
|
||||||
#define STRING_THUMBSTICK_CAMERA "thumbstick_camera"
|
#define STRING_THUMBSTICK_CAMERA "thumbstick_camera"
|
||||||
|
|
|
@ -4,18 +4,18 @@
|
||||||
#include <filesystem>
|
#include <filesystem>
|
||||||
#include "Scripting/Internal/LuaHandler.h"
|
#include "Scripting/Internal/LuaHandler.h"
|
||||||
|
|
||||||
LuaHandler::LuaHandler(sol::state* lua) : m_lua{ lua }
|
LuaHandler::LuaHandler(sol::state* lua) : _lua{ lua }
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void LuaHandler::ResetGlobals()
|
void LuaHandler::ResetGlobals()
|
||||||
{
|
{
|
||||||
auto mt = sol::table{ *m_lua, sol::create };
|
auto mt = sol::table{ *_lua, sol::create };
|
||||||
m_globals = sol::table{ *m_lua, sol::create };
|
_globals = sol::table{ *_lua, sol::create };
|
||||||
mt.set(sol::meta_function::new_index, m_globals);
|
mt.set(sol::meta_function::new_index, _globals);
|
||||||
mt.set(sol::meta_function::index, m_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)
|
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))
|
if (isOptional && !std::filesystem::is_regular_file(luaFilename))
|
||||||
return;
|
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())
|
if (!result.valid())
|
||||||
{
|
{
|
||||||
sol::error error = result;
|
sol::error error = result;
|
||||||
|
@ -33,7 +33,7 @@ void LuaHandler::ExecuteScript(const std::string& luaFilename, bool isOptional)
|
||||||
|
|
||||||
void LuaHandler::ExecuteString(const std::string& command)
|
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())
|
if (!result.valid())
|
||||||
{
|
{
|
||||||
sol::error error = result;
|
sol::error error = result;
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
class LuaHandler
|
class LuaHandler
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
sol::state* m_lua;
|
sol::state* _lua;
|
||||||
sol::table m_globals;
|
sol::table _globals;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
LuaHandler(sol::state* lua);
|
LuaHandler(sol::state* lua);
|
||||||
|
@ -22,17 +22,17 @@ public:
|
||||||
|
|
||||||
sol::state* GetState()
|
sol::state* GetState()
|
||||||
{
|
{
|
||||||
return m_lua;
|
return _lua;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename T>void MakeReadOnlyTable(sol::table parent, const std::string& tableName, const T& container)
|
template <typename T>void MakeReadOnlyTable(sol::table parent, const std::string& tableName, const T& container)
|
||||||
{
|
{
|
||||||
// Put all data into metatable.
|
// Put all data into metatable.
|
||||||
auto metatable = tableName + "Meta";
|
auto metatable = tableName + "Meta";
|
||||||
m_lua->set(metatable, sol::as_table(container));
|
_lua->set(metatable, sol::as_table(container));
|
||||||
|
|
||||||
auto mtmt = tableName + "MetaMeta";
|
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.
|
// 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)
|
auto lam = [tableName](sol::table tab, std::string const& key)
|
||||||
|
@ -41,29 +41,29 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
mtmtTable[sol::meta_method::index] = lam;
|
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
|
// Make metatable's __index refer to itself so that requests to main table will go through to metatable
|
||||||
// (and thus container's members).
|
// (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.
|
// 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.
|
// 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.
|
// Point initial metatable variable away from its contents. This is just for cleanliness.
|
||||||
parent.set(tableName, tab);
|
parent.set(tableName, tab);
|
||||||
|
|
||||||
m_lua->safe_script(tableName + " = nil");
|
_lua->safe_script(tableName + " = nil");
|
||||||
m_lua->safe_script(metatable + " = nil");
|
_lua->safe_script(metatable + " = nil");
|
||||||
m_lua->safe_script(mtmt + " = nil");
|
_lua->safe_script(mtmt + " = nil");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -15,11 +15,12 @@ void Animations::Register(sol::table& parent)
|
||||||
"crawlExtended", &Animations::HasCrawlExtended,
|
"crawlExtended", &Animations::HasCrawlExtended,
|
||||||
"crouchRoll", &Animations::HasCrouchRoll,
|
"crouchRoll", &Animations::HasCrouchRoll,
|
||||||
"crawlspaceSwandive", &Animations::HasCrawlspaceDive,
|
"crawlspaceSwandive", &Animations::HasCrawlspaceDive,
|
||||||
"monkeyAutoJump", &Animations::HasMonkeyAutoJump,
|
|
||||||
"overhangClimb", &Animations::HasOverhangClimb,
|
"overhangClimb", &Animations::HasOverhangClimb,
|
||||||
"slideExtended", &Animations::HasSlideExtended,
|
"slideExtended", &Animations::HasSlideExtended,
|
||||||
"sprintJump", &Animations::HasSprintJump,
|
"sprintJump", &Animations::HasSprintJump,
|
||||||
"pose", &Animations::HasPose,
|
"pose", &Animations::HasPose,
|
||||||
"ledgeJumps", &Animations::HasLedgeJumps
|
"ledgeJumps", &Animations::HasLedgeJumps,
|
||||||
);
|
|
||||||
|
// NOTE: Removed. Keep for now to maintain compatibility. -- Sezz 2024.06.06
|
||||||
|
"monkeyAutoJump", & Animations::HasAutoMonkeySwingJump);
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,12 +13,14 @@ struct Animations
|
||||||
bool HasPose; // Crossed arms AFK posing.
|
bool HasPose; // Crossed arms AFK posing.
|
||||||
bool HasSlideExtended; // Extended slope sliding functionality (not ready yet).
|
bool HasSlideExtended; // Extended slope sliding functionality (not ready yet).
|
||||||
bool HasSprintJump; // Sprint jump.
|
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 HasCrawlspaceDive; // Dive into crawlspaces.
|
||||||
bool HasCrawlExtended; // Extended crawl moveset.
|
bool HasCrawlExtended; // Extended crawl moveset.
|
||||||
bool HasCrouchRoll; // Crouch roll.
|
bool HasCrouchRoll; // Crouch roll.
|
||||||
bool HasOverhangClimb; // Overhang functionality.
|
bool HasOverhangClimb; // Overhang functionality.
|
||||||
bool HasLedgeJumps; // Jump up or back from a ledge.
|
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&);
|
static void Register(sol::table&);
|
||||||
};
|
};
|
||||||
|
|
|
@ -30,7 +30,7 @@ ScriptInterfaceStringsHandler* g_GameStringsHandler;
|
||||||
ScriptInterfaceFlowHandler* g_GameFlow;
|
ScriptInterfaceFlowHandler* g_GameFlow;
|
||||||
|
|
||||||
FlowHandler::FlowHandler(sol::state* lua, sol::table& parent) :
|
FlowHandler::FlowHandler(sol::state* lua, sol::table& parent) :
|
||||||
m_handler(lua)
|
_handler(lua)
|
||||||
{
|
{
|
||||||
/*** gameflow.lua.
|
/*** gameflow.lua.
|
||||||
These functions are called in gameflow.lua, a file loosely equivalent to winroomedit's SCRIPT.DAT.
|
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.
|
ambient tracks.
|
||||||
@section Flowlua
|
@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);
|
parent.set(ScriptReserved_Flow, tableFlow);
|
||||||
|
|
||||||
/***
|
/***
|
||||||
|
@ -265,12 +265,12 @@ Specify which translations in the strings table correspond to which languages.
|
||||||
Settings::Register(tableFlow);
|
Settings::Register(tableFlow);
|
||||||
Fog::Register(tableFlow);
|
Fog::Register(tableFlow);
|
||||||
|
|
||||||
m_handler.MakeReadOnlyTable(tableFlow, ScriptReserved_WeatherType, WEATHER_TYPES);
|
_handler.MakeReadOnlyTable(tableFlow, ScriptReserved_WeatherType, WEATHER_TYPES);
|
||||||
m_handler.MakeReadOnlyTable(tableFlow, ScriptReserved_LaraType, PLAYER_TYPES);
|
_handler.MakeReadOnlyTable(tableFlow, ScriptReserved_LaraType, PLAYER_TYPES);
|
||||||
m_handler.MakeReadOnlyTable(tableFlow, ScriptReserved_RotationAxis, ROTATION_AXES);
|
_handler.MakeReadOnlyTable(tableFlow, ScriptReserved_RotationAxis, ROTATION_AXES);
|
||||||
m_handler.MakeReadOnlyTable(tableFlow, ScriptReserved_ItemAction, ITEM_MENU_ACTIONS);
|
_handler.MakeReadOnlyTable(tableFlow, ScriptReserved_ItemAction, ITEM_MENU_ACTIONS);
|
||||||
m_handler.MakeReadOnlyTable(tableFlow, ScriptReserved_ErrorMode, ERROR_MODES);
|
_handler.MakeReadOnlyTable(tableFlow, ScriptReserved_ErrorMode, ERROR_MODES);
|
||||||
m_handler.MakeReadOnlyTable(tableFlow, ScriptReserved_GameStatus, GAME_STATUSES);
|
_handler.MakeReadOnlyTable(tableFlow, ScriptReserved_GameStatus, GAME_STATUSES);
|
||||||
}
|
}
|
||||||
|
|
||||||
FlowHandler::~FlowHandler()
|
FlowHandler::~FlowHandler()
|
||||||
|
@ -281,35 +281,35 @@ FlowHandler::~FlowHandler()
|
||||||
|
|
||||||
std::string FlowHandler::GetGameDir()
|
std::string FlowHandler::GetGameDir()
|
||||||
{
|
{
|
||||||
return m_gameDir;
|
return _gameDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FlowHandler::SetGameDir(const std::string& assetDir)
|
void FlowHandler::SetGameDir(const std::string& assetDir)
|
||||||
{
|
{
|
||||||
m_gameDir = assetDir;
|
_gameDir = assetDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FlowHandler::SetLanguageNames(sol::as_table_t<std::vector<std::string>>&& src)
|
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)
|
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
|
else
|
||||||
{
|
{
|
||||||
for (auto& stringPair : src.value())
|
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)
|
void FlowHandler::SetSettings(Settings const & src)
|
||||||
{
|
{
|
||||||
m_settings = src;
|
_settings = src;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FlowHandler::SetAnimations(Animations const& src)
|
void FlowHandler::SetAnimations(Animations const& src)
|
||||||
|
@ -339,10 +339,10 @@ void FlowHandler::SetTotalSecretCount(int secretsNumber)
|
||||||
|
|
||||||
void FlowHandler::LoadFlowScript()
|
void FlowHandler::LoadFlowScript()
|
||||||
{
|
{
|
||||||
m_handler.ExecuteScript(m_gameDir + "Scripts/Gameflow.lua");
|
_handler.ExecuteScript(_gameDir + "Scripts/Gameflow.lua");
|
||||||
m_handler.ExecuteScript(m_gameDir + "Scripts/SystemStrings.lua", true);
|
_handler.ExecuteScript(_gameDir + "Scripts/SystemStrings.lua", true);
|
||||||
m_handler.ExecuteScript(m_gameDir + "Scripts/Strings.lua", true);
|
_handler.ExecuteScript(_gameDir + "Scripts/Strings.lua", true);
|
||||||
m_handler.ExecuteScript(m_gameDir + "Scripts/Settings.lua", true);
|
_handler.ExecuteScript(_gameDir + "Scripts/Settings.lua", true);
|
||||||
|
|
||||||
SetScriptErrorMode(GetSettings()->ErrorMode);
|
SetScriptErrorMode(GetSettings()->ErrorMode);
|
||||||
|
|
||||||
|
@ -359,19 +359,19 @@ void FlowHandler::LoadFlowScript()
|
||||||
|
|
||||||
char const * FlowHandler::GetString(const char* id) const
|
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;
|
return id;
|
||||||
}
|
}
|
||||||
else
|
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()
|
Settings* FlowHandler::GetSettings()
|
||||||
{
|
{
|
||||||
return &m_settings;
|
return &_settings;
|
||||||
}
|
}
|
||||||
|
|
||||||
Level* FlowHandler::GetLevel(int id)
|
Level* FlowHandler::GetLevel(int id)
|
||||||
|
|
|
@ -1,29 +1,27 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#include <string_view>
|
#include <string_view>
|
||||||
|
|
||||||
|
#include "Scripting/Include/Flow/ScriptInterfaceFlowHandler.h"
|
||||||
|
#include "Scripting/Include/ScriptInterfaceGame.h"
|
||||||
#include "Scripting/Internal/LanguageScript.h"
|
#include "Scripting/Internal/LanguageScript.h"
|
||||||
#include "Scripting/Internal/LuaHandler.h"
|
#include "Scripting/Internal/LuaHandler.h"
|
||||||
#include "Scripting/Internal/TEN/Logic/LogicHandler.h"
|
|
||||||
#include "Scripting/Internal/TEN/Color/Color.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/Level/FlowLevel.h"
|
||||||
#include "Scripting/Internal/TEN/Flow/Settings/Settings.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
|
class FlowHandler : public ScriptInterfaceFlowHandler
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
Settings m_settings;
|
LuaHandler _handler;
|
||||||
|
Settings _settings = {};
|
||||||
|
std::string _gameDir = {};
|
||||||
|
|
||||||
std::unordered_map<std::string, std::vector<std::string>> m_translationsMap;
|
std::map<int, int> _moveableMap = {};
|
||||||
std::vector<std::string> m_languageNames;
|
|
||||||
|
|
||||||
std::map<short, short> m_itemsMap;
|
std::unordered_map<std::string, std::vector<std::string>> _translationMap = {};
|
||||||
|
std::vector<std::string> _languageNames = {};
|
||||||
std::string m_gameDir;
|
|
||||||
|
|
||||||
LuaHandler m_handler;
|
|
||||||
|
|
||||||
void PrepareInventoryObjects();
|
void PrepareInventoryObjects();
|
||||||
|
|
||||||
|
@ -91,12 +89,13 @@ public:
|
||||||
bool HasCrawlExtended() const override { return Anims.HasCrawlExtended; }
|
bool HasCrawlExtended() const override { return Anims.HasCrawlExtended; }
|
||||||
bool HasCrouchRoll() const override { return Anims.HasCrouchRoll; }
|
bool HasCrouchRoll() const override { return Anims.HasCrouchRoll; }
|
||||||
bool HasCrawlspaceDive() const override { return Anims.HasCrawlspaceDive; }
|
bool HasCrawlspaceDive() const override { return Anims.HasCrawlspaceDive; }
|
||||||
bool HasMonkeyAutoJump() const override { return Anims.HasMonkeyAutoJump; }
|
|
||||||
bool HasAFKPose() const override { return Anims.HasPose; }
|
bool HasAFKPose() const override { return Anims.HasPose; }
|
||||||
bool HasOverhangClimb() const override { return Anims.HasOverhangClimb; }
|
bool HasOverhangClimb() const override { return Anims.HasOverhangClimb; }
|
||||||
bool HasSlideExtended() const override { return Anims.HasSlideExtended; }
|
bool HasSlideExtended() const override { return Anims.HasSlideExtended; }
|
||||||
bool HasSprintJump() const override { return Anims.HasSprintJump; }
|
bool HasSprintJump() const override { return Anims.HasSprintJump; }
|
||||||
bool HasLedgeJumps() const override { return Anims.HasLedgeJumps; }
|
bool HasLedgeJumps() const override { return Anims.HasLedgeJumps; }
|
||||||
bool DoFlow() override;
|
bool DoFlow() override;
|
||||||
};
|
|
||||||
|
|
||||||
|
// NOTE: Removed. Keep for now to maintain compatibility. -- Sezz 2024.06.06
|
||||||
|
bool HasAutoMonkeySwingJump() const override { return Anims.HasAutoMonkeySwingJump; }
|
||||||
|
};
|
||||||
|
|
|
@ -16,7 +16,7 @@ Display strings.
|
||||||
StringsHandler::StringsHandler(sol::state* lua, sol::table& parent) :
|
StringsHandler::StringsHandler(sol::state* lua, sol::table& parent) :
|
||||||
LuaHandler(lua)
|
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);
|
parent.set(ScriptReserved_Strings, table);
|
||||||
|
|
||||||
/***
|
/***
|
||||||
|
|
|
@ -230,6 +230,7 @@ bool SaveConfiguration()
|
||||||
|
|
||||||
// Set Gameplay keys.
|
// Set Gameplay keys.
|
||||||
if (SetBoolRegKey(gameplayKey, REGKEY_ENABLE_SUBTITLES, g_Configuration.EnableSubtitles) != ERROR_SUCCESS ||
|
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_AUTO_TARGETING, g_Configuration.EnableAutoTargeting) != ERROR_SUCCESS ||
|
||||||
SetBoolRegKey(gameplayKey, REGKEY_ENABLE_TARGET_HIGHLIGHTER, g_Configuration.EnableTargetHighlighter) != ERROR_SUCCESS ||
|
SetBoolRegKey(gameplayKey, REGKEY_ENABLE_TARGET_HIGHLIGHTER, g_Configuration.EnableTargetHighlighter) != ERROR_SUCCESS ||
|
||||||
SetBoolRegKey(gameplayKey, REGKEY_ENABLE_RUMBLE, g_Configuration.EnableRumble) != ERROR_SUCCESS ||
|
SetBoolRegKey(gameplayKey, REGKEY_ENABLE_RUMBLE, g_Configuration.EnableRumble) != ERROR_SUCCESS ||
|
||||||
|
@ -322,6 +323,7 @@ void InitDefaultConfiguration()
|
||||||
g_Configuration.SfxVolume = 100;
|
g_Configuration.SfxVolume = 100;
|
||||||
|
|
||||||
g_Configuration.EnableSubtitles = true;
|
g_Configuration.EnableSubtitles = true;
|
||||||
|
g_Configuration.EnableAutoMonkeySwingJump = false;
|
||||||
g_Configuration.EnableAutoTargeting = true;
|
g_Configuration.EnableAutoTargeting = true;
|
||||||
g_Configuration.EnableTargetHighlighter = true;
|
g_Configuration.EnableTargetHighlighter = true;
|
||||||
g_Configuration.EnableRumble = true;
|
g_Configuration.EnableRumble = true;
|
||||||
|
@ -419,6 +421,7 @@ bool LoadConfiguration()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool enableAutoMonkeySwingJump = false;
|
||||||
bool enableSubtitles = true;
|
bool enableSubtitles = true;
|
||||||
bool enableAutoTargeting = true;
|
bool enableAutoTargeting = true;
|
||||||
bool enableTargetHighlighter = true;
|
bool enableTargetHighlighter = true;
|
||||||
|
@ -426,7 +429,8 @@ bool LoadConfiguration()
|
||||||
bool enableThumbstickCamera = true;
|
bool enableThumbstickCamera = true;
|
||||||
|
|
||||||
// Load Gameplay keys.
|
// 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_AUTO_TARGETING, &enableAutoTargeting, true) != ERROR_SUCCESS ||
|
||||||
GetBoolRegKey(gameplayKey, REGKEY_ENABLE_TARGET_HIGHLIGHTER, &enableTargetHighlighter, true) != ERROR_SUCCESS ||
|
GetBoolRegKey(gameplayKey, REGKEY_ENABLE_TARGET_HIGHLIGHTER, &enableTargetHighlighter, true) != ERROR_SUCCESS ||
|
||||||
GetBoolRegKey(gameplayKey, REGKEY_ENABLE_RUMBLE, &enableRumble, true) != ERROR_SUCCESS ||
|
GetBoolRegKey(gameplayKey, REGKEY_ENABLE_RUMBLE, &enableRumble, true) != ERROR_SUCCESS ||
|
||||||
|
@ -507,11 +511,12 @@ bool LoadConfiguration()
|
||||||
g_Configuration.SfxVolume = sfxVolume;
|
g_Configuration.SfxVolume = sfxVolume;
|
||||||
g_Configuration.SoundDevice = soundDevice;
|
g_Configuration.SoundDevice = soundDevice;
|
||||||
|
|
||||||
|
g_Configuration.EnableSubtitles = enableSubtitles;
|
||||||
|
g_Configuration.EnableAutoMonkeySwingJump = enableAutoMonkeySwingJump;
|
||||||
g_Configuration.EnableAutoTargeting = enableAutoTargeting;
|
g_Configuration.EnableAutoTargeting = enableAutoTargeting;
|
||||||
g_Configuration.EnableTargetHighlighter = enableTargetHighlighter;
|
g_Configuration.EnableTargetHighlighter = enableTargetHighlighter;
|
||||||
g_Configuration.EnableRumble = enableRumble;
|
g_Configuration.EnableRumble = enableRumble;
|
||||||
g_Configuration.EnableThumbstickCamera = enableThumbstickCamera;
|
g_Configuration.EnableThumbstickCamera = enableThumbstickCamera;
|
||||||
g_Configuration.EnableSubtitles = enableSubtitles;
|
|
||||||
|
|
||||||
g_Configuration.MouseSensitivity = mouseSensitivity;
|
g_Configuration.MouseSensitivity = mouseSensitivity;
|
||||||
g_Configuration.MouseSmoothing = mouseSmoothing;
|
g_Configuration.MouseSmoothing = mouseSmoothing;
|
||||||
|
|
|
@ -33,6 +33,7 @@ constexpr auto REGKEY_SFX_VOLUME = "SfxVolume";
|
||||||
|
|
||||||
// Gameplay keys
|
// Gameplay keys
|
||||||
constexpr auto REGKEY_ENABLE_SUBTITLES = "EnableSubtitles";
|
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_AUTO_TARGETING = "EnableAutoTargeting";
|
||||||
constexpr auto REGKEY_ENABLE_TARGET_HIGHLIGHTER = "EnableTargetHighlighter";
|
constexpr auto REGKEY_ENABLE_TARGET_HIGHLIGHTER = "EnableTargetHighlighter";
|
||||||
constexpr auto REGKEY_ENABLE_RUMBLE = "EnableRumble";
|
constexpr auto REGKEY_ENABLE_RUMBLE = "EnableRumble";
|
||||||
|
@ -69,6 +70,7 @@ struct GameConfiguration
|
||||||
|
|
||||||
// Gameplay
|
// Gameplay
|
||||||
bool EnableSubtitles = false;
|
bool EnableSubtitles = false;
|
||||||
|
bool EnableAutoMonkeySwingJump = false;
|
||||||
bool EnableAutoTargeting = false;
|
bool EnableAutoTargeting = false;
|
||||||
bool EnableTargetHighlighter = false;
|
bool EnableTargetHighlighter = false;
|
||||||
bool EnableRumble = false;
|
bool EnableRumble = false;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue