41 lines
909 B
GDScript
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)
|