using Godot; public partial class BasicEnemy : Node3D { [Export] private HealthPoints _hp; protected GameManager _gameManager; public override void _Ready() { _gameManager = GetTree().Root.GetNode("Main/GameManager"); } public void OnEnemyHit(Node3D node) { if (node is Character) return; _hp.TakeDamage(1); if (_hp.CurrentHP <= 0) { var currentLevel = (Level)GetTree().GetFirstNodeInGroup("Level"); currentLevel.OnEnemyDefeated(this); QueueFree(); } } public void OnPlayerHit(Node3D node) { if (node is Character character && character.HasMethod(Character.MethodName.OnHit)) { GD.Print("Collision with player at " + node.GlobalPosition + "by " + Name); GD.Print("Player hit: " + character.Name); character.Call(Character.MethodName.OnHit, this); } } }