From 716b19ee2f72bce33f916119904c1b5415fdda60 Mon Sep 17 00:00:00 2001 From: Super <38338700+superpowers04@users.noreply.github.com> Date: Fri, 15 Aug 2025 20:33:49 -0400 Subject: [PATCH 1/7] Ctrl+Shift+F1 to force main menu state switch --- source/funkin/backend/MusicBeatState.hx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/funkin/backend/MusicBeatState.hx b/source/funkin/backend/MusicBeatState.hx index 74d953664..38e99cbca 100644 --- a/source/funkin/backend/MusicBeatState.hx +++ b/source/funkin/backend/MusicBeatState.hx @@ -12,6 +12,7 @@ import funkin.backend.system.GraphicCacheSprite; import funkin.backend.system.framerate.Framerate; import funkin.backend.system.interfaces.IBeatReceiver; import funkin.backend.system.interfaces.IBeatCancellableReceiver; +import funkin.menus.MainMenuState; import funkin.options.PlayerSettings; /** @@ -166,6 +167,11 @@ class MusicBeatState extends FlxState implements IBeatCancellableReceiver FlxG.resetState(); } + if (FlxG.keys.justPressed.F1 && FlxG.keys.pressed.CONTROL && FlxG.keys.pressed.SHIFT) { + Logs.trace("Returning to Main Menu...", INFO, YELLOW); + FlxG.switchState(new MainMenuState()); + } + if (subState != null) subState.tryUpdate(elapsed); } From 4b7674c35cc90b03fe8b61dfed56eeb994957340 Mon Sep 17 00:00:00 2001 From: Super <38338700+superpowers04@users.noreply.github.com> Date: Fri, 15 Aug 2025 16:39:29 -0400 Subject: [PATCH 2/7] Mouse controls in freeplay, mainmenu and storymenu --- source/funkin/menus/FreeplayState.hx | 23 +++++++++++++++++++---- source/funkin/menus/MainMenuState.hx | 27 +++++++++++++++++++++++---- source/funkin/menus/StoryMenuState.hx | 11 +++++++++++ 3 files changed, 53 insertions(+), 8 deletions(-) diff --git a/source/funkin/menus/FreeplayState.hx b/source/funkin/menus/FreeplayState.hx index 69fc3d8de..d191cd3b9 100644 --- a/source/funkin/menus/FreeplayState.hx +++ b/source/funkin/menus/FreeplayState.hx @@ -295,7 +295,7 @@ class FreeplayState extends MusicBeatState #end - if (controls.BACK) + if (controls.BACK || FlxG.mouse.justPressedRight) { CoolUtil.playMenuSFX(CANCEL, 0.7); FlxG.switchState(new MainMenuState()); @@ -306,6 +306,19 @@ class FreeplayState extends MusicBeatState convertChart(); #end + if(FlxG.mouse.justPressed){ + if(#if PRELOAD_ALL !dontPlaySongThisFrame && #end FlxG.mouse.overlaps(grpSongs.members[curSelected])){ + select(); + }else if(canSelect){ + for(index => sprite in grpSongs.members){ + if(curSelected != index && FlxG.mouse.overlaps(sprite)){ + changeSelection(index-curSelected); + updateOptionsAlpha(); + break; + } + } + } + } if (controls.ACCEPT #if PRELOAD_ALL && !dontPlaySongThisFrame #end) select(); } @@ -481,19 +494,21 @@ class FreeplayState extends MusicBeatState final idleAlpha = #if PRELOAD_ALL songInstPlaying ? event.idlePlayingAlpha : #end event.idleAlpha; final selectedAlpha = #if PRELOAD_ALL songInstPlaying ? event.selectedPlayingAlpha : #end event.selectedAlpha; - for (i in 0...iconArray.length) + for (i in 0...iconArray.length){ iconArray[i].alpha = lerp(iconArray[i].alpha, idleAlpha, event.lerp); + } iconArray[curSelected].alpha = selectedAlpha; - for (i=>item in grpSongs.members) - { + for (i=>item in grpSongs.members) { item.targetY = i - curSelected; item.alpha = lerp(item.alpha, idleAlpha, event.lerp); if (item.targetY == 0) item.alpha = selectedAlpha; + if (item.targetY > 20 || item.targetY < -20) + item.visible = false; } } diff --git a/source/funkin/menus/MainMenuState.hx b/source/funkin/menus/MainMenuState.hx index 43f33ebb5..d0f2719ca 100644 --- a/source/funkin/menus/MainMenuState.hx +++ b/source/funkin/menus/MainMenuState.hx @@ -142,6 +142,25 @@ class MainMenuState extends MusicBeatState if (controls.BACK) FlxG.switchState(new TitleState()); + if (FlxG.mouse.justPressed){ + for(index => sprite in menuItems.members){ + if(FlxG.mouse.overlaps(sprite)){ + if(curSelected != index) + changeItem(index-curSelected); + else + selectItem(); + break; + } + } + #if MOD_SUPPORT + if(FlxG.mouse.overlaps(versionText)){ + openSubState(new ModSwitchMenu()); + persistentUpdate = false; + persistentDraw = true; + + } + #end + } #if MOD_SUPPORT if (controls.SWITCHMOD) { openSubState(new ModSwitchMenu()); @@ -157,10 +176,10 @@ class MainMenuState extends MusicBeatState super.update(elapsed); if (forceCenterX) - menuItems.forEach(function(spr:FlxSprite) - { - spr.screenCenter(X); - }); + menuItems.forEach(function(spr:FlxSprite) + { + spr.screenCenter(X); + }); } public override function switchTo(nextState:FlxState):Bool { diff --git a/source/funkin/menus/StoryMenuState.hx b/source/funkin/menus/StoryMenuState.hx index 1a4c9de31..4dc29e91a 100644 --- a/source/funkin/menus/StoryMenuState.hx +++ b/source/funkin/menus/StoryMenuState.hx @@ -152,6 +152,17 @@ class StoryMenuState extends MusicBeatState { changeDifficulty((controls.LEFT_P ? -1 : 0) + (controls.RIGHT_P ? 1 : 0)); changeWeek((controls.UP_P ? -1 : 0) + (controls.DOWN_P ? 1 : 0) - FlxG.mouse.wheel); + if(FlxG.mouse.justPressed){ + if(leftArrow.exists && FlxG.mouse.overlaps(leftArrow)){ + leftArrow.animation.play('press'); + changeDifficulty(-1); + }else if(rightArrow.exists && FlxG.mouse.overlaps(rightArrow)){ + rightArrow.animation.play('press'); + changeDifficulty(1); + }else if(FlxG.mouse.overlaps(weekSprites.members[curWeek])){ + selectWeek(); + } + } if (controls.ACCEPT) selectWeek(); From ef192946151bb273cbac0747749dfc06763446e3 Mon Sep 17 00:00:00 2001 From: Super <38338700+superpowers04@users.noreply.github.com> Date: Fri, 15 Aug 2025 16:45:12 -0400 Subject: [PATCH 3/7] Scrolling via click in storymenustate --- source/funkin/menus/StoryMenuState.hx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/funkin/menus/StoryMenuState.hx b/source/funkin/menus/StoryMenuState.hx index 4dc29e91a..f25de39ba 100644 --- a/source/funkin/menus/StoryMenuState.hx +++ b/source/funkin/menus/StoryMenuState.hx @@ -161,6 +161,8 @@ class StoryMenuState extends MusicBeatState { changeDifficulty(1); }else if(FlxG.mouse.overlaps(weekSprites.members[curWeek])){ selectWeek(); + }else if(weekSprites.members[curWeek+1] != null && FlxG.mouse.overlaps(weekSprites.members[curWeek+1])){ + changeWeek(1); } } From aeace6c5f00d769a72123723386f48126e1b2b54 Mon Sep 17 00:00:00 2001 From: Super <38338700+superpowers04@users.noreply.github.com> Date: Fri, 15 Aug 2025 16:50:03 -0400 Subject: [PATCH 4/7] Oops forgor right click back --- source/funkin/menus/StoryMenuState.hx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/funkin/menus/StoryMenuState.hx b/source/funkin/menus/StoryMenuState.hx index f25de39ba..aa3705f18 100644 --- a/source/funkin/menus/StoryMenuState.hx +++ b/source/funkin/menus/StoryMenuState.hx @@ -146,7 +146,7 @@ class StoryMenuState extends MusicBeatState { if (leftArrow != null && leftArrow.exists) leftArrow.animation.play(controls.LEFT ? 'press' : 'idle'); if (rightArrow != null && rightArrow.exists) rightArrow.animation.play(controls.RIGHT ? 'press' : 'idle'); - if (controls.BACK) { + if (controls.BACK || FlxG.mouse.justPressedRight) { goBack(); } From 81a2dc50c235e04953f1bce22c4d882b5e7c8b47 Mon Sep 17 00:00:00 2001 From: Super <38338700+superpowers04@users.noreply.github.com> Date: Fri, 15 Aug 2025 16:53:05 -0400 Subject: [PATCH 5/7] Accidentally hid freeplay songs oops --- source/funkin/menus/FreeplayState.hx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/funkin/menus/FreeplayState.hx b/source/funkin/menus/FreeplayState.hx index d191cd3b9..53534ab9a 100644 --- a/source/funkin/menus/FreeplayState.hx +++ b/source/funkin/menus/FreeplayState.hx @@ -507,8 +507,7 @@ class FreeplayState extends MusicBeatState if (item.targetY == 0) item.alpha = selectedAlpha; - if (item.targetY > 20 || item.targetY < -20) - item.visible = false; + item.visible = (item.targetY > -20 && item.targetY < 20) } } From c8662b48b109ca6da5e16c543001a630860aadcf Mon Sep 17 00:00:00 2001 From: Super <38338700+superpowers04@users.noreply.github.com> Date: Fri, 15 Aug 2025 16:53:48 -0400 Subject: [PATCH 6/7] Accidentally forgot a semicolon i should really test before committing :skull: --- source/funkin/menus/FreeplayState.hx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/funkin/menus/FreeplayState.hx b/source/funkin/menus/FreeplayState.hx index 53534ab9a..27d45b7ef 100644 --- a/source/funkin/menus/FreeplayState.hx +++ b/source/funkin/menus/FreeplayState.hx @@ -507,7 +507,7 @@ class FreeplayState extends MusicBeatState if (item.targetY == 0) item.alpha = selectedAlpha; - item.visible = (item.targetY > -20 && item.targetY < 20) + item.visible = (item.targetY > -20 && item.targetY < 20); } } From c0b4f144a911cc58fb61dcd2d394bd2a7bd6547c Mon Sep 17 00:00:00 2001 From: Super <38338700+superpowers04@users.noreply.github.com> Date: Fri, 15 Aug 2025 17:02:15 -0400 Subject: [PATCH 7/7] Optimize icon handling a tiny bit --- source/funkin/menus/FreeplayState.hx | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/source/funkin/menus/FreeplayState.hx b/source/funkin/menus/FreeplayState.hx index 27d45b7ef..b1289c038 100644 --- a/source/funkin/menus/FreeplayState.hx +++ b/source/funkin/menus/FreeplayState.hx @@ -493,21 +493,19 @@ class FreeplayState extends MusicBeatState final idleAlpha = #if PRELOAD_ALL songInstPlaying ? event.idlePlayingAlpha : #end event.idleAlpha; final selectedAlpha = #if PRELOAD_ALL songInstPlaying ? event.selectedPlayingAlpha : #end event.selectedAlpha; - - for (i in 0...iconArray.length){ - iconArray[i].alpha = lerp(iconArray[i].alpha, idleAlpha, event.lerp); - } - - iconArray[curSelected].alpha = selectedAlpha; - + for (i=>item in grpSongs.members) { item.targetY = i - curSelected; + final icon = iconArray[i]; - item.alpha = lerp(item.alpha, idleAlpha, event.lerp); - if (item.targetY == 0) - item.alpha = selectedAlpha; - item.visible = (item.targetY > -20 && item.targetY < 20); + if (item.targetY == 0){ + item.alpha = icon.alpha = selectedAlpha; + }else{ + item.alpha = lerp(item.alpha, idleAlpha, event.lerp); + icon.alpha = lerp(icon.alpha, idleAlpha, event.lerp); + } + icon.visible = item.visible = (item.targetY > -20 && item.targetY < 20); } }