Spellcard test map

This commit is contained in:
Marco 2025-03-24 10:26:13 +01:00
commit dc8777c3d9
9 changed files with 163 additions and 43 deletions

View file

@ -10,11 +10,11 @@ public partial class ActorSpawner : Node2D, IActivable
[Export] public bool WaitForActorDeath { get; private set; } = true;
public Actor SpawnedActor { get; private set; }
public Node2D SpawnedActor { get; private set; }
public virtual void Spawn()
{
SpawnedActor = this.CreateSibling<Actor>(ActorPrefab);
SpawnedActor = this.CreateSibling<Node2D>(ActorPrefab);
}
public bool Activate(ActivationType activationType = ActivationType.Toggle)

View file

@ -12,7 +12,7 @@ public partial class Boss : Enemy, IActivable, IScriptHost
{
[Export] public string BossName { get; private set; }
//[Export] private Array<BossPhase> Phases;
[Export] public BossScript BossScript { get; private set; }
[Export] public BossScript BossScript { get; set; }
//[Export] private PackedScene BossHudPrefab;
[Export] public Vector2 BossPhaseAnimationStartingPosition = new(180, 10);
@ -20,9 +20,7 @@ public partial class Boss : Enemy, IActivable, IScriptHost
private bool _started = false;
private bool _waiting = false;
private GameManager _gameManager;
public GameManager GameManager => _gameManager;
private Vector2 _homePosition;
public Vector2 HomePosition => _homePosition;
private BossPhase CurrentPhase => BossScript.Phases[currentPhaseIndex];
@ -48,19 +46,17 @@ public partial class Boss : Enemy, IActivable, IScriptHost
GD.PrintErr($"No boss script defined in {this.Name}");
return;
}
_gameManager = this.GetGameManager();
_homePosition = this.GlobalPosition;
_cameraMarker = new Marker2D();
_gameManager.CallDeferred("add_child", _cameraMarker);
GameManager.Instance.CallDeferred("add_child", _cameraMarker);
_cameraMarker.GlobalPosition = _homePosition + CameraOffset;
if (BossScript.HudPrefab is not null)
{
_bossHud = BossScript.HudPrefab.Instantiate<BossHud>();
_gameManager.CallDeferred("add_child", _bossHud);
GameManager.Instance.CallDeferred("add_child", _bossHud);
_bossHud.Name = $"{BossName}_BossHud";
_bossHud.Visible = false;
@ -121,7 +117,7 @@ public partial class Boss : Enemy, IActivable, IScriptHost
_bossHud.QueueFree();
}
_gameManager.CameraTargetPlayer();
GameManager.Instance.CameraTargetPlayer();
base.Explode();
}
@ -155,7 +151,7 @@ public partial class Boss : Enemy, IActivable, IScriptHost
{
_bossHud.Visible = true;
}
_gameManager.CameraTargetObject(_cameraMarker);
GameManager.Instance.CameraTargetObject(_cameraMarker);
StartPhase(CurrentPhase);
return true;

View file

@ -0,0 +1,20 @@
using Cirno.Scripts.Resources.ScriptableBullets;
using Godot;
namespace Cirno.Scripts.Actors;
public partial class BossSpawner : ActorSpawner
{
[Export] public BossScript BossScript { get; private set; }
public override void Spawn()
{
base.Spawn();
if (SpawnedActor is Boss boss)
{
boss.BossScript = BossScript;
boss.Activate();
}
}
}

View file

@ -0,0 +1 @@
uid://o7euvh7co21t