2020-10-09 17:24:20 -04:00
|
|
|
package;
|
|
|
|
|
2020-10-21 20:22:12 -04:00
|
|
|
import Controls.Control;
|
2020-10-09 17:24:20 -04:00
|
|
|
import flixel.FlxG;
|
|
|
|
import flixel.FlxSprite;
|
|
|
|
import flixel.FlxSubState;
|
2021-02-12 01:20:20 -05:00
|
|
|
import flixel.addons.transition.FlxTransitionableState;
|
2020-11-17 20:50:09 -05:00
|
|
|
import flixel.group.FlxGroup.FlxTypedGroup;
|
2020-10-21 20:22:12 -04:00
|
|
|
import flixel.input.keyboard.FlxKey;
|
2020-11-20 07:21:04 -05:00
|
|
|
import flixel.system.FlxSound;
|
2021-03-01 23:00:02 -05:00
|
|
|
import flixel.text.FlxText;
|
|
|
|
import flixel.tweens.FlxEase;
|
|
|
|
import flixel.tweens.FlxTween;
|
2020-10-09 17:24:20 -04:00
|
|
|
import flixel.util.FlxColor;
|
|
|
|
|
2020-11-17 20:50:09 -05:00
|
|
|
class PauseSubState extends MusicBeatSubstate
|
2020-10-09 17:24:20 -04:00
|
|
|
{
|
2020-11-17 20:50:09 -05:00
|
|
|
var grpMenuShit:FlxTypedGroup<Alphabet>;
|
|
|
|
|
2021-03-07 15:34:21 -05:00
|
|
|
var pauseOG:Array<String> = ['Resume', 'Restart Song', 'Change Difficulty', 'Exit to menu'];
|
|
|
|
var difficultyChoices:Array<String> = ['EASY', 'NORMAL', 'HARD', 'BACK'];
|
|
|
|
|
|
|
|
var menuItems:Array<String> = [];
|
2020-11-17 20:50:09 -05:00
|
|
|
var curSelected:Int = 0;
|
|
|
|
|
2020-11-20 07:21:04 -05:00
|
|
|
var pauseMusic:FlxSound;
|
|
|
|
|
2020-10-27 06:35:23 -04:00
|
|
|
public function new(x:Float, y:Float)
|
2020-10-09 17:24:20 -04:00
|
|
|
{
|
|
|
|
super();
|
2020-11-20 07:21:04 -05:00
|
|
|
|
2021-03-07 15:34:21 -05:00
|
|
|
menuItems = pauseOG;
|
|
|
|
|
2021-02-08 16:34:48 -05:00
|
|
|
pauseMusic = new FlxSound().loadEmbedded(Paths.music('breakfast'), true, true);
|
2020-11-20 07:21:04 -05:00
|
|
|
pauseMusic.volume = 0;
|
|
|
|
pauseMusic.play(false, FlxG.random.int(0, Std.int(pauseMusic.length / 2)));
|
|
|
|
|
|
|
|
FlxG.sound.list.add(pauseMusic);
|
|
|
|
|
2020-10-09 17:24:20 -04:00
|
|
|
var bg:FlxSprite = new FlxSprite().makeGraphic(FlxG.width, FlxG.height, FlxColor.BLACK);
|
2021-03-01 23:00:02 -05:00
|
|
|
bg.alpha = 0;
|
2020-10-09 17:24:20 -04:00
|
|
|
bg.scrollFactor.set();
|
|
|
|
add(bg);
|
2020-10-26 05:16:05 -04:00
|
|
|
|
2021-03-01 23:00:02 -05:00
|
|
|
var levelInfo:FlxText = new FlxText(20, 15, 0, "", 32);
|
|
|
|
levelInfo.text += PlayState.SONG.song;
|
|
|
|
levelInfo.scrollFactor.set();
|
|
|
|
levelInfo.setFormat(Paths.font("vcr.ttf"), 32);
|
|
|
|
levelInfo.updateHitbox();
|
|
|
|
add(levelInfo);
|
2021-03-01 23:58:19 -05:00
|
|
|
|
|
|
|
var levelDifficulty:FlxText = new FlxText(20, 15 + 32, 0, "", 32);
|
|
|
|
levelDifficulty.text += CoolUtil.difficultyString();
|
|
|
|
levelDifficulty.scrollFactor.set();
|
|
|
|
levelDifficulty.setFormat(Paths.font('vcr.ttf'), 32);
|
|
|
|
levelDifficulty.updateHitbox();
|
|
|
|
add(levelDifficulty);
|
|
|
|
|
2021-03-04 14:30:35 -05:00
|
|
|
var deathCounter:FlxText = new FlxText(20, 15 + 64, 0, "", 32);
|
|
|
|
deathCounter.text = "Blue balled: " + PlayState.deathCounter;
|
|
|
|
deathCounter.scrollFactor.set();
|
|
|
|
deathCounter.setFormat(Paths.font('vcr.ttf'), 32);
|
|
|
|
deathCounter.updateHitbox();
|
|
|
|
add(deathCounter);
|
|
|
|
|
2021-03-01 23:58:19 -05:00
|
|
|
levelDifficulty.alpha = 0;
|
2021-03-01 23:00:02 -05:00
|
|
|
levelInfo.alpha = 0;
|
2021-03-04 14:30:35 -05:00
|
|
|
deathCounter.alpha = 0;
|
2021-03-01 23:00:02 -05:00
|
|
|
|
|
|
|
levelInfo.x = FlxG.width - (levelInfo.width + 20);
|
2021-03-01 23:58:19 -05:00
|
|
|
levelDifficulty.x = FlxG.width - (levelDifficulty.width + 20);
|
2021-03-04 14:30:35 -05:00
|
|
|
deathCounter.x = FlxG.width - (deathCounter.width + 20);
|
2021-03-01 23:00:02 -05:00
|
|
|
|
|
|
|
FlxTween.tween(bg, {alpha: 0.6}, 0.4, {ease: FlxEase.quartInOut});
|
|
|
|
FlxTween.tween(levelInfo, {alpha: 1, y: 20}, 0.4, {ease: FlxEase.quartInOut, startDelay: 0.3});
|
2021-03-01 23:58:19 -05:00
|
|
|
FlxTween.tween(levelDifficulty, {alpha: 1, y: levelDifficulty.y + 5}, 0.4, {ease: FlxEase.quartInOut, startDelay: 0.5});
|
2021-03-04 14:30:35 -05:00
|
|
|
FlxTween.tween(deathCounter, {alpha: 1, y: deathCounter.y + 5}, 0.4, {ease: FlxEase.quartInOut, startDelay: 0.7});
|
2021-03-01 23:00:02 -05:00
|
|
|
|
2020-11-17 20:50:09 -05:00
|
|
|
grpMenuShit = new FlxTypedGroup<Alphabet>();
|
|
|
|
add(grpMenuShit);
|
|
|
|
|
2021-03-07 15:34:21 -05:00
|
|
|
regenMenu();
|
|
|
|
|
|
|
|
cameras = [FlxG.cameras.list[FlxG.cameras.list.length - 1]];
|
|
|
|
}
|
|
|
|
|
|
|
|
private function regenMenu():Void
|
|
|
|
{
|
|
|
|
grpMenuShit.forEachAlive(function(thing:Alphabet)
|
|
|
|
{
|
|
|
|
grpMenuShit.remove(thing);
|
|
|
|
thing.destroy();
|
|
|
|
});
|
|
|
|
|
2020-11-17 20:50:09 -05:00
|
|
|
for (i in 0...menuItems.length)
|
|
|
|
{
|
|
|
|
var songText:Alphabet = new Alphabet(0, (70 * i) + 30, menuItems[i], true, false);
|
|
|
|
songText.isMenuItem = true;
|
|
|
|
songText.targetY = i;
|
|
|
|
grpMenuShit.add(songText);
|
|
|
|
}
|
2020-10-27 06:35:23 -04:00
|
|
|
|
2021-03-07 15:34:21 -05:00
|
|
|
curSelected = 0;
|
2020-11-17 20:50:09 -05:00
|
|
|
changeSelection();
|
2020-10-09 17:24:20 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
override function update(elapsed:Float)
|
|
|
|
{
|
2020-11-20 07:21:04 -05:00
|
|
|
if (pauseMusic.volume < 0.5)
|
|
|
|
pauseMusic.volume += 0.01 * elapsed;
|
|
|
|
|
2020-10-09 17:24:20 -04:00
|
|
|
super.update(elapsed);
|
|
|
|
|
2020-11-17 20:50:09 -05:00
|
|
|
var upP = controls.UP_P;
|
|
|
|
var downP = controls.DOWN_P;
|
|
|
|
var accepted = controls.ACCEPT;
|
|
|
|
|
|
|
|
if (upP)
|
|
|
|
{
|
|
|
|
changeSelection(-1);
|
|
|
|
}
|
|
|
|
if (downP)
|
|
|
|
{
|
|
|
|
changeSelection(1);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (accepted)
|
|
|
|
{
|
|
|
|
var daSelected:String = menuItems[curSelected];
|
|
|
|
|
|
|
|
switch (daSelected)
|
|
|
|
{
|
|
|
|
case "Resume":
|
|
|
|
close();
|
2021-03-07 15:34:21 -05:00
|
|
|
case "EASY" | 'NORMAL' | "HARD":
|
|
|
|
PlayState.SONG = Song.loadFromJson(Highscore.formatSong(PlayState.SONG.song.toLowerCase(), curSelected),
|
|
|
|
PlayState.SONG.song.toLowerCase());
|
|
|
|
|
|
|
|
PlayState.storyDifficulty = curSelected;
|
|
|
|
|
|
|
|
FlxG.resetState();
|
|
|
|
|
|
|
|
case 'Change Difficulty':
|
|
|
|
menuItems = difficultyChoices;
|
|
|
|
regenMenu();
|
|
|
|
case 'BACK':
|
|
|
|
menuItems = pauseOG;
|
|
|
|
regenMenu();
|
2020-11-17 21:20:27 -05:00
|
|
|
case "Restart Song":
|
|
|
|
FlxG.resetState();
|
2020-11-17 20:50:09 -05:00
|
|
|
case "Exit to menu":
|
2021-03-07 15:34:21 -05:00
|
|
|
PlayState.deathCounter = 0;
|
2020-11-17 20:50:09 -05:00
|
|
|
FlxG.switchState(new MainMenuState());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-10-21 20:22:12 -04:00
|
|
|
if (FlxG.keys.justPressed.J)
|
|
|
|
{
|
2020-11-17 20:50:09 -05:00
|
|
|
// for reference later!
|
|
|
|
// PlayerSettings.player1.controls.replaceBinding(Control.LEFT, Keys, FlxKey.J, null);
|
2020-10-21 20:22:12 -04:00
|
|
|
}
|
2020-11-17 20:50:09 -05:00
|
|
|
}
|
|
|
|
|
2020-11-20 07:21:04 -05:00
|
|
|
override function destroy()
|
|
|
|
{
|
|
|
|
pauseMusic.destroy();
|
|
|
|
|
|
|
|
super.destroy();
|
|
|
|
}
|
|
|
|
|
2020-11-17 20:50:09 -05:00
|
|
|
function changeSelection(change:Int = 0):Void
|
|
|
|
{
|
|
|
|
curSelected += change;
|
2020-10-21 20:22:12 -04:00
|
|
|
|
2020-11-17 20:50:09 -05:00
|
|
|
if (curSelected < 0)
|
|
|
|
curSelected = menuItems.length - 1;
|
|
|
|
if (curSelected >= menuItems.length)
|
|
|
|
curSelected = 0;
|
|
|
|
|
|
|
|
var bullShit:Int = 0;
|
|
|
|
|
|
|
|
for (item in grpMenuShit.members)
|
|
|
|
{
|
|
|
|
item.targetY = bullShit - curSelected;
|
|
|
|
bullShit++;
|
|
|
|
|
|
|
|
item.alpha = 0.6;
|
|
|
|
// item.setGraphicSize(Std.int(item.width * 0.8));
|
|
|
|
|
|
|
|
if (item.targetY == 0)
|
|
|
|
{
|
|
|
|
item.alpha = 1;
|
|
|
|
// item.setGraphicSize(Std.int(item.width));
|
|
|
|
}
|
|
|
|
}
|
2020-10-09 17:24:20 -04:00
|
|
|
}
|
|
|
|
}
|