DreamBall/gui/timer.tscn
Taevas 709ce8eea3
split gravity logic, various bug fixes
fixed gravity strength being possibly strong at level beginning
fixed restarting being allowed after getting the last ring
fixed save file's "played_for" being reset or set to another file's
fixed the displayed save file total play time not being updated on main menu

maybe there's other stuff
2025-04-29 21:18:04 +02:00

141 lines
3.9 KiB
Text

[gd_scene load_steps=9 format=3 uid="uid://xd3nsiglcdfc"]
[ext_resource type="FontFile" uid="uid://c3fsj6knyiuhl" path="res://fonts/Knewave/Knewave-Regular.ttf" id="1_m1tld"]
[sub_resource type="GDScript" id="GDScript_q235s"]
script/source = "extends VBoxContainer
var enabled := false:
get: return enabled
set(value):
enabled = value
if value == true:
var save_file = SaveFiles.read(SaveFiles.selected_file)
if save_file.has(\"played_for\") and save_file.played_for is float:
seconds_spent_total = save_file.played_for
else:
seconds_spent_total = 0.0
if value == false:
$AnimationPlayer.play(\"scale_linear\")
await get_tree().create_timer($AnimationPlayer.current_animation_length).timeout
$AnimationPlayer.play_backwards(\"scale_cubic\")
var seconds_spent_total := 0.0:
get: return seconds_spent_total
set(value):
seconds_spent_total = value
$Total.text = \"Total: \" + seconds_to_readable(seconds_spent_total)
var seconds_spent_level_attempt := 0.0:
get: return seconds_spent_level_attempt
set(value):
seconds_spent_level_attempt = value
$Level.text = \"Level: \" + seconds_to_readable(seconds_spent_level_attempt)
func seconds_to_readable(seconds: float) -> String:
var minutes: int = floor(seconds / 60)
return (\"%0*d\" % [2, minutes]) + \":\" + (\"%0*.3f\" % [6, seconds - (minutes * 60)])
func _physics_process(delta: float) -> void:
if enabled:
seconds_spent_total += delta
seconds_spent_level_attempt += delta
"
[sub_resource type="LabelSettings" id="LabelSettings_m1tld"]
font = ExtResource("1_m1tld")
font_size = 32
outline_size = 8
outline_color = Color(1, 0, 1, 1)
shadow_size = 8
shadow_color = Color(0, 0, 0, 1)
[sub_resource type="LabelSettings" id="LabelSettings_2a86r"]
font = ExtResource("1_m1tld")
font_size = 24
outline_size = 8
outline_color = Color(0, 0, 1, 1)
shadow_size = 8
shadow_color = Color(0, 0, 0, 1)
[sub_resource type="Animation" id="Animation_m1tld"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:scale")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(1, 1)]
}
[sub_resource type="Animation" id="Animation_houb3"]
resource_name = "scale_cubic"
length = 0.25
step = 0.25
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:scale")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.25),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector2(1, 1), Vector2(1.2, 1.2)]
}
[sub_resource type="Animation" id="Animation_2a86r"]
resource_name = "scale_linear"
length = 0.25
step = 0.25
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:scale")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.25),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector2(1, 1), Vector2(1.2, 1.2)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_jmgpn"]
_data = {
&"RESET": SubResource("Animation_m1tld"),
&"scale_cubic": SubResource("Animation_houb3"),
&"scale_linear": SubResource("Animation_2a86r")
}
[node name="Timer" type="VBoxContainer"]
process_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_right = -992.0
offset_bottom = -563.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/separation = -5
script = SubResource("GDScript_q235s")
[node name="Total" type="Label" parent="."]
layout_mode = 2
text = "Total timer"
label_settings = SubResource("LabelSettings_m1tld")
[node name="Level" type="Label" parent="."]
layout_mode = 2
text = "Level timer"
label_settings = SubResource("LabelSettings_2a86r")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_jmgpn")
}