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 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"); } }
private void UpdatePowerIcons() { if (!powerIconsInitialized) { return; } if (Time.time < iconUpdateDelay) { return; } iconUpdateDelay = Time.time + delayInterval; HidePowerIcons(); if (settings.HidePowerIcons) { return; } CyclopsCharger[] cyclopsChargers = this.ChargeManager.Chargers; bool isEven = true; for (int i = 0; i < cyclopsChargers.Length; i++) { if (cyclopsChargers[i].ShowStatusIcon) { isEven = !isEven; } } Indicator[] helmRow = isEven ? HelmIndicatorsEven : HelmIndicatorsOdd; Indicator[] healthBarRow = isEven ? HealthBarIndicatorsEven : HealthBarIndicatorsOdd; bool showIconsOnHoloDisplay = settings.ShowIconsOnHoloDisplay; bool showIconsWhilePiloting = settings.ShowIconsWhilePiloting; int iconIndex = 0; for (int c = 0; c < cyclopsChargers.Length; c++) { CyclopsCharger charger = cyclopsChargers[c]; if (!charger.ShowStatusIcon) { continue; } Indicator helmIcon = helmRow[iconIndex]; Indicator hpIcon = healthBarRow[iconIndex++]; hpIcon.SetEnabled(showIconsOnHoloDisplay); helmIcon.SetEnabled(showIconsWhilePiloting); hpIcon.Icon.sprite = helmIcon.Icon.sprite = charger.StatusSprite(); hpIcon.Text.enabled = powerIconTextVisibility; hpIcon.Text.text = helmIcon.Text.text = charger.StatusText(); if (charger.ProvidingPower) { hpIcon.Text.color = helmIcon.Text.color = charger.StatusTextColor(); } else { hpIcon.Text.color = helmIcon.Text.color = Color.white; } } }
private void UpdatePowerIcons() { if (!powerIconsInitialized) { return; } if (Time.time < iconUpdateDelay) { return; } iconUpdateDelay = Time.time + delayInterval; if (settings.ShowThermometer) { float temperature = Cyclops.GetTemperature(); TemperatureReadout.Text.text = NumberFormatter.FormatValue(temperature) + "°C"; TemperatureReadout.Text.color = GetHeatColor(temperature); TemperatureReadout.SetEnabled(true); } else { TemperatureReadout.SetEnabled(false); } if (settings.HidePowerIcons) { HidePowerIcons(); } else { CyclopsCharger[] cyclopsChargers = this.ChargeManager.Chargers; bool isEven = true; for (int i = 0; i < cyclopsChargers.Length; i++) { if (cyclopsChargers[i].ShowStatusIcon) { isEven = !isEven; } } PowerIndicatorIcon[] helmRow = isEven ? HelmIndicatorsEven : HelmIndicatorsOdd; PowerIndicatorIcon[] healthBarRow = isEven ? HealthBarIndicatorsEven : HealthBarIndicatorsOdd; bool showIconsOnHoloDisplay = settings.ShowIconsOnHoloDisplay; bool showIconsWhilePiloting = settings.ShowIconsWhilePiloting; int iconIndex = 0; for (int c = 0; c < cyclopsChargers.Length; c++) { CyclopsCharger charger = cyclopsChargers[c]; if (!charger.ShowStatusIcon) { continue; } PowerIndicatorIcon helmIcon = helmRow[iconIndex]; PowerIndicatorIcon hpIcon = healthBarRow[iconIndex++]; hpIcon.SetEnabled(showIconsOnHoloDisplay); helmIcon.SetEnabled(showIconsWhilePiloting); hpIcon.Icon.sprite = helmIcon.Icon.sprite = charger.StatusSprite(); hpIcon.Text.enabled = powerIconTextVisibility; hpIcon.Text.text = helmIcon.Text.text = charger.StatusText(); if (charger.ProvidingPower) { hpIcon.Text.color = helmIcon.Text.color = charger.StatusTextColor(); } else { hpIcon.Text.color = helmIcon.Text.color = Color.white; } } } }