mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-12 16:45:54 +00:00
Spellcard test map
This commit is contained in:
parent
c3bbc90b50
commit
dc8777c3d9
9 changed files with 163 additions and 43 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
20
Scripts/Actors/BossSpawner.cs
Normal file
20
Scripts/Actors/BossSpawner.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
1
Scripts/Actors/BossSpawner.cs.uid
Normal file
1
Scripts/Actors/BossSpawner.cs.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://o7euvh7co21t
|
||||
Loading…
Add table
Add a link
Reference in a new issue