2025-02-05 19:41:49 +01:00
|
|
|
|
using Godot;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using Cirno.Scripts.Actors;
|
|
|
|
|
|
using Godot.Collections;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Cirno.Scripts.Resources;
|
|
|
|
|
|
|
|
|
|
|
|
[GlobalClass]
|
|
|
|
|
|
public partial class PatternGroup : AttackPattern
|
|
|
|
|
|
{
|
|
|
|
|
|
[Export] private Array<AttackPattern> patterns;
|
|
|
|
|
|
private int currentPatternIndex = 0;
|
|
|
|
|
|
|
2025-03-15 11:44:30 +01:00
|
|
|
|
public override void Start(Node2D parent)
|
2025-02-05 19:41:49 +01:00
|
|
|
|
{
|
2025-03-15 11:44:30 +01:00
|
|
|
|
Parent = parent;
|
2025-02-05 19:41:49 +01:00
|
|
|
|
currentPatternIndex = 0;
|
2025-03-15 11:44:30 +01:00
|
|
|
|
patterns[currentPatternIndex].Start(parent);
|
2025-02-05 19:41:49 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override void UpdatePattern(double delta)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (currentPatternIndex < patterns.Count)
|
|
|
|
|
|
{
|
|
|
|
|
|
patterns[currentPatternIndex].UpdatePattern(delta);
|
|
|
|
|
|
|
|
|
|
|
|
if (!patterns[currentPatternIndex].WaitForCompletion || patterns[currentPatternIndex].IsComplete())
|
|
|
|
|
|
{
|
|
|
|
|
|
currentPatternIndex++;
|
|
|
|
|
|
if (currentPatternIndex < patterns.Count)
|
|
|
|
|
|
{
|
2025-03-15 11:44:30 +01:00
|
|
|
|
patterns[currentPatternIndex].Start(Parent);
|
2025-02-05 19:41:49 +01:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override bool IsComplete()
|
|
|
|
|
|
{
|
|
|
|
|
|
return currentPatternIndex >= patterns.Count;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|