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