From fb7ad03083d45c627f92747174aabcd302a5f241 Mon Sep 17 00:00:00 2001
From: Cameron Taylor <cameron.taylor.ninja@gmail.com>
Date: Tue, 30 Mar 2021 20:51:17 -0700
Subject: [PATCH] FPS counter toggle

---
 source/Main.hx               |  5 ++++-
 source/TitleState.hx         |  3 +--
 source/ui/PreferencesMenu.hx | 13 +++++++++++++
 3 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/source/Main.hx b/source/Main.hx
index 95b4e792f..b5f1dcb87 100644
--- a/source/Main.hx
+++ b/source/Main.hx
@@ -64,6 +64,8 @@ class Main extends Sprite
 	var netStream:NetStream;
 	private var overlay:Sprite;
 
+	public static var fpsCounter:FPS;
+
 	private function setupGame():Void
 	{
 		var stageWidth:Int = Lib.current.stage.stageWidth;
@@ -85,7 +87,8 @@ 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);
 		#end
 		/* 
 			video = new Video();
diff --git a/source/TitleState.hx b/source/TitleState.hx
index 81f8244df..552d63fba 100644
--- a/source/TitleState.hx
+++ b/source/TitleState.hx
@@ -62,9 +62,8 @@ class TitleState extends MusicBeatState
 
 		super.create();
 
-		PreferencesMenu.initPrefs();
-
 		FlxG.save.bind('funkin', 'ninjamuffin99');
+		PreferencesMenu.initPrefs();
 		PlayerSettings.init();
 		Highscore.load();
 
diff --git a/source/ui/PreferencesMenu.hx b/source/ui/PreferencesMenu.hx
index d9038d004..20cd56f3f 100644
--- a/source/ui/PreferencesMenu.hx
+++ b/source/ui/PreferencesMenu.hx
@@ -24,6 +24,7 @@ class PreferencesMenu extends ui.OptionsState.Page
 		createPrefItem('downscroll', 'downscroll', false);
 		createPrefItem('flashing menu', 'flashing-menu', true);
 		createPrefItem('Camera Zooming on Beat', 'camera-zoom', true);
+		createPrefItem('FPS Counter', 'fps-counter', true);
 	}
 
 	public static function getPref(pref:String):Dynamic
@@ -37,6 +38,10 @@ class PreferencesMenu extends ui.OptionsState.Page
 		preferenceCheck('downscroll', true);
 		preferenceCheck('flashing-menu', true);
 		preferenceCheck('camera-zoom', true);
+		preferenceCheck('fps-counter', true);
+
+		if (!getPref('fps-counter'))
+			FlxG.stage.removeChild(Main.fpsCounter);
 	}
 
 	private function createPrefItem(prefName:String, prefString:String, prefValue:Dynamic):Void
@@ -84,6 +89,14 @@ class PreferencesMenu extends ui.OptionsState.Page
 		preferences.set(prefName, daSwap);
 		checkboxes[items.selectedIndex].daValue = daSwap;
 		trace('toggled? ' + preferences.get(prefName));
+
+		if (prefName == 'fps-counter')
+		{
+			if (getPref('fps-counter'))
+				FlxG.stage.addChild(Main.fpsCounter);
+			else
+				FlxG.stage.removeChild(Main.fpsCounter);
+		}
 	}
 
 	override function update(elapsed:Float)