class_name ScoreLabel extends Control const DESIRED_SCALE := Vector2.ONE * .5 static var instance: ScoreLabel @onready var label: Label = get_child(0) var tween: Tween var _display_score := 0 var score := 0: set(v): var delta = abs(v - score) score = v if label != null: if tween != null: tween.stop() tween = create_tween() tween.tween_method((func(n): _display_score = n label.text = str(n) ), _display_score, score, .25) scale += Vector2.ONE * pow(delta, 1.25) / 400 func exp_lerp(a: Variant, b: Variant, decay: float, dt: float) -> Variant: return lerp(a, b, 1 - exp(-decay * dt)) func _init() -> void: instance = self func _ready() -> void: scale = DESIRED_SCALE score = score SignalBus.building_destroyed.connect(func(_building, increment): score += increment ) func _process(delta: float) -> void: pass scale = exp_lerp(scale, DESIRED_SCALE, 05, delta)