From b9b1461ab541f9f978de6910e081e8f71bc82a1f Mon Sep 17 00:00:00 2001 From: EliteMasterEric Date: Tue, 31 Oct 2023 15:30:47 -0400 Subject: [PATCH] WIP on refactoring some classes related to controls --- source/funkin/FreeplayState.hx | 3 ++- source/funkin/InitState.hx | 2 +- source/funkin/InputFormatter.hx | 2 +- source/funkin/MainMenuState.hx | 2 +- source/funkin/MusicBeatState.hx | 1 + source/funkin/MusicBeatSubState.hx | 1 + source/funkin/Options.hx | 6 ------ source/funkin/PlayerSettings.hx | 2 +- source/funkin/{ => input}/Controls.hx | 3 +-- source/funkin/play/PlayState.hx | 2 +- source/funkin/play/notes/Strumline.hx | 2 +- source/funkin/play/notes/SustainTrail.hx | 2 +- source/funkin/save/Save.hx | 2 +- .../{ => ui/options}/ButtonRemapSubstate.hx | 2 +- source/funkin/ui/{ => options}/ColorsMenu.hx | 4 ++-- source/funkin/ui/{ => options}/ControlsMenu.hx | 6 +++--- source/funkin/ui/{ => options}/ModMenu.hx | 4 ++-- source/funkin/ui/{ => options}/OptionsState.hx | 16 +++++++++++++--- .../funkin/ui/{ => options}/PreferencesMenu.hx | 4 ++-- 19 files changed, 36 insertions(+), 30 deletions(-) delete mode 100644 source/funkin/Options.hx rename source/funkin/{ => input}/Controls.hx (99%) rename source/funkin/{ => ui/options}/ButtonRemapSubstate.hx (82%) rename source/funkin/ui/{ => options}/ColorsMenu.hx (96%) rename source/funkin/ui/{ => options}/ControlsMenu.hx (99%) rename source/funkin/ui/{ => options}/ModMenu.hx (97%) rename source/funkin/ui/{ => options}/OptionsState.hx (94%) rename source/funkin/ui/{ => options}/PreferencesMenu.hx (98%) diff --git a/source/funkin/FreeplayState.hx b/source/funkin/FreeplayState.hx index ae73524a8..e189d28e7 100644 --- a/source/funkin/FreeplayState.hx +++ b/source/funkin/FreeplayState.hx @@ -1,5 +1,6 @@ package funkin; +import funkin.input.Controls; import funkin.play.song.Song; import flash.text.TextField; import flixel.addons.display.FlxGridOverlay; @@ -23,7 +24,7 @@ import flixel.tweens.FlxTween; import flixel.util.FlxColor; import flixel.util.FlxSpriteUtil; import flixel.util.FlxTimer; -import funkin.Controls.Control; +import funkin.input.Controls.Control; import funkin.data.level.LevelRegistry; import funkin.data.song.SongRegistry; import funkin.freeplayStuff.BGScrollingText; diff --git a/source/funkin/InitState.hx b/source/funkin/InitState.hx index ecfa32eb3..ac3c3e0ba 100644 --- a/source/funkin/InitState.hx +++ b/source/funkin/InitState.hx @@ -10,7 +10,7 @@ import flixel.math.FlxRect; import flixel.FlxSprite; import flixel.system.debug.log.LogStyle; import flixel.util.FlxColor; -import funkin.ui.PreferencesMenu; +import funkin.ui.options.PreferencesMenu; import funkin.util.macro.MacroUtil; import funkin.util.WindowUtil; import funkin.play.PlayStatePlaylist; diff --git a/source/funkin/InputFormatter.hx b/source/funkin/InputFormatter.hx index 2a7011f64..aad5e317a 100644 --- a/source/funkin/InputFormatter.hx +++ b/source/funkin/InputFormatter.hx @@ -1,6 +1,6 @@ package funkin; -import funkin.Controls; +import funkin.input.Controls; import flixel.input.gamepad.FlxGamepad; import flixel.input.gamepad.FlxGamepadInputID; import flixel.input.keyboard.FlxKey; diff --git a/source/funkin/MainMenuState.hx b/source/funkin/MainMenuState.hx index 7267a6da8..41fd4c45a 100644 --- a/source/funkin/MainMenuState.hx +++ b/source/funkin/MainMenuState.hx @@ -108,7 +108,7 @@ class MainMenuState extends MusicBeatState #end createMenuItem('options', 'mainmenu/options', function() { - startExitState(new funkin.ui.OptionsState()); + startExitState(new funkin.ui.options.OptionsState()); }); // Reset position of menu items. diff --git a/source/funkin/MusicBeatState.hx b/source/funkin/MusicBeatState.hx index 9a986a8b5..316abdc30 100644 --- a/source/funkin/MusicBeatState.hx +++ b/source/funkin/MusicBeatState.hx @@ -11,6 +11,7 @@ import funkin.modding.PolymodHandler; import funkin.modding.events.ScriptEvent; import funkin.modding.module.ModuleHandler; import funkin.util.SortUtil; +import funkin.input.Controls; /** * MusicBeatState actually represents the core utility FlxState of the game. diff --git a/source/funkin/MusicBeatSubState.hx b/source/funkin/MusicBeatSubState.hx index 31d1bd14c..bf3daa282 100644 --- a/source/funkin/MusicBeatSubState.hx +++ b/source/funkin/MusicBeatSubState.hx @@ -10,6 +10,7 @@ import funkin.modding.module.ModuleHandler; import funkin.modding.PolymodHandler; import funkin.util.SortUtil; import flixel.util.FlxSort; +import funkin.input.Controls; /** * MusicBeatSubState reincorporates the functionality of MusicBeatState into an FlxSubState. diff --git a/source/funkin/Options.hx b/source/funkin/Options.hx deleted file mode 100644 index bc8a98570..000000000 --- a/source/funkin/Options.hx +++ /dev/null @@ -1,6 +0,0 @@ -package funkin; - -class Options -{ - public static var masterVolume:Float = 1; -} diff --git a/source/funkin/PlayerSettings.hx b/source/funkin/PlayerSettings.hx index e97cfe384..7f156366d 100644 --- a/source/funkin/PlayerSettings.hx +++ b/source/funkin/PlayerSettings.hx @@ -1,7 +1,7 @@ package funkin; import funkin.save.Save; -import funkin.Controls; +import funkin.input.Controls; import flixel.FlxCamera; import funkin.input.PreciseInputManager; import flixel.input.actions.FlxActionInput; diff --git a/source/funkin/Controls.hx b/source/funkin/input/Controls.hx similarity index 99% rename from source/funkin/Controls.hx rename to source/funkin/input/Controls.hx index 9372c4dc6..7f8e399a2 100644 --- a/source/funkin/Controls.hx +++ b/source/funkin/input/Controls.hx @@ -1,5 +1,4 @@ - -package funkin; +package funkin.input; import flixel.input.gamepad.FlxGamepad; import flixel.util.FlxDirectionFlags; diff --git a/source/funkin/play/PlayState.hx b/source/funkin/play/PlayState.hx index 1d3480efe..4fcef7463 100644 --- a/source/funkin/play/PlayState.hx +++ b/source/funkin/play/PlayState.hx @@ -51,7 +51,7 @@ import funkin.data.song.SongData.SongCharacterData; import funkin.play.stage.Stage; import funkin.play.stage.StageData.StageDataParser; import funkin.ui.PopUpStuff; -import funkin.ui.PreferencesMenu; +import funkin.ui.options.PreferencesMenu; import funkin.ui.stageBuildShit.StageOffsetSubState; import funkin.ui.story.StoryMenuState; import funkin.util.SerializerUtil; diff --git a/source/funkin/play/notes/Strumline.hx b/source/funkin/play/notes/Strumline.hx index 60b995c06..369a4144a 100644 --- a/source/funkin/play/notes/Strumline.hx +++ b/source/funkin/play/notes/Strumline.hx @@ -12,7 +12,7 @@ import funkin.play.notes.NoteSplash; import funkin.play.notes.NoteSprite; import funkin.play.notes.SustainTrail; import funkin.data.song.SongData.SongNoteData; -import funkin.ui.PreferencesMenu; +import funkin.ui.options.PreferencesMenu; import funkin.util.SortUtil; /** diff --git a/source/funkin/play/notes/SustainTrail.hx b/source/funkin/play/notes/SustainTrail.hx index f55799828..ab4bf5f16 100644 --- a/source/funkin/play/notes/SustainTrail.hx +++ b/source/funkin/play/notes/SustainTrail.hx @@ -8,7 +8,7 @@ import flixel.FlxSprite; import flixel.graphics.FlxGraphic; import flixel.graphics.tile.FlxDrawTrianglesItem; import flixel.math.FlxMath; -import funkin.ui.PreferencesMenu; +import funkin.ui.options.PreferencesMenu; /** * This is based heavily on the `FlxStrip` class. It uses `drawTriangles()` to clip a sustain note diff --git a/source/funkin/save/Save.hx b/source/funkin/save/Save.hx index 54b66605c..674c96fb6 100644 --- a/source/funkin/save/Save.hx +++ b/source/funkin/save/Save.hx @@ -3,7 +3,7 @@ package funkin.save; import flixel.util.FlxSave; import funkin.save.migrator.SaveDataMigrator; import thx.semver.Version; -import funkin.Controls.Device; +import funkin.input.Controls.Device; import funkin.save.migrator.RawSaveData_v1_0_0; @:nullSafety diff --git a/source/funkin/ButtonRemapSubstate.hx b/source/funkin/ui/options/ButtonRemapSubstate.hx similarity index 82% rename from source/funkin/ButtonRemapSubstate.hx rename to source/funkin/ui/options/ButtonRemapSubstate.hx index 8905ec8ba..b692dbe82 100644 --- a/source/funkin/ButtonRemapSubstate.hx +++ b/source/funkin/ui/options/ButtonRemapSubstate.hx @@ -1,4 +1,4 @@ -package funkin; +package funkin.ui.options; import flixel.FlxSubState; diff --git a/source/funkin/ui/ColorsMenu.hx b/source/funkin/ui/options/ColorsMenu.hx similarity index 96% rename from source/funkin/ui/ColorsMenu.hx rename to source/funkin/ui/options/ColorsMenu.hx index 6a844eef3..928f74ba8 100644 --- a/source/funkin/ui/ColorsMenu.hx +++ b/source/funkin/ui/options/ColorsMenu.hx @@ -1,11 +1,11 @@ -package funkin.ui; +package funkin.ui.options; import funkin.data.notestyle.NoteStyleRegistry; import flixel.addons.effects.chainable.FlxEffectSprite; import flixel.addons.effects.chainable.FlxOutlineEffect; import flixel.group.FlxGroup.FlxTypedGroup; import flixel.util.FlxColor; -import funkin.ui.OptionsState.Page; +import funkin.ui.options.OptionsState.Page; import funkin.play.notes.NoteSprite; class ColorsMenu extends Page diff --git a/source/funkin/ui/ControlsMenu.hx b/source/funkin/ui/options/ControlsMenu.hx similarity index 99% rename from source/funkin/ui/ControlsMenu.hx rename to source/funkin/ui/options/ControlsMenu.hx index 8197424ee..109f8443f 100644 --- a/source/funkin/ui/ControlsMenu.hx +++ b/source/funkin/ui/options/ControlsMenu.hx @@ -1,4 +1,4 @@ -package funkin.ui; +package funkin.ui.options; import flixel.FlxCamera; import flixel.FlxObject; @@ -7,12 +7,12 @@ import flixel.group.FlxGroup; import flixel.input.actions.FlxActionInput; import flixel.input.gamepad.FlxGamepadInputID; import flixel.input.keyboard.FlxKey; -import funkin.Controls; +import funkin.input.Controls; import funkin.ui.AtlasText; import funkin.ui.MenuList; import funkin.ui.TextMenuList; -class ControlsMenu extends funkin.ui.OptionsState.Page +class ControlsMenu extends funkin.ui.options.OptionsState.Page { public static inline final COLUMNS = 2; static var controlList = Control.createAll(); diff --git a/source/funkin/ui/ModMenu.hx b/source/funkin/ui/options/ModMenu.hx similarity index 97% rename from source/funkin/ui/ModMenu.hx rename to source/funkin/ui/options/ModMenu.hx index 769d3eca2..574a93c49 100644 --- a/source/funkin/ui/ModMenu.hx +++ b/source/funkin/ui/options/ModMenu.hx @@ -1,11 +1,11 @@ -package funkin.ui; +package funkin.ui.options; import funkin.modding.PolymodHandler; import flixel.group.FlxGroup.FlxTypedGroup; import flixel.text.FlxText; import flixel.util.FlxColor; import polymod.Polymod; -import funkin.ui.OptionsState.Page; +import funkin.ui.options.OptionsState.Page; class ModMenu extends Page { diff --git a/source/funkin/ui/OptionsState.hx b/source/funkin/ui/options/OptionsState.hx similarity index 94% rename from source/funkin/ui/OptionsState.hx rename to source/funkin/ui/options/OptionsState.hx index 6c32c7f4c..7bb9af807 100644 --- a/source/funkin/ui/OptionsState.hx +++ b/source/funkin/ui/options/OptionsState.hx @@ -1,4 +1,4 @@ -package funkin.ui; +package funkin.ui.options; import flixel.FlxSprite; import flixel.FlxSubState; @@ -6,6 +6,7 @@ import flixel.addons.transition.FlxTransitionableState; import flixel.group.FlxGroup; import flixel.util.FlxSignal; import funkin.util.WindowUtil; +import funkin.input.Controls; class OptionsState extends MusicBeatState { @@ -33,7 +34,7 @@ class OptionsState extends MusicBeatState if (options.hasMultipleOptions()) { options.onExit.add(exitToMainMenu); - controls.onExit.add(switchPage.bind(Options)); + controls.onExit.add(exitControls); preferences.onExit.add(switchPage.bind(Options)); } else @@ -83,10 +84,19 @@ class OptionsState extends MusicBeatState function switchPage(name:PageName) { - // Todo animate? + // TODO: Animate this transition? setPage(name); } + function exitControls():Void + { + // Apply any changes to the controls. + PlayerSettings.reset(); + PlayerSettings.init(); + + switchPage(Options); + } + function exitToMainMenu() { currentPage.enabled = false; diff --git a/source/funkin/ui/PreferencesMenu.hx b/source/funkin/ui/options/PreferencesMenu.hx similarity index 98% rename from source/funkin/ui/PreferencesMenu.hx rename to source/funkin/ui/options/PreferencesMenu.hx index 812d0ab49..b4b3c7db8 100644 --- a/source/funkin/ui/PreferencesMenu.hx +++ b/source/funkin/ui/options/PreferencesMenu.hx @@ -1,11 +1,11 @@ -package funkin.ui; +package funkin.ui.options; import flixel.FlxCamera; import flixel.FlxObject; import flixel.FlxSprite; import flixel.group.FlxSpriteGroup.FlxTypedSpriteGroup; import funkin.ui.AtlasText.AtlasFont; -import funkin.ui.OptionsState.Page; +import funkin.ui.options.OptionsState.Page; import funkin.ui.TextMenuList.TextMenuItem; class PreferencesMenu extends Page