diff --git a/source/KadeEngineData.hx b/source/KadeEngineData.hx index bb9be73..40bc098 100644 --- a/source/KadeEngineData.hx +++ b/source/KadeEngineData.hx @@ -5,27 +5,30 @@ class KadeEngineData public static function initSave() { if (FlxG.save.data.newInput == null) - FlxG.save.data.newInput = true; + FlxG.save.data.newInput = true; - if (FlxG.save.data.downscroll == null) - FlxG.save.data.downscroll = false; + if (FlxG.save.data.downscroll == null) + FlxG.save.data.downscroll = false; - if (FlxG.save.data.dfjk == null) - FlxG.save.data.dfjk = false; - - if (FlxG.save.data.accuracyDisplay == null) - FlxG.save.data.accuracyDisplay = true; + if (FlxG.save.data.dfjk == null) + FlxG.save.data.dfjk = false; + + if (FlxG.save.data.accuracyDisplay == null) + FlxG.save.data.accuracyDisplay = true; - if (FlxG.save.data.offset == null) - FlxG.save.data.offset = 0; + if (FlxG.save.data.offset == null) + FlxG.save.data.offset = 0; - if (FlxG.save.data.offset == null) - FlxG.save.data.offset = 0; + if (FlxG.save.data.offset == null) + FlxG.save.data.offset = 0; - if (FlxG.save.data.songPosition == null) - FlxG.save.data.songPosition = false; + if (FlxG.save.data.songPosition == null) + FlxG.save.data.songPosition = false; - if (FlxG.save.data.etternaMode == null) - FlxG.save.data.etternaMode = false; - } + if (FlxG.save.data.etternaMode == null) + FlxG.save.data.etternaMode = false; + + if (FlxG.save.data.fps == null) + FlxG.save.data.fps = false; + } } diff --git a/source/Main.hx b/source/Main.hx index 8c7c9ac..8adf2db 100644 --- a/source/Main.hx +++ b/source/Main.hx @@ -1,5 +1,6 @@ package; +import flixel.FlxG; import flixel.FlxGame; import flixel.FlxState; import openfl.Assets; @@ -70,7 +71,15 @@ class Main extends Sprite addChild(new FlxGame(gameWidth, gameHeight, initialState, zoom, framerate, framerate, skipSplash, startFullscreen)); #if !mobile - addChild(new FPS(10, 3, 0xFFFFFF)); + fpsCounter = new FPS(10, 3, 0xFFFFFF); + addChild(fpsCounter); + toggleFPS(FlxG.save.data.fps); #end } + + var fpsCounter:FPS; + + public function toggleFPS(fpsEnabled:Bool):Void { + fpsCounter.visible = fpsEnabled; + } } diff --git a/source/Options.hx b/source/Options.hx index f392a8b..5278124 100644 --- a/source/Options.hx +++ b/source/Options.hx @@ -1,6 +1,159 @@ package; -class Options +import Controls.KeyboardScheme; +import flixel.FlxG; +import openfl.display.FPS; +import openfl.Lib; + +class Option { - public static var masterVolume:Float = 1; + 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"; + } } diff --git a/source/OptionsMenu.hx b/source/OptionsMenu.hx index 68ee6e7..3175ec7 100644 --- a/source/OptionsMenu.hx +++ b/source/OptionsMenu.hx @@ -1,6 +1,6 @@ package; -import Controls.KeyboardScheme; +import Options; import Controls.Control; import flash.text.TextField; import flixel.FlxG; @@ -18,23 +18,24 @@ class OptionsMenu extends MusicBeatState var selector:FlxText; var curSelected:Int = 0; - var controlsStrings:Array = []; + var options:Array