Example #1
0
        internal bool Initialize(CyclopsManager manager)
        {
            if (this.Manager != null)
            {
                return(false); // Already initialized
            }
            this.Manager = manager;

            UpgradeManagerInitializing?.Invoke();

            PowerManager powerManager = this.Manager.PowerManager;

            powerManager.MaxSpeedModules = ModConfig.Settings.MaxSpeedModules();

            SetupPowerManagerUpgrades(powerManager, ModConfig.Settings.MaxChargingModules());
            this.Manager.ChargeManager.SetupChargingUpgrades(ModConfig.Settings.MaxChargingModules());

            RegisterUpgradeHandlers();

            this.Manager.ChargeManager.RegisterPowerChargers();

            Equipment cyclopsConsole = Cyclops.upgradeConsole.modules;

            AttachEquipmentEvents(ref cyclopsConsole);

            SyncUpgradeConsoles();

            return(true);
        }
        private static CyclopsManager CreateNewCyclopsManager(ref SubRoot cyclops)
        {
            var mgr = new CyclopsManager(cyclops);

            Managers.Add(mgr);
            return(mgr);
        }
Example #3
0
        private static CyclopsManager CreateNewCyclopsManager(SubRoot cyclops)
        {
            QuickLogger.Debug("Creating new CyclopsManager");
            var mgr = new CyclopsManager(cyclops);

            Managers.Add(mgr);
            return(mgr);
        }
        private static CyclopsManager GetManager(int id, SubRoot cyclops)
        {
            if (cyclops.isBase || !cyclops.isCyclops)
            {
                return(null);
            }

            CyclopsManager mgr = Managers.Find(m => m.InstanceID == cyclops.GetInstanceID());

            return(mgr ?? CreateNewManagers(cyclops));
        }
        internal static T GetManager <T>(ref SubRoot cyclops, string auxManagerName)
            where T : class, IAuxCyclopsManager
        {
            CyclopsManager mgr = GetManager(ref cyclops);

            if (mgr != null && mgr.AuxiliaryManagers.TryGetValue(auxManagerName, out IAuxCyclopsManager auxManager))
            {
                return((T)auxManager);
            }

            return(CreateNewAuxManager <T>(mgr, auxManagerName));
        }
 internal static IEnumerable <T> GetAllManagers <T>(string auxManagerName)
     where T : class, IAuxCyclopsManager
 {
     for (int i = 0; i < Managers.Count; i++)
     {
         CyclopsManager mgr = Managers[i];
         if (mgr != null && mgr.AuxiliaryManagers.TryGetValue(auxManagerName, out IAuxCyclopsManager auxManager))
         {
             yield return((T)auxManager);
         }
     }
 }
        internal void InitializeChargers()
        {
            QuickLogger.Debug("ChargeManager Initializing CyclopsChargers from external mods");

            // First, register chargers from other mods.
            for (int i = 0; i < CyclopsChargerCreators.Count; i++)
            {
                ChargerCreator chargerTemplate = CyclopsChargerCreators[i];
                QuickLogger.Debug($"ChargeManager creating charger '{chargerTemplate.ChargerName}'");
                CyclopsCharger charger = chargerTemplate.Creator.Invoke(Cyclops);

                if (charger == null)
                {
                    QuickLogger.Warning($"CyclopsCharger '{chargerTemplate.ChargerName}' was null");
                }
                else if (!KnownChargers.ContainsKey(chargerTemplate.ChargerName))
                {
                    KnownChargers.Add(chargerTemplate.ChargerName, charger);
                    QuickLogger.Debug($"Created CyclopsCharger '{chargerTemplate.ChargerName}'");
                }
                else
                {
                    QuickLogger.Warning($"Duplicate CyclopsCharger '{chargerTemplate.ChargerName}' was blocked");
                }
            }

            this.Chargers = new CyclopsCharger[KnownChargers.Count];

            int c = 0;

            foreach (CyclopsCharger charger in KnownChargers.Values)
            {
                this.Chargers[c++] = charger;
            }

            totalChargers = c;
            QuickLogger.Debug($"ChargeManager has '{totalChargers}' CyclopsChargers from external mods");

            initialized       = true;
            TooLateToRegister = true;

            requiresVanillaCharging = totalChargers == 0 || CyclopsManager.GetManager(Cyclops).Upgrade.VanillaUpgrades.IsUsingVanillaUpgrade(TechType.CyclopsThermalReactorModule);

            if (requiresVanillaCharging)
            {
                QuickLogger.Info("Vanilla thermal reactor charging enabled");
            }
            else
            {
                QuickLogger.Info("Vanilla thermal reactor charging overridden by mod");
            }
        }
        internal void InitializeChargers()
        {
            TooLateToRegister = true;
            QuickLogger.Debug("ChargeManager Initializing CyclopsChargers from external mods");

            // First, register chargers from other mods.
            for (int i = 0; i < CyclopsChargerCreators.Count; i++)
            {
                ChargerCreator chargerTemplate = CyclopsChargerCreators[i];
                QuickLogger.Debug($"ChargeManager creating charger '{chargerTemplate.ChargerName}'");
                CyclopsCharger charger = chargerTemplate.Creator.Invoke(Cyclops);

                if (charger == null)
                {
                    QuickLogger.Warning($"CyclopsCharger '{chargerTemplate.ChargerName}' was null");
                }
                else if (!KnownChargers.ContainsKey(chargerTemplate.ChargerName))
                {
                    KnownChargers.Add(chargerTemplate.ChargerName, charger);
                    CyclopsHUDManager.StatusIcons.Add(charger);
                    QuickLogger.Debug($"Created CyclopsCharger '{chargerTemplate.ChargerName}'");
                }
                else
                {
                    QuickLogger.Warning($"Duplicate CyclopsCharger '{chargerTemplate.ChargerName}' was blocked");
                }
            }

            // Check if an external mod has a different upgrade handler for the original CyclopsThermalReactorModule.
            bool requiresVanillaCharging = CyclopsManager.GetManager(ref Cyclops).Upgrade.VanillaUpgrades.IsUsingVanillaUpgrade(TechType.CyclopsThermalReactorModule);

            if (requiresVanillaCharging)
            {
                QuickLogger.Debug("Vanilla thermal reactor charging handled internally");
                var vanillaThermalCharger = new VanillaThermalChargeManager(Cyclops);
                KnownChargers.Add(nameof(VanillaThermalChargeManager), vanillaThermalCharger);
                CyclopsHUDManager.StatusIcons.Add(vanillaThermalCharger);
                MCUServices.Register.PdaIconOverlay(TechType.CyclopsThermalReactorModule,
                                                    (uGUI_ItemIcon icon, InventoryItem upgradeModule) => new VanillaThermalPdaOverlay(icon, upgradeModule));
            }

            this.Chargers = new CyclopsCharger[KnownChargers.Count];

            int c = 0;

            foreach (CyclopsCharger charger in KnownChargers.Values)
            {
                this.Chargers[c++] = charger;
            }

            initialized = true;
        }
        internal static CyclopsManager GetManager(ref SubRoot cyclops)
        {
            if (cyclops == null || cyclops.isBase || !cyclops.isCyclops)
            {
                return(null);
            }

            for (int m = 0; m < Managers.Count; m++)
            {
                CyclopsManager mgr = Managers[m];
                if (mgr.Cyclops == cyclops && mgr.InstanceID == cyclops.GetInstanceID())
                {
                    return(mgr);
                }
            }

            return(CreateNewCyclopsManager(ref cyclops));
        }
Example #10
0
        internal bool Initialize(CyclopsManager manager)
        {
            if (Manager != null)
            {
                return(false); // Already initialized
            }
            Manager = manager;

            InitializeChargingHandlers();

            // Store the original values before we start to change them
            this.OriginalSpeeds[0] = this.MotorMode.motorModeSpeeds[0];
            this.OriginalSpeeds[1] = this.MotorMode.motorModeSpeeds[1];
            this.OriginalSpeeds[2] = this.MotorMode.motorModeSpeeds[2];

            manager.ChargeManager.SyncBioReactors();

            return(true);
        }
        private static T CreateNewAuxManager <T>(CyclopsManager mgr, string auxManagerName)
            where T : class, IAuxCyclopsManager
        {
            QuickLogger.Debug($"Started creating new IAuxCyclopsManager '{auxManagerName}'");
            if (AuxManagerCreators.TryGetValue(auxManagerName, out CreateAuxCyclopsManager creator))
            {
                IAuxCyclopsManager auxMgr = creator.Invoke(mgr.Cyclops);
                if (auxMgr != null || !auxMgr.Initialize(mgr.Cyclops))
                {
                    QuickLogger.Debug($"Created new IAuxCyclopsManager '{auxManagerName}'");
                    mgr.AuxiliaryManagers.Add(auxManagerName, auxMgr);
                    return((T)auxMgr);
                }
                else
                {
                    QuickLogger.Error($"Failed in creating IAuxCyclopsManager '{auxManagerName}'");
                }
            }

            QuickLogger.Warning($"Did not find creator method for IAuxCyclopsManager '{auxManagerName}'");
            return(null);
        }
        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);
        }
Example #13
0
 internal bool Initialize(CyclopsManager manager)
 {
     Manager = manager;
     return(true);
 }