From 4d6757668224961e96c0b87a01e8eac2a9576dd7 Mon Sep 17 00:00:00 2001 From: Ne_Eo Date: Wed, 16 Oct 2024 20:43:33 +0200 Subject: [PATCH] Optimize formatutil more --- source/funkin/backend/system/Main.hx | 7 +++++++ .../backend/utils/translations/FormatUtil.hx | 19 +++++++++++-------- source/lime/system/System.hx | 4 +--- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/source/funkin/backend/system/Main.hx b/source/funkin/backend/system/Main.hx index 9f13e826..c393ff2a 100644 --- a/source/funkin/backend/system/Main.hx +++ b/source/funkin/backend/system/Main.hx @@ -1,5 +1,6 @@ package funkin.backend.system; +import funkin.backend.utils.translations.FormatUtil; import flixel.addons.transition.FlxTransitionSprite.GraphicTransTileDiamond; import flixel.addons.transition.FlxTransitionableState; import flixel.addons.transition.TransitionData; @@ -58,6 +59,12 @@ class Main extends Sprite public static var gameThreads:Array = []; #end + public static function preInit() { + funkin.backend.utils.NativeAPI.registerAsDPICompatible(); + funkin.backend.system.CommandLineHandler.parseCommandLine(Sys.args()); + funkin.backend.system.Main.fixWorkingDirectory(); + } + public function new() { super(); diff --git a/source/funkin/backend/utils/translations/FormatUtil.hx b/source/funkin/backend/utils/translations/FormatUtil.hx index cb601fc7..300eef1e 100644 --- a/source/funkin/backend/utils/translations/FormatUtil.hx +++ b/source/funkin/backend/utils/translations/FormatUtil.hx @@ -5,7 +5,7 @@ package funkin.backend.utils.translations; * * For example if the parameter list is just an `Int` which is `9`, `You have been blue balled {0} times` becomes `You have been blue balled 9 times`. */ -class FormatUtil { +final class FormatUtil { private static var cache:Map = new Map(); private static var cacheStr:Map = new Map(); @@ -87,14 +87,17 @@ class ParamFormatInfo implements IFormatInfo { public function format(params:Array):String { if (params == null) params = []; - var str:String = ""; - for (i=>s in strings) { - str += s; - if (i < indexes.length) - str += params[indexes[i]]; - } + var lenStr = strings.length; + var lenInd = indexes.length; - return str; + var arr = new haxe.ds.Vector(lenStr + ((lenStr < lenInd) ? lenStr : lenInd)); + var i = 0; + for (idx=>s in strings) { + arr[i++] = s; + if (idx < lenInd) + arr[i++] = Std.string(params[indexes[idx]]); + } + return arr.join(""); } public function toString():String { diff --git a/source/lime/system/System.hx b/source/lime/system/System.hx index 98efafe3..ae32a5e2 100644 --- a/source/lime/system/System.hx +++ b/source/lime/system/System.hx @@ -602,9 +602,7 @@ class System { // executes first!! #if (sys && !macro) - funkin.backend.utils.NativeAPI.registerAsDPICompatible(); - funkin.backend.system.CommandLineHandler.parseCommandLine(Sys.args()); - funkin.backend.system.Main.fixWorkingDirectory(); + funkin.backend.system.Main.preInit(); #end if (__applicationEntryPoint == null)