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); }
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)); }
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); }
internal bool Initialize(CyclopsManager manager) { Manager = manager; return(true); }