Skip to content

Commit

Permalink
Option to "always run" only while outside of interiors (#420)
Browse files Browse the repository at this point in the history
  • Loading branch information
c6-dev authored Jan 23, 2024
1 parent 624eedc commit f9bf647
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 12 deletions.
9 changes: 8 additions & 1 deletion data/update/TBoGT/common/data/frontend_menus.xml
Original file line number Diff line number Diff line change
Expand Up @@ -424,6 +424,13 @@
<options text="FXAA" action="ACTION_NONE" value="2" />
<options text="SMAA" action="ACTION_NONE" value="3" />
</menupc>

<menupc enum="MENU_DISPLAY_ALWAYSRUN">
<options text="MO_OFF" action="ACTION_NONE" value="1" />
<options text="MO_ON" action="ACTION_NONE" value="2" />
<options text="Outside" action="ACTION_NONE" value="3" />
</menupc>

</sMenuDisplayValue>
<sMenuScreen>
<menu HeaderText="MH_GAM" enum="SCR_GAME">
Expand Down Expand Up @@ -481,7 +488,7 @@
<optionspc action="MENUOPT_NONE" label="" value="PREF_NULL" scaler="0" displayValue="MENU_DISPLAY_NONE" />
<optionspc action="MENUOPT_NONE" label="" value="PREF_NULL" scaler="0" displayValue="MENU_DISPLAY_NONE" />
<optionspc action="MENUOPT_ADJUST" label="Raw Input" value="PREF_RAWINPUT" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
<optionspc action="MENUOPT_ADJUST" label="Always Run" value="PREF_ALWAYSRUN" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
<optionspc action="MENUOPT_ADJUST" label="Always Run" value="PREF_ALWAYSRUN" scaler="6" displayValue="MENU_DISPLAY_ALWAYSRUN" />
<optionspc action="MENUOPT_ADJUST" label="Cover Centering" value="PREF_COVERCENTERING" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
<options action="END_OF_MENU_OPTIONS" label="" value="0" scaler="0" displayValue="0" />
</menu>
Expand Down
7 changes: 6 additions & 1 deletion data/update/TLAD/common/data/frontend_menus.xml
Original file line number Diff line number Diff line change
Expand Up @@ -500,6 +500,11 @@
<options text="FXAA" action="ACTION_NONE" value="2" />
<options text="SMAA" action="ACTION_NONE" value="3" />
</menupc>
<menupc enum="MENU_DISPLAY_ALWAYSRUN">
<options text="MO_OFF" action="ACTION_NONE" value="1" />
<options text="MO_ON" action="ACTION_NONE" value="2" />
<options text="Outside" action="ACTION_NONE" value="3" />
</menupc>
</sMenuDisplayValue>
<sMenuScreen>
<menu HeaderText="MH_GAM" enum="SCR_GAME">
Expand Down Expand Up @@ -557,7 +562,7 @@
<optionspc action="MENUOPT_NONE" label="" value="PREF_NULL" scaler="0" displayValue="MENU_DISPLAY_NONE" />
<optionspc action="MENUOPT_NONE" label="" value="PREF_NULL" scaler="0" displayValue="MENU_DISPLAY_NONE" />
<optionspc action="MENUOPT_ADJUST" label="Raw Input" value="PREF_RAWINPUT" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
<optionspc action="MENUOPT_ADJUST" label="Always Run" value="PREF_ALWAYSRUN" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
<optionspc action="MENUOPT_ADJUST" label="Always Run" value="PREF_ALWAYSRUN" scaler="6" displayValue="MENU_DISPLAY_ALWAYSRUN" />
<optionspc action="MENUOPT_ADJUST" label="Cover Centering" value="PREF_COVERCENTERING" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
<options action="END_OF_MENU_OPTIONS" label="" value="0" scaler="0" displayValue="0" />
</menu>
Expand Down
11 changes: 9 additions & 2 deletions data/update/common/data/frontend_menus.xml
Original file line number Diff line number Diff line change
Expand Up @@ -359,6 +359,13 @@
<options text="FXAA" action="ACTION_NONE" value="2" />
<options text="SMAA" action="ACTION_NONE" value="3" />
</menupc>

<menupc enum="MENU_DISPLAY_ALWAYSRUN">
<options text="MO_OFF" action="ACTION_NONE" value="1" />
<options text="MO_ON" action="ACTION_NONE" value="2" />
<options text="Outside" action="ACTION_NONE" value="3" />
</menupc>

</sMenuDisplayValue>

<sMenuScreen>
Expand Down Expand Up @@ -422,7 +429,7 @@
<optionspc action="MENUOPT_NONE" label="" value="PREF_NULL" scaler="0" displayValue="MENU_DISPLAY_NONE" />
<optionspc action="MENUOPT_NONE" label="" value="PREF_NULL" scaler="0" displayValue="MENU_DISPLAY_NONE" />
<optionspc action="MENUOPT_ADJUST" label="Raw Input" value="PREF_RAWINPUT" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
<optionspc action="MENUOPT_ADJUST" label="Always Run" value="PREF_ALWAYSRUN" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
<optionspc action="MENUOPT_ADJUST" label="Always Run" value="PREF_ALWAYSRUN" scaler="6" displayValue="MENU_DISPLAY_ALWAYSRUN" />
<optionspc action="MENUOPT_ADJUST" label="Cover Centering" value="PREF_COVERCENTERING" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
<options action="END_OF_MENU_OPTIONS" label="" value="0" scaler="0" displayValue="0" />
</menu>
Expand Down Expand Up @@ -861,7 +868,7 @@
<optionspc action="MENUOPT_NONE" label="" value="PREF_NULL" scaler="0" displayValue="MENU_DISPLAY_NONE" />
<optionspc action="MENUOPT_NONE" label="" value="PREF_NULL" scaler="0" displayValue="MENU_DISPLAY_NONE" />
<optionspc action="MENUOPT_ADJUST" label="Raw Input" value="PREF_RAWINPUT" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
<optionspc action="MENUOPT_ADJUST" label="Always Run" value="PREF_ALWAYSRUN" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
<optionspc action="MENUOPT_ADJUST" label="Always Run" value="PREF_ALWAYSRUN" scaler="6" displayValue="MENU_DISPLAY_ALWAYSRUN" />
<optionspc action="MENUOPT_ADJUST" label="Cover Centering" value="PREF_COVERCENTERING" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
<options action="END_OF_MENU_OPTIONS" label="" value="0" scaler="0" displayValue="MENU_DISPLAY_NONE" />
</menupc>
Expand Down
9 changes: 6 additions & 3 deletions source/ikeeponwalking.ixx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ export module ikeeponwalking;

import common;
import settings;
import natives;

class IKeepOnWalking
{
Expand Down Expand Up @@ -35,11 +36,13 @@ public:

*(uintptr_t*)(regs.esp - 4) = loc_A2A60F;
}
auto alwaysrunPref = FusionFixSettings.GetRef("PREF_ALWAYSRUN");
bool shouldRun = (alwaysrunPref->get() == FusionFixSettings.AlwaysRunText.eMO_ON
|| (alwaysrunPref->get() == FusionFixSettings.AlwaysRunText.eOutside && !Natives::IsInteriorScene()));

static auto alwaysrun = FusionFixSettings.GetRef("PREF_ALWAYSRUN");
if (!FusionFixSettings.Get("PREF_SPRINT")) // toggle
{
if (alwaysrun->get())
if (shouldRun)
{
static auto bRunState = true;
static auto oldWalkKeyState = GetAsyncKeyState(nWalkKey);
Expand All @@ -52,7 +55,7 @@ public:
*(float*)(regs.esp + (flag ? 0x18 : 0x1C)) = 1.0f;
}
}
else if (alwaysrun->get() && !GetAsyncKeyState(nWalkKey)) // hold
else if (shouldRun && !GetAsyncKeyState(nWalkKey)) // hold
*(float*)(regs.esp + (flag ? 0x18 : 0x1C)) = 1.0f;
}
}; injector::MakeInline2<SprintHook>(pattern.get_first(0));
Expand Down
16 changes: 11 additions & 5 deletions source/settings.ixx
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ private:
auto GetValue() { return value; }
auto SetValue(auto v) { value = v; WriteToIni(); if (callback) callback(value); }
auto ReadFromIni(auto& iniReader) { return iniReader.ReadInteger(iniSec, iniName, iniDefValInt); }
auto ReadFromIni() { CIniReader iniReader(cfgPath.wstring()); return ReadFromIni(iniReader); }
auto ReadFromIni() { CIniReader iniReader(cfgPath); return ReadFromIni(iniReader); }
void WriteToIni(auto& iniWriter) { iniWriter.WriteInteger(iniSec, iniName, value, true); }
void WriteToIni() { CIniReader iniWriter(cfgPath.wstring()); iniWriter.WriteInteger(iniSec, iniName, value, true); }
void WriteToIni() { CIniReader iniWriter(cfgPath); iniWriter.WriteInteger(iniSec, iniName, value, true); }
};

struct MenuPrefs
Expand Down Expand Up @@ -134,7 +134,7 @@ public:
pattern = find_pattern("89 1C 95 ? ? ? ? E8 ? ? ? ? A1 ? ? ? ? 83 C4 04 8D 04 40", "89 1C 8D ? ? ? ? E8 ? ? ? ? A1 ? ? ? ? 8D 0C 40 8B 14 CD");
mPrefs = *pattern.get_first<int32_t*>(3);

CIniReader iniReader(cfgPath.wstring());
CIniReader iniReader(cfgPath);

static CSetting arr[] = {
{ 0, "PREF_SKIP_INTRO", "MAIN", "SkipIntro", "", 1, nullptr, 0, 1 },
Expand All @@ -154,7 +154,6 @@ public:
{ 0, "PREF_DEFINITION", "MAIN", "Definition", "MENU_DISPLAY_DEFINITION", 6, nullptr, DefinitionText.eClassic, std::distance(std::begin(DefinitionText.data), std::end(DefinitionText.data)) - 1 },
{ 0, "PREF_BLOOM", "MAIN", "Bloom", "", 1, nullptr, 0, 1 },
{ 0, "PREF_FPSCOUNTER", "FRAMELIMIT", "DisplayFpsCounter", "", 0, nullptr, 0, 1 },
{ 0, "PREF_ALWAYSRUN", "MISC", "AlwaysRun", "", 0, nullptr, 0, 1 },
{ 0, "PREF_ALTDIALOGUE", "MISC", "AltDialogue", "", 0, nullptr, 0, 1 },
{ 0, "PREF_COVERCENTERING", "MISC", "CameraCenteringInCover", "", 0, nullptr, 0, 1 },
{ 0, "PREF_KBCAMCENTERDELAY", "MISC", "DelayBeforeCenteringCameraKB", "", 0, nullptr, 0, 9 },
Expand All @@ -164,7 +163,8 @@ public:
{ 0, "PREF_BUTTONS", "MISC", "Buttons", "MENU_DISPLAY_BUTTONS", 6, nullptr, ButtonsText.eXbox360, std::distance(std::begin(ButtonsText.data), std::end(ButtonsText.data)) - 1 },
{ 0, "PREF_LETTERBOX", "MISC", "Letterbox", "", 1, nullptr, 0, 1 },
{ 0, "PREF_PILLARBOX", "MISC", "Pillarbox", "", 1, nullptr, 0, 1 },
{ 0, "PREF_ANTIALIASING", "MISC", "Antialiasing", "MENU_DISPLAY_ANTIALIASING", 5, nullptr, AntialiasingText.eMO_OFF, std::distance(std::begin(AntialiasingText.data), std::end(AntialiasingText.data)) - 1 },
{ 0, "PREF_ANTIALIASING", "MISC", "Antialiasing", "MENU_DISPLAY_ANTIALIASING", 1, nullptr, AntialiasingText.eMO_OFF, std::distance(std::begin(AntialiasingText.data), std::end(AntialiasingText.data)) - 1 },
{ 0, "PREF_ALWAYSRUN", "MISC", "AlwaysRun", "MENU_DISPLAY_ALWAYSRUN", 3, nullptr, AlwaysRunText.eMO_OFF, std::distance(std::begin(AlwaysRunText.data), std::end(AlwaysRunText.data)) - 1 },
};

auto i = firstCustomID;
Expand Down Expand Up @@ -382,6 +382,12 @@ public:
std::vector<const char*> data = { "Low", "Medium", "High", "Very High", "Highest", "MO_OFF", "FXAA", "SMAA" };
} AntialiasingText;

struct
{
enum eAlwaysRunText { eLow, eMedium, eHigh, eMO_OFF, eMO_ON, eOutside };
std::vector<const char*> data = { "Low", "Medium", "High", "MO_OFF", "MO_ON", "Outside" };
} AlwaysRunText;

} FusionFixSettings;

class Settings
Expand Down

0 comments on commit f9bf647

Please sign in to comment.