public CyclopsManager(SubRoot cyclops, UpgradeManager upgradeManager, PowerManager powerManager, CyclopsHUDManager hUDManager, ChargeManager chargeManager)
 {
     UpgradeManager = upgradeManager;
     PowerManager   = powerManager;
     HUDManager     = hUDManager;
     ChargeManager  = chargeManager;
     Cyclops        = cyclops;
     InstanceID     = cyclops.GetInstanceID();
 }
        private CyclopsManager(SubRoot cyclops)
        {
            QuickLogger.Debug($"Creating new main CyclopsManager");
            Cyclops    = cyclops;
            InstanceID = cyclops.GetInstanceID();

            Upgrade = new UpgradeManager(cyclops);
            Charge  = new ChargeManager(cyclops);
            HUD     = new CyclopsHUDManager(cyclops);
            Engine  = new PowerRatingManager(cyclops);
        }
        private static CyclopsManager CreateNewManagers(SubRoot cyclops)
        {
            var upgradeMgr = new UpgradeManager(cyclops);
            var powerMgr   = new PowerManager(cyclops);
            var hudManager = new CyclopsHUDManager(cyclops);
            var chargeMgr  = new ChargeManager(cyclops);

            var mgr = new CyclopsManager(cyclops, upgradeMgr, powerMgr, hudManager, chargeMgr);

            Managers.Add(mgr);

            // Managers must be initialized in this order
            if (!upgradeMgr.Initialize(mgr) ||
                !chargeMgr.Initialize(mgr) ||
                !powerMgr.Initialize(mgr) ||
                !hudManager.Initialize(mgr))
            {
                QuickLogger.Error("Failed to initialized manager", true);
                Managers.Remove(mgr);
                return(null);
            }

            return(mgr);
        }