using Godot; using System; using System.Collections.Generic; using System.Linq; public partial class wavecontroller : Node2D { public int CurrWave = 0; private Node _friendlyNode; private Node _enemyNode; private player _playerNode; public float _aiStatModifier = 1f; private List _enemySpawns; private List _friendlySpawns; private PackedScene _aiShipScene; private string _aiShipPath = "res://scenes/ai_fighter.tscn"; public override void _Ready() { _friendlyNode = GetNode("Ships/Friendly"); _enemyNode = GetNode("Ships/Enemy"); _playerNode = GetNode("Ships/Friendly/Player"); _enemySpawns = GetNode("Spawns/Enemy").GetChildren().OfType().ToList(); _friendlySpawns = GetNode("Spawns/Friendly").GetChildren().OfType().ToList(); _aiShipScene = GD.Load(_aiShipPath); } public void StartWave() { if (_playerNode.Health > _playerNode.MaxHealth) _playerNode.Health = 100; if (CurrWave % 5 != 0) { // normal wave foreach (var spawn in _enemySpawns) // spawn enemies { //var enemy = new ai_fighter(); Random rand = new Random(); var enemy = _aiShipScene.Instantiate(); enemy.Faction = ship.ShipFaction.ENEMY; enemy.Type = (ship.ShipType)rand.Next(0, 3); enemy.GlobalPosition = spawn.GlobalPosition; enemy.StatModifier = _aiStatModifier; enemy.Scale = new Vector2(0.6f, 0.6f); _enemyNode.AddChild(enemy); } } if ((CurrWave - 1) % 5 == 0) { GD.Print("attempting to spawn friendlies"); foreach (var spawn in _friendlySpawns) { Random rand = new Random(); var friendly = _aiShipScene.Instantiate(); friendly.Faction = ship.ShipFaction.FRIENDLY; friendly.Type = (ship.ShipType)rand.Next(0, 3); friendly.GlobalPosition = spawn.GlobalPosition; friendly.StatModifier = (_aiStatModifier) * 1.1f; // make friendlies slightly stronger friendly.Scale = new Vector2(0.6f, 0.6f); _friendlyNode.AddChild(friendly); } } else if (CurrWave % 5 == 0) // ace/boss wave { return; } } }