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 static bool CanAddVehicle(ushort depotID, ref Building depot) { DepotAI buildingAi = depot.Info.m_buildingAI as DepotAI; 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); }
public void updateBidings() { BuildingInfo basicInfo = Singleton <BuildingManager> .instance.m_buildings.m_buffer[m_buildingIdSelecionado.Building].Info; DepotAI basicAI = basicInfo.GetAI() as DepotAI; if (basicAI == null) { closeDepotInfo(null, null); return; } TransportStationAI stationAI = basicInfo.GetAI() as TransportStationAI; HarborAI harborAI = basicInfo.GetAI() as HarborAI; vehiclesInUseLabel.text = LocaleFormatter.FormatGeneric("TRANSPORT_LINE_VEHICLECOUNT", new object[] { basicAI.GetVehicleCount(m_buildingIdSelecionado.Building, ref Singleton <BuildingManager> .instance.m_buildings.m_buffer[m_buildingIdSelecionado.Building]).ToString() }); if (stationAI != null) { passengersLastWeek.isVisible = true; int passengerCount = stationAI.GetPassengerCount(m_buildingIdSelecionado.Building, ref Singleton <BuildingManager> .instance.m_buildings.m_buffer[m_buildingIdSelecionado.Building]); passengersLastWeek.text = LocaleFormatter.FormatGeneric("AIINFO_PASSENGERS_SERVICED", new object[] { passengerCount }); } else { passengersLastWeek.isVisible = false; } upkeepCost.text = LocaleFormatter.FormatUpkeep(basicAI.GetResourceRate(m_buildingIdSelecionado.Building, ref Singleton <BuildingManager> .instance.m_buildings.m_buffer[(int)m_buildingIdSelecionado.Building], EconomyManager.Resource.Maintenance), false); uint num = Singleton <BuildingManager> .instance.m_buildings.m_buffer[m_buildingIdSelecionado.Building].m_citizenUnits; int num2 = 0; int num3 = 0; int unskill = 0; int oneSchool = 0; int twoSchool = 0; int threeSchool = 0; CitizenManager instance = Singleton <CitizenManager> .instance; while (num != 0u) { uint nextUnit = instance.m_units.m_buffer[(int)((UIntPtr)num)].m_nextUnit; if ((ushort)(instance.m_units.m_buffer[(int)((UIntPtr)num)].m_flags & CitizenUnit.Flags.Work) != 0) { for (int i = 0; i < 5; i++) { uint citizen = instance.m_units.m_buffer[(int)((UIntPtr)num)].GetCitizen(i); if (citizen != 0u && !instance.m_citizens.m_buffer[(int)((UIntPtr)citizen)].Dead && (instance.m_citizens.m_buffer[(int)((UIntPtr)citizen)].m_flags & Citizen.Flags.MovingIn) == Citizen.Flags.None) { num3++; switch (instance.m_citizens.m_buffer[(int)((UIntPtr)citizen)].EducationLevel) { case Citizen.Education.Uneducated: unskill++; break; case Citizen.Education.OneSchool: oneSchool++; break; case Citizen.Education.TwoSchools: twoSchool++; break; case Citizen.Education.ThreeSchools: threeSchool++; break; } } } } num = nextUnit; if (++num2 > 524288) { CODebugBase <LogChannel> .Error(LogChannel.Core, "Invalid list detected!\n" + Environment.StackTrace); break; } } workerChart.SetValues(new int[] { unskill, oneSchool, twoSchool, threeSchool }, new int[] { basicAI.m_workPlaceCount0, basicAI.m_workPlaceCount1, basicAI.m_workPlaceCount2, basicAI.m_workPlaceCount3 }); }