refactor: standardization round 2

- ConsoleManager: lazy GameManager/AchievementManager via Instance (fixes NullRef on console commands)
- AchievementManager, GhostManager: add static Instance property
- GhostEventHandler: use GhostManager.Instance, add _ExitTree unsubscription
- SpeedRunManager: remove unused IsVisible guard; TimeUpdated now emits when running
- SpeedRunHud: use SpeedRunManager.Instance, remove dead IsVisible binding
- SaveDataDto: moved to scripts/State/SaveDataDto.cs
- GameManager.AddCoins: XML doc clarifying permanent vs session coins
This commit is contained in:
2026-03-19 01:50:20 +01:00
parent 321905e68e
commit cfef49fbc7
10 changed files with 67 additions and 51 deletions

View File

@@ -6,41 +6,39 @@ namespace Mr.BrickAdventures.Autoloads;
public partial class ConsoleManager : Node
{
private GameManager _gameManager;
private GameManager GameManager => GameManager.Instance;
private AchievementManager AchievementManager => AchievementManager.Instance;
private SkillManager _skillManager;
private SkillUnlockerComponent _skillUnlockerComponent;
private AchievementManager _achievementManager;
public override void _Ready()
{
_gameManager = GameManager.Instance;
_achievementManager = GetNode<AchievementManager>(Constants.AchievementManagerPath);
_skillManager = SkillManager.Instance;
}
private void AddCoinsCommand(int amount)
{
_gameManager.AddCoins(amount);
GameManager.AddCoins(amount);
}
private void SetCoinsCommand(int amount)
{
_gameManager.SetCoins(amount);
GameManager.SetCoins(amount);
}
private void SetLivesCommand(int amount)
{
_gameManager.SetLives(amount);
GameManager.SetLives(amount);
}
private void AddLivesCommand(int amount)
{
_gameManager.AddLives(amount);
GameManager.AddLives(amount);
}
private void SetHealthCommand(float amount)
{
var playerHealthComponent = _gameManager.Player.GetNode<HealthComponent>("HealthComponent");
var playerHealthComponent = GameManager.Player.GetNode<HealthComponent>("HealthComponent");
if (playerHealthComponent != null)
{
playerHealthComponent.Health = amount;
@@ -49,7 +47,7 @@ public partial class ConsoleManager : Node
private void ResetSessionCommand()
{
_gameManager.ResetCurrentSessionState();
GameManager.ResetCurrentSessionState();
}
private void UnlockSkillCommand(string skillName)
@@ -62,14 +60,14 @@ public partial class ConsoleManager : Node
return;
}
_gameManager.UnlockSkill(skill);
GameManager.UnlockSkill(skill);
_skillManager.ActivateSkill(skill);
_skillUnlockerComponent.EmitSignal(SkillUnlockerComponent.SignalName.SkillUnlocked, skill);
}
private bool GetSkillManagement()
{
var player = _gameManager.Player;
var player = GameManager.Player;
if (player == null || !IsInstanceValid(player))
{
return false;
@@ -100,7 +98,7 @@ public partial class ConsoleManager : Node
return;
}
_gameManager.RemoveSkill(skill.Name);
GameManager.RemoveSkill(skill.Name);
_skillManager.DeactivateSkill(skill);
}
@@ -110,24 +108,24 @@ public partial class ConsoleManager : Node
foreach (var skill in _skillManager.AvailableSkills)
{
_gameManager.RemoveSkill(skill.Name);
GameManager.RemoveSkill(skill.Name);
_skillManager.DeactivateSkill(skill);
}
}
private void GoToNextLevelCommand()
{
_gameManager.OnLevelComplete();
GameManager.OnLevelComplete();
}
private void UnlockAchievementCommand(string achievementId)
{
_achievementManager.UnlockAchievement(achievementId);
AchievementManager.UnlockAchievement(achievementId);
}
private void ResetAchievementCommand(string achievementId)
{
_achievementManager.LockAchievement(achievementId);
AchievementManager.LockAchievement(achievementId);
}
}