public static bool CanAddVehicle(ushort depotID, ref Building depot, TransportInfo transportInfo) { if (depot.Info == null) { return(false); } if (depot.Info.m_buildingAI is DepotAI) { DepotAI buildingAi = depot.Info.m_buildingAI as DepotAI; if (transportInfo.m_vehicleType == buildingAi.m_transportInfo?.m_vehicleType || transportInfo.m_vehicleType == buildingAi.m_secondaryTransportInfo?.m_vehicleType) { int num = (PlayerBuildingAI.GetProductionRate(100, Singleton <EconomyManager> .instance.GetBudget(buildingAi.m_info.m_class)) * buildingAi.m_maxVehicleCount + 99) / 100; return(buildingAi.GetVehicleCount(depotID, ref depot) < num); } } if (depot.Info.m_buildingAI is ShelterAI) { ShelterAI buildingAi = depot.Info.m_buildingAI as ShelterAI; int num = (PlayerBuildingAI.GetProductionRate(100, Singleton <EconomyManager> .instance.GetBudget(buildingAi.m_info.m_class)) * buildingAi.m_evacuationBusCount + 99) / 100; int count = 0; int cargo = 0; int capacity = 0; int outside = 0; CommonBuildingAIReverseDetour.CalculateOwnVehicles(buildingAi, depotID, ref depot, buildingAi.m_transportInfo.m_vehicleReason, ref count, ref cargo, ref capacity, ref outside); return(count < num); } return(false); }
} //public public static int TotalWorkCount(ushort buildingID, Building data, bool checkOnly, bool update) { int totalWorkCount = 0; //For performance #if FASTRUN update = false; #endif if (BuildingData.isBuildingWorkerUpdated[buildingID] && !update) { totalWorkCount = BuildingData.buildingWorkCount[buildingID]; } else { if (data.Info.m_buildingAI is LandfillSiteAI) { LandfillSiteAI buildingAI = data.Info.m_buildingAI as LandfillSiteAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is ExtractingFacilityAI) { ExtractingFacilityAI buildingAI = data.Info.m_buildingAI as ExtractingFacilityAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is ProcessingFacilityAI) { ProcessingFacilityAI buildingAI = data.Info.m_buildingAI as ProcessingFacilityAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is PoliceStationAI) { PoliceStationAI buildingAI = data.Info.m_buildingAI as PoliceStationAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is FireStationAI) { FireStationAI buildingAI = data.Info.m_buildingAI as FireStationAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is HospitalAI) { HospitalAI buildingAI = data.Info.m_buildingAI as HospitalAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is CargoStationAI) { CargoStationAI buildingAI = data.Info.m_buildingAI as CargoStationAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is TransportStationAI) { TransportStationAI buildingAI = data.Info.m_buildingAI as TransportStationAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is CemeteryAI) { CemeteryAI buildingAI = data.Info.m_buildingAI as CemeteryAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is MedicalCenterAI) { MedicalCenterAI buildingAI = data.Info.m_buildingAI as MedicalCenterAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is MonumentAI) { MonumentAI buildingAI = data.Info.m_buildingAI as MonumentAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is DepotAI) { DepotAI buildingAI = data.Info.m_buildingAI as DepotAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is HelicopterDepotAI) { HelicopterDepotAI buildingAI = data.Info.m_buildingAI as HelicopterDepotAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is MaintenanceDepotAI) { MaintenanceDepotAI buildingAI = data.Info.m_buildingAI as MaintenanceDepotAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is FirewatchTowerAI) { FirewatchTowerAI buildingAI = data.Info.m_buildingAI as FirewatchTowerAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is DoomsdayVaultAI) { DoomsdayVaultAI buildingAI = data.Info.m_buildingAI as DoomsdayVaultAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is DisasterResponseBuildingAI) { DisasterResponseBuildingAI buildingAI = data.Info.m_buildingAI as DisasterResponseBuildingAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is HadronColliderAI) { HadronColliderAI buildingAI = data.Info.m_buildingAI as HadronColliderAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is SchoolAI) { SchoolAI buildingAI = data.Info.m_buildingAI as SchoolAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is PowerPlantAI) { PowerPlantAI buildingAI = data.Info.m_buildingAI as PowerPlantAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is SnowDumpAI) { SnowDumpAI buildingAI = data.Info.m_buildingAI as SnowDumpAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is WarehouseAI) { WarehouseAI buildingAI = data.Info.m_buildingAI as WarehouseAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is WaterFacilityAI) { WaterFacilityAI buildingAI = data.Info.m_buildingAI as WaterFacilityAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is SaunaAI) { SaunaAI buildingAI = data.Info.m_buildingAI as SaunaAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is PostOfficeAI) { PostOfficeAI buildingAI = data.Info.m_buildingAI as PostOfficeAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is RadioMastAI) { RadioMastAI buildingAI = data.Info.m_buildingAI as RadioMastAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is SpaceElevatorAI) { SpaceElevatorAI buildingAI = data.Info.m_buildingAI as SpaceElevatorAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is SpaceRadarAI) { SpaceRadarAI buildingAI = data.Info.m_buildingAI as SpaceRadarAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is MainIndustryBuildingAI) { MainIndustryBuildingAI buildingAI = data.Info.m_buildingAI as MainIndustryBuildingAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is AuxiliaryBuildingAI) { AuxiliaryBuildingAI buildingAI = data.Info.m_buildingAI as AuxiliaryBuildingAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is ShelterAI) { ShelterAI buildingAI = data.Info.m_buildingAI as ShelterAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is HeatingPlantAI) { HeatingPlantAI buildingAI = data.Info.m_buildingAI as HeatingPlantAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is MainCampusBuildingAI) { MainCampusBuildingAI buildingAI = data.Info.m_buildingAI as MainCampusBuildingAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is MuseumAI) { MuseumAI buildingAI = data.Info.m_buildingAI as MuseumAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is UniqueFactoryAI) { UniqueFactoryAI buildingAI = data.Info.m_buildingAI as UniqueFactoryAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is UniqueFacultyAI) { UniqueFacultyAI buildingAI = data.Info.m_buildingAI as UniqueFacultyAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is VarsitySportsArenaAI) { VarsitySportsArenaAI buildingAI = data.Info.m_buildingAI as VarsitySportsArenaAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is LibraryAI) { LibraryAI buildingAI = data.Info.m_buildingAI as LibraryAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is FishFarmAI) { FishFarmAI buildingAI = data.Info.m_buildingAI as FishFarmAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is FishingHarborAI) { FishingHarborAI buildingAI = data.Info.m_buildingAI as FishingHarborAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is EldercareAI) { EldercareAI buildingAI = data.Info.m_buildingAI as EldercareAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is ChildcareAI) { ChildcareAI buildingAI = data.Info.m_buildingAI as ChildcareAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else if (data.Info.m_buildingAI is MarketAI) { MarketAI buildingAI = data.Info.m_buildingAI as MarketAI; totalWorkCount = buildingAI.m_workPlaceCount0 + buildingAI.m_workPlaceCount1 + buildingAI.m_workPlaceCount2 + buildingAI.m_workPlaceCount3; } else { if (!checkOnly) { DebugLog.LogToFileOnly("Error: find unknow building = " + data.Info.m_buildingAI.ToString()); } } BuildingData.isBuildingWorkerUpdated[buildingID] = true; BuildingData.buildingWorkCount[buildingID] = totalWorkCount; } return(totalWorkCount); }