Enhanced bullet scripts

This commit is contained in:
Marco 2025-09-24 17:47:15 +02:00
commit c1f83736f0
7 changed files with 112 additions and 52 deletions

View file

@ -9,9 +9,11 @@ namespace Cirno.Scripts.Resources.ScriptableBullets;
[Tool]
public partial class ParallelPatternGroup : AttackPattern
{
[Export(PropertyHint.None, "suffix:s")] public float Duration { get; private set; } = 10f;
[Export(PropertyHint.None, "suffix:s")]
public float Duration { get; private set; } = 10f;
[Export] public Array<AttackPattern> Patterns { get; private set; } = [];
public override IPatternMachine MakeMachine(Node parent)
{
return new ParallelPatternGroupMachine(this, parent);
@ -21,13 +23,13 @@ public partial class ParallelPatternGroup : AttackPattern
{
public Node Parent => parent;
//private int _currentPatternIndex = 0;
//private AttackPattern CurrentPattern => patternGroup.Patterns[_currentPatternIndex];
private double _progressTimer = 0;
private List<IPatternMachine> _patternMachines = [];
public void Start()
{
//_currentPatternIndex = 0;
@ -48,19 +50,20 @@ public partial class ParallelPatternGroup : AttackPattern
if (patternMachine.IsComplete()) continue;
patternMachine.UpdatePattern(delta);
}
}
public bool IsComplete()
{
if (patternGroup.WaitForCompletion)
{
return _patternMachines.TrueForAll(x => x.IsComplete()) && _progressTimer >= patternGroup.Duration;
return _patternMachines.TrueForAll(x => x.IsComplete()) &&
(patternGroup.Duration > -1 &&
_progressTimer >= patternGroup.Duration);
}
return _patternMachines.TrueForAll(x => x.IsComplete()) || _progressTimer >= patternGroup.Duration;
return _patternMachines.TrueForAll(x => x.IsComplete()) ||
(patternGroup.Duration > -1 &&
_progressTimer >= patternGroup.Duration);
}
}
}
}