wave behavior and fixed explosion

This commit is contained in:
2026-05-16 19:48:48 +02:00
parent b3ae3e37ea
commit 1898d91a28
27 changed files with 355 additions and 21 deletions

View File

@@ -13,7 +13,12 @@ using Movementtests.systems;
typeof(IAutoConnect),
typeof(IProvider)
)]
public partial class MainSceneTemplate : Node3D, IProvide<InventoryManager>, IProvide<TagsManager>, IProvide<CuesManager>, IProvide<TokenManager>
public partial class MainSceneTemplate : Node3D,
IProvide<InventoryManager>,
IProvide<TagsManager>,
IProvide<CuesManager>,
IProvide<TokenManager>,
IProvide<WaveManager>
{
public override void _Notification(int what) => this.Notify(what);
@@ -32,6 +37,7 @@ public partial class MainSceneTemplate : Node3D, IProvide<InventoryManager>, IPr
[Export] public WeaponInventory? InitialWeaponInventory { get; set; }
[Export] public int MaxNumberOfProjectiles { get; set; } = 3;
[Export] public WaveContent? WaveContent { get; set; }
#endregion
@@ -44,6 +50,9 @@ public partial class MainSceneTemplate : Node3D, IProvide<InventoryManager>, IPr
public required TokenManager TokenManager { get; set; }
TokenManager IProvide<TokenManager>.Value() => TokenManager;
public required WaveManager WaveManager { get; set; }
WaveManager IProvide<WaveManager>.Value() => WaveManager;
public void OnReady()
{
PlayerFellPlane.BodyEntered += StartResetPlayerAnimation;
@@ -57,10 +66,21 @@ public partial class MainSceneTemplate : Node3D, IProvide<InventoryManager>, IPr
TokenManager = new TokenManager();
TokenManager.Initialize(MaxNumberOfProjectiles);
AddChild(TokenManager);
WaveManager = new WaveManager();
if (WaveContent != null)
WaveManager.InitializeFromResource(WaveContent);
AddChild(WaveManager);
this.Provide();
}
public void OnProvided()
{
if (WaveContent != null)
GetTree().CreateTimer(3).Timeout += WaveManager.StartWaves;
}
public void ResetPlayerPosition()
{
if (Respawnabble == null || PlayerRespawnMarker == null) throw new Exception("Player or respawn marker is null");

View File

@@ -1,10 +1,34 @@
[gd_scene format=3 uid="uid://b2g2gys4dopmn"]
[ext_resource type="PackedScene" uid="uid://55wehh6xombr" path="res://maps/_templates/main_scene_template.tscn" id="1_pxwoj"]
[ext_resource type="Resource" uid="uid://dm71u0ryn0w1o" path="res://managers/Wave/resources/one_of_each_wave.tres" id="2_a6jwd"]
[ext_resource type="PackedScene" uid="uid://y77cdg7gg3y7" path="res://maps/levels/_arenas/playtest_1.tscn" id="2_apgv3"]
[ext_resource type="Material" uid="uid://31aulub2nqov" path="res://assets/materials/greybox/m_greybox.tres" id="3_452yy"]
[ext_resource type="Script" uid="uid://rhdkfi7nuvu1" path="res://managers/Wave/EnemyDescription.cs" id="3_a6jwd"]
[ext_resource type="Resource" uid="uid://cfyafss8ncbhh" path="res://managers/Wave/resources/flying_enemy_desc.tres" id="3_re07p"]
[ext_resource type="PackedScene" uid="uid://c305mfrtumcyq" path="res://scenes/spawners/spawner.tscn" id="4_6q0yp"]
[ext_resource type="Resource" uid="uid://3clksludry8g" path="res://managers/Wave/resources/grounded_enemy_desc.tres" id="4_7ijxg"]
[ext_resource type="Script" uid="uid://cr8wog705ane6" path="res://managers/Wave/SingleWave.cs" id="5_7ijxg"]
[ext_resource type="Resource" uid="uid://lnturc3ibr5c" path="res://managers/Wave/resources/projectile_enemy_desc.tres" id="5_hm1dp"]
[ext_resource type="Script" uid="uid://dijmv0wqc1xuv" path="res://managers/Wave/WaveContent.cs" id="6_hm1dp"]
[sub_resource type="Resource" id="Resource_wllel"]
script = ExtResource("5_7ijxg")
EnemiesToSpawn = Dictionary[ExtResource("3_a6jwd"), int]({
ExtResource("4_7ijxg"): 4,
ExtResource("5_hm1dp"): 4,
ExtResource("3_re07p"): 4
})
metadata/_custom_type_script = "uid://cr8wog705ane6"
[sub_resource type="Resource" id="Resource_e88eg"]
script = ExtResource("6_hm1dp")
Waves = Array[Object]([SubResource("Resource_wllel"), ExtResource("2_a6jwd")])
metadata/_custom_type_script = "uid://dijmv0wqc1xuv"
[node name="Main" unique_id=955321579 instance=ExtResource("1_pxwoj")]
MaxNumberOfProjectiles = 2
WaveContent = SubResource("Resource_e88eg")
[node name="PlaytestArena" parent="." index="12" unique_id=664535670 instance=ExtResource("2_apgv3")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, 9.5)
@@ -14,3 +38,33 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 8.75, 2.25)
use_collision = true
size = Vector3(1, 17.5, 9.5)
material = ExtResource("3_452yy")
[node name="Spawner" parent="." index="13" unique_id=580981173 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12, 1, -4)
SupportedEnemyTypes = Array[int]([0])
Target = NodePath("../Player")
IsActiveOnStart = false
[node name="Spawner2" parent="." index="14" unique_id=1982641431 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.5, 1, -4)
SupportedEnemyTypes = Array[int]([0])
Target = NodePath("../Player")
IsActiveOnStart = false
[node name="Spawner3" parent="." index="15" unique_id=1743153579 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 1, -4)
SupportedEnemyTypes = Array[int]([1])
Target = NodePath("../Player")
IsActiveOnStart = false
[node name="Spawner4" parent="." index="16" unique_id=536869732 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 1, -4)
SupportedEnemyTypes = Array[int]([1, 0])
Target = NodePath("../Player")
IsActiveOnStart = false
[node name="Spawner5" parent="." index="17" unique_id=275129467 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 1, -4)
SupportedEnemyTypes = Array[int]([1, 0])
Target = NodePath("../Player")
IsActiveOnStart = false