160 lines
3.1 KiB
Haxe
160 lines
3.1 KiB
Haxe
package;
|
|
|
|
import Controls.KeyboardScheme;
|
|
import flixel.FlxG;
|
|
import openfl.display.FPS;
|
|
import openfl.Lib;
|
|
|
|
class Option
|
|
{
|
|
public function new()
|
|
{
|
|
display = updateDisplay();
|
|
}
|
|
|
|
private var display:String;
|
|
public final function getDisplay():String
|
|
{
|
|
return display;
|
|
}
|
|
|
|
// Returns whether the label is to be updated.
|
|
public function press():Bool { return throw "stub!"; }
|
|
private function updateDisplay():String { return throw "stub!"; }
|
|
}
|
|
|
|
class DFJKOption extends Option
|
|
{
|
|
private var controls:Controls;
|
|
|
|
public function new(controls:Controls)
|
|
{
|
|
super();
|
|
this.controls = controls;
|
|
}
|
|
|
|
public override function press():Bool
|
|
{
|
|
FlxG.save.data.dfjk = !FlxG.save.data.dfjk;
|
|
|
|
if (FlxG.save.data.dfjk)
|
|
controls.setKeyboardScheme(KeyboardScheme.Solo, true);
|
|
else
|
|
controls.setKeyboardScheme(KeyboardScheme.Duo(true), true);
|
|
|
|
display = updateDisplay();
|
|
return true;
|
|
}
|
|
|
|
private override function updateDisplay():String
|
|
{
|
|
return FlxG.save.data.dfjk ? "DFJK" : "WASD";
|
|
}
|
|
}
|
|
|
|
class NewInputOption extends Option
|
|
{
|
|
public override function press():Bool
|
|
{
|
|
FlxG.save.data.newInput = !FlxG.save.data.newInput;
|
|
display = updateDisplay();
|
|
return true;
|
|
}
|
|
|
|
private override function updateDisplay():String
|
|
{
|
|
return FlxG.save.data.newInput ? "New input" : "Old Input";
|
|
}
|
|
}
|
|
|
|
class DownscrollOption extends Option
|
|
{
|
|
public override function press():Bool
|
|
{
|
|
FlxG.save.data.downscroll = !FlxG.save.data.downscroll;
|
|
display = updateDisplay();
|
|
return true;
|
|
}
|
|
|
|
private override function updateDisplay():String
|
|
{
|
|
return FlxG.save.data.downscroll ? "Downscroll" : "Upscroll";
|
|
}
|
|
}
|
|
|
|
class AccuracyOption extends Option
|
|
{
|
|
public override function press():Bool
|
|
{
|
|
FlxG.save.data.accuracyDisplay = !FlxG.save.data.accuracyDisplay;
|
|
display = updateDisplay();
|
|
return true;
|
|
}
|
|
|
|
private override function updateDisplay():String
|
|
{
|
|
return "Accuracy " + (!FlxG.save.data.accuracyDisplay ? "off" : "on");
|
|
}
|
|
}
|
|
|
|
class SongPositionOption extends Option
|
|
{
|
|
public override function press():Bool
|
|
{
|
|
FlxG.save.data.songPosition = !FlxG.save.data.songPosition;
|
|
display = updateDisplay();
|
|
return true;
|
|
}
|
|
|
|
private override function updateDisplay():String
|
|
{
|
|
return "Song Position " + (!FlxG.save.data.songPosition ? "off" : "on");
|
|
}
|
|
}
|
|
|
|
class EtternaModeOption extends Option
|
|
{
|
|
public override function press():Bool
|
|
{
|
|
FlxG.save.data.etternaMode = !FlxG.save.data.etternaMode;
|
|
display = updateDisplay();
|
|
return true;
|
|
}
|
|
|
|
private override function updateDisplay():String
|
|
{
|
|
return "Etterna Mode " + (!FlxG.save.data.etternaMode ? "off" : "on");
|
|
}
|
|
}
|
|
|
|
class FPSOption extends Option
|
|
{
|
|
public override function press():Bool
|
|
{
|
|
FlxG.save.data.fps = !FlxG.save.data.fps;
|
|
(cast (Lib.current.getChildAt(0), Main)).toggleFPS(FlxG.save.data.fps);
|
|
display = updateDisplay();
|
|
return true;
|
|
}
|
|
|
|
private override function updateDisplay():String
|
|
{
|
|
return "FPS Counter " + (!FlxG.save.data.fps ? "off" : "on");
|
|
}
|
|
}
|
|
|
|
class ReplayOption extends Option
|
|
{
|
|
public override function press():Bool
|
|
{
|
|
trace("switch");
|
|
FlxG.switchState(new LoadReplayState());
|
|
return false;
|
|
}
|
|
|
|
private override function updateDisplay():String
|
|
{
|
|
return "Load replays";
|
|
}
|
|
}
|