mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-01 09:35:34 +00:00
Broken graph editor
This commit is contained in:
parent
6215008db7
commit
f996513dca
16 changed files with 1033 additions and 12 deletions
|
|
@ -1,5 +1,6 @@
|
|||
using Cirno.Scripts.Actors;
|
||||
using Cirno.Scripts.AttackPatterns;
|
||||
using Cirno.Scripts.Resources.BulletScripts;
|
||||
using Godot;
|
||||
using Godot.Collections;
|
||||
|
||||
|
|
@ -12,23 +13,57 @@ public partial class BossPhase : Resource
|
|||
[Export] public string PhaseName = string.Empty;
|
||||
[Export] public int Threshold;
|
||||
[Export] public bool PlayAnimation;
|
||||
[Export] public BulletScript3D BulletScript3D;
|
||||
|
||||
// Legacy path kept for backwards compatibility with existing phase compositions.
|
||||
// TODO: Migrate compositions to BulletScript3D-first workflows where possible.
|
||||
[Export] public Array<AttackPattern> Patterns;
|
||||
|
||||
private int currentPatternIndex = 0;
|
||||
private double patternTimer;
|
||||
private bool _useBulletScript3D;
|
||||
|
||||
private IPatternMachine _patternMachine;
|
||||
|
||||
private BulletScript3D.BulletScriptMachine _bulletScriptMachine;
|
||||
|
||||
public void Start(Node boss)
|
||||
{
|
||||
_useBulletScript3D = BulletScript3D is not null;
|
||||
patternTimer = 0;
|
||||
|
||||
if (_useBulletScript3D)
|
||||
{
|
||||
_bulletScriptMachine = BulletScript3D.Make(boss);
|
||||
_bulletScriptMachine.Start();
|
||||
_patternMachine = null;
|
||||
return;
|
||||
}
|
||||
|
||||
if (Patterns is null || Patterns.Count == 0)
|
||||
{
|
||||
GD.PushWarning($"BossPhase '{PhaseName}' has no legacy Patterns and no BulletScript3D assigned.");
|
||||
_patternMachine = null;
|
||||
return;
|
||||
}
|
||||
|
||||
currentPatternIndex = 0;
|
||||
_patternMachine = Patterns[currentPatternIndex].MakeMachine(boss);
|
||||
_patternMachine.Start();
|
||||
//Patterns[currentPatternIndex].Start(boss);
|
||||
}
|
||||
|
||||
public void UpdatePhase(double delta)
|
||||
{
|
||||
if (_useBulletScript3D)
|
||||
{
|
||||
_bulletScriptMachine?.UpdatePhase(delta);
|
||||
return;
|
||||
}
|
||||
|
||||
if (_patternMachine is null || Patterns is null || Patterns.Count == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
patternTimer += delta;
|
||||
var currentPattern = Patterns[currentPatternIndex];
|
||||
|
||||
|
|
@ -40,7 +75,6 @@ public partial class BossPhase : Resource
|
|||
var oldParent = _patternMachine.Parent;
|
||||
_patternMachine = Patterns[currentPatternIndex].MakeMachine(oldParent);
|
||||
_patternMachine.Start();
|
||||
//_patternMachine.Start(currentPattern.Parent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -9,22 +9,27 @@ namespace Cirno.Scripts.Resources.BulletScripts;
|
|||
public partial class BulletScript3D : Resource
|
||||
{
|
||||
[Export]
|
||||
public Array<AttackPattern> Patterns { get; private set; }
|
||||
|
||||
public string Title { get; set; } = string.Empty;
|
||||
[Export]
|
||||
public string Description { get; set; } = string.Empty;
|
||||
|
||||
[Export]
|
||||
public Array<AttackPattern> Patterns { get; set; } = new Array<AttackPattern>();
|
||||
|
||||
public BulletScriptMachine Make(Node parent)
|
||||
{
|
||||
return new BulletScriptMachine(parent, Patterns);
|
||||
}
|
||||
|
||||
|
||||
public class BulletScriptMachine(Node parent, Array<AttackPattern> patterns)
|
||||
{
|
||||
private int _currentPatternIndex = 0;
|
||||
//private double _patternTimer;
|
||||
|
||||
|
||||
private AttackPattern CurrentPattern => patterns[_currentPatternIndex];
|
||||
|
||||
private IPatternMachine _currentPatternMachine;
|
||||
|
||||
|
||||
public void Start()
|
||||
{
|
||||
if (patterns.Count == 0) return;
|
||||
|
|
@ -33,11 +38,11 @@ public partial class BulletScript3D : Resource
|
|||
_currentPatternMachine = CurrentPattern.MakeMachine(parent);
|
||||
_currentPatternMachine.Start();
|
||||
}
|
||||
|
||||
|
||||
public void UpdatePhase(double delta)
|
||||
{
|
||||
//_patternTimer += delta;
|
||||
|
||||
|
||||
_currentPatternMachine.UpdatePattern(delta);
|
||||
//CurrentPattern.UpdatePattern(delta);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue