diff --git a/assets/languages/en/Options.xml b/assets/languages/en/Options.xml
index 68862bac..d1958961 100644
--- a/assets/languages/en/Options.xml
+++ b/assets/languages/en/Options.xml
@@ -48,6 +48,7 @@
Engine
Switch Mod
+ FPS Counter
Volume
diff --git a/assets/languages/es/Options.xml b/assets/languages/es/Options.xml
index 5033ffe5..bd25ee90 100644
--- a/assets/languages/es/Options.xml
+++ b/assets/languages/es/Options.xml
@@ -46,8 +46,9 @@
Cambiar Mod
+ Contador de FPS
-
+
Volumen
Arriba
Abajo
diff --git a/assets/languages/it/Options.xml b/assets/languages/it/Options.xml
index 6498fc61..ed24a8ee 100644
--- a/assets/languages/it/Options.xml
+++ b/assets/languages/it/Options.xml
@@ -46,6 +46,7 @@
Cambia Mod
+ Contatore FPS
Su
diff --git a/assets/languages/pl/Options.xml b/assets/languages/pl/Options.xml
index d5fb2d34..f14687f3 100644
--- a/assets/languages/pl/Options.xml
+++ b/assets/languages/pl/Options.xml
@@ -44,8 +44,9 @@
Silnik
Zmień Moda
+ Licznik FPS
-
+
Głośność
Głóśniej
Ciszej
diff --git a/assets/languages/pt/Options.xml b/assets/languages/pt/Options.xml
index c0a2e08b..c9f02aac 100644
--- a/assets/languages/pt/Options.xml
+++ b/assets/languages/pt/Options.xml
@@ -48,6 +48,7 @@
Codename Engine
Trocar Mod
+ Contador de FPS
Volume
diff --git a/source/funkin/backend/scripting/GlobalScript.hx b/source/funkin/backend/scripting/GlobalScript.hx
index cb589371..ec381ea2 100644
--- a/source/funkin/backend/scripting/GlobalScript.hx
+++ b/source/funkin/backend/scripting/GlobalScript.hx
@@ -55,9 +55,6 @@ class GlobalScript {
reloading = false;
MusicBeatState.ALLOW_DEV_RELOAD = _lastAllow_Reload;
}
-
- if (PlayerSettings.solo.controls.DEV_CONSOLE)
- NativeAPI.allocConsole();
});
FlxG.signals.preDraw.add(function() {
call("preDraw");
diff --git a/source/funkin/backend/system/Controls.hx b/source/funkin/backend/system/Controls.hx
index a7a540c2..c4c80d53 100644
--- a/source/funkin/backend/system/Controls.hx
+++ b/source/funkin/backend/system/Controls.hx
@@ -25,6 +25,7 @@ enum Control
CHANGE_MODE;
//CHEAT;
SWITCHMOD;
+ FPS_COUNTER;
// Debugs
DEV_ACCESS;
@@ -161,6 +162,11 @@ class Controls extends FlxActionSet
@:pressed("switchmod") public var SWITCHMOD_HOLD(get, set): Bool;
@:justReleased("switchmod") public var SWITCHMOD_R(get, set): Bool;
+ @:gamepad([])
+ @:justPressed("fps-counter") public var FPS_COUNTER(get, set): Bool;
+ @:pressed("fps-counter") public var FPS_COUNTER_HOLD(get, set): Bool;
+ @:justReleased("fps-counter") public var FPS_COUNTER_R(get, set): Bool;
+
@:devModeOnly
@:gamepad([])
@:justPressed("dev-access") public var DEV_ACCESS(get, set): Bool;
diff --git a/source/funkin/backend/system/Main.hx b/source/funkin/backend/system/Main.hx
index da44cf1d..ebffd227 100644
--- a/source/funkin/backend/system/Main.hx
+++ b/source/funkin/backend/system/Main.hx
@@ -1,7 +1,5 @@
package funkin.backend.system;
-import sys.io.File;
-import sys.FileSystem;
import flixel.addons.transition.FlxTransitionSprite.GraphicTransTileDiamond;
import flixel.addons.transition.FlxTransitionableState;
import flixel.addons.transition.TransitionData;
@@ -9,17 +7,21 @@ import flixel.graphics.FlxGraphic;
import flixel.math.FlxPoint;
import flixel.math.FlxRect;
import flixel.system.ui.FlxSoundTray;
+import funkin.backend.assets.AssetSource;
import funkin.backend.assets.AssetsLibraryList;
import funkin.backend.assets.ModsFolder;
-import funkin.backend.assets.AssetSource;
+import funkin.backend.system.framerate.Framerate;
import funkin.backend.system.framerate.SystemInfo;
import funkin.backend.system.modules.*;
import funkin.editors.SaveWarning;
+import funkin.options.PlayerSettings;
import openfl.Assets;
import openfl.Lib;
import openfl.display.Sprite;
import openfl.text.TextFormat;
import openfl.utils.AssetLibrary;
+import sys.FileSystem;
+import sys.io.File;
#if ALLOW_MULTITHREADING
import sys.thread.Thread;
@@ -40,7 +42,7 @@ class Main extends Sprite
public static var scaleMode:FunkinRatioScaleMode;
#if !mobile
- public static var framerateSprite:funkin.backend.system.framerate.Framerate;
+ public static var framerateSprite:Framerate;
#end
var gameWidth:Int = 1280; // Width of the game in pixels (might be less / more in actual pixels).
@@ -79,7 +81,7 @@ class Main extends Sprite
addChild(game = new FunkinGame(gameWidth, gameHeight, MainState, Options.framerate, Options.framerate, skipSplash, startFullscreen));
#if (!mobile && !web)
- addChild(framerateSprite = new funkin.backend.system.framerate.Framerate());
+ addChild(framerateSprite = new Framerate());
SystemInfo.init();
#end
}
@@ -156,6 +158,7 @@ class Main extends Sprite
FlxG.signals.focusGained.add(onFocus);
FlxG.signals.preStateSwitch.add(onStateSwitch);
FlxG.signals.postStateSwitch.add(onStateSwitchPost);
+ FlxG.signals.postUpdate.add(onUpdate);
FlxG.mouse.useSystemCursor = true;
#if DARK_MODE_WINDOW
@@ -210,6 +213,14 @@ class Main extends Sprite
scaleMode.resetSize();
}
+ public static function onUpdate() {
+ if (PlayerSettings.solo.controls.DEV_CONSOLE)
+ NativeAPI.allocConsole();
+
+ if (PlayerSettings.solo.controls.FPS_COUNTER)
+ Framerate.debugMode = (Framerate.debugMode + 1) % 3;
+ }
+
private static function onStateSwitchPost() {
// manual asset clearing since base openfl one does'nt clear lime one
// does'nt clear bitmaps since flixel fork does it auto
diff --git a/source/funkin/backend/system/framerate/Framerate.hx b/source/funkin/backend/system/framerate/Framerate.hx
index 2acc7601..c33b416c 100644
--- a/source/funkin/backend/system/framerate/Framerate.hx
+++ b/source/funkin/backend/system/framerate/Framerate.hx
@@ -53,13 +53,6 @@ class Framerate extends Sprite {
x = 10;
y = 2;
- FlxG.stage.addEventListener(KeyboardEvent.KEY_UP, function(e:KeyboardEvent) {
- switch(e.keyCode) {
- case #if web Keyboard.NUMBER_3 #else Keyboard.F3 #end: // 3 on web or F3 on windows, linux and other things that runs code
- debugMode = (debugMode + 1) % 3;
- }
- });
-
if (__bitmap == null)
__bitmap = new BitmapData(1, 1, 0xFF000000);
diff --git a/source/funkin/options/Options.hx b/source/funkin/options/Options.hx
index ac5c87ac..ffd2925c 100644
--- a/source/funkin/options/Options.hx
+++ b/source/funkin/options/Options.hx
@@ -126,6 +126,7 @@ class Options
public static var P1_VOLUME_UP:Array = [PLUS];
public static var P1_VOLUME_DOWN:Array = [MINUS];
public static var P1_VOLUME_MUTE:Array = [ZERO];
+ public static var P1_FPS_COUNTER:Array = [#if web NUMBER_3 #else F3 #end]; // 3 on web or F3 on windows, linux and other things that runs code
// Debugs
public static var P1_DEV_ACCESS:Array = [SEVEN];
@@ -158,6 +159,7 @@ class Options
public static var P2_VOLUME_UP:Array = [NUMPADPLUS];
public static var P2_VOLUME_DOWN:Array = [NUMPADMINUS];
public static var P2_VOLUME_MUTE:Array = [NUMPADZERO];
+ public static var P2_FPS_COUNTER:Array = [];
// Debugs
public static var P2_DEV_ACCESS:Array = [];
@@ -190,6 +192,7 @@ class Options
public static var SOLO_VOLUME_UP(get, null):Array;
public static var SOLO_VOLUME_DOWN(get, null):Array;
public static var SOLO_VOLUME_MUTE(get, null):Array;
+ public static var SOLO_FPS_COUNTER(get, null):Array;
// Debugs
public static var SOLO_DEV_ACCESS(get, null):Array;
diff --git a/source/funkin/options/keybinds/KeybindsOptions.hx b/source/funkin/options/keybinds/KeybindsOptions.hx
index 0ae12058..ad068447 100644
--- a/source/funkin/options/keybinds/KeybindsOptions.hx
+++ b/source/funkin/options/keybinds/KeybindsOptions.hx
@@ -127,6 +127,10 @@ class KeybindsOptions extends MusicBeatSubstate {
name: translate("engine.switchMod"),
control: 'SWITCHMOD'
},
+ {
+ name: translate("engine.fpsCounter"),
+ control: 'FPS_COUNTER'
+ },
]
},
{