small racing game im working on
Diffstat (limited to 'ui/splits/difference.gd')
-rw-r--r--ui/splits/difference.gd27
1 files changed, 27 insertions, 0 deletions
diff --git a/ui/splits/difference.gd b/ui/splits/difference.gd
new file mode 100644
index 0000000..8d81ff3
--- /dev/null
+++ b/ui/splits/difference.gd
@@ -0,0 +1,27 @@
+extends PanelContainer
+
+@export var gain_style: StyleBox
+@export var loss_style: StyleBox
+@export var neutral_style: StyleBox
+@export var label: Label
+
+enum Change { GAIN, LOSS, EQUAL }
+
+func update(time: float, prev_time: float) -> void:
+ var change := diff(time, prev_time)
+ style(change)
+ match change:
+ Change.LOSS: label.text = "+" + GameTimer.format(time - prev_time)
+ Change.GAIN: label.text = "-" + GameTimer.format(prev_time - time)
+ Change.EQUAL: label.text = "0:00.00"
+
+func diff(t1: float, t2: float) -> int:
+ if t1 == t2:
+ return Change.EQUAL
+ return Change.GAIN if t1 < t2 else Change.LOSS
+
+func style(d: int) -> void:
+ match d:
+ Change.LOSS: add_theme_stylebox_override(&"panel", loss_style)
+ Change.GAIN: add_theme_stylebox_override(&"panel", gain_style)
+ Change.EQUAL: add_theme_stylebox_override(&"panel", neutral_style)