@@ -82,6 +82,16 @@ class FreeplayState extends FunkinState
8282 */
8383 public var blockInputs : Bool = false ;
8484
85+ /**
86+ * Is the random song playing?
87+ */
88+ public var isRandomPlaying : Bool = false ;
89+
90+ /**
91+ * The Song Position of the last song. To be used when switching between random and normal songs.
92+ */
93+ public var lastSongPos : Float = 0 ;
94+
8595 override public function create (): Void
8696 {
8797 #if FUNKIN_DISCORD_RPC
@@ -297,6 +307,27 @@ class FreeplayState extends FunkinState
297307 else if (curSelected < 0 )
298308 curSelected = songs .length ;
299309
310+ if (curSelected == 0 )
311+ {
312+ conductor .bpm = 145 ;
313+ var songPosToSetTo : Float = lastSongPos ;
314+ lastSongPos = FlxG .sound .music .time ;
315+ FlxG .sound .playMusic (Paths .content .audio (' ui/freeplay/freeplayRandom' ));
316+ FlxG .sound .music ?. time = songPosToSetTo ;
317+ FlxG .sound .music ?. fadeIn (2 , 0 , 1 );
318+ isRandomPlaying = true ;
319+ }
320+ else if (isRandomPlaying )
321+ {
322+ conductor .bpm = 102 ;
323+ var songPosToSetTo : Float = lastSongPos ;
324+ lastSongPos = FlxG .sound .music ?. time ;
325+ FlxG .sound .playMusic (Paths .content .audio (' ui/menu/freakyMenu' ));
326+ FlxG .sound .music ?. time = songPosToSetTo ;
327+ FlxG .sound .music ?. fadeIn (2 , 0 , 1 );
328+ isRandomPlaying = false ;
329+ }
330+
300331 for (i => capsule in grpCapsules .members )
301332 {
302333 i + = 1 ;
@@ -353,4 +384,18 @@ class FreeplayState extends FunkinState
353384 if (shouldUpdateCapsules )
354385 generateCapsules ();
355386 }
387+
388+ override public function destroy (): Void
389+ {
390+ if (isRandomPlaying )
391+ {
392+ conductor .bpm = 102 ;
393+ var songPosToSetTo : Float = lastSongPos ;
394+ lastSongPos = FlxG .sound .music ?. time ;
395+ FlxG .sound .playMusic (Paths .content .audio (' ui/menu/freakyMenu' ));
396+ FlxG .sound .music ?. time = songPosToSetTo ;
397+ FlxG .sound .music ?. fadeIn (2 , 0 , 1 );
398+ isRandomPlaying = false ;
399+ }
400+ }
356401}
0 commit comments