Kade-Engine/source/Options.hx

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";
}
}