refactor (#6)

Reviewed-on: #6
This commit was merged in pull request #6.
This commit is contained in:
2026-02-01 11:47:40 +00:00
parent dde3eaa52e
commit bfe951939d
71 changed files with 1583 additions and 661 deletions

View File

@@ -1,4 +1,5 @@
using Godot;
using Mr.BrickAdventures;
using Mr.BrickAdventures.Autoloads;
using Mr.BrickAdventures.scripts.interfaces;
using Mr.BrickAdventures.scripts.Resources;
@@ -6,41 +7,33 @@ using Mr.BrickAdventures.scripts.Resources;
namespace Mr.BrickAdventures.scripts.components;
[GlobalClass]
public partial class BrickShieldSkillComponent : Node, ISkill
public partial class BrickShieldSkillComponent : SkillComponentBase
{
[Export] public PackedScene ShieldScene { get; set; }
private PlayerController _player;
private Node2D _shieldInstance;
private SkillData _skillData;
private GameManager _gameManager;
private SkillManager _skillManager;
private HealthComponent _shieldHealth;
public override void _Ready()
{
_gameManager = GetNode<GameManager>("/root/GameManager");
_skillManager = GetNode<SkillManager>("/root/SkillManager");
_gameManager = GameManager.Instance;
_skillManager = SkillManager.Instance;
}
public void Initialize(Node owner, SkillData data)
public override void Activate()
{
_player = owner as PlayerController;
_skillData = data;
}
public void Activate()
{
if (_player == null || ShieldScene == null || _shieldInstance != null) return;
if (Player == null || ShieldScene == null || _shieldInstance != null) return;
_shieldInstance = ShieldScene.Instantiate<Node2D>();
_player.AddChild(_shieldInstance);
Player.AddChild(_shieldInstance);
_shieldInstance.Position = Vector2.Zero;
_shieldInstance.TreeExiting += OnShieldDestroyed;
_shieldHealth = _shieldInstance.GetNode<HealthComponent>("HealthComponent");
}
public void Deactivate()
public override void Deactivate()
{
if (_shieldInstance != null && IsInstanceValid(_shieldInstance))
{
@@ -50,7 +43,7 @@ public partial class BrickShieldSkillComponent : Node, ISkill
_shieldInstance = null;
}
public void ApplyUpgrade(SkillUpgrade upgrade)
public override void ApplyUpgrade(SkillUpgrade upgrade)
{
upgrade.Properties.TryGetValue("shield_health", out var newHealth);
if (_shieldHealth != null)
@@ -59,13 +52,13 @@ public partial class BrickShieldSkillComponent : Node, ISkill
_shieldHealth.MaxHealth = (float)newHealth;
}
}
private void OnShieldDestroyed()
{
if (_gameManager != null && _skillData != null && _skillManager != null)
if (_gameManager != null && Data != null && _skillManager != null)
{
_gameManager.RemoveSkill(_skillData.Name);
_skillManager.RemoveSkill(_skillData.Name);
_gameManager.RemoveSkill(Data.Name);
_skillManager.RemoveSkill(Data.Name);
}
_shieldInstance = null;
}