cirnogodot/Scripts/Activables/ScriptableBase.cs
2025-02-16 16:26:05 +01:00

70 lines
No EOL
1.7 KiB
C#

using System;
using Cirno.Scripts.Resources.Events;
using Godot;
using Godot.Collections;
namespace Cirno.Scripts.Activables;
public partial class ScriptableBase : Node2D, IActivable
{
[Export] public Array<EventResource> Events;
private EventResource CurrentEvent => Events[_currentEventIndex];
private int _currentEventIndex = 0;
private bool _started = false;
public override void _Ready()
{
foreach (var item in Events)
{
item.Init(this);
}
}
public void Start()
{
_started = true;
StartEvent(CurrentEvent);
}
private void StartEvent(EventResource eventResource)
{
eventResource.Start(this);
}
public override void _Process(double delta)
{
if (!_started) return;
CurrentEvent.UpdateEvent(delta);
if (!CurrentEvent.WaitForCompletion || CurrentEvent.IsComplete())
{
// This loops
//_currentEventIndex = (_currentEventIndex + 1) % Events.Count;
_currentEventIndex++;
if (_currentEventIndex >= Events.Count)
{
// It's over
_started = false;
_currentEventIndex = 0;
return;
}
CurrentEvent.Start(this);
}
// if (_currentHealth <= CurrentPhase.Threshold && currentPhaseIndex + 1 < Phases.Count)
// {
// currentPhaseIndex++;
// _bossHud.SpellCardName = CurrentPhase.PhaseName;
// StartPhase(CurrentPhase);
// }
}
public void Activate(ActivationType activationType = ActivationType.Toggle)
{
Start();
}
}