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); } diff --git a/source/funkin/menus/FreeplayState.hx b/source/funkin/menus/FreeplayState.hx index 69fc3d8de..b1289c038 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(); } @@ -480,20 +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) - { + + 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; + 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); } } 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..aa3705f18 100644 --- a/source/funkin/menus/StoryMenuState.hx +++ b/source/funkin/menus/StoryMenuState.hx @@ -146,12 +146,25 @@ 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(); } 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(); + }else if(weekSprites.members[curWeek+1] != null && FlxG.mouse.overlaps(weekSprites.members[curWeek+1])){ + changeWeek(1); + } + } if (controls.ACCEPT) selectWeek();