road-rage-tank/player/score_label.gd

41 lines
909 B
GDScript

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)