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 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(); } }