Skip to content

Commit 371d897

Browse files
committed
Mouse controls in freeplay, mainmenu and storymenu
1 parent 68a5dd2 commit 371d897

File tree

3 files changed

+53
-8
lines changed

3 files changed

+53
-8
lines changed

source/funkin/menus/FreeplayState.hx

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ class FreeplayState extends MusicBeatState
295295
#end
296296

297297

298-
if (controls.BACK)
298+
if (controls.BACK || FlxG.mouse.justPressedRight)
299299
{
300300
CoolUtil.playMenuSFX(CANCEL, 0.7);
301301
FlxG.switchState(new MainMenuState());
@@ -306,6 +306,19 @@ class FreeplayState extends MusicBeatState
306306
convertChart();
307307
#end
308308

309+
if(FlxG.mouse.justPressed){
310+
if(#if PRELOAD_ALL !dontPlaySongThisFrame && #end FlxG.mouse.overlaps(grpSongs.members[curSelected])){
311+
select();
312+
}else if(canSelect){
313+
for(index => sprite in grpSongs.members){
314+
if(curSelected != index && FlxG.mouse.overlaps(sprite)){
315+
changeSelection(index-curSelected);
316+
updateOptionsAlpha();
317+
break;
318+
}
319+
}
320+
}
321+
}
309322
if (controls.ACCEPT #if PRELOAD_ALL && !dontPlaySongThisFrame #end)
310323
select();
311324
}
@@ -481,19 +494,21 @@ class FreeplayState extends MusicBeatState
481494
final idleAlpha = #if PRELOAD_ALL songInstPlaying ? event.idlePlayingAlpha : #end event.idleAlpha;
482495
final selectedAlpha = #if PRELOAD_ALL songInstPlaying ? event.selectedPlayingAlpha : #end event.selectedAlpha;
483496

484-
for (i in 0...iconArray.length)
497+
for (i in 0...iconArray.length){
485498
iconArray[i].alpha = lerp(iconArray[i].alpha, idleAlpha, event.lerp);
499+
}
486500

487501
iconArray[curSelected].alpha = selectedAlpha;
488502

489-
for (i=>item in grpSongs.members)
490-
{
503+
for (i=>item in grpSongs.members) {
491504
item.targetY = i - curSelected;
492505

493506
item.alpha = lerp(item.alpha, idleAlpha, event.lerp);
494507

495508
if (item.targetY == 0)
496509
item.alpha = selectedAlpha;
510+
if (item.targetY > 20 || item.targetY < -20)
511+
item.visible = false;
497512
}
498513
}
499514

source/funkin/menus/MainMenuState.hx

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,25 @@ class MainMenuState extends MusicBeatState
142142
if (controls.BACK)
143143
FlxG.switchState(new TitleState());
144144

145+
if (FlxG.mouse.justPressed){
146+
for(index => sprite in menuItems.members){
147+
if(FlxG.mouse.overlaps(sprite)){
148+
if(curSelected != index)
149+
changeItem(index-curSelected);
150+
else
151+
selectItem();
152+
break;
153+
}
154+
}
155+
#if MOD_SUPPORT
156+
if(FlxG.mouse.overlaps(versionText)){
157+
openSubState(new ModSwitchMenu());
158+
persistentUpdate = false;
159+
persistentDraw = true;
160+
161+
}
162+
#end
163+
}
145164
#if MOD_SUPPORT
146165
if (controls.SWITCHMOD) {
147166
openSubState(new ModSwitchMenu());
@@ -157,10 +176,10 @@ class MainMenuState extends MusicBeatState
157176
super.update(elapsed);
158177

159178
if (forceCenterX)
160-
menuItems.forEach(function(spr:FlxSprite)
161-
{
162-
spr.screenCenter(X);
163-
});
179+
menuItems.forEach(function(spr:FlxSprite)
180+
{
181+
spr.screenCenter(X);
182+
});
164183
}
165184

166185
public override function switchTo(nextState:FlxState):Bool {

source/funkin/menus/StoryMenuState.hx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,17 @@ class StoryMenuState extends MusicBeatState {
152152

153153
changeDifficulty((controls.LEFT_P ? -1 : 0) + (controls.RIGHT_P ? 1 : 0));
154154
changeWeek((controls.UP_P ? -1 : 0) + (controls.DOWN_P ? 1 : 0) - FlxG.mouse.wheel);
155+
if(FlxG.mouse.justPressed){
156+
if(leftArrow.exists && FlxG.mouse.overlaps(leftArrow)){
157+
leftArrow.animation.play('press');
158+
changeDifficulty(-1);
159+
}else if(rightArrow.exists && FlxG.mouse.overlaps(rightArrow)){
160+
rightArrow.animation.play('press');
161+
changeDifficulty(1);
162+
}else if(FlxG.mouse.overlaps(weekSprites.members[curWeek])){
163+
selectWeek();
164+
}
165+
}
155166

156167
if (controls.ACCEPT)
157168
selectWeek();

0 commit comments

Comments
 (0)