using Godot; using System; public partial class Commander : Sprite2D { [Signal] public delegate void DeathEventHandler(Commander THIS); [Signal] public delegate void ActionsUpEventHandler(); public int _health = 10, _actionsMax = 1, _actions; public PackedScene _attackScene = GD.Load("res://Attack.tscn"); public Attack _attack; public PlayerController _playerController; public override void _Process(double delta) { base._Process(delta); if (_attack != null) { if (_attack.Position.Y > GetViewportRect().Size.Y + 50) { _attack.QueueFree(); _attack = null; EmitSignal(SignalName.ActionsUp); } } } public void LoadAttack(Vector2 OFFSET) { if (_attack == null) { _attack = _attackScene.Instantiate(); _attack.Position = OFFSET; _attack._commanderOwner = this; _attack.GravityScale = 0; AddChild(_attack); } } public void TakeDamage(int DAMAGE, Enemy ATTACKER) { _health -= DAMAGE; if (_health <= 0) { EmitSignal(SignalName.Death, this); } } public void ShootCurrentAttack(Vector2 FORCE){ _attack.Shoot(FORCE); _actions--; } public void UnloadAttack() { _attack.QueueFree(); } }