using UnityEngine; using Player.Wallet; /* Static Class to access game managers */ public static class ComponentsManager { private static Storage _wallet = new Storage(); private static Storage _menuUI = new Storage(); private static Storage _playerData = new Storage(); private static Storage _gameUI = new Storage(); private static Storage _stagesManager = new Storage(); private static Storage _playerArmyManager = new Storage(); private static Storage _battleManager = new Storage(); private static Storage _cameraScript = new Storage(); private static Storage _upgradeUI = new Storage(); private static Storage _tutorial = new Storage(); public static Wallet PlayerWallet => _wallet.GetItem(); public static MenuUI MenuUI => _menuUI.GetItem(); public static PlayerData PlayerData => _playerData.GetItem(); public static GameUI GameUI => _gameUI.GetItem(); public static StagesManager StagesManager => _stagesManager.GetItem(); public static PlayerArmyManager PlayerArmyManager => _playerArmyManager.GetItem(); public static BattleManager BattleManager => _battleManager.GetItem(); public static CameraScript CameraScript => _cameraScript.GetItem(); public static UpgradeUI UpgradeUI => _upgradeUI.GetItem(); public static Tutorial Tutorial => _tutorial.GetItem(); private class Storage where T : Object { private T _item; public T GetItem() { if (_item == null) { _item = Object.FindObjectOfType(); } return _item; } } }