refactor: Consolidate skill component logic into SkillComponentBase and update manager access to singletons.

This commit is contained in:
2026-01-31 17:35:27 +01:00
parent 425fa5b940
commit 288f0b1916
27 changed files with 212 additions and 179 deletions

View File

@@ -5,18 +5,19 @@ using Mr.BrickAdventures.scripts.Resources;
namespace Mr.BrickAdventures.scripts.components;
[GlobalClass]
public partial class XRayVisionSkillComponent : Node, ISkill
public partial class XRayVisionSkillComponent : SkillComponentBase
{
[Export(PropertyHint.Layers2DRender)] public uint SecretLayer { get; set; }
[Export] public float Duration { get; set; } = 5.0f;
private Camera2D _camera;
private Viewport _viewport;
private uint _originalVisibilityLayer;
private Timer _timer;
public void Initialize(Node owner, SkillData data)
public override void Initialize(Node owner, SkillData data)
{
base.Initialize(owner, data);
_viewport = GetViewport();
_camera = GetViewport().GetCamera2D();
_timer = new Timer { OneShot = true };
@@ -24,16 +25,16 @@ public partial class XRayVisionSkillComponent : Node, ISkill
_timer.Timeout += Deactivate;
}
public void Activate()
public override void Activate()
{
if (_camera == null) return;
_originalVisibilityLayer = _camera.VisibilityLayer;
_camera.VisibilityLayer |= SecretLayer;
_timer.Start(Duration);
}
public void Deactivate()
public override void Deactivate()
{
if (_camera != null)
{
@@ -41,7 +42,7 @@ public partial class XRayVisionSkillComponent : Node, ISkill
}
}
public void ApplyUpgrade(SkillUpgrade upgrade)
public override void ApplyUpgrade(SkillUpgrade upgrade)
{
if (upgrade.Properties.TryGetValue("duration", out var newDuration))
{