From 7a0aa1559e677d416fe8556d9c64ababdef69bb4 Mon Sep 17 00:00:00 2001 From: poec987 Date: Wed, 19 Jun 2024 22:00:17 -0500 Subject: [PATCH] Freeplay song locks (NOT TESTED) --- source/FreeplayState.hx | 35 ++++++++++++++++++++++++++++++----- source/MainMenuState.hx | 12 ++++-------- source/PlayState.hx | 2 ++ 3 files changed, 36 insertions(+), 13 deletions(-) diff --git a/source/FreeplayState.hx b/source/FreeplayState.hx index cb8b5ff..b1f73bc 100644 --- a/source/FreeplayState.hx +++ b/source/FreeplayState.hx @@ -132,12 +132,26 @@ class FreeplayState extends MusicBeatState super.create(); } - public function addSong(songName:String, weekNum:Int, songCharacter:String) + public function addSong(songName:String, weekNum:Int, songCharacter:String, ?isLocked:Bool=false) { - songs.push(new SongMetadata(songName, weekNum, songCharacter)); + if (isLocked) { + if (FlxG.save.data.beatSongs.contains(songName)) + songs.push(new SongMetadata(songName, weekNum, songCharacter)); + else + songs.push(new SongMetadata("LOCKED", 1, "monster")); + } else { + songs.push(new SongMetadata(songName, weekNum, songCharacter)); + } } - public function newSong(songName:String, weekNum:Int, songCharacter:String):SongMetadata { + + public function newSong(songName:String, weekNum:Int, songCharacter:String, ?isLocked:Bool=false):SongMetadata { + if (isLocked) { + if (FlxG.save.data.beatSongs.contains(songName)) + return new SongMetadata(songName, weekNum, songCharacter); + else + return new SongMetadata("LOCKED", 1, "monster"); + } return new SongMetadata(songName, weekNum, songCharacter); } @@ -147,7 +161,7 @@ class FreeplayState extends MusicBeatState } } - public function addWeek(songs:Array, weekNum:Int, ?songCharacters:Array) + public function addWeek(songs:Array, weekNum:Int, ?songCharacters:Array, ?isLocked:Bool=false) { if (songCharacters == null) songCharacters = ['bf']; @@ -155,7 +169,7 @@ class FreeplayState extends MusicBeatState var num:Int = 0; for (song in songs) { - addSong(song, weekNum, songCharacters[num]); + addSong(song, weekNum, songCharacters[num], isLocked); if (songCharacters.length != 1) num++; @@ -164,6 +178,17 @@ class FreeplayState extends MusicBeatState // I WANT TO FUCKING SHOOT MYSELF + public static function playSong(song:String, diff:Int, ?storyWeek:Int=1) { + var poop:String = Highscore.formatSong(song, diff); // Funny + PlayState.SONG = Song.loadFromJson(poop, song); + PlayState.isStoryMode = false; + PlayState.storyDifficulty = diff; + + PlayState.storyWeek = storyWeek; + trace('CUR WEEK' + PlayState.storyWeek); + LoadingState.loadAndSwitchState(new PlayState()); + } + public function refreshSongList(skipDestroy:Bool=false) { if (!skipDestroy) { for (i in 0...grpSongs.length) { diff --git a/source/MainMenuState.hx b/source/MainMenuState.hx index 14b2fcb..9b50956 100644 --- a/source/MainMenuState.hx +++ b/source/MainMenuState.hx @@ -49,6 +49,9 @@ class MainMenuState extends MusicBeatState FlxG.sound.playMusic(Paths.music('freakyMenu')); } + if (FlxG.save.data.beatSongs == null) // shhhhhhh + FlxG.save.data.beatSongs = []; + persistentUpdate = persistentDraw = true; #if desktop @@ -146,14 +149,7 @@ class MainMenuState extends MusicBeatState { if (optionShit[curSelected] == 'donate') { - var poop:String = Highscore.formatSong("do-you-get-the-refrance", 1); // Funny - PlayState.SONG = Song.loadFromJson(poop, "do-you-get-the-refrance"); - PlayState.isStoryMode = false; - PlayState.storyDifficulty = 1; - - PlayState.storyWeek = 1; - trace('CUR WEEK' + PlayState.storyWeek); - LoadingState.loadAndSwitchState(new PlayState()); + FreeplayState.playSong("do-you-get-the-refrance", 1); } else { diff --git a/source/PlayState.hx b/source/PlayState.hx index a4b0924..541467a 100644 --- a/source/PlayState.hx +++ b/source/PlayState.hx @@ -1835,6 +1835,8 @@ class PlayState extends MusicBeatState persistentUpdate = false; persistentDraw = true; + FlxG.save.data.beatSongs.append(curSong.toLowerCase()); + openSubState(new ResultsSubState(boyfriend.getScreenPosition().x, boyfriend.getScreenPosition().y, results, this)); }