move speed modifier settings to cheats (#6277)
Combine into one speed modifier. Refactor config migrations. Add v6
This commit is contained in:
@@ -172,8 +172,7 @@ extern "C"
|
||||
extern s32 gSystemArenaLogSeverity;
|
||||
extern u8 __osPfsInodeCacheBank;
|
||||
extern s32 __osPfsLastChannel;
|
||||
extern u8 gWalkSpeedToggle1;
|
||||
extern u8 gWalkSpeedToggle2;
|
||||
extern u8 gWalkSpeedToggle;
|
||||
extern f32 iceTrapScale;
|
||||
extern f32 triforcePieceScale;
|
||||
extern f32 mysteryItemScale;
|
||||
|
||||
@@ -1601,77 +1601,6 @@ void SohInputEditorWindow::DrawLinkTab() {
|
||||
if (ImGui::CollapsingHeader("Modifier Buttons")) {
|
||||
DrawButtonLine("M1", portIndex, BTN_CUSTOM_MODIFIER1);
|
||||
DrawButtonLine("M2", portIndex, BTN_CUSTOM_MODIFIER2);
|
||||
|
||||
ImGui::BeginDisabled(CVarGetInteger(CVAR_SETTING("DisableChanges"), 0));
|
||||
CVarCheckbox("Enable speed modifiers", CVAR_SETTING("WalkModifier.Enabled"),
|
||||
CheckboxOptions()
|
||||
.Color(THEME_COLOR)
|
||||
.Tooltip("Hold the assigned button to change the maximum walking or swimming speed"));
|
||||
if (CVarGetInteger(CVAR_SETTING("WalkModifier.Enabled"), 0)) {
|
||||
CVarBtnSelector(
|
||||
"Speed Modifier 1 Button Combo", CVAR_SETTING("WalkModifier.Mod1Btn"),
|
||||
BtnSelectorOptions()
|
||||
.DefaultValue(BTN_CUSTOM_MODIFIER1)
|
||||
.Color(THEME_COLOR)
|
||||
.Tooltip(
|
||||
"Buttons that activate Speed Modifier 1.\n\n"
|
||||
"If \"Toggle modifier instead of holding\" is off, hold this combo to apply the modifier.\n"
|
||||
"If it is on, tap this combo to toggle the modifier on/off."));
|
||||
|
||||
CVarBtnSelector(
|
||||
"Speed Modifier 2 Button Combo", CVAR_SETTING("WalkModifier.Mod2Btn"),
|
||||
BtnSelectorOptions()
|
||||
.DefaultValue(BTN_CUSTOM_MODIFIER2)
|
||||
.Color(THEME_COLOR)
|
||||
.Tooltip(
|
||||
"Buttons that activate Speed Modifier 2.\n\n"
|
||||
"If \"Toggle modifier instead of holding\" is off, hold this combo to apply the modifier.\n"
|
||||
"If it is on, tap this combo to toggle the modifier on/off."));
|
||||
UIWidgets::Spacer(5);
|
||||
Ship::GuiWindow::BeginGroupPanel("Speed Modifier", ImGui::GetContentRegionAvail());
|
||||
CVarCheckbox("Toggle modifier instead of holding", CVAR_SETTING("WalkModifier.SpeedToggle"),
|
||||
CheckboxOptions().Color(THEME_COLOR));
|
||||
Ship::GuiWindow::BeginGroupPanel("Walk Modifier", ImGui::GetContentRegionAvail());
|
||||
CVarCheckbox("Don't affect jump distance/velocity", CVAR_SETTING("WalkModifier.DoesntChangeJump"),
|
||||
CheckboxOptions().Color(THEME_COLOR));
|
||||
CVarSliderFloat("Walk Modifier 1: %.0f %%", CVAR_SETTING("WalkModifier.Mapping1"),
|
||||
FloatSliderOptions()
|
||||
.Color(THEME_COLOR)
|
||||
.IsPercentage()
|
||||
.Min(0.0f)
|
||||
.Max(5.0f)
|
||||
.DefaultValue(1.0f)
|
||||
.ShowButtons(true));
|
||||
CVarSliderFloat("Walk Modifier 2: %.0f %%", CVAR_SETTING("WalkModifier.Mapping2"),
|
||||
FloatSliderOptions()
|
||||
.Color(THEME_COLOR)
|
||||
.IsPercentage()
|
||||
.Min(0.0f)
|
||||
.Max(5.0f)
|
||||
.DefaultValue(1.0f)
|
||||
.ShowButtons(true));
|
||||
Ship::GuiWindow::EndGroupPanel(0);
|
||||
Ship::GuiWindow::BeginGroupPanel("Swim Modifier", ImGui::GetContentRegionAvail());
|
||||
CVarSliderFloat("Swim Modifier 1: %.0f %%", CVAR_SETTING("WalkModifier.SwimMapping1"),
|
||||
FloatSliderOptions()
|
||||
.Color(THEME_COLOR)
|
||||
.IsPercentage()
|
||||
.Min(0.0f)
|
||||
.Max(5.0f)
|
||||
.DefaultValue(1.0f)
|
||||
.ShowButtons(true));
|
||||
CVarSliderFloat("Swim Modifier 2: %.0f %%", CVAR_SETTING("WalkModifier.SwimMapping2"),
|
||||
FloatSliderOptions()
|
||||
.Color(THEME_COLOR)
|
||||
.IsPercentage()
|
||||
.Min(0.0f)
|
||||
.Max(5.0f)
|
||||
.DefaultValue(1.0f)
|
||||
.ShowButtons(true));
|
||||
Ship::GuiWindow::EndGroupPanel(0);
|
||||
Ship::GuiWindow::EndGroupPanel(0);
|
||||
}
|
||||
ImGui::EndDisabled();
|
||||
}
|
||||
|
||||
if (ImGui::CollapsingHeader("Ocarina Controls")) {
|
||||
|
||||
@@ -1471,6 +1471,7 @@ extern "C" void InitOTR(int argc, char* argv[]) {
|
||||
conf->RegisterVersionUpdater(std::make_shared<SOH::ConfigVersion3Updater>());
|
||||
conf->RegisterVersionUpdater(std::make_shared<SOH::ConfigVersion4Updater>());
|
||||
conf->RegisterVersionUpdater(std::make_shared<SOH::ConfigVersion5Updater>());
|
||||
conf->RegisterVersionUpdater(std::make_shared<SOH::ConfigVersion6Updater>());
|
||||
conf->RunVersionUpdates();
|
||||
|
||||
SohGui::SetupGuiElements();
|
||||
|
||||
@@ -1824,6 +1824,24 @@ void SohMenu::AddMenuEnhancements() {
|
||||
.Callback([](WidgetInfo& info) { SwitchAge(); });
|
||||
|
||||
path.column = SECTION_COLUMN_3;
|
||||
AddWidget(path, "Speed Modifier", WIDGET_SEPARATOR_TEXT);
|
||||
AddWidget(path, "Toggle modifier instead of holding", WIDGET_CVAR_CHECKBOX)
|
||||
.CVar(CVAR_CHEAT("SpeedModifier.SpeedToggle"));
|
||||
AddWidget(path, "Don't affect jump distance/velocity", WIDGET_CVAR_CHECKBOX)
|
||||
.CVar(CVAR_CHEAT("SpeedModifier.DoesntChangeJump"));
|
||||
AddWidget(path, "Nultiplier:", WIDGET_CVAR_SLIDER_FLOAT)
|
||||
.CVar(CVAR_CHEAT("SpeedModifier.Value"))
|
||||
.Options(FloatSliderOptions().IsPercentage().Min(1.0f).Max(5.0f).DefaultValue(1.0f).ShowButtons(true).Format(
|
||||
"%.0f%%"));
|
||||
AddWidget(path, "Button Combination:", WIDGET_CVAR_BTN_SELECTOR)
|
||||
.CVar(CVAR_CHEAT("SpeedModifier.Btn"))
|
||||
.Options(
|
||||
BtnSelectorOptions()
|
||||
.DefaultValue(BTN_CUSTOM_MODIFIER1)
|
||||
.Tooltip("Buttons that activate Speed Modifier 1.\n\n"
|
||||
"If \"Toggle modifier instead of holding\" is off, hold this combo to apply the modifier.\n"
|
||||
"If it is on, tap this combo to toggle the modifier on/off."));
|
||||
|
||||
AddWidget(path, "Save States", WIDGET_SEPARATOR_TEXT);
|
||||
AddWidget(path, ICON_FA_EXCLAMATION_TRIANGLE " WARNING!!!! " ICON_FA_EXCLAMATION_TRIANGLE, WIDGET_TEXT)
|
||||
.Options(TextOptions().Color(Colors::Orange));
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -30,4 +30,10 @@ class ConfigVersion5Updater final : public Ship::ConfigVersionUpdater {
|
||||
ConfigVersion5Updater();
|
||||
void Update(Ship::Config* conf);
|
||||
};
|
||||
|
||||
class ConfigVersion6Updater final : public Ship::ConfigVersionUpdater {
|
||||
public:
|
||||
ConfigVersion6Updater();
|
||||
void Update(Ship::Config* conf);
|
||||
};
|
||||
} // namespace SOH
|
||||
|
||||
@@ -344,8 +344,7 @@ void Player_Action_80850E84(Player* this, PlayState* play);
|
||||
void Player_Action_CsAction(Player* this, PlayState* play);
|
||||
|
||||
#pragma region[SoH]
|
||||
u8 gWalkSpeedToggle1;
|
||||
u8 gWalkSpeedToggle2;
|
||||
u8 gWalkSpeedToggle;
|
||||
|
||||
s32 spawn_boomerang_ivan(EnPartner* this, PlayState* play) {
|
||||
if (!CVarGetInteger(CVAR_ENHANCEMENT("IvanCoopModeEnabled"), 0)) {
|
||||
@@ -7138,22 +7137,17 @@ void func_8083DFE0(Player* this, f32* arg1, s16* arg2) {
|
||||
maxSpeed *= 1.5f;
|
||||
}
|
||||
|
||||
if (CVarGetInteger(CVAR_SETTING("WalkModifier.Enabled"), 0) &&
|
||||
!CVarGetInteger(CVAR_SETTING("WalkModifier.DoesntChangeJump"), 0)) {
|
||||
if (CVarGetInteger(CVAR_SETTING("WalkModifier.SpeedToggle"), 0)) {
|
||||
if (gWalkSpeedToggle1) {
|
||||
maxSpeed *= CVarGetFloat(CVAR_SETTING("WalkModifier.Mapping1"), 1.0f);
|
||||
} else if (gWalkSpeedToggle2) {
|
||||
maxSpeed *= CVarGetFloat(CVAR_SETTING("WalkModifier.Mapping2"), 1.0f);
|
||||
if (CVarGetFloat(CVAR_CHEAT("SpeedModifier.Value"), 1.0f) != 1.0f &&
|
||||
!CVarGetInteger(CVAR_CHEAT("SpeedModifier.DoesntChangeJump"), 0)) {
|
||||
if (CVarGetInteger(CVAR_CHEAT("SpeedModifier.SpeedToggle"), 0)) {
|
||||
if (gWalkSpeedToggle) {
|
||||
maxSpeed *= CVarGetFloat(CVAR_CHEAT("SpeedModifier.Mapping"), 1.0f);
|
||||
}
|
||||
} else {
|
||||
const s32 mod1Mask = CVarGetInteger(CVAR_SETTING("WalkModifier.Mod1Btn"), BTN_CUSTOM_MODIFIER1);
|
||||
const s32 mod2Mask = CVarGetInteger(CVAR_SETTING("WalkModifier.Mod2Btn"), BTN_CUSTOM_MODIFIER2);
|
||||
const s32 mod1Mask = CVarGetInteger(CVAR_CHEAT("SpeedModifier.Btn"), BTN_CUSTOM_MODIFIER1);
|
||||
|
||||
if (mod1Mask != 0 && CHECK_BTN_ALL(sControlInput->cur.button, mod1Mask)) {
|
||||
maxSpeed *= CVarGetFloat(CVAR_SETTING("WalkModifier.Mapping1"), 1.0f);
|
||||
} else if (mod2Mask != 0 && CHECK_BTN_ALL(sControlInput->cur.button, mod2Mask)) {
|
||||
maxSpeed *= CVarGetFloat(CVAR_SETTING("WalkModifier.Mapping2"), 1.0f);
|
||||
maxSpeed *= CVarGetFloat(CVAR_CHEAT("SpeedModifier.Value"), 1.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8889,21 +8883,16 @@ void Player_Action_80842180(Player* this, PlayState* play) {
|
||||
sp2C *= 1.5f;
|
||||
}
|
||||
|
||||
if (CVarGetInteger(CVAR_SETTING("WalkModifier.Enabled"), 0)) {
|
||||
if (CVarGetInteger(CVAR_SETTING("WalkModifier.SpeedToggle"), 0)) {
|
||||
if (gWalkSpeedToggle1) {
|
||||
sp2C *= CVarGetFloat(CVAR_SETTING("WalkModifier.Mapping1"), 1.0f);
|
||||
} else if (gWalkSpeedToggle2) {
|
||||
sp2C *= CVarGetFloat(CVAR_SETTING("WalkModifier.Mapping2"), 1.0f);
|
||||
if (CVarGetFloat(CVAR_CHEAT("SpeedModifier.Value"), 1.0f) != 1.0f) {
|
||||
if (CVarGetInteger(CVAR_CHEAT("SpeedModifier.SpeedToggle"), 0)) {
|
||||
if (gWalkSpeedToggle) {
|
||||
sp2C *= CVarGetFloat(CVAR_CHEAT("SpeedModifier.Value"), 1.0f);
|
||||
}
|
||||
} else {
|
||||
const s32 mod1Mask = CVarGetInteger(CVAR_SETTING("WalkModifier.Mod1Btn"), BTN_CUSTOM_MODIFIER1);
|
||||
const s32 mod2Mask = CVarGetInteger(CVAR_SETTING("WalkModifier.Mod2Btn"), BTN_CUSTOM_MODIFIER2);
|
||||
const s32 mod1Mask = CVarGetInteger(CVAR_CHEAT("SpeedModifier.Btn"), BTN_CUSTOM_MODIFIER1);
|
||||
|
||||
if (mod1Mask != 0 && CHECK_BTN_ALL(sControlInput->cur.button, mod1Mask)) {
|
||||
sp2C *= CVarGetFloat(CVAR_SETTING("WalkModifier.Mapping1"), 1.0f);
|
||||
} else if (mod2Mask != 0 && CHECK_BTN_ALL(sControlInput->cur.button, mod2Mask)) {
|
||||
sp2C *= CVarGetFloat(CVAR_SETTING("WalkModifier.Mapping2"), 1.0f);
|
||||
sp2C *= CVarGetFloat(CVAR_CHEAT("SpeedModifier.Value"), 1.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -12317,18 +12306,13 @@ void Player_Update(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
}
|
||||
|
||||
if (CVarGetInteger(CVAR_SETTING("WalkModifier.Enabled"), 0) &&
|
||||
CVarGetInteger(CVAR_SETTING("WalkModifier.SpeedToggle"), 0)) {
|
||||
const s32 mod1Mask = CVarGetInteger(CVAR_SETTING("WalkModifier.Mod1Btn"), BTN_CUSTOM_MODIFIER1);
|
||||
const s32 mod2Mask = CVarGetInteger(CVAR_SETTING("WalkModifier.Mod2Btn"), BTN_CUSTOM_MODIFIER2);
|
||||
if (CVarGetInteger(CVAR_CHEAT("SpeedModifier.Value"), 1.0f) != 1.0f &&
|
||||
CVarGetInteger(CVAR_CHEAT("SpeedModifier.SpeedToggle"), 0)) {
|
||||
const s32 mod1Mask = CVarGetInteger(CVAR_CHEAT("SpeedModifier.Btn"), BTN_CUSTOM_MODIFIER1);
|
||||
|
||||
if (mod1Mask != 0 && CHECK_BTN_ALL(sControlInput->cur.button, mod1Mask) &&
|
||||
CHECK_BTN_ANY(sControlInput->press.button, mod1Mask)) {
|
||||
gWalkSpeedToggle1 = !gWalkSpeedToggle1;
|
||||
}
|
||||
if (mod2Mask != 0 && CHECK_BTN_ALL(sControlInput->cur.button, mod2Mask) &&
|
||||
CHECK_BTN_ANY(sControlInput->press.button, mod2Mask)) {
|
||||
gWalkSpeedToggle2 = !gWalkSpeedToggle2;
|
||||
gWalkSpeedToggle = !gWalkSpeedToggle;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12784,23 +12768,18 @@ void func_8084AEEC(Player* this, f32* arg1, f32 arg2, s16 arg3) {
|
||||
// #region SOH [Enhancement]
|
||||
f32 swimMod = 1.0f;
|
||||
|
||||
if (CVarGetInteger(CVAR_SETTING("WalkModifier.Enabled"), 0) == 1) {
|
||||
if (CVarGetInteger(CVAR_SETTING("WalkModifier.SpeedToggle"), 0) == 1) {
|
||||
if (gWalkSpeedToggle1) {
|
||||
swimMod *= CVarGetFloat(CVAR_SETTING("WalkModifier.SwimMapping1"), 1.0f);
|
||||
} else if (gWalkSpeedToggle2) {
|
||||
swimMod *= CVarGetFloat(CVAR_SETTING("WalkModifier.SwimMapping2"), 1.0f);
|
||||
if (CVarGetFloat(CVAR_CHEAT("SpeedModifier.Value"), 1.0f) != 1.0f) {
|
||||
if (CVarGetInteger(CVAR_CHEAT("SpeedModifier.SpeedToggle"), 0) == 1) {
|
||||
if (gWalkSpeedToggle) {
|
||||
swimMod *= CVarGetFloat(CVAR_CHEAT("SpeedModifier.Value"), 1.0f);
|
||||
}
|
||||
// sControlInput is NULL to prevent inputs while surfacing after obtaining an underwater item so we want to
|
||||
// ignore it for that case
|
||||
} else if (sControlInput != NULL) {
|
||||
const s32 mod1Mask = CVarGetInteger(CVAR_SETTING("WalkModifier.Mod1Btn"), BTN_CUSTOM_MODIFIER1);
|
||||
const s32 mod2Mask = CVarGetInteger(CVAR_SETTING("WalkModifier.Mod2Btn"), BTN_CUSTOM_MODIFIER2);
|
||||
const s32 mod1Mask = CVarGetInteger(CVAR_CHEAT("SpeedModifier.Btn"), BTN_CUSTOM_MODIFIER1);
|
||||
|
||||
if (mod1Mask != 0 && CHECK_BTN_ALL(sControlInput->cur.button, mod1Mask)) {
|
||||
swimMod *= CVarGetFloat(CVAR_SETTING("WalkModifier.SwimMapping1"), 1.0f);
|
||||
} else if (mod2Mask != 0 && CHECK_BTN_ALL(sControlInput->cur.button, mod2Mask)) {
|
||||
swimMod *= CVarGetFloat(CVAR_SETTING("WalkModifier.SwimMapping2"), 1.0f);
|
||||
swimMod *= CVarGetFloat(CVAR_CHEAT("SpeedModifier.Value"), 1.0f);
|
||||
}
|
||||
}
|
||||
temp1 = this->skelAnime.curFrame - 10.0f;
|
||||
@@ -14048,7 +14027,7 @@ void func_8084DBC4(PlayState* play, Player* this, f32 arg2) {
|
||||
func_8084AEEC(this, &this->linearVelocity, sp2C * 0.5f, sp2A);
|
||||
// Original implementation of func_8084AEEC (SurfaceWithoutSwimMod) to prevent velocity increases via swim mod which
|
||||
// push Link into the air #region SOH [Enhancement]
|
||||
if (CVarGetInteger(CVAR_SETTING("WalkModifier.Enabled"), 0)) {
|
||||
if (CVarGetFloat(CVAR_CHEAT("SpeedModifier.Value"), 1.0f) != 1.0f) {
|
||||
SurfaceWithoutSwimMod(this, &this->actor.velocity.y, arg2, this->yaw);
|
||||
// #endregion
|
||||
} else {
|
||||
|
||||
@@ -13,8 +13,7 @@ void Opening_SetupTitleScreen(OpeningContext* this) {
|
||||
this->state.running = false;
|
||||
gSaveContext.linkAge = 0;
|
||||
gSaveContext.fileNum = 0xFF;
|
||||
gWalkSpeedToggle1 = 0;
|
||||
gWalkSpeedToggle2 = 0;
|
||||
gWalkSpeedToggle = 0;
|
||||
Sram_InitDebugSave();
|
||||
gSaveContext.cutsceneIndex = 0xFFF3;
|
||||
gSaveContext.sceneSetupIndex = 7;
|
||||
|
||||
Reference in New Issue
Block a user