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

@@ -20,7 +20,7 @@ public partial class DeathScreen : Control
public override void _Ready()
{
_gameManager = GetNode<GameManager>(Constants.GameManagerPath);
_gameManager = GameManager.Instance;
// Subscribe to lives changed event for reactive updates
EventBus.Instance.LivesChanged += OnLivesChanged;

View File

@@ -15,7 +15,7 @@ public partial class GameOverScreen : Control
public override void _Ready()
{
_gameManager = GetNode<GameManager>(Constants.GameManagerPath);
_gameManager = GameManager.Instance;
RestartButton.Pressed += OnRestartClicked;
MainMenuButton.Pressed += OnMainMenuClicked;
}

View File

@@ -16,7 +16,7 @@ public partial class Hud : Control
public override void _Ready()
{
_gameManager = GetNode<GameManager>(Constants.GameManagerPath);
_gameManager = GameManager.Instance;
}
public override void _Process(double delta)

View File

@@ -22,8 +22,8 @@ public partial class MainMenu : Control
public override void _Ready()
{
_saveSystem = GetNode<SaveSystem>(Constants.SaveSystemPath);
_gameManager = GetNode<GameManager>(Constants.GameManagerPath);
_saveSystem = SaveSystem.Instance;
_gameManager = GameManager.Instance;
_uiManager = GetNode<UIManager>(Constants.UIManagerPath);
NewGameButton.Pressed += OnNewGamePressed;

View File

@@ -26,9 +26,8 @@ public partial class Marketplace : Control
public override void _Ready()
{
_gameManager = GetNode<GameManager>(Constants.GameManagerPath);
_skillManager = GetNode<SkillManager>(Constants.SkillManagerPath);
_skillManager.SkillRemoved += OnSkillRemoved;
_gameManager = GameManager.Instance;
_skillManager = SkillManager.Instance;
Skills = _skillManager.AvailableSkills;
@@ -42,11 +41,16 @@ public partial class Marketplace : Control
foreach (var skill in unlockedSkills) CreateSkillButton(skill);
SkillUnlockerComponent.SkillUnlocked += OnSkillUnlocked;
EventBus.Instance.SkillCollected += OnGlobalSkillCollected;
}
public override void _ExitTree()
{
SkillUnlockerComponent.SkillUnlocked -= OnSkillUnlocked;
if (EventBus.Instance != null)
{
EventBus.Instance.SkillCollected -= OnGlobalSkillCollected;
}
}
public override void _Input(InputEvent @event)
@@ -81,7 +85,7 @@ public partial class Marketplace : Control
foreach (var btn in _skillButtons)
{
if (btn.Data.IsActive) btn.Activate();
if (_skillManager.IsSkillActive(btn.Data)) btn.Activate();
else btn.Deactivate();
}
}
@@ -118,7 +122,7 @@ public partial class Marketplace : Control
if (skill.Level < skill.MaxLevel)
{
SkillUnlockerComponent.TryUpgradeSkill(skill);
if (!skill.IsActive) SkillUnlockerComponent.SkillManager.ToggleSkillActivation(skill);
if (!SkillUnlockerComponent.SkillManager.IsSkillActive(skill)) SkillUnlockerComponent.SkillManager.ToggleSkillActivation(skill);
}
else
{
@@ -137,28 +141,15 @@ public partial class Marketplace : Control
foreach (var btn in _skillButtons)
{
if (btn.Data.IsActive)
if (SkillUnlockerComponent.SkillManager.IsSkillActive(btn.Data))
btn.Activate();
else
btn.Deactivate();
}
}
private void OnSkillRemoved(SkillData skill)
private void OnGlobalSkillCollected(SkillData skill, Vector2 position)
{
SkillButton buttonToRemove = null;
foreach (var button in _skillButtons)
{
if (button.Data == skill)
{
buttonToRemove = button;
break;
}
}
if (buttonToRemove != null)
{
_skillButtons.Remove(buttonToRemove);
buttonToRemove.QueueFree();
}
OnSkillUnlocked(skill);
}
}

View File

@@ -19,7 +19,7 @@ public partial class MarketplaceButton : Button
public override void _Ready()
{
_gameManager = GetNode<GameManager>(Constants.GameManagerPath);
_gameManager = GameManager.Instance;
var player = _gameManager.Player;
if (player == null) return;
@@ -29,7 +29,7 @@ public partial class MarketplaceButton : Button
_skillUnlockerComponent.SkillUnlocked += OnSkillStateChanged;
}
_skillManager = GetNode<SkillManager>(Constants.SkillManagerPath);
_skillManager = SkillManager.Instance;
_skillManager.SkillRemoved += OnSkillStateChanged;
UpdateButtonState();

View File

@@ -19,7 +19,7 @@ public partial class PauseMenu : Control
public override void _Ready()
{
_gameManager = GetNode<GameManager>(Constants.GameManagerPath);
_gameManager = GameManager.Instance;
_uiManager = GetNode<UIManager>(Constants.UIManagerPath);
ResumeButton.Pressed += OnResumePressed;