public EngineHandler(PowerUpgradeModuleMk2 upgradeMk2, PowerUpgradeModuleMk3 upgradeMk3, SubRoot cyclops) : base(BaseValue, cyclops) { TieredUpgradeHandler <int> tier1 = CreateTier(TechType.PowerUpgradeModule, 1); tier1.MaxCount = MaxAllowedPerTier; TieredUpgradeHandler <int> tier2 = CreateTier(upgradeMk2.TechType, 2); tier2.MaxCount = MaxAllowedPerTier; TieredUpgradeHandler <int> tier3 = CreateTier(upgradeMk3.TechType, 3); tier3.MaxCount = MaxAllowedPerTier; OnFinishedUpgrades = () => { int powerIndex = this.HighestValue; if (lastKnownPowerIndex != powerIndex) { lastKnownPowerIndex = powerIndex; base.Cyclops.silentRunningPowerCost = SilentRunningPowerCosts[powerIndex]; base.Cyclops.sonarPowerCost = SonarPowerCosts[powerIndex]; base.Cyclops.shieldPowerCost = ShieldPowerCosts[powerIndex]; this.RatingManager.ApplyPowerRatingModifier(TechType.PowerUpgradeModule, EnginePowerRatings[powerIndex]); } }; }
private void SetupPowerManagerUpgrades(PowerManager powerManager, int maxModules) { RegisterOneTimeUseHandlerCreator(() => { QuickLogger.Debug("UpgradeHandler Registered: Engine Upgrades Collection"); var efficiencyUpgrades = new TieredUpgradesHandlerCollection <int>(0); QuickLogger.Debug("UpgradeHandler Registered: Engine Upgrade Mk1"); TieredUpgradeHandler <int> engine1 = efficiencyUpgrades.CreateTier(TechType.PowerUpgradeModule, 1); QuickLogger.Debug("UpgradeHandler Registered: Engine Upgrade Mk2"); TieredUpgradeHandler <int> engine2 = efficiencyUpgrades.CreateTier(CyclopsModule.PowerUpgradeMk2ID, 2); QuickLogger.Debug("UpgradeHandler Registered: Engine Upgrade Mk3"); TieredUpgradeHandler <int> engine3 = efficiencyUpgrades.CreateTier(CyclopsModule.PowerUpgradeMk3ID, 3); powerManager.EngineEfficientyUpgrades = efficiencyUpgrades; return(efficiencyUpgrades); }); RegisterOneTimeUseHandlerCreator(() => { QuickLogger.Debug("UpgradeHandler Registered: SpeedBooster Upgrade"); var speed = new UpgradeHandler(CyclopsModule.SpeedBoosterModuleID) { MaxCount = maxModules, OnFirstTimeMaxCountReached = () => { ErrorMessage.AddMessage(CyclopsSpeedBooster.MaxRatingAchived); } }; powerManager.SpeedBoosters = speed; return(speed); }); }
public CyNukeEnhancerHandler(SubRoot cyclops) : base(NoUpgradesValue, cyclops) { tier1 = CreateTier(CyNukeEnhancerMk1.TechTypeID, Mk1UpgradeValue); tier1.MaxCount = 1; tier2 = CreateTier(CyNukeEnhancerMk2.TechTypeID, Mk2UpgradeValue); tier2.MaxCount = 1; OnFinishedUpgrades = () => { MCUServices.Logger.Debug($"Handling all CyNukeEnhancers at {this.HighestValue}"); this.Manager?.ApplyToAll((reactor) => reactor.UpdateUpgradeLevel(this.HighestValue)); }; }
public CyNukeEnhancerHandler(SubRoot cyclops) : base(NoUpgradesValue, cyclops) { tier1 = CreateTier(CyNukeEnhancerMk1.TechTypeID, Mk1UpgradeValue); tier1.MaxCount = 1; tier2 = CreateTier(CyNukeEnhancerMk2.TechTypeID, Mk2UpgradeValue); tier2.MaxCount = 1; OnUpgradeCounted = () => // Doing the final sync during HandleUpgrades may be unorthodox, but it somehow doesn't want to work any other way. { if (manager == null) { manager = MCUServices.Find.AuxCyclopsManager <CyNukeManager>(cyclops); } OnUpgradeCounted = null; // This method only needs to be called once }; OnFinishedUpgrades = EnhanceCyNukeReactors; }