From 2728f34512e31bcf87953dcec6b7e1bc86212d2f Mon Sep 17 00:00:00 2001 From: EliteMasterEric Date: Tue, 7 Nov 2023 18:53:50 -0500 Subject: [PATCH] Fix bug where Freeplay random would crash the game --- source/funkin/FreeplayState.hx | 14 +++++++++++++- source/funkin/freeplayStuff/LetterSort.hx | 9 +++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/source/funkin/FreeplayState.hx b/source/funkin/FreeplayState.hx index 918e7c725..0ba5d5175 100644 --- a/source/funkin/FreeplayState.hx +++ b/source/funkin/FreeplayState.hx @@ -84,6 +84,7 @@ class FreeplayState extends MusicBeatSubState var dj:DJBoyfriend; + var letterSort:LetterSort; var typing:FlxInputText; var exitMovers:Map, MoveData> = new Map(); @@ -413,7 +414,7 @@ class FreeplayState extends MusicBeatSubState txtCompletion.visible = false; add(txtCompletion); - var letterSort:LetterSort = new LetterSort(400, 75); + letterSort = new LetterSort(400, 75); add(letterSort); letterSort.visible = false; @@ -953,6 +954,7 @@ class FreeplayState extends MusicBeatSubState trace("RANDOM SELECTED"); busy = true; + letterSort.inputEnabled = false; var availableSongCapsules:Array = grpCapsules.members.filter(function(cap:SongMenuItem) { // Dead capsules are ones which were removed from the list when changing filters. @@ -963,6 +965,15 @@ class FreeplayState extends MusicBeatSubState return cap.songData.songName; })}'); + if (availableSongCapsules.length == 0) + { + trace("No songs available!"); + busy = false; + letterSort.inputEnabled = true; + FlxG.sound.play(Paths.sound('cancelMenu')); + return; + } + var targetSong:SongMenuItem = FlxG.random.getObject(availableSongCapsules); // Seeing if I can do an animation... @@ -976,6 +987,7 @@ class FreeplayState extends MusicBeatSubState function capsuleOnConfirmDefault(cap:SongMenuItem):Void { busy = true; + letterSort.inputEnabled = false; PlayStatePlaylist.isStoryMode = false; diff --git a/source/funkin/freeplayStuff/LetterSort.hx b/source/funkin/freeplayStuff/LetterSort.hx index e6d923c90..edf1221d2 100644 --- a/source/funkin/freeplayStuff/LetterSort.hx +++ b/source/funkin/freeplayStuff/LetterSort.hx @@ -23,6 +23,8 @@ class LetterSort extends FlxTypedSpriteGroup var rightArrow:FlxSprite; var grpSeperators:Array = []; + public var inputEnabled:Bool = true; + public function new(x, y) { super(x, y); @@ -72,8 +74,11 @@ class LetterSort extends FlxTypedSpriteGroup { super.update(elapsed); - if (FlxG.keys.justPressed.E) changeSelection(1); - if (FlxG.keys.justPressed.Q) changeSelection(-1); + if (inputEnabled) + { + if (FlxG.keys.justPressed.E) changeSelection(1); + if (FlxG.keys.justPressed.Q) changeSelection(-1); + } } public function changeSelection(diff:Int = 0)