Files
Funkin/source/funkin/ui/debug/playtest/ChartPlaytestMenu.hx
T

100 lines
3.0 KiB
Haxe

package funkin.ui.debug.playtest;
import flixel.text.FlxText;
import flixel.util.FlxColor;
import flixel.tweens.FlxTween;
import funkin.util.file.FNFCUtil;
import funkin.play.song.Song;
import funkin.graphics.FunkinSprite;
import funkin.graphics.FunkinCamera;
import funkin.ui.debug.playtest.ChartPlaytestMenuButton;
import funkin.ui.debug.playtest.ChartPlaytestMenuButton.ChartPlaytestMenuButtonListToggle;
#if NO_FEATURE_TOUCH_CONTROLS
import funkin.input.Cursor;
#end
/**
* When playtesting from an FNFC file, we display a debug UI to choose a difficulty first.
*/
class ChartPlaytestMenu extends MusicBeatState
{
var filePath:String;
var songName:FlxText;
var variationButton:ChartPlaytestMenuButtonListToggle;
var difficultyButton:ChartPlaytestMenuButtonListToggle;
var playtestButton:ChartPlaytestMenuButton;
var currentVariation:String;
var currentDifficulty:String;
var playtestCam:FunkinCamera;
public function new(filePath:String)
{
final targetSong:Song = FNFCUtil.loadSongFromFNFCPath(filePath);
super();
FlxG.state.persistentDraw = true;
FlxG.state.persistentUpdate = false;
playtestCam = new FunkinCamera('playtestCam');
playtestCam.bgColor = 0x0;
// playtestCam.alpha = 0;
FlxG.cameras.add(playtestCam, false);
var blackBG:FunkinSprite = new FunkinSprite(0, 0);
blackBG.makeSolidColor(FlxG.width * 3, FlxG.height * 3, FlxColor.BLACK);
blackBG.scrollFactor.set();
blackBG.alpha = 0.4;
blackBG.cameras = [playtestCam];
add(blackBG);
this.filePath = filePath;
songName = new FlxText(0, FlxG.height * 0.1, 0, 'Loaded Song: ${targetSong.songName}',
30).setFormat(Paths.font('vcr.ttf'), 50, FlxColor.WHITE, FlxTextAlign.CENTER);
songName.screenCenter(X);
songName.cameras = [playtestCam];
add(songName);
variationButton = new ChartPlaytestMenuButtonListToggle(0, FlxG.height * 0.55, "Variation", targetSong.variations, function(value:String) {
currentVariation = value;
variationButton.screenCenter(X);
});
variationButton.screenCenter(X);
variationButton.cameras = [playtestCam];
add(variationButton);
difficultyButton = new ChartPlaytestMenuButtonListToggle(0, FlxG.height * 0.45, "Difficulty",
targetSong.listDifficulties(null, targetSong.variations, true, true), function(value:String) {
currentDifficulty = value;
difficultyButton.screenCenter(X);
});
difficultyButton.screenCenter(X);
difficultyButton.cameras = [playtestCam];
add(difficultyButton);
playtestButton = new ChartPlaytestMenuButton(0, FlxG.height * 0.8, "Playtest Song", function() {
try
{
FNFCUtil.playSongFromFNFCPath(filePath, currentDifficulty, currentVariation);
}
catch (e)
{
lime.app.Application.current.window.alert('$e', 'Could Not Playtest Chart');
}
});
playtestButton.screenCenter(X);
playtestButton.cameras = [playtestCam];
add(playtestButton);
FlxTween.tween(playtestCam, {alpha: 1}, 0.5);
#if NO_FEATURE_TOUCH_CONTROLS
Cursor.show();
#end
}
}