From 5d4ae478dced8e587f08293cdb1c63b6243573a1 Mon Sep 17 00:00:00 2001 From: Rendo Date: Thu, 17 Jul 2025 20:57:18 +0500 Subject: [PATCH] pause now is not mandatory --- scenes/templates/standard_players_house.tscn | 8 +++++++- scripts/Entity.cs | 4 ++-- scripts/level/GameTimer.cs | 17 +++++++++++++++++ scripts/level/GameTimer.cs.uid | 1 + scripts/level/LevelRunner.cs | 1 + scripts/level/RuntimeLevelData.cs | 1 - scripts/level/SunSpawner.cs | 7 +++---- 7 files changed, 31 insertions(+), 8 deletions(-) create mode 100644 scripts/level/GameTimer.cs create mode 100644 scripts/level/GameTimer.cs.uid diff --git a/scenes/templates/standard_players_house.tscn b/scenes/templates/standard_players_house.tscn index 1c015cc..27ba02b 100644 --- a/scenes/templates/standard_players_house.tscn +++ b/scenes/templates/standard_players_house.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=15 format=3 uid="uid://bu0dh5ct387xu"] +[gd_scene load_steps=16 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="Texture2D" uid="uid://b0tb2hjum40aw" path="res://assets/sprites/background_summer.png" id="3_lsqv3"] +[ext_resource type="Script" uid="uid://1lkhoh43h86m" path="res://scripts/level/GameTimer.cs" id="4_8ajos"] [ext_resource type="Script" uid="uid://84gvlkflxdhk" path="res://scripts/level/zombe_spawners/RowSpawner.cs" id="4_kn7hc"] [ext_resource type="Script" uid="uid://puqxp2xeg1r2" path="res://scripts/level/LevelRunner.cs" id="5_vbgdr"] [ext_resource type="PackedScene" uid="uid://c668qnmmpli5r" path="res://scenes/gui/wave_progress.tscn" id="6_yw4uo"] @@ -307,6 +308,10 @@ vertical_alignment = 1 [node name="CollisionShape2D" parent="GameOverZombie/LoseZone/Hitbox" index="0"] shape = SubResource("WorldBoundaryShape2D_vbgdr") +[node name="Timer" parent="SunSpawner" index="0"] +autostart = false +script = ExtResource("4_8ajos") + [node name="RowSpawner" type="Node2D" parent="." index="14" node_paths=PackedStringArray("delayTimer", "runner")] position = Vector2(837, 76) script = ExtResource("4_kn7hc") @@ -337,6 +342,7 @@ fadeAnimation = NodePath("../GameOverScreen/AnimationPlayer") [node name="CollisionShape2D" parent="Checkbox" index="0"] shape = SubResource("WorldBoundaryShape2D_yw4uo") +[connection signal="OnLevelStateChanged" from="Data" to="SunSpawner/Timer" method="OnLevelStateChanged"] [connection signal="OnLevelStateChanged" from="Data" to="ZombieLevelPrevewer" method="OnLevelStateChanged"] [connection signal="FinalWaveInitiated" from="LevelRunner" to="MainAnimationPlayer" method="play" binds= ["FW_Sequence"]] [connection signal="HugeWaveApproachingCallback" from="LevelRunner" to="MainAnimationPlayer" method="play" binds= ["HW_Sequence"]] diff --git a/scripts/Entity.cs b/scripts/Entity.cs index eac10c9..1fd8cd2 100644 --- a/scripts/Entity.cs +++ b/scripts/Entity.cs @@ -49,9 +49,9 @@ public partial class Entity : Node2D public virtual void DisableBrain() { if (_player != null) - _player.ProcessMode = ProcessModeEnum.Always; + _player.ProcessMode = ProcessModeEnum.Pausable; if (_tree != null) - _tree.ProcessMode = ProcessModeEnum.Always; + _tree.ProcessMode = ProcessModeEnum.Pausable; ProcessMode = ProcessModeEnum.Disabled; } diff --git a/scripts/level/GameTimer.cs b/scripts/level/GameTimer.cs new file mode 100644 index 0000000..794988a --- /dev/null +++ b/scripts/level/GameTimer.cs @@ -0,0 +1,17 @@ +using Godot; +using Newlon.Components.Level; + +public partial class GameTimer : Timer +{ + public void OnLevelStateChanged(RuntimeLevelData.LevelStates state) + { + if (state == RuntimeLevelData.LevelStates.Game) + { + Start(); + } + else + { + Stop(); + } + } +} diff --git a/scripts/level/GameTimer.cs.uid b/scripts/level/GameTimer.cs.uid new file mode 100644 index 0000000..453d99b --- /dev/null +++ b/scripts/level/GameTimer.cs.uid @@ -0,0 +1 @@ +uid://1lkhoh43h86m diff --git a/scripts/level/LevelRunner.cs b/scripts/level/LevelRunner.cs index 639cc13..f049e69 100644 --- a/scripts/level/LevelRunner.cs +++ b/scripts/level/LevelRunner.cs @@ -29,6 +29,7 @@ public partial class LevelRunner : Node public override void _Process(double delta) { + if (RuntimeLevelData.Instance.GetLevelState() != RuntimeLevelData.LevelStates.Game) return; if (waveIndex == resource.waves.Count - 1) return; if (waveTimer.TimeLeft < approachNotificationTime && resource.waves[waveIndex + 1].isHugeWave && hugeWaveApproaching == false) { diff --git a/scripts/level/RuntimeLevelData.cs b/scripts/level/RuntimeLevelData.cs index b6a023c..8c65fef 100644 --- a/scripts/level/RuntimeLevelData.cs +++ b/scripts/level/RuntimeLevelData.cs @@ -33,7 +33,6 @@ public partial class RuntimeLevelData : Node public override void _Ready() { Instance = this; - GetTree().Paused = true; Engine.TimeScale = 1.0; SetLevelState(LevelStates.ChooseYourSeeds); } diff --git a/scripts/level/SunSpawner.cs b/scripts/level/SunSpawner.cs index 2f68ddd..f83b721 100644 --- a/scripts/level/SunSpawner.cs +++ b/scripts/level/SunSpawner.cs @@ -8,13 +8,12 @@ public partial class SunSpawner : Node public int MinSun = 25; [Export] public int MaxSun = 25; - [Export] private PackedScene SunScene; public void Spawn() { - float x = GD.Randf()*9*FieldParams.TileWidth; + float x = GD.Randf() * 9 * FieldParams.TileWidth; uint y = GD.Randi() % 5; var sun = SunScene.Instantiate(); @@ -23,7 +22,7 @@ public partial class SunSpawner : Node sun.GlobalPosition = new Vector2(FieldParams.LeftFieldBoundary.X + x, -90); var moveTween = CreateTween(); - moveTween.TweenProperty(sun,"global_position", new Vector2(FieldParams.LeftFieldBoundary.X + x, - FieldParams.LeftFieldBoundary.Y + FieldParams.TileHeight * y + FieldParams.TileHeight/2.0f),9-y); + moveTween.TweenProperty(sun, "global_position", new Vector2(FieldParams.LeftFieldBoundary.X + x, + FieldParams.LeftFieldBoundary.Y + FieldParams.TileHeight * y + FieldParams.TileHeight / 2.0f), 9 - y); } }