From 1a855e5061b5dd1c7362737d5effc364dfb37de6 Mon Sep 17 00:00:00 2001 From: Verwex <34553484+Verwex@users.noreply.github.com> Date: Thu, 7 Aug 2025 21:13:37 +0200 Subject: [PATCH] Freeplay Change Mode Keybind The Co-Op Mode Switch has been given its own keybind, approved by Frakits. FOR TRANSLATORS: The translation string in Options.xml is category.ui.changeMode --- assets/languages/en/Options.xml | 1 + assets/languages/pl/Options.xml | 1 + source/funkin/backend/system/Controls.hx | 6 ++++++ source/funkin/menus/FreeplayState.hx | 10 +++++++--- source/funkin/options/Options.hx | 3 +++ source/funkin/options/keybinds/KeybindsOptions.hx | 4 ++++ 6 files changed, 22 insertions(+), 3 deletions(-) diff --git a/assets/languages/en/Options.xml b/assets/languages/en/Options.xml index 48e4d88b..68862bac 100644 --- a/assets/languages/en/Options.xml +++ b/assets/languages/en/Options.xml @@ -42,6 +42,7 @@ Back Reset Pause + Change Mode Engine diff --git a/assets/languages/pl/Options.xml b/assets/languages/pl/Options.xml index e70c6e16..d5fb2d34 100644 --- a/assets/languages/pl/Options.xml +++ b/assets/languages/pl/Options.xml @@ -38,6 +38,7 @@ Wstecz Reset Pauza + ZmieƄ Tryb Silnik diff --git a/source/funkin/backend/system/Controls.hx b/source/funkin/backend/system/Controls.hx index 5f6f8f98..a7a540c2 100644 --- a/source/funkin/backend/system/Controls.hx +++ b/source/funkin/backend/system/Controls.hx @@ -22,6 +22,7 @@ enum Control ACCEPT; BACK; PAUSE; + CHANGE_MODE; //CHEAT; SWITCHMOD; @@ -145,6 +146,11 @@ class Controls extends FlxActionSet @:pressed("reset") public var RESET_HOLD(get, set): Bool; @:justReleased("reset") public var RESET_R(get, set): Bool; + @:gamepad([FlxGamepadInputID.BACK]) // select button + @:justPressed("change-mode") public var CHANGE_MODE(get, set): Bool; + @:pressed("change-mode") public var CHANGE_MODE_HOLD(get, set): Bool; + @:justReleased("change-mode") public var CHANGE_MODE_R(get, set): Bool; + //@:gamepad([]) //@:justPressed("cheat") public var CHEAT(get, set): Bool; //@:pressed("cheat") public var CHEAT_HOLD(get, set): Bool; diff --git a/source/funkin/menus/FreeplayState.hx b/source/funkin/menus/FreeplayState.hx index 4b5b9115..e02c34aa 100644 --- a/source/funkin/menus/FreeplayState.hx +++ b/source/funkin/menus/FreeplayState.hx @@ -53,7 +53,7 @@ class FreeplayState extends MusicBeatState public var diffText:FlxText; /** - * Text containing the current coop/opponent mode ([TAB] Co-Op mode) + * Text containing the current coop/opponent mode ([KEYBINDS] Co-Op mode) */ public var coopText:FlxText; @@ -237,7 +237,7 @@ class FreeplayState extends MusicBeatState if (canSelect) { changeSelection((controls.UP_P ? -1 : 0) + (controls.DOWN_P ? 1 : 0) - FlxG.mouse.wheel); changeDiff((controls.LEFT_P ? -1 : 0) + (controls.RIGHT_P ? 1 : 0)); - changeCoopMode((FlxG.keys.justPressed.TAB ? 1 : 0)); // TODO: make this configurable + changeCoopMode((controls.CHANGE_MODE ? 1 : 0)); // TODO: make this configurable // putting it before so that its actually smooth updateOptionsAlpha(); } @@ -430,7 +430,11 @@ class FreeplayState extends MusicBeatState updateScore(); - var key = "[TAB] "; // TODO: make this configurable + var coopBinds = [CoolUtil.keyToString(Options.P1_CHANGE_MODE[0]), CoolUtil.keyToString(Options.P2_CHANGE_MODE[0])].filter(x -> x != "---"); + if (coopBinds.length == 2 && coopBinds[1] == coopBinds[0]) coopBinds.pop(); + else if (coopBinds.length == 0) coopBinds.push("---"); + + var key = '[${coopBinds.join(" / ")}] '; if (bothEnabled) { coopText.text = key + coopLabels[curCoopMode]; diff --git a/source/funkin/options/Options.hx b/source/funkin/options/Options.hx index 20432b55..c6c61a41 100644 --- a/source/funkin/options/Options.hx +++ b/source/funkin/options/Options.hx @@ -117,6 +117,7 @@ class Options public static var P1_ACCEPT:Array = [ENTER]; public static var P1_BACK:Array = [BACKSPACE]; public static var P1_PAUSE:Array = [ENTER]; + public static var P1_CHANGE_MODE:Array = [TAB]; // Misc public static var P1_RESET:Array = [R]; @@ -148,6 +149,7 @@ class Options public static var P2_ACCEPT:Array = [SPACE]; public static var P2_BACK:Array = [ESCAPE]; public static var P2_PAUSE:Array = [ESCAPE]; + public static var P2_CHANGE_MODE:Array = []; // Misc public static var P2_RESET:Array = []; @@ -179,6 +181,7 @@ class Options public static var SOLO_ACCEPT(get, null):Array; public static var SOLO_BACK(get, null):Array; public static var SOLO_PAUSE(get, null):Array; + public static var SOLO_CHANGE_MODE(get, null):Array; // Misc public static var SOLO_RESET(get, null):Array; diff --git a/source/funkin/options/keybinds/KeybindsOptions.hx b/source/funkin/options/keybinds/KeybindsOptions.hx index c2edc5f3..0ae12058 100644 --- a/source/funkin/options/keybinds/KeybindsOptions.hx +++ b/source/funkin/options/keybinds/KeybindsOptions.hx @@ -97,6 +97,10 @@ class KeybindsOptions extends MusicBeatSubstate { name: translate("ui.pause"), control: 'PAUSE' }, + { + name: translate("ui.changeMode"), + control: 'CHANGE_MODE' + }, ] }, {