diff --git a/source/funkin/ui/freeplay/FreeplayScore.hx b/source/funkin/ui/freeplay/FreeplayScore.hx index d50119c88..98f6894bc 100644 --- a/source/funkin/ui/freeplay/FreeplayScore.hx +++ b/source/funkin/ui/freeplay/FreeplayScore.hx @@ -11,28 +11,16 @@ class FreeplayScore extends FlxTypedSpriteGroup function set_scoreShit(val):Int { if (group == null || group.members == null) return val; - var loopNum:Int = group.members.length - 1; - var dumbNumb = Std.parseInt(Std.string(val)); - if (dumbNumb == null) dumbNumb = 0; - var prevNum:ScoreNum; + var dumbNumb:Int = Std.parseInt(Std.string(val)) ?? 0; dumbNumb = Std.int(Math.min(dumbNumb, Math.pow(10, group.members.length) - 1)); + var loopNum:Int = group.members.length - 1; + while (dumbNumb > 0) { group.members[loopNum].digit = dumbNumb % 10; - // var funnyNum = group.members[loopNum]; - // prevNum = group.members[loopNum + 1]; - - // if (prevNum != null) - // { - // funnyNum.x = prevNum.x - (funnyNum.width * 0.7); - // } - - // funnyNum.y = (funnyNum.baseY - (funnyNum.height / 2)) + 73; - // funnyNum.x = (funnyNum.baseX - (funnyNum.width / 2)) + 450; // this plus value is hand picked lol! - dumbNumb = Math.floor(dumbNumb / 10); loopNum--; } @@ -71,6 +59,11 @@ class FreeplayScore extends FlxTypedSpriteGroup } } +/** + * ScoreNum is the number graphic that is used for the completion percentage. + * It handles offsetting / positioning of the numbers so they look a bit nicer placed + * NOTE: this is actually a bit similar to the ResultScore class, should perhaps tidy the logic up? + */ @:nullSafety class ScoreNum extends FlxSprite { @@ -106,18 +99,10 @@ class ScoreNum extends FlxSprite return val; } - public var baseY:Float = 0; - public var baseX:Float = 0; - - var numToString:Array = ["ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE"]; - public function new(x:Float, y:Float, ?initDigit:Int = 0, ?styleData:FreeplayStyle) { super(x, y); - baseY = y; - baseX = x; - if (styleData == null) { frames = Paths.getSparrowAtlas('digital_numbers'); @@ -129,15 +114,22 @@ class ScoreNum extends FlxSprite for (i in 0...10) { - var stringNum:String = numToString[i]; - animation.addByPrefix(stringNum, '$stringNum DIGITAL', 24, false); + animation.addByPrefix(getIntToString(i), '${getIntToString(i)} DIGITAL', 24, false); } this.digit = initDigit ?? 0; - animation.play(numToString[digit], true); + animation.play(getIntToString(digit), true); setGraphicSize(Std.int(width * 0.4)); updateHitbox(); } + + final numToString:Array = ["ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE"]; + + function getIntToString(number:Int):String + { + if (numToString[number] == null) return numToString[0]; + return numToString[number]; + } }