diff --git a/Project.xml b/Project.xml index 9ebcdccdb..e1a9f1252 100644 --- a/Project.xml +++ b/Project.xml @@ -40,19 +40,60 @@ - - + + + + + + + +
+ + + + + + + + + +
+ +
+ + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + - - - - - - - diff --git a/source/Alphabet.hx b/source/Alphabet.hx index f9bfe23d7..77ac5dc8e 100644 --- a/source/Alphabet.hx +++ b/source/Alphabet.hx @@ -204,7 +204,7 @@ class Alphabet extends FlxSpriteGroup if (FlxG.random.bool(40)) { var daSound:String = "GF_"; - FlxG.sound.play('assets/sounds/' + daSound + FlxG.random.int(1, 4) + TitleState.soundExt, 0.4); + FlxG.sound.play(Paths.soundRandom(daSound, 1, 4)); } add(letter); @@ -245,7 +245,7 @@ class AlphaCharacter extends FlxSprite public function new(x:Float, y:Float) { super(x, y); - var tex = FlxAtlasFrames.fromSparrow('assets/images/alphabet.png', 'assets/images/alphabet.xml'); + var tex = Paths.getSparrowAtlas('alphabet'); frames = tex; antialiasing = true; diff --git a/source/BackgroundDancer.hx b/source/BackgroundDancer.hx index e88c01905..a619dacc2 100644 --- a/source/BackgroundDancer.hx +++ b/source/BackgroundDancer.hx @@ -9,7 +9,7 @@ class BackgroundDancer extends FlxSprite { super(x, y); - frames = FlxAtlasFrames.fromSparrow("assets/images/limo/limoDancer.png", "assets/images/limo/limoDancer.xml"); + frames = Paths.getSparrowAtlas("limo/limoDancer"); animation.addByIndices('danceLeft', 'bg dancer sketch PINK', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "", 24, false); animation.addByIndices('danceRight', 'bg dancer sketch PINK', [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "", 24, false); animation.play('danceLeft'); diff --git a/source/BackgroundGirls.hx b/source/BackgroundGirls.hx index 57739fbea..c37b16f91 100644 --- a/source/BackgroundGirls.hx +++ b/source/BackgroundGirls.hx @@ -10,7 +10,7 @@ class BackgroundGirls extends FlxSprite super(x, y); // BG fangirls dissuaded - frames = FlxAtlasFrames.fromSparrow('assets/images/weeb/bgFreaks.png', 'assets/images/weeb/bgFreaks.xml'); + frames = Paths.getSparrowAtlas('weeb/bgFreaks'); animation.addByIndices('danceLeft', 'BG girls group', CoolUtil.numberArray(14), "", 24, false); animation.addByIndices('danceRight', 'BG girls group', CoolUtil.numberArray(30, 15), "", 24, false); diff --git a/source/Character.hx b/source/Character.hx index 821c92898..e13abdee9 100644 --- a/source/Character.hx +++ b/source/Character.hx @@ -31,7 +31,7 @@ class Character extends FlxSprite { case 'gf': // GIRLFRIEND CODE - tex = FlxAtlasFrames.fromSparrow('assets/images/GF_assets.png', 'assets/images/GF_assets.xml'); + tex = Paths.getSparrowAtlas('GF_assets'); frames = tex; animation.addByPrefix('cheer', 'GF Cheer', 24, false); animation.addByPrefix('singLEFT', 'GF left note', 24, false); @@ -62,7 +62,7 @@ class Character extends FlxSprite playAnim('danceRight'); case 'gf-christmas': - tex = FlxAtlasFrames.fromSparrow('assets/images/christmas/gfChristmas.png', 'assets/images/christmas/gfChristmas.xml'); + tex = Paths.getSparrowAtlas('christmas/gfChristmas'); frames = tex; animation.addByPrefix('cheer', 'GF Cheer', 24, false); animation.addByPrefix('singLEFT', 'GF left note', 24, false); @@ -93,7 +93,7 @@ class Character extends FlxSprite playAnim('danceRight'); case 'gf-car': - tex = FlxAtlasFrames.fromSparrow('assets/images/gfCar.png', 'assets/images/gfCar.xml'); + tex = Paths.getSparrowAtlas('gfCar'); frames = tex; animation.addByIndices('singUP', 'GF Dancing Beat Hair blowing CAR', [0], "", 24, false); animation.addByIndices('danceLeft', 'GF Dancing Beat Hair blowing CAR', [30, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "", 24, false); @@ -106,7 +106,7 @@ class Character extends FlxSprite playAnim('danceRight'); case 'gf-pixel': - tex = FlxAtlasFrames.fromSparrow('assets/images/weeb/gfPixel.png', 'assets/images/weeb/gfPixel.xml'); + tex = Paths.getSparrowAtlas('weeb/gfPixel'); frames = tex; animation.addByIndices('singUP', 'GF IDLE', [2], "", 24, false); animation.addByIndices('danceLeft', 'GF IDLE', [30, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "", 24, false); @@ -123,7 +123,7 @@ class Character extends FlxSprite case 'dad': // DAD ANIMATION LOADING CODE - tex = FlxAtlasFrames.fromSparrow('assets/images/DADDY_DEAREST.png', 'assets/images/DADDY_DEAREST.xml'); + tex = Paths.getSparrowAtlas('DADDY_DEAREST'); frames = tex; animation.addByPrefix('idle', 'Dad idle dance', 24); animation.addByPrefix('singUP', 'Dad Sing Note UP', 24); @@ -139,7 +139,7 @@ class Character extends FlxSprite playAnim('idle'); case 'spooky': - tex = FlxAtlasFrames.fromSparrow('assets/images/spooky_kids_assets.png', 'assets/images/spooky_kids_assets.xml'); + tex = Paths.getSparrowAtlas('spooky_kids_assets'); frames = tex; animation.addByPrefix('singUP', 'spooky UP NOTE', 24, false); animation.addByPrefix('singDOWN', 'spooky DOWN note', 24, false); @@ -158,7 +158,7 @@ class Character extends FlxSprite playAnim('danceRight'); case 'mom': - tex = FlxAtlasFrames.fromSparrow('assets/images/Mom_Assets.png', 'assets/images/Mom_Assets.xml'); + tex = Paths.getSparrowAtlas('Mom_Assets'); frames = tex; animation.addByPrefix('idle', "Mom Idle", 24, false); @@ -178,7 +178,7 @@ class Character extends FlxSprite playAnim('idle'); case 'mom-car': - tex = FlxAtlasFrames.fromSparrow('assets/images/momCar.png', 'assets/images/momCar.xml'); + tex = Paths.getSparrowAtlas('momCar'); frames = tex; animation.addByPrefix('idle', "Mom Idle", 24, false); @@ -197,7 +197,7 @@ class Character extends FlxSprite playAnim('idle'); case 'monster': - tex = FlxAtlasFrames.fromSparrow('assets/images/Monster_Assets.png', 'assets/images/Monster_Assets.xml'); + tex = Paths.getSparrowAtlas('Monster_Assets'); frames = tex; animation.addByPrefix('idle', 'monster idle', 24, false); animation.addByPrefix('singUP', 'monster up note', 24, false); @@ -212,7 +212,7 @@ class Character extends FlxSprite addOffset("singDOWN", -30, -40); playAnim('idle'); case 'monster-christmas': - tex = FlxAtlasFrames.fromSparrow('assets/images/christmas/monsterChristmas.png', 'assets/images/christmas/monsterChristmas.xml'); + tex = Paths.getSparrowAtlas('christmas/monsterChristmas'); frames = tex; animation.addByPrefix('idle', 'monster idle', 24, false); animation.addByPrefix('singUP', 'monster up note', 24, false); @@ -227,7 +227,7 @@ class Character extends FlxSprite addOffset("singDOWN", -40, -94); playAnim('idle'); case 'pico': - tex = FlxAtlasFrames.fromSparrow('assets/images/Pico_FNF_assetss.png', 'assets/images/Pico_FNF_assetss.xml'); + tex = Paths.getSparrowAtlas('Pico_FNF_assetss'); frames = tex; animation.addByPrefix('idle', "Pico Idle Dance", 24); animation.addByPrefix('singUP', 'pico Up note0', 24, false); @@ -266,7 +266,7 @@ class Character extends FlxSprite flipX = true; case 'bf': - var tex = FlxAtlasFrames.fromSparrow('assets/images/BOYFRIEND.png', 'assets/images/BOYFRIEND.xml'); + var tex = Paths.getSparrowAtlas('BOYFRIEND'); frames = tex; animation.addByPrefix('idle', 'BF idle dance', 24, false); animation.addByPrefix('singUP', 'BF NOTE UP0', 24, false); @@ -305,7 +305,7 @@ class Character extends FlxSprite flipX = true; case 'bf-christmas': - var tex = FlxAtlasFrames.fromSparrow('assets/images/christmas/bfChristmas.png', 'assets/images/christmas/bfChristmas.xml'); + var tex = Paths.getSparrowAtlas('christmas/bfChristmas'); frames = tex; animation.addByPrefix('idle', 'BF idle dance', 24, false); animation.addByPrefix('singUP', 'BF NOTE UP0', 24, false); @@ -333,7 +333,7 @@ class Character extends FlxSprite flipX = true; case 'bf-car': - var tex = FlxAtlasFrames.fromSparrow('assets/images/bfCar.png', 'assets/images/bfCar.xml'); + var tex = Paths.getSparrowAtlas('bfCar'); frames = tex; animation.addByPrefix('idle', 'BF idle dance', 24, false); animation.addByPrefix('singUP', 'BF NOTE UP0', 24, false); @@ -358,7 +358,7 @@ class Character extends FlxSprite flipX = true; case 'bf-pixel': - frames = FlxAtlasFrames.fromSparrow('assets/images/weeb/bfPixel.png', 'assets/images/weeb/bfPixel.xml'); + frames = Paths.getSparrowAtlas('weeb/bfPixel'); animation.addByPrefix('idle', 'BF IDLE', 24, false); animation.addByPrefix('singUP', 'BF UP NOTE', 24, false); animation.addByPrefix('singLEFT', 'BF LEFT NOTE', 24, false); @@ -391,7 +391,7 @@ class Character extends FlxSprite flipX = true; case 'bf-pixel-dead': - frames = FlxAtlasFrames.fromSparrow('assets/images/weeb/bfPixelsDEAD.png', 'assets/images/weeb/bfPixelsDEAD.xml'); + frames = Paths.getSparrowAtlas('weeb/bfPixelsDEAD'); animation.addByPrefix('singUP', "BF Dies pixel", 24, false); animation.addByPrefix('firstDeath', "BF Dies pixel", 24, false); animation.addByPrefix('deathLoop', "Retry Loop", 24, true); @@ -409,7 +409,7 @@ class Character extends FlxSprite flipX = true; case 'senpai': - frames = FlxAtlasFrames.fromSparrow('assets/images/weeb/senpai.png', 'assets/images/weeb/senpai.xml'); + frames = Paths.getSparrowAtlas('weeb/senpai'); animation.addByPrefix('idle', 'Senpai Idle', 24, false); animation.addByPrefix('singUP', 'SENPAI UP NOTE', 24, false); animation.addByPrefix('singLEFT', 'SENPAI LEFT NOTE', 24, false); @@ -429,7 +429,7 @@ class Character extends FlxSprite antialiasing = false; case 'senpai-angry': - frames = FlxAtlasFrames.fromSparrow('assets/images/weeb/senpai.png', 'assets/images/weeb/senpai.xml'); + frames = Paths.getSparrowAtlas('weeb/senpai'); animation.addByPrefix('idle', 'Angry Senpai Idle', 24, false); animation.addByPrefix('singUP', 'Angry Senpai UP NOTE', 24, false); animation.addByPrefix('singLEFT', 'Angry Senpai LEFT NOTE', 24, false); @@ -449,7 +449,7 @@ class Character extends FlxSprite antialiasing = false; case 'spirit': - frames = FlxAtlasFrames.fromSpriteSheetPacker('assets/images/weeb/spirit.png', 'assets/images/weeb/spirit.txt'); + frames = Paths.getPackerAtlas('weeb/spirit'); animation.addByPrefix('idle', "idle spirit_", 24, false); animation.addByPrefix('singUP', "up_", 24, false); animation.addByPrefix('singRIGHT', "right_", 24, false); @@ -470,8 +470,7 @@ class Character extends FlxSprite antialiasing = false; case 'parents-christmas': - frames = FlxAtlasFrames.fromSparrow('assets/images/christmas/mom_dad_christmas_assets.png', - 'assets/images/christmas/mom_dad_christmas_assets.xml'); + frames = Paths.getSparrowAtlas('christmas/mom_dad_christmas_assets'); animation.addByPrefix('idle', 'Parent Christmas Idle', 24, false); animation.addByPrefix('singUP', 'Parent Up Note Dad', 24, false); animation.addByPrefix('singDOWN', 'Parent Down Note Dad', 24, false); @@ -623,8 +622,8 @@ class Character extends FlxSprite { animation.play(AnimName, Force, Reversed, Frame); - var daOffset = animOffsets.get(animation.curAnim.name); - if (animOffsets.exists(animation.curAnim.name)) + var daOffset = animOffsets.get(AnimName); + if (animOffsets.exists(AnimName)) { offset.set(daOffset[0], daOffset[1]); } diff --git a/source/ChartParser.hx b/source/ChartParser.hx index cba97ce80..3884c0e54 100644 --- a/source/ChartParser.hx +++ b/source/ChartParser.hx @@ -11,7 +11,7 @@ class ChartParser var IMG_WIDTH:Int = 8; var regex:EReg = new EReg("[ \t]*((\r\n)|\r|\n)[ \t]*", "g"); - var csvData = FlxStringUtil.imageToCSV('assets/data/' + songName + '/' + songName + '_section' + section + '.png'); + var csvData = FlxStringUtil.imageToCSV(Paths.file('data/' + songName + '/' + songName + '_section' + section + '.png')); var lines:Array = regex.split(csvData); var rows:Array = lines.filter(function(line) return line != ""); diff --git a/source/ChartingState.hx b/source/ChartingState.hx index e5f0425d1..cc024ccff 100644 --- a/source/ChartingState.hx +++ b/source/ChartingState.hx @@ -225,7 +225,7 @@ class ChartingState extends MusicBeatState stepperBPM.value = Conductor.bpm; stepperBPM.name = 'song_bpm'; - var characters:Array = CoolUtil.coolTextFile('assets/data/characterList.txt'); + var characters:Array = CoolUtil.coolTextFile(Paths.txt('characterList')); var player1DropDown = new FlxUIDropDownMenu(10, 100, FlxUIDropDownMenu.makeStrIdLabelArray(characters, true), function(character:String) { @@ -351,10 +351,10 @@ class ChartingState extends MusicBeatState // vocals.stop(); } - FlxG.sound.playMusic('assets/music/' + daSong + "_Inst" + TitleState.soundExt, 0.6); + FlxG.sound.playMusic(Paths.inst(daSong), 0.6); // WONT WORK FOR TUTORIAL OR TEST SONG!!! REDO LATER - vocals = new FlxSound().loadEmbedded("assets/music/" + daSong + "_Voices" + TitleState.soundExt); + vocals = new FlxSound().loadEmbedded(Paths.voices(daSong)); FlxG.sound.list.add(vocals); FlxG.sound.music.pause(); diff --git a/source/DialogueBox.hx b/source/DialogueBox.hx index 184ad4dbd..929eb242e 100644 --- a/source/DialogueBox.hx +++ b/source/DialogueBox.hx @@ -41,10 +41,10 @@ class DialogueBox extends FlxSpriteGroup switch (PlayState.SONG.song.toLowerCase()) { case 'senpai': - FlxG.sound.playMusic('assets/music/Lunchbox' + TitleState.soundExt, 0); + FlxG.sound.playMusic(Paths.music('Lunchbox'), 0); FlxG.sound.music.fadeIn(1, 0, 0.8); case 'thorns': - FlxG.sound.playMusic('assets/music/LunchboxScary' + TitleState.soundExt, 0); + FlxG.sound.playMusic(Paths.music('LunchboxScary'), 0); FlxG.sound.music.fadeIn(1, 0, 0.8); } @@ -60,8 +60,42 @@ class DialogueBox extends FlxSpriteGroup bgFade.alpha = 0.7; }, 5); + box = new FlxSprite(-20, 45); + + var hasDialog = false; + switch (PlayState.SONG.song.toLowerCase()) + { + case 'senpai': + hasDialog = true; + box.frames = Paths.getSparrowAtlas('weeb/pixelUI/dialogueBox-pixel'); + box.animation.addByPrefix('normalOpen', 'Text Box Appear', 24, false); + box.animation.addByIndices('normal', 'Text Box Appear', [4], "", 24); + case 'roses': + hasDialog = true; + FlxG.sound.play(Paths.sound('ANGRY_TEXT_BOX')); + + box.frames = Paths.getSparrowAtlas('weeb/pixelUI/dialogueBox-senpaiMad'); + box.animation.addByPrefix('normalOpen', 'SENPAI ANGRY IMPACT SPEECH', 24, false); + box.animation.addByIndices('normal', 'SENPAI ANGRY IMPACT SPEECH', [4], "", 24); + + case 'thorns': + hasDialog = true; + box.frames = Paths.getSparrowAtlas('weeb/pixelUI/dialogueBox-evil'); + box.animation.addByPrefix('normalOpen', 'Spirit Textbox spawn', 24, false); + box.animation.addByIndices('normal', 'Spirit Textbox spawn', [11], "", 24); + + var face:FlxSprite = new FlxSprite(320, 170).loadGraphic(Paths.image('weeb/spiritFaceForward')); + face.setGraphicSize(Std.int(face.width * 6)); + add(face); + } + + this.dialogueList = dialogueList; + + if (!hasDialog) + return; + portraitLeft = new FlxSprite(-20, 40); - portraitLeft.frames = FlxAtlasFrames.fromSparrow('assets/images/weeb/senpaiPortrait.png', 'assets/images/weeb/senpaiPortrait.xml'); + portraitLeft.frames = Paths.getSparrowAtlas('weeb/senpaiPortrait'); portraitLeft.animation.addByPrefix('enter', 'Senpai Portrait Enter', 24, false); portraitLeft.setGraphicSize(Std.int(portraitLeft.width * PlayState.daPixelZoom * 0.9)); portraitLeft.updateHitbox(); @@ -70,52 +104,26 @@ class DialogueBox extends FlxSpriteGroup portraitLeft.visible = false; portraitRight = new FlxSprite(0, 40); - portraitRight.frames = FlxAtlasFrames.fromSparrow('assets/images/weeb/bfPortrait.png', 'assets/images/weeb/bfPortrait.xml'); + portraitRight.frames = Paths.getSparrowAtlas('weeb/bfPortrait'); portraitRight.animation.addByPrefix('enter', 'Boyfriend portrait enter', 24, false); portraitRight.setGraphicSize(Std.int(portraitRight.width * PlayState.daPixelZoom * 0.9)); portraitRight.updateHitbox(); portraitRight.scrollFactor.set(); add(portraitRight); portraitRight.visible = false; - - box = new FlxSprite(-20, 45); - - switch (PlayState.SONG.song.toLowerCase()) - { - case 'senpai': - box.frames = FlxAtlasFrames.fromSparrow('assets/images/weeb/pixelUI/dialogueBox-pixel.png', - 'assets/images/weeb/pixelUI/dialogueBox-pixel.xml'); - box.animation.addByPrefix('normalOpen', 'Text Box Appear', 24, false); - box.animation.addByIndices('normal', 'Text Box Appear', [4], "", 24); - case 'roses': - FlxG.sound.play('assets/sounds/ANGRY_TEXT_BOX' + TitleState.soundExt); - - box.frames = FlxAtlasFrames.fromSparrow('assets/images/weeb/pixelUI/dialogueBox-senpaiMad.png', - 'assets/images/weeb/pixelUI/dialogueBox-senpaiMad.xml'); - box.animation.addByPrefix('normalOpen', 'SENPAI ANGRY IMPACT SPEECH', 24, false); - box.animation.addByIndices('normal', 'SENPAI ANGRY IMPACT SPEECH', [4], "", 24); - - case 'thorns': - box.frames = FlxAtlasFrames.fromSparrow('assets/images/weeb/pixelUI/dialogueBox-evil.png', 'assets/images/weeb/pixelUI/dialogueBox-evil.xml'); - box.animation.addByPrefix('normalOpen', 'Spirit Textbox spawn', 24, false); - box.animation.addByIndices('normal', 'Spirit Textbox spawn', [11], "", 24); - - var face:FlxSprite = new FlxSprite(320, 170).loadGraphic('assets/images/weeb/spiritFaceForward.png'); - face.setGraphicSize(Std.int(face.width * 6)); - add(face); - } - + box.animation.play('normalOpen'); box.setGraphicSize(Std.int(box.width * PlayState.daPixelZoom * 0.9)); box.updateHitbox(); add(box); - handSelect = new FlxSprite(FlxG.width * 0.9, FlxG.height * 0.9).loadGraphic('assets/images/weeb/pixelUI/hand_textbox.png'); - add(handSelect); - box.screenCenter(X); portraitLeft.screenCenter(X); + handSelect = new FlxSprite(FlxG.width * 0.9, FlxG.height * 0.9).loadGraphic(Paths.image('weeb/pixelUI/hand_textbox')); + add(handSelect); + + if (!talkingRight) { // box.flipX = true; @@ -129,14 +137,12 @@ class DialogueBox extends FlxSpriteGroup swagDialogue = new FlxTypeText(240, 500, Std.int(FlxG.width * 0.6), "", 32); swagDialogue.font = 'Pixel Arial 11 Bold'; swagDialogue.color = 0xFF3F2021; - swagDialogue.sounds = [FlxG.sound.load('assets/sounds/pixelText' + TitleState.soundExt, 0.6)]; + swagDialogue.sounds = [FlxG.sound.load(Paths.sound('pixelText'), 0.6)]; add(swagDialogue); dialogue = new Alphabet(0, 80, "", false, true); // dialogue.x = 90; // add(dialogue); - - this.dialogueList = dialogueList; } var dialogueOpened:Bool = false; @@ -175,7 +181,7 @@ class DialogueBox extends FlxSpriteGroup { remove(dialogue); - FlxG.sound.play('assets/sounds/clickText' + TitleState.soundExt, 0.8); + FlxG.sound.play(Paths.sound('clickText'), 0.8); if (dialogueList[1] == null && dialogueList[0] != null) { diff --git a/source/FreeplayState.hx b/source/FreeplayState.hx index 32373c354..b39ebc973 100644 --- a/source/FreeplayState.hx +++ b/source/FreeplayState.hx @@ -30,13 +30,13 @@ class FreeplayState extends MusicBeatState override function create() { - songs = CoolUtil.coolTextFile('assets/data/freeplaySonglist.txt'); + songs = CoolUtil.coolTextFile(Paths.txt('freeplaySonglist')); /* if (FlxG.sound.music != null) { if (!FlxG.sound.music.playing) - FlxG.sound.playMusic('assets/music/freakyMenu' + TitleState.soundExt); + FlxG.sound.playMusic(Paths.music('freakyMenu')); } */ @@ -85,7 +85,7 @@ class FreeplayState extends MusicBeatState // LOAD CHARACTERS - var bg:FlxSprite = new FlxSprite().loadGraphic('assets/images/menuBGBlue.png'); + var bg:FlxSprite = new FlxSprite().loadGraphic(Paths.image('menuBGBlue')); add(bg); grpSongs = new FlxTypedGroup(); @@ -104,7 +104,7 @@ class FreeplayState extends MusicBeatState scoreText = new FlxText(FlxG.width * 0.7, 5, 0, "", 32); // scoreText.autoSize = false; - scoreText.setFormat("assets/fonts/vcr.ttf", 32, FlxColor.WHITE, RIGHT); + scoreText.setFormat(Paths.font("vcr.ttf"), 32, FlxColor.WHITE, RIGHT); // scoreText.alignment = RIGHT; var scoreBG:FlxSprite = new FlxSprite(scoreText.x - 6, 0).makeGraphic(Std.int(FlxG.width * 0.35), 66, 0xFF000000); @@ -120,7 +120,7 @@ class FreeplayState extends MusicBeatState changeSelection(); changeDiff(); - // FlxG.sound.playMusic('assets/music/title' + TitleState.soundExt, 0); + // FlxG.sound.playMusic(Paths.music('title'), 0); // FlxG.sound.music.fadeIn(2, 0, 0.8); selector = new FlxText(); @@ -198,9 +198,7 @@ class FreeplayState extends MusicBeatState PlayState.SONG = Song.loadFromJson(poop, songs[curSelected].toLowerCase()); PlayState.isStoryMode = false; PlayState.storyDifficulty = curDifficulty; - FlxG.switchState(new PlayState()); - if (FlxG.sound.music != null) - FlxG.sound.music.stop(); + LoadingState.loadAndSwitchState(new PlayState()); } } @@ -235,7 +233,7 @@ class FreeplayState extends MusicBeatState #end // NGio.logEvent('Fresh'); - FlxG.sound.play('assets/sounds/scrollMenu' + TitleState.soundExt, 0.4); + FlxG.sound.play(Paths.sound('scrollMenu'), 0.4); curSelected += change; @@ -251,7 +249,9 @@ class FreeplayState extends MusicBeatState // lerpScore = 0; #end - FlxG.sound.playMusic('assets/music/' + songs[curSelected] + "_Inst" + TitleState.soundExt, 0); + #if PRELOAD_ALL + FlxG.sound.playMusic(Paths.inst(songs[curSelected]), 0); + #end var bullShit:Int = 0; diff --git a/source/GameOverState.hx b/source/GameOverState.hx index ba7cb3472..57c60d1f9 100644 --- a/source/GameOverState.hx +++ b/source/GameOverState.hx @@ -74,7 +74,7 @@ class GameOverState extends FlxTransitionableState FlxG.sound.music.fadeOut(0.5, 0, function(twn:FlxTween) { FlxG.sound.music.stop(); - FlxG.switchState(new PlayState()); + LoadingState.loadAndSwitchState(new PlayState()); }); } super.update(elapsed); diff --git a/source/GameOverSubstate.hx b/source/GameOverSubstate.hx index 58fecb58f..1d672dbf4 100644 --- a/source/GameOverSubstate.hx +++ b/source/GameOverSubstate.hx @@ -40,7 +40,7 @@ class GameOverSubstate extends MusicBeatSubstate camFollow = new FlxObject(bf.getGraphicMidpoint().x, bf.getGraphicMidpoint().y, 1, 1); add(camFollow); - FlxG.sound.play('assets/sounds/fnf_loss_sfx' + stageSuffix + TitleState.soundExt); + FlxG.sound.play(Paths.sound('fnf_loss_sfx' + stageSuffix)); Conductor.changeBPM(100); // FlxG.camera.followLerp = 1; @@ -77,7 +77,7 @@ class GameOverSubstate extends MusicBeatSubstate if (bf.animation.curAnim.name == 'firstDeath' && bf.animation.curAnim.finished) { - FlxG.sound.playMusic('assets/music/gameOver' + stageSuffix + TitleState.soundExt); + FlxG.sound.playMusic(Paths.music('gameOver' + stageSuffix)); } if (FlxG.sound.music.playing) @@ -102,12 +102,12 @@ class GameOverSubstate extends MusicBeatSubstate isEnding = true; bf.playAnim('deathConfirm', true); FlxG.sound.music.stop(); - FlxG.sound.play('assets/music/gameOverEnd' + stageSuffix + TitleState.soundExt); + FlxG.sound.play(Paths.music('gameOverEnd' + stageSuffix)); new FlxTimer().start(0.7, function(tmr:FlxTimer) { FlxG.camera.fade(FlxColor.BLACK, 2, false, function() { - FlxG.switchState(new PlayState()); + LoadingState.loadAndSwitchState(new PlayState()); }); }); } diff --git a/source/GitarooPause.hx b/source/GitarooPause.hx index b444fbf18..cb9705c55 100644 --- a/source/GitarooPause.hx +++ b/source/GitarooPause.hx @@ -21,25 +21,25 @@ class GitarooPause extends MusicBeatState if (FlxG.sound.music != null) FlxG.sound.music.stop(); - var bg:FlxSprite = new FlxSprite().loadGraphic('assets/images/pauseAlt/pauseBG.png'); + var bg:FlxSprite = new FlxSprite().loadGraphic(Paths.image('pauseAlt/pauseBG')); add(bg); var bf:FlxSprite = new FlxSprite(0, 30); - bf.frames = FlxAtlasFrames.fromSparrow('assets/images/pauseAlt/bfLol.png', 'assets/images/pauseAlt/bfLol.xml'); + bf.frames = Paths.getSparrowAtlas('pauseAlt/bfLol'); bf.animation.addByPrefix('lol', "funnyThing", 13); bf.animation.play('lol'); add(bf); bf.screenCenter(X); replayButton = new FlxSprite(FlxG.width * 0.28, FlxG.height * 0.7); - replayButton.frames = FlxAtlasFrames.fromSparrow('assets/images/pauseAlt/pauseUI.png', 'assets/images/pauseAlt/pauseUI.xml'); + replayButton.frames = Paths.getSparrowAtlas('pauseAlt/pauseUI'); replayButton.animation.addByPrefix('selected', 'bluereplay', 0, false); replayButton.animation.appendByPrefix('selected', 'yellowreplay'); replayButton.animation.play('selected'); add(replayButton); cancelButton = new FlxSprite(FlxG.width * 0.58, replayButton.y); - cancelButton.frames = FlxAtlasFrames.fromSparrow('assets/images/pauseAlt/pauseUI.png', 'assets/images/pauseAlt/pauseUI.xml'); + cancelButton.frames = Paths.getSparrowAtlas('pauseAlt/pauseUI'); cancelButton.animation.addByPrefix('selected', 'bluecancel', 0, false); cancelButton.animation.appendByPrefix('selected', 'cancelyellow'); cancelButton.animation.play('selected'); diff --git a/source/HealthIcon.hx b/source/HealthIcon.hx index b9810e95c..a7c71578a 100644 --- a/source/HealthIcon.hx +++ b/source/HealthIcon.hx @@ -7,7 +7,7 @@ class HealthIcon extends FlxSprite public function new(char:String = 'bf', isPlayer:Bool = false) { super(); - loadGraphic('assets/images/iconGrid.png', true, 150, 150); + loadGraphic(Paths.image('iconGrid'), true, 150, 150); antialiasing = true; animation.add('bf', [0, 1], 0, false, isPlayer); diff --git a/source/LatencyState.hx b/source/LatencyState.hx index 8ff4fab95..1136330e5 100644 --- a/source/LatencyState.hx +++ b/source/LatencyState.hx @@ -14,7 +14,7 @@ class LatencyState extends FlxState override function create() { - FlxG.sound.playMusic('assets/sounds/soundTest' + TitleState.soundExt); + FlxG.sound.playMusic(Paths.sound('soundTest')); noteGrp = new FlxTypedGroup(); add(noteGrp); diff --git a/source/LoadingState.hx b/source/LoadingState.hx new file mode 100644 index 000000000..23bce2e68 --- /dev/null +++ b/source/LoadingState.hx @@ -0,0 +1,310 @@ +package; + +import lime.app.Promise; +import lime.app.Future; +import flixel.FlxG; +import flixel.FlxState; +import flixel.FlxSprite; +import flixel.graphics.frames.FlxAtlasFrames; +import flixel.util.FlxTimer; + +import openfl.utils.Assets; +import lime.utils.Assets as LimeAssets; +import lime.utils.AssetLibrary; +import lime.utils.AssetManifest; + +import haxe.io.Path; + +class LoadingState extends MusicBeatState +{ + inline static var MIN_TIME = 1.0; + + var target:FlxState; + var stopMusic = false; + var callbacks:MultiCallback; + + var logo:FlxSprite; + var gfDance:FlxSprite; + var danceLeft = false; + + function new(target:FlxState, stopMusic:Bool) + { + super(); + this.target = target; + this.stopMusic = stopMusic; + } + + override function create() + { + logo = new FlxSprite(-150, -100); + logo.frames = Paths.getSparrowAtlas('logoBumpin'); + logo.antialiasing = true; + logo.animation.addByPrefix('bump', 'logo bumpin', 24); + logo.animation.play('bump'); + logo.updateHitbox(); + // logoBl.screenCenter(); + // logoBl.color = FlxColor.BLACK; + + gfDance = new FlxSprite(FlxG.width * 0.4, FlxG.height * 0.07); + gfDance.frames = Paths.getSparrowAtlas('gfDanceTitle'); + gfDance.animation.addByIndices('danceLeft', 'gfDance', [30, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "", 24, false); + gfDance.animation.addByIndices('danceRight', 'gfDance', [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "", 24, false); + gfDance.antialiasing = true; + add(gfDance); + add(logo); + + initSongsManifest().onComplete + ( + function (lib) + { + callbacks = new MultiCallback(onLoad); + var introComplete = callbacks.add("introComplete"); + checkLoadSong(getSongPath()); + if (PlayState.SONG.needsVoices) + checkLoadSong(getVocalPath()); + checkLibrary("shared"); + if (PlayState.storyWeek > 0) + checkLibrary("week" + PlayState.storyWeek); + else + checkLibrary("tutorial"); + + var fadeTime = 0.5; + FlxG.camera.fade(FlxG.camera.bgColor, fadeTime, true); + new FlxTimer().start(fadeTime + MIN_TIME, function(_) introComplete()); + } + ); + } + + function checkLoadSong(path:String) + { + if (!Assets.cache.hasSound(path)) + { + var library = Assets.getLibrary("songs"); + final symbolPath = path.split(":").pop(); + // @:privateAccess + // library.types.set(symbolPath, SOUND); + // @:privateAccess + // library.pathGroups.set(symbolPath, [library.__cacheBreak(symbolPath)]); + var callback = callbacks.add("song:" + path); + Assets.loadSound(path).onComplete(function (_) { callback(); }); + } + } + + function checkLibrary(library:String) + { + trace(Assets.hasLibrary(library)); + if (Assets.getLibrary(library) == null) + { + @:privateAccess + if (!LimeAssets.libraryPaths.exists(library)) + throw "Missing library: " + library; + + var callback = callbacks.add("library:" + library); + Assets.loadLibrary(library).onComplete(function (_) { callback(); }); + } + } + + override function beatHit() + { + super.beatHit(); + + logo.animation.play('bump'); + danceLeft = !danceLeft; + + if (danceLeft) + gfDance.animation.play('danceRight'); + else + gfDance.animation.play('danceLeft'); + } + + override function update(elapsed:Float) + { + super.update(elapsed); + #if debug + if (FlxG.keys.justPressed.SPACE) + trace('fired: ' + callbacks.getFired() + " unfired:" + callbacks.getUnfired()); + #end + } + + function onLoad() + { + if (stopMusic && FlxG.sound.music != null) + FlxG.sound.music.stop(); + + FlxG.switchState(target); + } + + static function getSongPath() + { + return Paths.inst(PlayState.SONG.song); + } + + static function getVocalPath() + { + return Paths.voices(PlayState.SONG.song); + } + + inline static public function loadAndSwitchState(target:FlxState, stopMusic = false) + { + FlxG.switchState(getNextState(target, stopMusic)); + } + + static function getNextState(target:FlxState, stopMusic = false):FlxState + { + Paths.setCurrentLevel("week" + PlayState.storyWeek); + #if NO_PRELOAD_ALL + var loaded = isSoundLoaded(getSongPath()) + && (!PlayState.SONG.needsVoices || isSoundLoaded(getVocalPath())) + && isLibraryLoaded("shared"); + + if (!loaded) + return new LoadingState(target, stopMusic); + #end + if (stopMusic && FlxG.sound.music != null) + FlxG.sound.music.stop(); + + return target; + } + + #if NO_PRELOAD_ALL + static function isSoundLoaded(path:String):Bool + { + return Assets.cache.hasSound(path); + } + + static function isLibraryLoaded(library:String):Bool + { + return Assets.getLibrary(library) != null; + } + #end + + override function destroy() + { + super.destroy(); + + callbacks = null; + } + + static function initSongsManifest() + { + var id = "songs"; + var promise = new Promise(); + + var library = LimeAssets.getLibrary(id); + + if (library != null) + { + return Future.withValue(library); + } + + var path = id; + var rootPath = null; + + @:privateAccess + var libraryPaths = LimeAssets.libraryPaths; + if (libraryPaths.exists(id)) + { + path = libraryPaths[id]; + rootPath = Path.directory(path); + } + else + { + if (StringTools.endsWith(path, ".bundle")) + { + rootPath = path; + path += "/library.json"; + } + else + { + rootPath = Path.directory(path); + } + @:privateAccess + path = LimeAssets.__cacheBreak(path); + } + + AssetManifest.loadFromFile(path, rootPath).onComplete(function(manifest) + { + if (manifest == null) + { + promise.error("Cannot parse asset manifest for library \"" + id + "\""); + return; + } + + var library = AssetLibrary.fromManifest(manifest); + + if (library == null) + { + promise.error("Cannot open library \"" + id + "\""); + } + else + { + @:privateAccess + LimeAssets.libraries.set(id, library); + library.onChange.add(LimeAssets.onChange.dispatch); + promise.completeWith(Future.withValue(library)); + } + }).onError(function(_) + { + promise.error("There is no asset library with an ID of \"" + id + "\""); + }); + + return promise.future; + } +} + +class MultiCallback +{ + public var callback:Void->Void; + public var logId:String = null; + public var length(default, null) = 0; + public var numRemaining(default, null) = 0; + + var unfired = new MapVoid>(); + var fired = new Array(); + + public function new (callback:Void->Void, logId:String = null) + { + this.callback = callback; + this.logId = logId; + } + + public function add(id = "untitled") + { + id = '$length:$id'; + length++; + numRemaining++; + var func:Void->Void = null; + func = function () + { + if (unfired.exists(id)) + { + unfired.remove(id); + fired.push(id); + numRemaining--; + + if (logId != null) + log('fired $id, $numRemaining remaining'); + + if (numRemaining == 0) + { + if (logId != null) + log('all callbacks fired'); + callback(); + } + } + else + log('already fired $id'); + } + unfired[id] = func; + return func; + } + + inline function log(msg):Void + { + if (logId != null) + trace('$logId: $msg'); + } + + public function getFired() return fired.copy(); + public function getUnfired() return [for (id in unfired.keys()) id]; +} \ No newline at end of file diff --git a/source/MainMenuState.hx b/source/MainMenuState.hx index f686c51ce..4b6a0464d 100644 --- a/source/MainMenuState.hx +++ b/source/MainMenuState.hx @@ -38,12 +38,12 @@ class MainMenuState extends MusicBeatState if (!FlxG.sound.music.playing) { - FlxG.sound.playMusic('assets/music/freakyMenu' + TitleState.soundExt); + FlxG.sound.playMusic(Paths.music('freakyMenu')); } persistentUpdate = persistentDraw = true; - var bg:FlxSprite = new FlxSprite(-80).loadGraphic('assets/images/menuBG.png'); + var bg:FlxSprite = new FlxSprite(-80).loadGraphic(Paths.image('menuBG')); bg.scrollFactor.x = 0; bg.scrollFactor.y = 0.18; bg.setGraphicSize(Std.int(bg.width * 1.1)); @@ -55,7 +55,7 @@ class MainMenuState extends MusicBeatState camFollow = new FlxObject(0, 0, 1, 1); add(camFollow); - magenta = new FlxSprite(-80).loadGraphic('assets/images/menuDesat.png'); + magenta = new FlxSprite(-80).loadGraphic(Paths.image('menuDesat')); magenta.scrollFactor.x = 0; magenta.scrollFactor.y = 0.18; magenta.setGraphicSize(Std.int(magenta.width * 1.1)); @@ -70,7 +70,7 @@ class MainMenuState extends MusicBeatState menuItems = new FlxTypedGroup(); add(menuItems); - var tex = FlxAtlasFrames.fromSparrow('assets/images/FNF_main_menu_assets.png', 'assets/images/FNF_main_menu_assets.xml'); + var tex = Paths.getSparrowAtlas('FNF_main_menu_assets'); for (i in 0...optionShit.length) { @@ -113,13 +113,13 @@ class MainMenuState extends MusicBeatState { if (controls.UP_P) { - FlxG.sound.play('assets/sounds/scrollMenu' + TitleState.soundExt); + FlxG.sound.play(Paths.sound('scrollMenu')); changeItem(-1); } if (controls.DOWN_P) { - FlxG.sound.play('assets/sounds/scrollMenu' + TitleState.soundExt); + FlxG.sound.play(Paths.sound('scrollMenu')); changeItem(1); } @@ -141,7 +141,7 @@ class MainMenuState extends MusicBeatState else { selectedSomethin = true; - FlxG.sound.play('assets/sounds/confirmMenu' + TitleState.soundExt); + FlxG.sound.play(Paths.sound('confirmMenu')); FlxFlicker.flicker(magenta, 1.1, 0.15, false); diff --git a/source/MenuCharacter.hx b/source/MenuCharacter.hx index c8d50134d..ca5f9b499 100644 --- a/source/MenuCharacter.hx +++ b/source/MenuCharacter.hx @@ -13,7 +13,7 @@ class MenuCharacter extends FlxSprite this.character = character; - var tex = FlxAtlasFrames.fromSparrow('assets/images/campaign_menu_UI_characters.png', 'assets/images/campaign_menu_UI_characters.xml'); + var tex = Paths.getSparrowAtlas('campaign_menu_UI_characters'); frames = tex; animation.addByPrefix('bf', "BF idle dance white", 24); diff --git a/source/MenuItem.hx b/source/MenuItem.hx index 431e8ac77..fe3c9f238 100644 --- a/source/MenuItem.hx +++ b/source/MenuItem.hx @@ -14,7 +14,7 @@ class MenuItem extends FlxSpriteGroup { super(x, y); - var tex = FlxAtlasFrames.fromSparrow('assets/images/campaign_menu_UI_assets.png', 'assets/images/campaign_menu_UI_assets.xml'); + var tex = Paths.getSparrowAtlas('campaign_menu_UI_assets'); week = new FlxSprite(); week.frames = tex; diff --git a/source/MusicBeatState.hx b/source/MusicBeatState.hx index cbb9cc6e4..88c58a624 100644 --- a/source/MusicBeatState.hx +++ b/source/MusicBeatState.hx @@ -24,10 +24,6 @@ class MusicBeatState extends FlxUIState if (transIn != null) trace('reg ' + transIn.region); - #if (!web) - TitleState.soundExt = '.ogg'; - #end - super.create(); } diff --git a/source/MusicBeatSubstate.hx b/source/MusicBeatSubstate.hx index 2fa2a6942..c6da0fb59 100644 --- a/source/MusicBeatSubstate.hx +++ b/source/MusicBeatSubstate.hx @@ -21,15 +21,6 @@ class MusicBeatSubstate extends FlxSubState inline function get_controls():Controls return PlayerSettings.player1.controls; - override function create() - { - #if (!web) - TitleState.soundExt = '.ogg'; - #end - - super.create(); - } - override function update(elapsed:Float) { //everyStep(); diff --git a/source/Note.hx b/source/Note.hx index ee1a8693d..114a7ffbf 100644 --- a/source/Note.hx +++ b/source/Note.hx @@ -4,7 +4,9 @@ import flixel.FlxSprite; import flixel.graphics.frames.FlxAtlasFrames; import flixel.math.FlxMath; import flixel.util.FlxColor; +#if polymod import polymod.format.ParseRules.TargetSignatureElement; +#end using StringTools; @@ -52,7 +54,7 @@ class Note extends FlxSprite switch (daStage) { case 'school' | 'schoolEvil': - loadGraphic('assets/images/weeb/pixelUI/arrows-pixels.png', true, 17, 17); + loadGraphic(Paths.image('weeb/pixelUI/arrows-pixels'), true, 17, 17); animation.add('greenScroll', [6]); animation.add('redScroll', [7]); @@ -61,7 +63,7 @@ class Note extends FlxSprite if (isSustainNote) { - loadGraphic('assets/images/weeb/pixelUI/arrowEnds.png', true, 7, 6); + loadGraphic(Paths.image('weeb/pixelUI/arrowEnds'), true, 7, 6); animation.add('purpleholdend', [4]); animation.add('greenholdend', [6]); @@ -78,7 +80,7 @@ class Note extends FlxSprite updateHitbox(); default: - frames = FlxAtlasFrames.fromSparrow('assets/images/NOTE_assets.png', 'assets/images/NOTE_assets.xml'); + frames = Paths.getSparrowAtlas('NOTE_assets'); animation.addByPrefix('greenScroll', 'green0'); animation.addByPrefix('redScroll', 'red0'); diff --git a/source/OptionsMenu.hx b/source/OptionsMenu.hx index 299944af7..bf36c83d5 100644 --- a/source/OptionsMenu.hx +++ b/source/OptionsMenu.hx @@ -23,8 +23,8 @@ class OptionsMenu extends MusicBeatState override function create() { - var menuBG:FlxSprite = new FlxSprite().loadGraphic('assets/images/menuDesat.png'); - controlsStrings = CoolUtil.coolTextFile('assets/data/controls.txt'); + var menuBG:FlxSprite = new FlxSprite().loadGraphic(Paths.image('menuDesat')); + controlsStrings = CoolUtil.coolTextFile(Paths.txt('controls')); menuBG.color = 0xFFea71fd; menuBG.setGraphicSize(Std.int(menuBG.width * 1.1)); menuBG.updateHitbox(); @@ -97,7 +97,7 @@ class OptionsMenu extends MusicBeatState NGio.logEvent('Fresh'); #end - FlxG.sound.play('assets/sounds/scrollMenu' + TitleState.soundExt, 0.4); + FlxG.sound.play(Paths.sound('scrollMenu'), 0.4); curSelected += change; diff --git a/source/Paths.hx b/source/Paths.hx new file mode 100644 index 000000000..4bee419c5 --- /dev/null +++ b/source/Paths.hx @@ -0,0 +1,123 @@ +package; + +import openfl.utils.Assets as OpenFlAssets; +import openfl.utils.AssetType; + +import flixel.FlxG; +import flixel.graphics.frames.FlxAtlasFrames; + +class Paths +{ + inline public static var SOUND_EXT = #if web "mp3" #else "ogg" #end; + + static var currentLevel:String; + + static public function setCurrentLevel(name:String) + { + currentLevel = name.toLowerCase(); + } + + static function getPath(file:String, type:AssetType, library:Null) + { + if (library != null) + return getLibraryPath(file, library); + + if (currentLevel != null) + { + var levelPath = getLibraryPathForce(file, currentLevel); + if (OpenFlAssets.exists(levelPath, type)) + return levelPath; + + levelPath = getLibraryPathForce(file, "shared"); + if (OpenFlAssets.exists(levelPath, type)) + return levelPath; + } + + return getPreloadPath(file); + } + + static public function getLibraryPath(file:String, library = "preload") + { + return if (library == "preload" || library == "default") + getPreloadPath(file); + else + getLibraryPathForce(file, library); + } + + inline static function getLibraryPathForce(file:String, library:String) + { + + return '$library:assets/$library/$file'; + } + + inline static function getPreloadPath(file:String) + { + + return 'assets/$file'; + } + + inline static public function file(file:String, type:AssetType = TEXT, ?library:String) + { + return getPath(file, type, library); + } + + inline static public function txt(key:String, ?library:String) + { + return getPath('data/$key.txt', TEXT, library); + } + + inline static public function xml(key:String, ?library:String) + { + return getPath('data/$key.xml', TEXT, library); + } + + inline static public function json(key:String, ?library:String) + { + return getPath('data/$key.json', TEXT, library); + } + + static public function sound(key:String, ?library:String) + { + return getPath('sounds/$key.$SOUND_EXT', SOUND, library); + } + + inline static public function soundRandom(key:String, min:Int, max:Int, ?library:String) + { + return sound(key + FlxG.random.int(min, max), library); + } + + inline static public function music(key:String, ?library:String) + { + return getPath('music/$key.$SOUND_EXT', MUSIC, library); + } + + inline static public function voices(song:String) + { + return 'songs:assets/songs/${song.toLowerCase()}/Voices.$SOUND_EXT'; + } + + inline static public function inst(song:String) + { + return 'songs:assets/songs/${song.toLowerCase()}/Inst.$SOUND_EXT'; + } + + inline static public function image(key:String, ?library:String) + { + return getPath('images/$key.png', IMAGE, library); + } + + inline static public function font(key:String) + { + return 'assets/fonts/$key'; + } + + inline static public function getSparrowAtlas(key:String, ?library:String) + { + return FlxAtlasFrames.fromSparrow(image(key, library), file('images/$key.xml', library)); + } + + inline static public function getPackerAtlas(key:String, ?library:String) + { + return FlxAtlasFrames.fromSpriteSheetPacker(image(key, library), file('images/$key.txt', library)); + } +} \ No newline at end of file diff --git a/source/PauseSubState.hx b/source/PauseSubState.hx index 928d32ac1..69bdf6007 100644 --- a/source/PauseSubState.hx +++ b/source/PauseSubState.hx @@ -23,7 +23,7 @@ class PauseSubState extends MusicBeatSubstate { super(); - pauseMusic = new FlxSound().loadEmbedded('assets/music/breakfast' + TitleState.soundExt, true, true); + pauseMusic = new FlxSound().loadEmbedded(Paths.music('breakfast'), true, true); pauseMusic.volume = 0; pauseMusic.play(false, FlxG.random.int(0, Std.int(pauseMusic.length / 2))); diff --git a/source/PlayState.hx b/source/PlayState.hx index 425f93e0a..657750ef5 100644 --- a/source/PlayState.hx +++ b/source/PlayState.hx @@ -124,6 +124,10 @@ class PlayState extends MusicBeatState override public function create() { + + if (FlxG.sound.music != null) + FlxG.sound.music.stop(); + // var gameCam:FlxCamera = FlxG.camera; camGame = new FlxCamera(); camHUD = new FlxCamera(); @@ -163,11 +167,11 @@ class PlayState extends MusicBeatState "Only then I will even CONSIDER letting you\ndate my daughter!" ]; case 'senpai': - dialogue = CoolUtil.coolTextFile('assets/data/senpai/senpaiDialogue.txt'); + dialogue = CoolUtil.coolTextFile(Paths.txt('senpai/senpaiDialogue')); case 'roses': - dialogue = CoolUtil.coolTextFile('assets/data/roses/rosesDialogue.txt'); + dialogue = CoolUtil.coolTextFile(Paths.txt('roses/rosesDialogue')); case 'thorns': - dialogue = CoolUtil.coolTextFile('assets/data/thorns/thornsDialogue.txt'); + dialogue = CoolUtil.coolTextFile(Paths.txt('thorns/thornsDialogue')); } if (SONG.song.toLowerCase() == 'spookeez' || SONG.song.toLowerCase() == 'monster' || SONG.song.toLowerCase() == 'south') @@ -175,7 +179,7 @@ class PlayState extends MusicBeatState curStage = "spooky"; halloweenLevel = true; - var hallowTex = FlxAtlasFrames.fromSparrow('assets/images/halloween_bg.png', 'assets/images/halloween_bg.xml'); + var hallowTex = Paths.getSparrowAtlas('halloween_bg'); halloweenBG = new FlxSprite(-200, -100); halloweenBG.frames = hallowTex; @@ -191,11 +195,11 @@ class PlayState extends MusicBeatState { curStage = 'philly'; - var bg:FlxSprite = new FlxSprite(-100).loadGraphic('assets/images/philly/sky.png'); + var bg:FlxSprite = new FlxSprite(-100).loadGraphic(Paths.image('philly/sky')); bg.scrollFactor.set(0.1, 0.1); add(bg); - var city:FlxSprite = new FlxSprite(-10).loadGraphic('assets/images/philly/city.png'); + var city:FlxSprite = new FlxSprite(-10).loadGraphic(Paths.image('philly/city')); city.scrollFactor.set(0.3, 0.3); city.setGraphicSize(Std.int(city.width * 0.85)); city.updateHitbox(); @@ -206,7 +210,7 @@ class PlayState extends MusicBeatState for (i in 0...5) { - var light:FlxSprite = new FlxSprite(city.x).loadGraphic('assets/images/philly/win' + i + '.png'); + var light:FlxSprite = new FlxSprite(city.x).loadGraphic(Paths.image('philly/win' + i)); light.scrollFactor.set(0.3, 0.3); light.visible = false; light.setGraphicSize(Std.int(light.width * 0.85)); @@ -215,18 +219,18 @@ class PlayState extends MusicBeatState phillyCityLights.add(light); } - var streetBehind:FlxSprite = new FlxSprite(-40, 50).loadGraphic('assets/images/philly/behindTrain.png'); + var streetBehind:FlxSprite = new FlxSprite(-40, 50).loadGraphic(Paths.image('philly/behindTrain')); add(streetBehind); - phillyTrain = new FlxSprite(2000, 360).loadGraphic('assets/images/philly/train.png'); + phillyTrain = new FlxSprite(2000, 360).loadGraphic(Paths.image('philly/train')); add(phillyTrain); - trainSound = new FlxSound().loadEmbedded('assets/sounds/train_passes' + TitleState.soundExt); + trainSound = new FlxSound().loadEmbedded(Paths.sound('train_passes')); FlxG.sound.list.add(trainSound); // var cityLights:FlxSprite = new FlxSprite().loadGraphic(AssetPaths.win0.png); - var street:FlxSprite = new FlxSprite(-40, streetBehind.y).loadGraphic('assets/images/philly/street.png'); + var street:FlxSprite = new FlxSprite(-40, streetBehind.y).loadGraphic(Paths.image('philly/street')); add(street); } else if (SONG.song.toLowerCase() == 'milf' || SONG.song.toLowerCase() == 'satin-panties' || SONG.song.toLowerCase() == 'high') @@ -234,12 +238,12 @@ class PlayState extends MusicBeatState curStage = 'limo'; defaultCamZoom = 0.90; - var skyBG:FlxSprite = new FlxSprite(-120, -50).loadGraphic('assets/images/limo/limoSunset.png'); + var skyBG:FlxSprite = new FlxSprite(-120, -50).loadGraphic(Paths.image('limo/limoSunset')); skyBG.scrollFactor.set(0.1, 0.1); add(skyBG); var bgLimo:FlxSprite = new FlxSprite(-200, 480); - bgLimo.frames = FlxAtlasFrames.fromSparrow('assets/images/limo/bgLimo.png', 'assets/images/limo/bgLimo.xml'); + bgLimo.frames = Paths.getSparrowAtlas('limo/bgLimo'); bgLimo.animation.addByPrefix('drive', "background limo pink", 24); bgLimo.animation.play('drive'); bgLimo.scrollFactor.set(0.4, 0.4); @@ -255,7 +259,7 @@ class PlayState extends MusicBeatState grpLimoDancers.add(dancer); } - var overlayShit:FlxSprite = new FlxSprite(-500, -600).loadGraphic('assets/images/limo/limoOverlay.png'); + var overlayShit:FlxSprite = new FlxSprite(-500, -600).loadGraphic(Paths.image('limo/limoOverlay')); overlayShit.alpha = 0.5; // add(overlayShit); @@ -265,7 +269,7 @@ class PlayState extends MusicBeatState // overlayShit.shader = shaderBullshit; - var limoTex = FlxAtlasFrames.fromSparrow('assets/images/limo/limoDrive.png', 'assets/images/limo/limoDrive.xml'); + var limoTex = Paths.getSparrowAtlas('limo/limoDrive'); limo = new FlxSprite(-120, 550); limo.frames = limoTex; @@ -273,7 +277,7 @@ class PlayState extends MusicBeatState limo.animation.play('drive'); limo.antialiasing = true; - fastCar = new FlxSprite(-300, 160).loadGraphic('assets/images/limo/fastCarLol.png'); + fastCar = new FlxSprite(-300, 160).loadGraphic(Paths.image('limo/fastCarLol')); // add(limo); } else if (SONG.song.toLowerCase() == 'cocoa' || SONG.song.toLowerCase() == 'eggnog') @@ -282,7 +286,7 @@ class PlayState extends MusicBeatState defaultCamZoom = 0.80; - var bg:FlxSprite = new FlxSprite(-1000, -500).loadGraphic('assets/images/christmas/bgWalls.png'); + var bg:FlxSprite = new FlxSprite(-1000, -500).loadGraphic(Paths.image('christmas/bgWalls')); bg.antialiasing = true; bg.scrollFactor.set(0.2, 0.2); bg.active = false; @@ -291,7 +295,7 @@ class PlayState extends MusicBeatState add(bg); upperBoppers = new FlxSprite(-240, -90); - upperBoppers.frames = FlxAtlasFrames.fromSparrow('assets/images/christmas/upperBop.png', 'assets/images/christmas/upperBop.xml'); + upperBoppers.frames = Paths.getSparrowAtlas('christmas/upperBop'); upperBoppers.animation.addByPrefix('bop', "Upper Crowd Bob", 24, false); upperBoppers.antialiasing = true; upperBoppers.scrollFactor.set(0.33, 0.33); @@ -299,7 +303,7 @@ class PlayState extends MusicBeatState upperBoppers.updateHitbox(); add(upperBoppers); - var bgEscalator:FlxSprite = new FlxSprite(-1100, -600).loadGraphic('assets/images/christmas/bgEscalator.png'); + var bgEscalator:FlxSprite = new FlxSprite(-1100, -600).loadGraphic(Paths.image('christmas/bgEscalator')); bgEscalator.antialiasing = true; bgEscalator.scrollFactor.set(0.3, 0.3); bgEscalator.active = false; @@ -307,13 +311,13 @@ class PlayState extends MusicBeatState bgEscalator.updateHitbox(); add(bgEscalator); - var tree:FlxSprite = new FlxSprite(370, -250).loadGraphic('assets/images/christmas/christmasTree.png'); + var tree:FlxSprite = new FlxSprite(370, -250).loadGraphic(Paths.image('christmas/christmasTree')); tree.antialiasing = true; tree.scrollFactor.set(0.40, 0.40); add(tree); bottomBoppers = new FlxSprite(-300, 140); - bottomBoppers.frames = FlxAtlasFrames.fromSparrow('assets/images/christmas/bottomBop.png', 'assets/images/christmas/bottomBop.xml'); + bottomBoppers.frames = Paths.getSparrowAtlas('christmas/bottomBop'); bottomBoppers.animation.addByPrefix('bop', 'Bottom Level Boppers', 24, false); bottomBoppers.antialiasing = true; bottomBoppers.scrollFactor.set(0.9, 0.9); @@ -321,13 +325,13 @@ class PlayState extends MusicBeatState bottomBoppers.updateHitbox(); add(bottomBoppers); - var fgSnow:FlxSprite = new FlxSprite(-600, 700).loadGraphic('assets/images/christmas/fgSnow.png'); + var fgSnow:FlxSprite = new FlxSprite(-600, 700).loadGraphic(Paths.image('christmas/fgSnow')); fgSnow.active = false; fgSnow.antialiasing = true; add(fgSnow); santa = new FlxSprite(-840, 150); - santa.frames = FlxAtlasFrames.fromSparrow('assets/images/christmas/santa.png', 'assets/images/christmas/santa.xml'); + santa.frames = Paths.getSparrowAtlas('christmas/santa'); santa.animation.addByPrefix('idle', 'santa idle in fear', 24, false); santa.antialiasing = true; add(santa); @@ -335,7 +339,7 @@ class PlayState extends MusicBeatState else if (SONG.song.toLowerCase() == 'winter-horrorland') { curStage = 'mallEvil'; - var bg:FlxSprite = new FlxSprite(-400, -500).loadGraphic('assets/images/christmas/evilBG.png'); + var bg:FlxSprite = new FlxSprite(-400, -500).loadGraphic(Paths.image('christmas/evilBG')); bg.antialiasing = true; bg.scrollFactor.set(0.2, 0.2); bg.active = false; @@ -343,12 +347,12 @@ class PlayState extends MusicBeatState bg.updateHitbox(); add(bg); - var evilTree:FlxSprite = new FlxSprite(300, -300).loadGraphic('assets/images/christmas/evilTree.png'); + var evilTree:FlxSprite = new FlxSprite(300, -300).loadGraphic(Paths.image('christmas/evilTree')); evilTree.antialiasing = true; evilTree.scrollFactor.set(0.2, 0.2); add(evilTree); - var evilSnow:FlxSprite = new FlxSprite(-200, 700).loadGraphic("assets/images/christmas/evilSnow.png"); + var evilSnow:FlxSprite = new FlxSprite(-200, 700).loadGraphic(Paths.image("christmas/evilSnow")); evilSnow.antialiasing = true; add(evilSnow); } @@ -358,26 +362,26 @@ class PlayState extends MusicBeatState // defaultCamZoom = 0.9; - var bgSky = new FlxSprite().loadGraphic('assets/images/weeb/weebSky.png'); + var bgSky = new FlxSprite().loadGraphic(Paths.image('weeb/weebSky')); bgSky.scrollFactor.set(0.1, 0.1); add(bgSky); var repositionShit = -200; - var bgSchool:FlxSprite = new FlxSprite(repositionShit, 0).loadGraphic('assets/images/weeb/weebSchool.png'); + var bgSchool:FlxSprite = new FlxSprite(repositionShit, 0).loadGraphic(Paths.image('weeb/weebSchool')); bgSchool.scrollFactor.set(0.6, 0.90); add(bgSchool); - var bgStreet:FlxSprite = new FlxSprite(repositionShit).loadGraphic('assets/images/weeb/weebStreet.png'); + var bgStreet:FlxSprite = new FlxSprite(repositionShit).loadGraphic(Paths.image('weeb/weebStreet')); bgStreet.scrollFactor.set(0.95, 0.95); add(bgStreet); - var fgTrees:FlxSprite = new FlxSprite(repositionShit + 170, 130).loadGraphic('assets/images/weeb/weebTreesBack.png'); + var fgTrees:FlxSprite = new FlxSprite(repositionShit + 170, 130).loadGraphic(Paths.image('weeb/weebTreesBack')); fgTrees.scrollFactor.set(0.9, 0.9); add(fgTrees); var bgTrees:FlxSprite = new FlxSprite(repositionShit - 380, -800); - var treetex = FlxAtlasFrames.fromSpriteSheetPacker('assets/images/weeb/weebTrees.png', 'assets/images/weeb/weebTrees.txt'); + var treetex = Paths.getPackerAtlas('weeb/weebTrees'); bgTrees.frames = treetex; bgTrees.animation.add('treeLoop', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], 12); bgTrees.animation.play('treeLoop'); @@ -385,7 +389,7 @@ class PlayState extends MusicBeatState add(bgTrees); var treeLeaves:FlxSprite = new FlxSprite(repositionShit, -40); - treeLeaves.frames = FlxAtlasFrames.fromSparrow('assets/images/weeb/petals.png', 'assets/images/weeb/petals.xml'); + treeLeaves.frames = Paths.getSparrowAtlas('weeb/petals'); treeLeaves.animation.addByPrefix('leaves', 'PETALS ALL', 24, true); treeLeaves.animation.play('leaves'); treeLeaves.scrollFactor.set(0.85, 0.85); @@ -430,7 +434,7 @@ class PlayState extends MusicBeatState var posY = 200; var bg:FlxSprite = new FlxSprite(posX, posY); - bg.frames = FlxAtlasFrames.fromSparrow('assets/images/weeb/animatedEvilSchool.png', 'assets/images/weeb/animatedEvilSchool.xml'); + bg.frames = Paths.getSparrowAtlas('weeb/animatedEvilSchool'); bg.animation.addByPrefix('idle', 'background 2', 24); bg.animation.play('idle'); bg.scrollFactor.set(0.8, 0.9); @@ -438,13 +442,13 @@ class PlayState extends MusicBeatState add(bg); /* - var bg:FlxSprite = new FlxSprite(posX, posY).loadGraphic('assets/images/weeb/evilSchoolBG.png'); + var bg:FlxSprite = new FlxSprite(posX, posY).loadGraphic(Paths.image('weeb/evilSchoolBG')); bg.scale.set(6, 6); // bg.setGraphicSize(Std.int(bg.width * 6)); // bg.updateHitbox(); add(bg); - var fg:FlxSprite = new FlxSprite(posX, posY).loadGraphic('assets/images/weeb/evilSchoolFG.png'); + var fg:FlxSprite = new FlxSprite(posX, posY).loadGraphic(Paths.image('weeb/evilSchoolFG')); fg.scale.set(6, 6); // fg.setGraphicSize(Std.int(fg.width * 6)); // fg.updateHitbox(); @@ -485,13 +489,13 @@ class PlayState extends MusicBeatState { defaultCamZoom = 0.9; curStage = 'stage'; - var bg:FlxSprite = new FlxSprite(-600, -200).loadGraphic('assets/images/stageback.png'); + var bg:FlxSprite = new FlxSprite(-600, -200).loadGraphic(Paths.image('stageback')); bg.antialiasing = true; bg.scrollFactor.set(0.9, 0.9); bg.active = false; add(bg); - var stageFront:FlxSprite = new FlxSprite(-650, 600).loadGraphic('assets/images/stagefront.png'); + var stageFront:FlxSprite = new FlxSprite(-650, 600).loadGraphic(Paths.image('stagefront')); stageFront.setGraphicSize(Std.int(stageFront.width * 1.1)); stageFront.updateHitbox(); stageFront.antialiasing = true; @@ -499,7 +503,7 @@ class PlayState extends MusicBeatState stageFront.active = false; add(stageFront); - var stageCurtains:FlxSprite = new FlxSprite(-500, -300).loadGraphic('assets/images/stagecurtains.png'); + var stageCurtains:FlxSprite = new FlxSprite(-500, -300).loadGraphic(Paths.image('stagecurtains')); stageCurtains.setGraphicSize(Std.int(stageCurtains.width * 0.9)); stageCurtains.updateHitbox(); stageCurtains.antialiasing = true; @@ -661,7 +665,7 @@ class PlayState extends MusicBeatState FlxG.fixedTimestep = false; - healthBarBG = new FlxSprite(0, FlxG.height * 0.9).loadGraphic('assets/images/healthBar.png'); + healthBarBG = new FlxSprite(0, FlxG.height * 0.9).loadGraphic(Paths.image('healthBar')); healthBarBG.screenCenter(X); healthBarBG.scrollFactor.set(); add(healthBarBG); @@ -674,7 +678,7 @@ class PlayState extends MusicBeatState add(healthBar); scoreTxt = new FlxText(healthBarBG.x + healthBarBG.width - 190, healthBarBG.y + 30, 0, "", 20); - scoreTxt.setFormat("assets/fonts/vcr.ttf", 16, FlxColor.WHITE, RIGHT); + scoreTxt.setFormat(Paths.font("vcr.ttf"), 16, FlxColor.WHITE, RIGHT); scoreTxt.scrollFactor.set(); add(scoreTxt); @@ -715,7 +719,7 @@ class PlayState extends MusicBeatState new FlxTimer().start(0.1, function(tmr:FlxTimer) { remove(blackScreen); - FlxG.sound.play('assets/sounds/Lights_Turn_On' + TitleState.soundExt); + FlxG.sound.play(Paths.sound('Lights_Turn_On')); camFollow.y = -2050; camFollow.x += 200; FlxG.camera.focusOn(camFollow.getPosition()); @@ -737,7 +741,7 @@ class PlayState extends MusicBeatState case 'senpai': schoolIntro(doof); case 'roses': - FlxG.sound.play('assets/sounds/ANGRY' + TitleState.soundExt); + FlxG.sound.play(Paths.sound('ANGRY')); schoolIntro(doof); case 'thorns': schoolIntro(doof); @@ -767,7 +771,7 @@ class PlayState extends MusicBeatState red.scrollFactor.set(); var senpaiEvil:FlxSprite = new FlxSprite(); - senpaiEvil.frames = FlxAtlasFrames.fromSparrow('assets/images/weeb/senpaiCrazy.png', 'assets/images/weeb/senpaiCrazy.xml'); + senpaiEvil.frames = Paths.getSparrowAtlas('weeb/senpaiCrazy'); senpaiEvil.animation.addByPrefix('idle', 'Senpai Pre Explosion', 24, false); senpaiEvil.setGraphicSize(Std.int(senpaiEvil.width * 6)); senpaiEvil.scrollFactor.set(); @@ -812,7 +816,7 @@ class PlayState extends MusicBeatState else { senpaiEvil.animation.play('idle'); - FlxG.sound.play('assets/sounds/Senpai_Dies' + TitleState.soundExt, 1, false, null, true, function() + FlxG.sound.play(Paths.sound('Senpai_Dies'), 1, false, null, true, function() { remove(senpaiEvil); remove(red); @@ -865,16 +869,16 @@ class PlayState extends MusicBeatState boyfriend.playAnim('idle'); var introAssets:Map> = new Map>(); - introAssets.set('default', ['ready.png', "set.png", "go.png"]); + introAssets.set('default', ['ready', "set", "go"]); introAssets.set('school', [ - 'weeb/pixelUI/ready-pixel.png', - 'weeb/pixelUI/set-pixel.png', - 'weeb/pixelUI/date-pixel.png' + 'weeb/pixelUI/ready-pixel', + 'weeb/pixelUI/set-pixel', + 'weeb/pixelUI/date-pixel' ]); introAssets.set('schoolEvil', [ - 'weeb/pixelUI/ready-pixel.png', - 'weeb/pixelUI/set-pixel.png', - 'weeb/pixelUI/date-pixel.png' + 'weeb/pixelUI/ready-pixel', + 'weeb/pixelUI/set-pixel', + 'weeb/pixelUI/date-pixel' ]); var introAlts:Array = introAssets.get('default'); @@ -893,9 +897,9 @@ class PlayState extends MusicBeatState { case 0: - FlxG.sound.play('assets/sounds/intro3' + altSuffix + TitleState.soundExt, 0.6); + FlxG.sound.play(Paths.sound('intro3'), 0.6); case 1: - var ready:FlxSprite = new FlxSprite().loadGraphic('assets/images/' + introAlts[0]); + var ready:FlxSprite = new FlxSprite().loadGraphic(Paths.image(introAlts[0])); ready.scrollFactor.set(); ready.updateHitbox(); @@ -911,9 +915,9 @@ class PlayState extends MusicBeatState ready.destroy(); } }); - FlxG.sound.play('assets/sounds/intro2' + altSuffix + TitleState.soundExt, 0.6); + FlxG.sound.play(Paths.sound('intro2'), 0.6); case 2: - var set:FlxSprite = new FlxSprite().loadGraphic('assets/images/' + introAlts[1]); + var set:FlxSprite = new FlxSprite().loadGraphic(Paths.image(introAlts[1])); set.scrollFactor.set(); if (curStage.startsWith('school')) @@ -928,9 +932,9 @@ class PlayState extends MusicBeatState set.destroy(); } }); - FlxG.sound.play('assets/sounds/intro1' + altSuffix + TitleState.soundExt, 0.6); + FlxG.sound.play(Paths.sound('intro1'), 0.6); case 3: - var go:FlxSprite = new FlxSprite().loadGraphic('assets/images/' + introAlts[2]); + var go:FlxSprite = new FlxSprite().loadGraphic(Paths.image(introAlts[2])); go.scrollFactor.set(); if (curStage.startsWith('school')) @@ -947,7 +951,7 @@ class PlayState extends MusicBeatState go.destroy(); } }); - FlxG.sound.play('assets/sounds/introGo' + altSuffix + TitleState.soundExt, 0.6); + FlxG.sound.play(Paths.sound('introGo'), 0.6); case 4: } @@ -968,7 +972,7 @@ class PlayState extends MusicBeatState lastReportedPlayheadPosition = 0; if (!paused) - FlxG.sound.playMusic("assets/music/" + SONG.song + "_Inst" + TitleState.soundExt, 1, false); + FlxG.sound.playMusic(Paths.inst(PlayState.SONG.song), 1, false); FlxG.sound.music.onComplete = endSong; vocals.play(); } @@ -985,7 +989,7 @@ class PlayState extends MusicBeatState curSong = songData.song; if (SONG.needsVoices) - vocals = new FlxSound().loadEmbedded("assets/music/" + curSong + "_Voices" + TitleState.soundExt); + vocals = new FlxSound().loadEmbedded(Paths.voices(PlayState.SONG.song)); else vocals = new FlxSound(); @@ -1085,7 +1089,7 @@ class PlayState extends MusicBeatState switch (curStage) { case 'school' | 'schoolEvil': - babyArrow.loadGraphic('assets/images/weeb/pixelUI/arrows-pixels.png', true, 17, 17); + babyArrow.loadGraphic(Paths.image('weeb/pixelUI/arrows-pixels'), true, 17, 17); babyArrow.animation.add('green', [6]); babyArrow.animation.add('red', [7]); babyArrow.animation.add('blue', [5]); @@ -1120,7 +1124,7 @@ class PlayState extends MusicBeatState } default: - babyArrow.frames = FlxAtlasFrames.fromSparrow('assets/images/NOTE_assets.png', 'assets/images/NOTE_assets.xml'); + babyArrow.frames = Paths.getSparrowAtlas('NOTE_assets'); babyArrow.animation.addByPrefix('green', 'arrowUP'); babyArrow.animation.addByPrefix('blue', 'arrowDOWN'); babyArrow.animation.addByPrefix('purple', 'arrowLEFT'); @@ -1608,7 +1612,7 @@ class PlayState extends MusicBeatState if (storyPlaylist.length <= 0) { - FlxG.sound.playMusic('assets/music/freakyMenu' + TitleState.soundExt); + FlxG.sound.playMusic(Paths.music('freakyMenu')); transIn = FlxTransitionableState.defaultTransIn; transOut = FlxTransitionableState.defaultTransOut; @@ -1648,7 +1652,7 @@ class PlayState extends MusicBeatState add(blackShit); camHUD.visible = false; - FlxG.sound.play('assets/sounds/Lights_Shut_off' + TitleState.soundExt); + FlxG.sound.play(Paths.sound('Lights_Shut_off')); } FlxTransitionableState.skipNextTransIn = true; @@ -1658,7 +1662,7 @@ class PlayState extends MusicBeatState PlayState.SONG = Song.loadFromJson(PlayState.storyPlaylist[0].toLowerCase() + difficulty, PlayState.storyPlaylist[0]); FlxG.sound.music.stop(); - FlxG.switchState(new PlayState()); + LoadingState.loadAndSwitchState(new PlayState()); } } else @@ -1723,7 +1727,7 @@ class PlayState extends MusicBeatState pixelShitPart2 = '-pixel'; } - rating.loadGraphic('assets/images/' + pixelShitPart1 + daRating + pixelShitPart2 + ".png"); + rating.loadGraphic(Paths.image(pixelShitPart1 + daRating + pixelShitPart2)); rating.screenCenter(); rating.x = coolText.x - 40; rating.y -= 60; @@ -1731,7 +1735,7 @@ class PlayState extends MusicBeatState rating.velocity.y -= FlxG.random.int(140, 175); rating.velocity.x -= FlxG.random.int(0, 10); - var comboSpr:FlxSprite = new FlxSprite().loadGraphic('assets/images/' + pixelShitPart1 + 'combo' + pixelShitPart2 + '.png'); + var comboSpr:FlxSprite = new FlxSprite().loadGraphic(Paths.image(pixelShitPart1 + 'combo' + pixelShitPart2)); comboSpr.screenCenter(); comboSpr.x = coolText.x; comboSpr.acceleration.y = 600; @@ -1765,7 +1769,7 @@ class PlayState extends MusicBeatState var daLoop:Int = 0; for (i in seperatedScore) { - var numScore:FlxSprite = new FlxSprite().loadGraphic('assets/images/' + pixelShitPart1 + 'num' + Std.int(i) + pixelShitPart2 + '.png'); + var numScore:FlxSprite = new FlxSprite().loadGraphic(Paths.image(pixelShitPart1 + 'num' + Std.int(i) + pixelShitPart2)); numScore.screenCenter(); numScore.x = coolText.x + (43 * daLoop) - 90; numScore.y += 80; @@ -2023,7 +2027,7 @@ class PlayState extends MusicBeatState if (!boyfriend.stunned) { health -= 0.04; - if (combo > 5) + if (combo > 5 && gf.animOffsets.exists('sad')) { gf.playAnim('sad'); } @@ -2031,8 +2035,8 @@ class PlayState extends MusicBeatState songScore -= 10; - FlxG.sound.play('assets/sounds/missnote' + FlxG.random.int(1, 3) + TitleState.soundExt, FlxG.random.float(0.1, 0.2)); - // FlxG.sound.play('assets/sounds/missnote1' + TitleState.soundExt, 1, false); + FlxG.sound.play(Paths.soundRandom('missnote', 1, 3), FlxG.random.float(0.1, 0.2)); + // FlxG.sound.play(Paths.sound('missnote1'), 1, false); // FlxG.log.add('played imss note'); boyfriend.stunned = true; @@ -2145,7 +2149,7 @@ class PlayState extends MusicBeatState function fastCarDrive() { - FlxG.sound.play('assets/sounds/carPass' + FlxG.random.int(0, 1) + TitleState.soundExt, 0.7); + FlxG.sound.play(Paths.soundRandom('carPass', 0, 1), 0.7); fastCar.velocity.x = (FlxG.random.int(170, 220) / FlxG.elapsed) * 3; fastCarCanDrive = false; @@ -2211,7 +2215,7 @@ class PlayState extends MusicBeatState function lightningStrikeShit():Void { - FlxG.sound.play('assets/sounds/thunder_' + FlxG.random.int(1, 2) + TitleState.soundExt); + FlxG.sound.play(Paths.soundRandom('thunder_', 1, 2)); halloweenBG.animation.play('lightning'); lightningStrikeBeat = curBeat; diff --git a/source/Song.hx b/source/Song.hx index e9f3dc20f..407abb2db 100644 --- a/source/Song.hx +++ b/source/Song.hx @@ -40,7 +40,7 @@ class Song public static function loadFromJson(jsonInput:String, ?folder:String):SwagSong { - var rawJson = Assets.getText('assets/data/' + folder.toLowerCase() + '/' + jsonInput.toLowerCase() + '.json').trim(); + var rawJson = Assets.getText(Paths.json(folder.toLowerCase() + '/' + jsonInput.toLowerCase())).trim(); while (!rawJson.endsWith("}")) { diff --git a/source/StoryMenuState.hx b/source/StoryMenuState.hx index f0a4e888a..adb9d6cb3 100644 --- a/source/StoryMenuState.hx +++ b/source/StoryMenuState.hx @@ -76,7 +76,7 @@ class StoryMenuState extends MusicBeatState if (FlxG.sound.music != null) { if (!FlxG.sound.music.playing) - FlxG.sound.playMusic('assets/music/freakyMenu' + TitleState.soundExt); + FlxG.sound.playMusic(Paths.music('freakyMenu')); } persistentUpdate = persistentDraw = true; @@ -90,11 +90,11 @@ class StoryMenuState extends MusicBeatState var rankText:FlxText = new FlxText(0, 10); rankText.text = 'RANK: GREAT'; - rankText.setFormat("assets/fonts/vcr.ttf", 32); + rankText.setFormat(Paths.font("vcr.ttf"), 32); rankText.size = scoreText.size; rankText.screenCenter(X); - var ui_tex = FlxAtlasFrames.fromSparrow('assets/images/campaign_menu_UI_assets.png', 'assets/images/campaign_menu_UI_assets.xml'); + var ui_tex = Paths.getSparrowAtlas('campaign_menu_UI_assets'); var yellowBG:FlxSprite = new FlxSprite(0, 56).makeGraphic(FlxG.width, 400, 0xFFF9CF51); grpWeekText = new FlxTypedGroup(); @@ -271,7 +271,7 @@ class StoryMenuState extends MusicBeatState if (controls.BACK && !movedBack && !selectedWeek) { - FlxG.sound.play('assets/sounds/cancelMenu' + TitleState.soundExt); + FlxG.sound.play(Paths.sound('cancelMenu')); movedBack = true; FlxG.switchState(new MainMenuState()); } @@ -289,7 +289,7 @@ class StoryMenuState extends MusicBeatState { if (stopspamming == false) { - FlxG.sound.play('assets/sounds/confirmMenu' + TitleState.soundExt); + FlxG.sound.play(Paths.sound('confirmMenu')); grpWeekText.members[curWeek].week.animation.resume(); grpWeekCharacters.members[1].animation.play('bfConfirm'); @@ -317,9 +317,7 @@ class StoryMenuState extends MusicBeatState PlayState.campaignScore = 0; new FlxTimer().start(1, function(tmr:FlxTimer) { - if (FlxG.sound.music != null) - FlxG.sound.music.stop(); - FlxG.switchState(new PlayState()); + LoadingState.loadAndSwitchState(new PlayState(), true); }); } } @@ -385,7 +383,7 @@ class StoryMenuState extends MusicBeatState bullShit++; } - FlxG.sound.play('assets/sounds/scrollMenu' + TitleState.soundExt); + FlxG.sound.play(Paths.sound('scrollMenu')); updateText(); } diff --git a/source/TitleState.hx b/source/TitleState.hx index d1fa230a2..3a3041678 100644 --- a/source/TitleState.hx +++ b/source/TitleState.hx @@ -23,14 +23,12 @@ import flixel.util.FlxTimer; import io.newgrounds.NG; import lime.app.Application; import openfl.Assets; -import polymod.Polymod; using StringTools; class TitleState extends MusicBeatState { static var initialized:Bool = false; - static public var soundExt:String = ".mp3"; var blackScreen:FlxSprite; var credGroup:FlxGroup; @@ -44,12 +42,10 @@ class TitleState extends MusicBeatState override public function create():Void { - Polymod.init({modRoot: "mods", dirs: ['introMod']}); - - #if (!web) - TitleState.soundExt = '.ogg'; + #if polymod + polymod.Polymod.init({modRoot: "mods", dirs: ['introMod']}); #end - + PlayerSettings.init(); curWacky = FlxG.random.getObject(getIntroTextShit()); @@ -121,10 +117,10 @@ class TitleState extends MusicBeatState // https://github.com/HaxeFlixel/flixel-addons/pull/348 // var music:FlxSound = new FlxSound(); - // music.loadStream('assets/music/freakyMenu' + TitleState.soundExt); + // music.loadStream(Paths.music('freakyMenu')); // FlxG.sound.list.add(music); // music.play(); - FlxG.sound.playMusic('assets/music/freakyMenu' + TitleState.soundExt, 0); + FlxG.sound.playMusic(Paths.music('freakyMenu'), 0); FlxG.sound.music.fadeIn(4, 0, 0.7); } @@ -139,7 +135,7 @@ class TitleState extends MusicBeatState add(bg); logoBl = new FlxSprite(-150, -100); - logoBl.frames = FlxAtlasFrames.fromSparrow('assets/images/logoBumpin.png', 'assets/images/logoBumpin.xml'); + logoBl.frames = Paths.getSparrowAtlas('logoBumpin'); logoBl.antialiasing = true; logoBl.animation.addByPrefix('bump', 'logo bumpin', 24); logoBl.animation.play('bump'); @@ -148,7 +144,7 @@ class TitleState extends MusicBeatState // logoBl.color = FlxColor.BLACK; gfDance = new FlxSprite(FlxG.width * 0.4, FlxG.height * 0.07); - gfDance.frames = FlxAtlasFrames.fromSparrow('assets/images/gfDanceTitle.png', 'assets/images/gfDanceTitle.xml'); + gfDance.frames = Paths.getSparrowAtlas('gfDanceTitle'); gfDance.animation.addByIndices('danceLeft', 'gfDance', [30, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "", 24, false); gfDance.animation.addByIndices('danceRight', 'gfDance', [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "", 24, false); gfDance.antialiasing = true; @@ -156,7 +152,7 @@ class TitleState extends MusicBeatState add(logoBl); titleText = new FlxSprite(100, FlxG.height * 0.8); - titleText.frames = FlxAtlasFrames.fromSparrow('assets/images/titleEnter.png', 'assets/images/titleEnter.xml'); + titleText.frames = Paths.getSparrowAtlas('titleEnter'); titleText.animation.addByPrefix('idle', "Press Enter to Begin", 24); titleText.animation.addByPrefix('press', "ENTER PRESSED", 24); titleText.antialiasing = true; @@ -165,7 +161,7 @@ class TitleState extends MusicBeatState // titleText.screenCenter(X); add(titleText); - var logo:FlxSprite = new FlxSprite().loadGraphic('assets/images/logo.png'); + var logo:FlxSprite = new FlxSprite().loadGraphic(Paths.image('logo')); logo.screenCenter(); logo.antialiasing = true; // add(logo); @@ -187,7 +183,7 @@ class TitleState extends MusicBeatState credTextShit.visible = false; - ngSpr = new FlxSprite(0, FlxG.height * 0.52).loadGraphic('assets/images/newgrounds_logo.png'); + ngSpr = new FlxSprite(0, FlxG.height * 0.52).loadGraphic(Paths.image('newgrounds_logo')); add(ngSpr); ngSpr.visible = false; ngSpr.setGraphicSize(Std.int(ngSpr.width * 0.8)); @@ -209,7 +205,7 @@ class TitleState extends MusicBeatState function getIntroTextShit():Array> { - var fullText:String = Assets.getText('assets/data/introText.txt'); + var fullText:String = Assets.getText(Paths.txt('introText')); var firstArray:Array = fullText.split('\n'); var swagGoodArray:Array> = []; @@ -273,7 +269,7 @@ class TitleState extends MusicBeatState titleText.animation.play('press'); FlxG.camera.flash(FlxColor.WHITE, 1); - FlxG.sound.play('assets/sounds/confirmMenu' + TitleState.soundExt, 0.7); + FlxG.sound.play(Paths.sound('confirmMenu'), 0.7); transitioning = true; // FlxG.sound.music.stop(); @@ -298,7 +294,7 @@ class TitleState extends MusicBeatState FlxG.switchState(new MainMenuState()); } }); - // FlxG.sound.play('assets/music/titleShoot' + TitleState.soundExt, 0.7); + // FlxG.sound.play(Paths.music('titleShoot'), 0.7); } if (pressedEnter && !skippedIntro) diff --git a/source/import.hx b/source/import.hx new file mode 100644 index 000000000..e0a4198ec --- /dev/null +++ b/source/import.hx @@ -0,0 +1 @@ +import Paths; \ No newline at end of file