Remade resource script system

This commit is contained in:
MaddoScientisto 2025-03-15 17:17:30 +01:00
commit 029128c8b8
17 changed files with 576 additions and 386 deletions

View file

@ -1,6 +1,7 @@
using Godot;
using System.Collections.Generic;
using Cirno.Scripts.Actors;
using Cirno.Scripts.AttackPatterns;
using Godot.Collections;
namespace Cirno.Scripts.Resources;
@ -9,34 +10,47 @@ namespace Cirno.Scripts.Resources;
public partial class PatternGroup : AttackPattern
{
[Export] private Array<AttackPattern> patterns;
private int currentPatternIndex = 0;
public override void Start(Node2D parent)
public override IPatternMachine MakeMachine(Node2D parent)
{
Parent = parent;
currentPatternIndex = 0;
patterns[currentPatternIndex].Start(parent);
return new PatternGroupMachine(this, parent);
}
public override void UpdatePattern(double delta)
public class PatternGroupMachine(PatternGroup pattern, Node2D parent) : IPatternMachine
{
if (currentPatternIndex < patterns.Count)
public Node2D Parent => parent;
private int currentPatternIndex = 0;
IPatternMachine _patternMachine;
public void Start()
{
patterns[currentPatternIndex].UpdatePattern(delta);
currentPatternIndex = 0;
_patternMachine = pattern.patterns[currentPatternIndex].MakeMachine(parent);
_patternMachine.Start();
}
if (!patterns[currentPatternIndex].WaitForCompletion || patterns[currentPatternIndex].IsComplete())
public void UpdatePattern(double delta)
{
if (currentPatternIndex < pattern.patterns.Count)
{
currentPatternIndex++;
if (currentPatternIndex < patterns.Count)
_patternMachine.UpdatePattern(delta);
if (!pattern.patterns[currentPatternIndex].WaitForCompletion || _patternMachine.IsComplete())
{
patterns[currentPatternIndex].Start(Parent);
currentPatternIndex++;
if (currentPatternIndex < pattern.patterns.Count)
{
_patternMachine.Start();
}
}
}
}
}
public override bool IsComplete()
{
return currentPatternIndex >= patterns.Count;
public bool IsComplete()
{
return currentPatternIndex >= pattern.patterns.Count;
}
}
}