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