From 290621da08c081e79a573b70c12cbe49d96a880e Mon Sep 17 00:00:00 2001
From: "Vinegar (Flynn Waiver)"
<124418090+moxie-coder@users.noreply.github.com>
Date: Tue, 24 Feb 2026 00:07:21 -0500
Subject: [PATCH 1/3] refactor: add Bitmap ScoreTxt as an option
currently it's skewed to the left, and doesn't update properly
---
assets/fonts/vcr-bmp.fnt | 1 +
assets/fonts/vcr-bmp.png | Bin 0 -> 5599 bytes
source/ClientPrefs.hx | 3 +-
source/PlayState.hx | 59 +++++++++++++++++++++----
source/options/OptimizationSubState.hx | 8 ++++
5 files changed, 62 insertions(+), 9 deletions(-)
create mode 100644 assets/fonts/vcr-bmp.fnt
create mode 100644 assets/fonts/vcr-bmp.png
diff --git a/assets/fonts/vcr-bmp.fnt b/assets/fonts/vcr-bmp.fnt
new file mode 100644
index 00000000000..2ef277113e6
--- /dev/null
+++ b/assets/fonts/vcr-bmp.fnt
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/fonts/vcr-bmp.png b/assets/fonts/vcr-bmp.png
new file mode 100644
index 0000000000000000000000000000000000000000..a27630f85856d86ec6857d615fa0b1001c6d6b65
GIT binary patch
literal 5599
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
literal 0
HcmV?d00001
diff --git a/source/ClientPrefs.hx b/source/ClientPrefs.hx
index 21d5ee09515..75015f1cad7 100644
--- a/source/ClientPrefs.hx
+++ b/source/ClientPrefs.hx
@@ -171,6 +171,7 @@ class ClientPrefs { //default settings if it can't find a save file containing y
public static var rainbowTime:Float = 5.0;
public static var autosaveCharts:Bool = true;
public static var autosaveTime:Int = 240;
+ public static var useBitmapScore:Bool = false; // compatibility
//Gameplay Modifiers
public static var gameplaySettings:Map = [
@@ -249,7 +250,7 @@ class ClientPrefs { //default settings if it can't find a save file containing y
// i suck at naming things sorry
private static var importantMap:Map> = [
"saveBlackList" => ["keyBinds", "defaultKeys", "defaultArrowRGB", "defaultPixelRGB", "defaultQuantRGB"],
- "flixelSound" => ["volume", "sound"],
+ "flixelSound" => ["volume", "sound"],
"loadBlackList" => ["keyBinds", "defaultKeys", "defaultArrowRGB", "defaultPixelRGB", "defaultQuantRGB"],
];
diff --git a/source/PlayState.hx b/source/PlayState.hx
index 227fefd02c7..a8a6cf5a55e 100644
--- a/source/PlayState.hx
+++ b/source/PlayState.hx
@@ -18,6 +18,8 @@ import objects.*;
import openfl.events.KeyboardEvent;
import openfl.system.System;
import play.objects.*;
+import flixel.text.FlxBitmapFont;
+import flixel.text.FlxBitmapText;
#if SHADERS_ALLOWED
import openfl.filters.ShaderFilter;
import shaders.ErrorHandledShader;
@@ -304,7 +306,7 @@ class PlayState extends MusicBeatState
public var songScore:Float = 0;
public var songHits:Int = 0;
public var songMisses:Float = 0;
- public var scoreTxt:FlxText;
+ public var scoreTxt:FlxSprite = null;
var timeTxt:FlxText;
var hitTxt:FlxText;
@@ -384,6 +386,8 @@ class PlayState extends MusicBeatState
var startingTime:Float = haxe.Timer.stamp();
var endingTime:Float = haxe.Timer.stamp();
+
+ static var vcrBitmapFont:FlxBitmapFont;
// FFMpeg values :)
var ffmpegMode = ClientPrefs.ffmpegMode;
@@ -1215,10 +1219,39 @@ class PlayState extends MusicBeatState
}
// TODO: cleanup playstate, by moving most of this and other duplicate functions like healthbop, etc
- scoreTxt = new FlxText(0, healthBarBG.y + 50, FlxG.width, "", 20);
- scoreTxt.setFormat(Paths.font("vcr.ttf"), 16, FlxColor.WHITE, CENTER, OUTLINE,FlxColor.BLACK);
- scoreTxt.scrollFactor.set();
- scoreTxt.borderSize = 1;
+ if (ClientPrefs.useBitmapScore){
+ var bmp:FlxBitmapText = new FlxBitmapText(
+ 0, healthBarBG.y + 50, "",
+ FlxBitmapFont.fromAngelCode(
+ Paths.font("vcr-bmp.png"),
+ Paths.font("vcr-bmp.fnt")
+ )
+ );
+
+ bmp.alignment = CENTER;
+ bmp.borderStyle = OUTLINE;
+ bmp.borderColor = FlxColor.BLACK;
+ bmp.letterSpacing = -1;
+ bmp.scrollFactor.set();
+ bmp.borderSize = 1;
+
+ scoreTxt = bmp;
+ }
+ else
+ {
+ var txt:FlxText = new FlxText(
+ 0, healthBarBG.y + 50,
+ FlxG.width, "", 20
+ );
+
+ txt.setFormat(Paths.font("vcr.ttf"), 16,
+ FlxColor.WHITE, CENTER, OUTLINE, FlxColor.BLACK);
+
+ txt.scrollFactor.set();
+ txt.borderSize = 1;
+
+ scoreTxt = txt;
+ }
scoreTxt.visible = !ClientPrefs.hideHud;
add(scoreTxt);
@@ -1266,8 +1299,18 @@ class PlayState extends MusicBeatState
final s = Reflect.getProperty(styleSettings, style);
if (s.yOffset != null) scoreTxt.y = healthBarBG.y + s.yOffset;
if (s.xOverride != null) scoreTxt.x = s.xOverride;
- scoreTxt.setFormat(Paths.font(s.font), s.size, s.color, CENTER, OUTLINE, FlxColor.BLACK);
- scoreTxt.borderSize = s.borderSize;
+ if (!ClientPrefs.useBitmapScore)
+ {
+ cast(scoreTxt, FlxText).setFormat(
+ Paths.font(s.font),
+ s.size,
+ s.color,
+ CENTER,
+ OUTLINE,
+ FlxColor.BLACK
+ );
+ }
+ (scoreTxt : Dynamic).borderSize = s.borderSize;
if (style == 'Forever Engine' || style == 'Vanilla') updateScore();
}
@@ -2236,7 +2279,7 @@ class PlayState extends MusicBeatState
tempScore = 'Score: ' + formattedScore;
}
- scoreTxt.text = '${tempScore}\n';
+ (scoreTxt : Dynamic).text = '${tempScore}\n';
callOnLuas('onUpdateScore', [miss]);
}
diff --git a/source/options/OptimizationSubState.hx b/source/options/OptimizationSubState.hx
index 1cdf0e40c25..e0a7fb74633 100644
--- a/source/options/OptimizationSubState.hx
+++ b/source/options/OptimizationSubState.hx
@@ -63,6 +63,14 @@ class OptimizationSubState extends BaseOptionsMenu
'bool',
false);
addOption(option);
+
+ var option:Option = new Option('Use Bitmap ScoreTxt',
+ "If checked, Uses FlxBitmapText for the score display to reduce garbage collection spikes and improve performance when the score updates frequently.
+ May cause compatibility issues with Lua mods that change text size or font dynamically.",
+ 'useBitmapScore',
+ 'bool',
+ false);
+ addOption(option);
var option:Option = new Option('Disable onSpawnNote Lua Calls',
"If checked, the game will not call onSpawnNote when a note is spawned.\nIf you have a script that uses that, maybe leave it on.",
From 402dd7e6dad5b19738f34ac32c5e160c582a4482 Mon Sep 17 00:00:00 2001
From: "Vinegar (Flynn Waiver)"
<124418090+moxie-coder@users.noreply.github.com>
Date: Tue, 24 Feb 2026 11:19:42 -0500
Subject: [PATCH 2/3] fix issues, and mark it as WIP
---
source/PlayState.hx | 15 ++++++++++++++-
source/options/OptimizationSubState.hx | 2 +-
2 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/source/PlayState.hx b/source/PlayState.hx
index a8a6cf5a55e..a6fd925a336 100644
--- a/source/PlayState.hx
+++ b/source/PlayState.hx
@@ -1236,6 +1236,7 @@ class PlayState extends MusicBeatState
bmp.borderSize = 1;
scoreTxt = bmp;
+ scoreTxt.screenCenter(X);
}
else
{
@@ -1251,6 +1252,7 @@ class PlayState extends MusicBeatState
txt.borderSize = 1;
scoreTxt = txt;
+ scoreTxt.screenCenter(X);
}
scoreTxt.visible = !ClientPrefs.hideHud;
add(scoreTxt);
@@ -2220,6 +2222,17 @@ class PlayState extends MusicBeatState
var comboInfo = ClientPrefs.showComboInfo;
var showNPS = ClientPrefs.showNPS;
var missString:String = '';
+
+ function setScoreText(value:String)
+ {
+ if (Std.isOfType(scoreTxt, FlxText))
+ cast(scoreTxt, FlxText).text = value;
+ else
+ cast(scoreTxt, FlxBitmapText).text = value;
+
+ scoreTxt.screenCenter(X);
+ }
+
public dynamic function updateScore(miss:Bool = false)
{
scoreTxtUpdateFrame++;
@@ -2279,7 +2292,7 @@ class PlayState extends MusicBeatState
tempScore = 'Score: ' + formattedScore;
}
- (scoreTxt : Dynamic).text = '${tempScore}\n';
+ setScoreText('${tempScore}\n');
callOnLuas('onUpdateScore', [miss]);
}
diff --git a/source/options/OptimizationSubState.hx b/source/options/OptimizationSubState.hx
index e0a7fb74633..bf2df2feda8 100644
--- a/source/options/OptimizationSubState.hx
+++ b/source/options/OptimizationSubState.hx
@@ -64,7 +64,7 @@ class OptimizationSubState extends BaseOptionsMenu
false);
addOption(option);
- var option:Option = new Option('Use Bitmap ScoreTxt',
+ var option:Option = new Option('Use Bitmap ScoreTxt WIP',
"If checked, Uses FlxBitmapText for the score display to reduce garbage collection spikes and improve performance when the score updates frequently.
May cause compatibility issues with Lua mods that change text size or font dynamically.",
'useBitmapScore',
From aa22d9d716782ae345a33ee480f7fa1bc59f63c4 Mon Sep 17 00:00:00 2001
From: "Vinegar (Flynn Waiver)"
<124418090+moxie-coder@users.noreply.github.com>
Date: Sat, 28 Feb 2026 05:10:37 -0500
Subject: [PATCH 3/3] re-export at 20px instead of 16
---
assets/fonts/vcr-bmp.fnt | 2 +-
assets/fonts/vcr-bmp.png | Bin 5599 -> 9590 bytes
source/PlayState.hx | 11 ++++++-----
3 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/assets/fonts/vcr-bmp.fnt b/assets/fonts/vcr-bmp.fnt
index 2ef277113e6..f8ac239b29b 100644
--- a/assets/fonts/vcr-bmp.fnt
+++ b/assets/fonts/vcr-bmp.fnt
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/assets/fonts/vcr-bmp.png b/assets/fonts/vcr-bmp.png
index a27630f85856d86ec6857d615fa0b1001c6d6b65..fc7e6c4464dbf27e8cb5aee07d4665f4b873eb22 100644
GIT binary patch
literal 9590
zcmV-+C5hUJP)Fd+We=j|-!UG8~H_vasK)JbncJsxX=eIxD;-@~*aR2>Q`&=EepTc|7DBqal
zwH>}!DDuDM`_ckW@X1@2ua+{PdqOGOhtEwr;hEzLIX!)E;hR^H6LfKJ>I<9U+3Zhr
zy^qq=gWQ%a(tcgt2{1lbZm+Jsi~BE8cD*p-3faAZ*7#&hPbvJb()K3BOGmxo!#$T-
zJ2%?%6yLP^)76JRF7oF_I}=+47;3JrZf`${K|jayE*D6Cf2-*MhFMDfaV&zEj@to$@U_x31^3WgC5lsB0(fBYNsGKfE8I
z%wG8YHuxa!>cdYL`4j$EkiW!t!+s_I=}7qV^%jHsVam@kP(6nxV%k5A@_(YdO?giF
zGUXRjWBZ2&7%6fq4l=TI9g2=Tlft1eC&RgSXCQ66UUPQ#l;IC;{hwZYQUC1f>GhL%
zzkYHx>6f4z-dFO)*r
zrtN3AFTUvH*C@`&3ZTfTW>Pp5T4zUh1};{7Fd_Ck5MMj1`381Z{X5sMz9Hv1{tj@t
zJeyxw(vnYm)1Rvqbr^<#`FH640aTq>%gs{rh+@N^m>51j_I8E(L$5`+W!)75oN<
ze2Ir|zqva7Jonc1om4)he325@fAVlk`8cI@^>!1BI@l6;P~FH*^em1PfThe4-eN)-
zX%I1aJ$-g_`^}(0h5(yg$^ee?9m7(`p-Z*O!p?N3gMZJ%p8}ej>)X?h(2>vZKD=Vb
zGOXY7erN}`7}VjJjTHDwu!L{S5y}YA5qnpSuU`WwE-g3IbO8!Y0Qzm{(#4o*n`7Bs
zs>uga1cE{PMp2vkMVCrigulj;^A9w|-@^~({R{Wj
zrIF?;xj@wIAZ>AlgOW3`CEaP9oq^D7xt|Lcx^6canXGDh##KfD+j|0`&uRV
zR(8rzUyum`BTc*y@A@U>EyIQ*-yPtQd_tXDTo33Rl#c_9;n~dRsrxrTWpeyk2Jv$U
z`EiQ$pXI*jVrIC`cXvsPgzQHYzM%V8&fWlxGqZJ0k~IUCSMWs|JisPcj5N8u^HAx-
z7lN`ZO@KmY(p%b=CJ`D)p;P`CwC=f&`T$ErmYb*7
zS4+UM&8RaMga07>0u}cF`5`t;0tO@gmf71=Wtj&|2g#eLWUtU&JC^$y2%il
z1+08PUpf1X4C;xUn7fKq4n>~4n{%zAzyDWu1-UWchexDR@1@Tf1U*4SnBS!BuPOOr
zo&HCbq(A2VN5caBUuMGd1GC|l`d$*adk95e37WGNr)Lb3ktW_3-{CVl8D-~rUK|Q@
zGbg+gVzJfpfO&fTzexKXfMFucU93xX&@@S(mr{jiN2V@>ag?x8}fp_Ipcf!s1H7MOqCBLMHl`cVol~~w11c)5b}7H
zDz%sQrq8J_FPC)XL~+ubuBAZ8Cn8qK7-q^a
zv^j%XrAi9nYt6ipuetWZ7y8^5mxGX=X^)v(=}V3LU=U+%FLn9c)CbE6o-5=^bHizG
zKH|5H`ldeWJ-Z38
z<}&aOVmg2uF`rINeaI|7RX=eA;SqlmtPPn~xg9s6`0VT#n6WEMb&u&s0?ZnNu5NFy
z*3gsp=#XJ}%kRjV+kK4q;R%QO#j8aCWnc}x@fppV*i|K=v|ry|U5#cuboywCzTOc(
z=05zzWGExÐ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
literal 5599
zcmV<56(H(~P)000%HNkl`y`jl~4pxLH$t5
zEGv;|{o3+xTSXcBl)-cABm&=Gf2-vI4`2B16|NThU
z;QT~Ho8G;$4;U69&61~Md
zX+(1wF-N>?Bl70iV=$sq2R~Zm*ULy|@-e9E7l}4@kXguS{`Z3ZUkWNGTqaJ;&Km*jwvqKe-
z-vQ6gE`X~$W+x}C9O%?I_Hs(@6n41wn(JYb91q9ymm-;hUn)-uj+Eeg67Ez}x9EJ{
zl9hq}DDtv1JOgPVH-Lu0G}{6+-eZTk2weKtGiVDDcLoQ?({H>uGq_tE*0mgF$mstC7TVFKE-Vus{#^tswR(J5q8dLuQ>R=M-I
z`I212eYE%Kjc7GnP;q6Jy>b<()8jt?YQBQB5EOKagc5^~wnYW1z^m%#3&3o|qbZFV
zoO1pK;2tx8(>?iiMl%;b9$9jNQO$h#M1TxbGal6n&{WA=JgrM
z1J;ai%IIm#5>2jALh-$c4yp4W0F8$yqEK34@~3C98ChYIalD0T7NhW6sQe}JXANJr
zQM>L(qSMlt)45PtI`FgwrE3#)2((piA#oqC9VVo;jGD$G9WKy#z^V0vNcSMoDl{<7
zC7>l^d&Y4*x2F1mfnG3zb(q^M4Ls=cJU5#3y~d2uq@xxcgS67bN;4!srnXGflll29
z{N|c3QGV0x5~afg8b7k<(dFmqNXH?43W6!~O%%J0mj=CQQl%o->S+*n}
zTj-!8;=-jW8#Sa2G)t9PCw&4kKcIEe1+WL^In|NmRNpg>J0m$e9xkRn(9wCP3eY@b
zeX;zsRB1O|PS4ucOA3bz-#1aW)n0Q3Lw(fi)6z9COr(L*3UtpIu`m-2fDTK!BZ2Om
z=n`=~7A-QEiH!u%iEJx)7)x$vnC!5PN?8_`mFbS
zvs>F59ntPSS^-l$ZzLMx8oQ14uWEQV-l5b@#X!|2jE05EZ_STKD2ZHpxm^@Tb!AjjT*XV?b82epm!;-x>+;OPbHv}6dEyqy#V~-G1!YS
z|6i}x_NMc{X^pSu6|`B9m}ihv*;ANAmp0K>=qIUDnRExHOVr(&M6+frq>DxYrDL+y
zeXo!*$GJ$cwRZ7uQ}2z0b#G!29S&|ro>BV`>!8NEg?!B`8Y!5UpEe`27m;;a}a
zC4*5Z|61Ug(
z-Z*HFbQZKss3m&3{2J)&xzM@3tN`ecNwhF^np_>nQfSSnneh8$RTMy%1^
zRPUWZ9&3Ws=aIegOG^(~pwBNyXMiaEO#`8}z4E5VS^zm7lB3(I72u_bFk`!94FJ>M
z44tXjWGR-0rt+f-kmyp921|tgCVpn1OR=gVvUyRm
zsb_9OneNFyJR6)SEai8$A(NGF(IeX0#2Z1sMecT(Q+bk-mc&K4=q!v?jS-T1G)kZP
z<73Y}*W1YBUDJs@DxHqlrZq{Ys-0uZg%;4;VNUIZi|(dw0iGM#PqzT?lw5*)Rv6@!
zTdt+gXQ^$Gwt_J>w|A_D`{iClK9p5EZ?(`Zq}@c#Jlbk}iJBv$=2UKP8D)48vT`jz
zqp~}Za!4uDMRvr9mgkTd>0a8kiAmG>sRW({bZ7=x^$atje0tB)nPYKl!n%OYM@_d-
zrx~wn37~Vp)$Dd`hPF~O06WH483|xQpra!$+L1!#>)CgeKx^ZLdo@C0c2rf^<;VM6
z_q$;3j!sxQ;rBXTdRGTL9}9%FMu(QF3jIyxuM=qN7)vQMa};O^9G8afLXygwOKp)}
zN(RC0Mog7s&6hHY!s3uZgUmp!W4163!dP29VU;7=I>u5u`Wgj#?1)zKBFU_8-+j!Kl);kT6l`q@WqpjI0v}N%!L-%
zNx`B+KFBP@H$rKTHZB~Gpbf2;Vh6GwEK`o^5mZXQ8uFvweI
ztux@V%owIqgkGb)AgHyVtQ$3Tqfu3pr2?TEbs=>O8U2{@OjcLc
zZh+14&s~F#q9>F;(N^@{=>eTy&{AAWP}Us_bkce;7K?ORCKj!P)iuc&91)ad98*2?J|bqeH@>6!uz2blT43_~c_o=oacK-EP;5
zf1X`>3e&F4FQ@J&@J{cJOU3_uJgP`fHCT-&-sj3zu|}uaC2#i@K~_;uc0?>5es2L<
zbPQJ2g=NO?#W2f>uE-45E587;++H1se6K>f1&P-$P%sWVE(2DXspsOZVL4S)dRt<_f8#SVf-44w^1HD6mi;_J99p%^#
z&0ht&WF|}NZZ&Xg%2(Z%XdWj0FwYN_P9xICitDQUxZ1p=lxT9Bipmv2AZ&^1FN3{P
zp5SeF`BQXNLZ+7d-Nh*^v<2vaqg|#34Qp~L40Z^Xd5GFO4q6%ZkmhCcBqph
z^e`m3MPd==rC_@30?kn%qWPnyPkBi2eQ3uwk+zV|L$YF`%KT>_&*F3^K5oaBym3c#
zqgjnU*xyFtG;tQveMmPW>F9q_hrT$NZ2*)HwsVB)5p)868(gyHOqI1mc9tpD@>(e=
zJuG+JQpd24@kY;%jo$l{*CxlZNYXAWGnvyU
zmg&X*Y7)lM)O|2I&HnhF_1l9HEr949Y%fgRW6wreCr4Z*h9T_T4xS9IK$5_%9q2?P
z&33J3HBQNSq!!m`lpO)Ox<*HP_>}prAzu0obr(;LtO97%X-nN=gf6ZXE}7Mkw+j@5
zynjLBNkDgvPE%p+mbTCuooLW!msk~r6KhS33Rj{0sg0-OF9Xb1g{4)GXq3-jHGA`6
ze{H5Dy}jF1o%KrwiRJgZkZLI6xmr&SMe&u1jNDu<#n?8_c#agh#nP~G);%iX398u^BYrfpsE6$
zs-n4^?d8A>^!D<9ZMClr=!k^u2r8K=OAAi2e8>VV*Yk!Bp|7F*usU>i=#Y=x;KY|%Sq?JW)q$On#|97X?}0H
zhhhP<5Vpiq>&N?A>oqr!;bBUd4l=xx^R
zO9M?3J~{J+q7LFc_lQs`zsYrZtioip5u^mv{A_g`SepuTbxoK{ZsEWTbPJbuL7o}t
zT>xTB6SU)j_fGFTuMlQ>o`y;~4ebdbSVV-Jsz+(sLVc^igh7}_(XOS=lL;-|BHSbX
z&n{8-Q5tkJ1
zUq_x(kocFO8F-Tmzw?aNd0@(^f+^WWR(q4uZ;Y0$Q9zGjAZU*SnWOULT%;4VYjo%a;O$s2c*`}N_hUwe!js(rXDEGZYS7t9R;!v|8g0QwT-yAJ8ENLL}f9*G9{wFqOI%=GP`
zO$uWdfq+Yqq-#*7X)tZ2HHbi7k6)3*Qs002ovPDHLkV1i9MxIX{@
diff --git a/source/PlayState.hx b/source/PlayState.hx
index a6fd925a336..33eea141862 100644
--- a/source/PlayState.hx
+++ b/source/PlayState.hx
@@ -1220,7 +1220,7 @@ class PlayState extends MusicBeatState
// TODO: cleanup playstate, by moving most of this and other duplicate functions like healthbop, etc
if (ClientPrefs.useBitmapScore){
- var bmp:FlxBitmapText = new FlxBitmapText(
+ final bmp:FlxBitmapText = new FlxBitmapText(
0, healthBarBG.y + 50, "",
FlxBitmapFont.fromAngelCode(
Paths.font("vcr-bmp.png"),
@@ -1233,14 +1233,15 @@ class PlayState extends MusicBeatState
bmp.borderColor = FlxColor.BLACK;
bmp.letterSpacing = -1;
bmp.scrollFactor.set();
- bmp.borderSize = 1;
+ bmp.borderSize = 2;
+ bmp.scale.set(bmp.scale.x * 1.1, bmp.scale.y * 1.1);
scoreTxt = bmp;
scoreTxt.screenCenter(X);
}
else
{
- var txt:FlxText = new FlxText(
+ final txt:FlxText = new FlxText(
0, healthBarBG.y + 50,
FlxG.width, "", 20
);
@@ -1258,10 +1259,10 @@ class PlayState extends MusicBeatState
add(scoreTxt);
var style:String = ClientPrefs.scoreStyle;
- var dadColors:Array = CoolUtil.getHealthColors(dad);
+ final dadColors:Array = CoolUtil.getHealthColors(dad);
// Configuration for each style
- var styleSettings = { // profiency using typedefs
+ final styleSettings = { // profiency using typedefs
'JS Engine': {
font: "vcr.ttf", size: 18, color: FlxColor.fromRGB(dadColors[0], dadColors[1], dadColors[2]),
yOffset: null, borderSize: 2, xOverride: null