final wave animation

This commit is contained in:
Rendo 2025-07-17 00:46:35 +05:00
commit f2e4768b7e
5 changed files with 74 additions and 2 deletions

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=13 format=3 uid="uid://bu0dh5ct387xu"] [gd_scene load_steps=15 format=3 uid="uid://bu0dh5ct387xu"]
[ext_resource type="PackedScene" uid="uid://dd3yegl1xo44m" path="res://scenes/templates/level_template.tscn" id="1_vdv3d"] [ext_resource type="PackedScene" uid="uid://dd3yegl1xo44m" path="res://scenes/templates/level_template.tscn" id="1_vdv3d"]
[ext_resource type="Resource" uid="uid://br3364jty1j0i" path="res://resources/levels/test_level_for_execution.tres" id="2_bpfdr"] [ext_resource type="Resource" uid="uid://br3364jty1j0i" path="res://resources/levels/test_level_for_execution.tres" id="2_bpfdr"]
@ -188,9 +188,67 @@ tracks/4/keys = {
"values": [false] "values": [false]
} }
[sub_resource type="Animation" id="Animation_pqj5f"]
resource_name = "HW_Sequence"
length = 6.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("GUI/ReadySetPlant:text")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": ["huge_wave"]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("GUI/ReadySetPlant:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 6),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [true, false]
}
[sub_resource type="Animation" id="Animation_lrlbv"]
resource_name = "FW_Sequence"
length = 3.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("GUI/ReadySetPlant:visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 3),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [true, false]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("GUI/ReadySetPlant:text")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": ["final_wave"]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_yw4uo"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_yw4uo"]
_data = { _data = {
&"CYS_Sequence": SubResource("Animation_vbgdr"), &"CYS_Sequence": SubResource("Animation_vbgdr"),
&"FW_Sequence": SubResource("Animation_lrlbv"),
&"HW_Sequence": SubResource("Animation_pqj5f"),
&"PG_Sequence": SubResource("Animation_8ajos"), &"PG_Sequence": SubResource("Animation_8ajos"),
&"RESET": SubResource("Animation_yw4uo") &"RESET": SubResource("Animation_yw4uo")
} }
@ -260,6 +318,7 @@ wait_time = 2.5
script = ExtResource("5_vbgdr") script = ExtResource("5_vbgdr")
rowSpawner = NodePath("../RowSpawner") rowSpawner = NodePath("../RowSpawner")
waveTimer = NodePath("WaveTimer") waveTimer = NodePath("WaveTimer")
approachNotificationTime = 5.0
[node name="WaveTimer" type="Timer" parent="LevelRunner" index="0"] [node name="WaveTimer" type="Timer" parent="LevelRunner" index="0"]
one_shot = true one_shot = true
@ -271,6 +330,8 @@ fadeAnimation = NodePath("../GameOverScreen/AnimationPlayer")
[node name="CollisionShape2D" parent="Checkbox" index="0"] [node name="CollisionShape2D" parent="Checkbox" index="0"]
shape = SubResource("WorldBoundaryShape2D_yw4uo") shape = SubResource("WorldBoundaryShape2D_yw4uo")
[connection signal="FinalWaveInitiated" from="LevelRunner" to="MainAnimationPlayer" method="play" binds= ["FW_Sequence"]]
[connection signal="HugeWaveApproachingCallback" from="LevelRunner" to="MainAnimationPlayer" method="play" binds= ["HW_Sequence"]]
[connection signal="HugeWaveInitiated" from="LevelRunner" to="GUI/WaveProgress" method="OnHugeWaveApproached"] [connection signal="HugeWaveInitiated" from="LevelRunner" to="GUI/WaveProgress" method="OnHugeWaveApproached"]
[connection signal="ResourceChanged" from="LevelRunner" to="GUI/WaveProgress" method="SetLevelData"] [connection signal="ResourceChanged" from="LevelRunner" to="GUI/WaveProgress" method="SetLevelData"]
[connection signal="WaveChanged" from="LevelRunner" to="GUI/WaveProgress" method="OnWaveChanged"] [connection signal="WaveChanged" from="LevelRunner" to="GUI/WaveProgress" method="OnWaveChanged"]

View file

@ -15,6 +15,7 @@ public partial class LevelRunner : Node
[Signal] public delegate void WaveChangedEventHandler(int to); [Signal] public delegate void WaveChangedEventHandler(int to);
[Signal] public delegate void HugeWaveApproachingCallbackEventHandler(); [Signal] public delegate void HugeWaveApproachingCallbackEventHandler();
[Signal] public delegate void HugeWaveInitiatedEventHandler(int waveNumber); [Signal] public delegate void HugeWaveInitiatedEventHandler(int waveNumber);
[Signal] public delegate void FinalWaveInitiatedEventHandler();
public override void _Ready() public override void _Ready()
{ {
@ -23,6 +24,7 @@ public partial class LevelRunner : Node
public override void _Process(double delta) public override void _Process(double delta)
{ {
if (waveIndex == resource.waves.Count - 1) return;
if (waveTimer.TimeLeft < approachNotificationTime && resource.waves[waveIndex + 1].isHugeWave && hugeWaveApproaching == false) if (waveTimer.TimeLeft < approachNotificationTime && resource.waves[waveIndex + 1].isHugeWave && hugeWaveApproaching == false)
{ {
hugeWaveApproaching = true; hugeWaveApproaching = true;
@ -48,7 +50,11 @@ public partial class LevelRunner : Node
if (resource.waves[waveIndex].isHugeWave) EmitSignal(SignalName.HugeWaveInitiated, waveIndex); if (resource.waves[waveIndex].isHugeWave) EmitSignal(SignalName.HugeWaveInitiated, waveIndex);
rowSpawner.Add(resource.waves[waveIndex].zombiesOrdered); rowSpawner.Add(resource.waves[waveIndex].zombiesOrdered);
if (waveIndex == resource.waves.Count - 1) return; if (waveIndex == resource.waves.Count - 1)
{
EmitSignal(SignalName.FinalWaveInitiated);
return;
}
waveTimer.WaitTime = resource.waves[waveIndex].customWaveDelay > 0 ? resource.waves[waveIndex].customWaveDelay : resource.standardWaveDelay; waveTimer.WaitTime = resource.waves[waveIndex].customWaveDelay > 0 ? resource.waves[waveIndex].customWaveDelay : resource.standardWaveDelay;
waveTimer.Start(); waveTimer.Start();

View file

@ -50,3 +50,8 @@ sfx,SFX,Звуки
music,Music,Музыка music,Music,Музыка
paused,Paused,Игра на паузе paused,Paused,Игра на паузе
splash,Splash,Сплэш splash,Splash,Сплэш
huge_wave,[font_size=32][color=red][outline_color=black][outline_size=8]The big wave of zombies is approaching![/outline_size][/outline_color][/color][/font_size],[font_size=32][color=red][outline_color=black][outline_size=8]Большая волна зомби приближается![/outline_size][/outline_color][/color][/font_size]
final_wave,[font_size=48][color=red][outline_color=black][outline_size=8]FINAL WAVE[/outline_size][/outline_color][/color][/font_size],[font_size=48][color=red][outline_color=black][outline_size=8]ПОСЛЕДНЯЯ ВОЛНА[/outline_size][/outline_color][/color][/font_size]
ready,[font_size=32][color=red][outline_color=black][outline_size=8]Ready[/outline_size][/outline_color][/color][/font_size],[font_size=32][color=red][outline_color=black][outline_size=8]На старт[/outline_size][/outline_color][/color][/font_size]
set,[font_size=32][color=red][outline_color=black][outline_size=8]Set[/outline_size][/outline_color][/color][/font_size],[font_size=32][color=red][outline_color=black][outline_size=8]Внимание[/outline_size][/outline_color][/color][/font_size]
plant,[font_size=48][color=red][outline_color=black][outline_size=8]PLANT![/outline_size][/outline_color][/color][/font_size],[font_size=48][color=red][outline_color=black][outline_size=8]САЖАЙ![/outline_size][/outline_color][/color][/font_size]

1 keys en ru
50
51
52
53
54
55
56
57

Binary file not shown.

Binary file not shown.