refactor: replace direct manager instances with lazy accessors for improved performance

This commit is contained in:
2026-03-19 02:10:36 +01:00
parent 470b0c3a8c
commit 1e9814a9d8
6 changed files with 20 additions and 36 deletions

View File

@@ -21,11 +21,7 @@ public partial class GameManager : Node
}
private PlayerController _player;
private SpeedRunManager _speedRunManager;
/// <summary>
/// Lazy accessor for GameStateStore - avoids initialization order issues.
/// </summary>
private SpeedRunManager SpeedRunManager => SpeedRunManager.Instance;
private GameStateStore Store => GameStateStore.Instance;
public static GameManager Instance { get; private set; }
@@ -33,7 +29,6 @@ public partial class GameManager : Node
public override void _Ready()
{
Instance = this;
_speedRunManager = SpeedRunManager.Instance;
EventBus.Instance.PlayerSpawned += OnPlayerSpawned;
}
@@ -197,7 +192,7 @@ public partial class GameManager : Node
public void StartNewGame()
{
Store?.ResetAll();
_speedRunManager?.StartTimer();
SpeedRunManager?.StartTimer();
GetTree().ChangeSceneToPacked(LevelScenes[0]);
SaveSystem.Instance.SaveGame();
EventBus.EmitGameStarted();
@@ -234,7 +229,7 @@ public partial class GameManager : Node
Store.CommitSessionCoins();
Store.CommitSessionSkills();
var completionTime = _speedRunManager?.GetCurrentLevelTime() ?? 0.0;
var completionTime = SpeedRunManager?.GetCurrentLevelTime() ?? 0.0;
EventBus.EmitLevelCompleted(levelIndex, GetTree().CurrentScene, completionTime);
Store.ResetSession();