cirnogodot/Scripts/Actors/Boss.cs
2025-02-05 19:41:49 +01:00

54 lines
No EOL
1.2 KiB
C#

using Cirno.Scripts.Resources;
using Godot;
using Godot.Collections;
namespace Cirno.Scripts.Actors;
public partial class Boss : Enemy
{
[Export] private Array<BossPhase> Phases;
private int currentPhaseIndex = 0;
private GameManager _gameManager;
private Vector2 _homePosition;
public Vector2 HomePosition => _homePosition;
public GameManager GameManager => _gameManager;
private BossPhase CurrentPhase => Phases[currentPhaseIndex];
public override void _Ready()
{
base._Ready();
_gameManager = GetNode<GameManager>("/root/GameScene");
_homePosition = this.GlobalPosition;
StartPhase(CurrentPhase);
}
public override void _Process(double delta)
{
base._Process(delta);
CurrentPhase.UpdatePhase(delta);
if (_currentHealth <= CurrentPhase.Threshold && currentPhaseIndex + 1 < Phases.Count)
{
currentPhaseIndex++;
StartPhase(CurrentPhase);
}
}
private void StartPhase(BossPhase phase)
{
phase.Start(this);
}
public void TakeDamage(int amount)
{
_currentHealth -= amount;
}
}