public override IndustrialLevelUp OnCalculateIndustrialLevelUp(IndustrialLevelUp levelUp, int averageEducation, int serviceScore, ushort buildingID, Service service, SubService subService, Level currentLevel) { DifficultyManager d = Singleton <DifficultyManager> .instance; if (levelUp.serviceProgress != 0) { Level targetLevel; int target2 = d.IndustrialTargetScore.GetValue(Level.Level2); int target3 = d.IndustrialTargetScore.GetValue(Level.Level3); if (serviceScore < target2) { targetLevel = Level.Level1; levelUp.serviceProgress = 1 + (int)(15f * serviceScore / target2 + 0.49f); } else if (serviceScore < target3) { targetLevel = Level.Level2; levelUp.serviceProgress = 1 + (int)(15f * (serviceScore - target2) / (target3 - target2) + 0.49f); } else { targetLevel = Level.Level5; levelUp.serviceProgress = 1; } if (targetLevel < currentLevel) { levelUp.serviceProgress = 1; } else if (targetLevel > currentLevel) { levelUp.serviceProgress = 15; } if (targetLevel < levelUp.targetLevel) { levelUp.targetLevel = targetLevel; } } levelUp.tooFewServices = false; if (currentLevel == Level.Level2) { if (serviceScore < d.IndustrialTargetScore.GetTooLowValue(Level.Level2)) { levelUp.tooFewServices = true; } } else if (currentLevel == Level.Level3) { if (serviceScore < d.IndustrialTargetScore.GetTooLowValue(Level.Level3)) { levelUp.tooFewServices = true; } } return(levelUp); }
public override IndustrialLevelUp OnCalculateIndustrialLevelUp(IndustrialLevelUp levelUp, int averageEducation, int serviceScore, ushort buildingID, Service service, SubService subService, Level currentLevel) { if (!Singleton <GameSpeedManager> .instance.values.IsHardMode) { return(levelUp); } if (levelUp.serviceProgress != 0) { Level targetLevel; if (serviceScore < 40) { targetLevel = Level.Level1; levelUp.serviceProgress = 1 + (serviceScore * 15 + 20) / 40; } else if (serviceScore < 80) { targetLevel = Level.Level2; levelUp.serviceProgress = 1 + ((serviceScore - 40) * 15 + 20) / 40; } else { targetLevel = Level.Level5; levelUp.serviceProgress = 1; } if (targetLevel < currentLevel) { levelUp.serviceProgress = 1; } else if (targetLevel > currentLevel) { levelUp.serviceProgress = 15; } if (targetLevel < levelUp.targetLevel) { levelUp.targetLevel = targetLevel; } } levelUp.tooFewServices = false; if (currentLevel == Level.Level2) { if (serviceScore < 25) { levelUp.tooFewServices = true; } } else if (currentLevel == Level.Level3) { if (serviceScore < 60) { levelUp.tooFewServices = true; } } return(levelUp); }
public override IndustrialLevelUp OnCalculateIndustrialLevelUp(IndustrialLevelUp levelUp, int averageEducation, int serviceScore, ushort buildingID, Service service, SubService subService, Level currentLevel) { if (HistoricalStatusDataManager.Instance.IsHistorical(buildingID)) { levelUp.targetLevel = currentLevel; } return(levelUp); }
public override IndustrialLevelUp OnCalculateIndustrialLevelUp(IndustrialLevelUp levelUp, int averageEducation, int serviceScore, ushort buildingID, Service service, SubService subService, Level currentLevel) { DifficultyManager d = Singleton<DifficultyManager>.instance; if (levelUp.serviceProgress != 0) { Level targetLevel; int target2 = d.IndustrialTargetScore.GetValue(Level.Level2); int target3 = d.IndustrialTargetScore.GetValue(Level.Level3); if (serviceScore < target2) { targetLevel = Level.Level1; levelUp.serviceProgress = 1 + (int)(15f * serviceScore / target2 + 0.49f); } else if (serviceScore < target3) { targetLevel = Level.Level2; levelUp.serviceProgress = 1 + (int)(15f * (serviceScore - target2) / (target3 - target2) + 0.49f); } else { targetLevel = Level.Level5; levelUp.serviceProgress = 1; } if (targetLevel < currentLevel) { levelUp.serviceProgress = 1; } else if (targetLevel > currentLevel) { levelUp.serviceProgress = 15; } if (targetLevel < levelUp.targetLevel) { levelUp.targetLevel = targetLevel; } } levelUp.tooFewServices = false; if (currentLevel == Level.Level2) { if (serviceScore < d.IndustrialTargetScore.GetTooLowValue(Level.Level2)) levelUp.tooFewServices = true; } else if (currentLevel == Level.Level3) { if (serviceScore < d.IndustrialTargetScore.GetTooLowValue(Level.Level3)) levelUp.tooFewServices = true; } return levelUp; }
public override IndustrialLevelUp OnCalculateIndustrialLevelUp(IndustrialLevelUp levelUp, int averageEducation, int serviceScore, ushort buildingID, Service service, SubService subService, Level currentLevel) { if (levelUp.serviceProgress != 0) { Level targetLevel; if (serviceScore < 40) { targetLevel = Level.Level1; levelUp.serviceProgress = 1 + (serviceScore * 15 + 20) / 40; } else if (serviceScore < 80) { targetLevel = Level.Level2; levelUp.serviceProgress = 1 + ((serviceScore - 40) * 15 + 20) / 40; } else { targetLevel = Level.Level5; levelUp.serviceProgress = 1; } if (targetLevel < currentLevel) { levelUp.serviceProgress = 1; } else if (targetLevel > currentLevel) { levelUp.serviceProgress = 15; } if (targetLevel < levelUp.targetLevel) { levelUp.targetLevel = targetLevel; } } levelUp.tooFewServices = false; if (currentLevel == Level.Level2) { if (serviceScore < 25) levelUp.tooFewServices = true; } else if (currentLevel == Level.Level3) { if (serviceScore < 60) levelUp.tooFewServices = true; } return levelUp; }
/// <summary> /// Industrial level up control - game extension method. /// Used to override 'too few services' complaint as appropriate. /// </summary> /// <param name="levelUp">Original upgrade struct (target level and progress)</param> /// <param name="averageEducation">Average education for the building (ignored)</param> /// <param name="serviceScore">Building service score (ignored)</param> /// <param name="buildingID">Building instance ID</param> /// <param name="service">Building service (ignored)</param> /// <param name="subService">Building subservice (ignored)</param> /// <param name="currentLevel">Existing building level (ignored)</param> /// <returns>Revised target level (level and progress)</returns> /// <returns></returns> public override IndustrialLevelUp OnCalculateIndustrialLevelUp(IndustrialLevelUp levelUp, int averageEducation, int serviceScore, ushort buildingID, Service service, SubService subService, Level currentLevel) { // Check if this building is RICO or not. bool isRICO = IsRICOBuilding(buildingID); // Check if the relevant 'ignore too few services complaint' setting is set. if ((ModSettings.noServicesOther && !isRICO) || (ModSettings.noServicesRico && isRICO)) { // It is - force too few services complaint off. levelUp.tooFewServices = false; } return(levelUp); }
public override IndustrialLevelUp OnCalculateIndustrialLevelUp(IndustrialLevelUp levelUp, int averageEducation, int serviceScore, ushort buildingID, Service service, SubService subService, Level currentLevel) { return levelUp; }
public override IndustrialLevelUp OnCalculateIndustrialLevelUp(IndustrialLevelUp levelUp, int averageEducation, int serviceScore, ushort buildingID, Service service, SubService subService, Level currentLevel) { levelUp.targetLevel = this.controlLevelUp(levelUp.targetLevel, currentLevel, buildingID); return(levelUp); }
public override IndustrialLevelUp OnCalculateIndustrialLevelUp(IndustrialLevelUp levelUp, int averageEducation, int serviceScore, ushort buildingID, Service service, SubService subService, Level currentLevel) { if (SaveData2.saveData.DifficultyLevel == DifficultyLevel.Vanilla) { return levelUp; } var instance = Singleton<BuildingManager>.instance.m_buildings.m_buffer[(int)buildingID]; var zone = instance.Info.m_class.GetZone(); float education = 0; float happy = 0; float commute = 0; var levelUpHelper = LevelUpHelper3.instance; serviceScore = levelUpHelper.GetProperServiceScore(buildingID); levelUpHelper.GetEducationHappyScore(buildingID, out education, out happy, out commute); Level targetLevel = Level.Level3; for (var i = 0; i < 3; i += 1) { if (serviceScore < levelUpHelper.GetServiceThreshhold((ItemClass.Level)i, zone) || education < levelUpHelper.GetEducationThreshhold((ItemClass.Level)i, zone)) { targetLevel = (Level)i; levelUp.serviceProgress = 1 + CalcProgress(serviceScore, levelUpHelper.GetServiceThreshhold((ItemClass.Level)i, ItemClass.Zone.Office), levelUpHelper.GetServiceThreshhold((ItemClass.Level)(i - 1), ItemClass.Zone.Office), 15); levelUp.educationProgress = 1 + CalcProgress((int)education, levelUpHelper.GetEducationThreshhold((ItemClass.Level)i, zone), levelUpHelper.GetEducationThreshhold((ItemClass.Level)(i - 1), zone), 15); break; } } levelUp.tooFewServices = (serviceScore < levelUpHelper.GetServiceThreshhold((ItemClass.Level)(Math.Max(-1, (int)currentLevel - 2)), zone)); if (targetLevel < currentLevel) { levelUp.serviceProgress = 1; levelUp.educationProgress = 1; } else if (targetLevel > currentLevel) { levelUp.serviceProgress = 15; levelUp.educationProgress = 15; } if (targetLevel < levelUp.targetLevel) { levelUp.targetLevel = targetLevel; } return levelUp; }
// Thread: Simulation public IndustrialLevelUp OnCalculateIndustrialLevelUp(IndustrialLevelUp levelUp, int averageEducation, int serviceScore, ushort buildingID, Service service, SubService subService, Level currentLevel) { return(levelUp); }