public override string GetLocalizedStats(ushort buildingID, ref Building data) { int electricityRate = this.GetElectricityRate(buildingID, ref data); string text = LocaleFormatter.FormatGeneric("AIINFO_ELECTRICITY_PRODUCTION", new object[] { (electricityRate * 16 + 500) / 1000 }); if (this.m_resourceType == TransferManager.TransferReason.Coal) { text += Environment.NewLine; int resourceDuration = this.GetResourceDuration(buildingID, ref data); text += LocaleFormatter.FormatGeneric("AIINFO_COAL_STORED", new object[] { resourceDuration }); } else if (this.m_resourceType == TransferManager.TransferReason.Petrol) { text += Environment.NewLine; int resourceDuration2 = this.GetResourceDuration(buildingID, ref data); text += LocaleFormatter.FormatGeneric("AIINFO_OIL_STORED", new object[] { resourceDuration2 }); } else if (this.m_resourceType == TransferManager.TransferReason.Grain) { text += Environment.NewLine; int resourceDuration3 = this.GetResourceDuration(buildingID, ref data); text += "Crops stored for " + resourceDuration3 + "weeks"; } return(text); }
public override string GetLocalizedTooltip() { string text = LocaleFormatter.FormatGeneric("AIINFO_WATER_CONSUMPTION", new object[] { this.GetWaterConsumption() * 16 }) + Environment.NewLine + LocaleFormatter.FormatGeneric("AIINFO_ELECTRICITY_CONSUMPTION", new object[] { this.GetElectricityConsumption() * 16 }); if (this.m_waterConsumption > 0) { return(TooltipHelper.Append(base.GetLocalizedTooltip(), TooltipHelper.Format(new string[] { LocaleFormatter.Info1, text, LocaleFormatter.Info2, LocaleFormatter.FormatGeneric("AIINFO_WATER_INTAKE", new object[] { this.m_waterConsumption * 16 * m_consumption_multiplier }) }))); } return(TooltipHelper.Append(base.GetLocalizedTooltip(), TooltipHelper.Format(new string[] { LocaleFormatter.Info1, text, LocaleFormatter.Info2, LocaleFormatter.FormatGeneric("AIINFO_WATER_OUTLET", new object[] { this.m_waterConsumption * 16 * m_consumption_multiplier }) }))); }
static void Postfix(UIComponent comp, int sel) { try { if (ModConfig.Instance.Enabled) { UISprite m_AchNope = comp.parent.Find <UISprite>("AchNope"); UIComponent m_Ach = comp.parent.Find("Ach"); UIComponent m_AchAvLabel = comp.parent.Find("AchAvLabel"); m_AchNope.isVisible = false; string tooltip = string.Empty; tooltip = Locale.Get("LOADPANEL_ACHSTATUS_ENABLED"); tooltip += "<color #50869a>"; if (Singleton <PluginManager> .instance.enabledModCountNoOverride > 0) { tooltip += Environment.NewLine; tooltip += LocaleFormatter.FormatGeneric("LOADPANEL_ACHSTATUS_MODSACTIVE", Singleton <PluginManager> .instance.enabledModCount); } tooltip += "</color>"; m_Ach.tooltip = tooltip; m_AchAvLabel.tooltip = tooltip; } } catch (Exception e) { Debug.Log("[Achieve It!] LoadPanelPatch:Postfix -> Exception: " + e.Message); } }
private void UpdateProgress() { VehicleManager instance = Singleton <VehicleManager> .instance; ushort vehicle = WorldInfoPanel.GetCurrentInstanceID().Vehicle; ushort firstVehicle = instance.m_vehicles.m_buffer[(int)vehicle].GetFirstVehicle(vehicle); float current; float max; if (GetProgressStatus(firstVehicle, ref instance.m_vehicles.m_buffer[(int)firstVehicle], out current, out max) || (int)firstVehicle != (int)(ushort)this._cachedProgressVehicle.GetValue((object)this._publicTransportVehicleWorldInfoPanel)) { this._cachedCurrentProgress.SetValue((object)this._publicTransportVehicleWorldInfoPanel, (object)current); this._cachedTotalProgress.SetValue((object)this._publicTransportVehicleWorldInfoPanel, (object)max); this._cachedProgressVehicle.SetValue((object)this._publicTransportVehicleWorldInfoPanel, (object)firstVehicle); } else { current = (float)this._cachedCurrentProgress.GetValue((object)this._publicTransportVehicleWorldInfoPanel); max = (float)this._cachedTotalProgress.GetValue((object)this._publicTransportVehicleWorldInfoPanel); } if ((double)max == 0.0) { return; } this._distanceTraveled.parent.Show(); this._distanceProgress.parent.Show(); float num = current / max; int p = Mathf.RoundToInt(num * 100f); this._distanceTraveled.value = num; this._distanceProgress.text = LocaleFormatter.FormatPercentage(p); }
private static void WorkshopAdPanelSetModsString() { if (m_ModsButton == null) { try { DebugUtils.Log("Getting MenuContainer"); var menuContainerObject = GameObject.Find("MenuContainer"); DebugUtils.Log("MenuContainer: " + menuContainerObject); var menuContainer = menuContainerObject.GetComponent <UIPanel>(); DebugUtils.Log("Finding Mods Button"); m_ModsButton = menuContainer.Find <UIButton>("Mods"); if (m_ActiveSprite == null) { m_ActiveSprite = new GameObject("EA_ActiveSprite") { transform = { parent = m_ModsButton.transform } }.AddComponent <UISprite>(); m_ActiveSprite.spriteName = "ThumbnailTrophy"; m_ActiveSprite.size = new Vector2(29f, 20f); m_ActiveSprite.relativePosition = new Vector3(225f, 3f); } } catch (Exception ex) { DebugUtils.Log(ex.Message); } } if (m_ModsButton != null && m_ActiveSprite == null) { try { m_ActiveSprite = new GameObject("EA_ActiveSprite") { transform = { parent = m_ModsButton.transform } }.AddComponent <UISprite>(); m_ActiveSprite.spriteName = "ThumbnailTrophy"; m_ActiveSprite.size = new Vector2(29f, 20f); m_ActiveSprite.relativePosition = new Vector3(225f, 3f); } catch (Exception ex) { DebugUtils.Log(ex.Message); } } UpdateActiveModCount(); var text = LocaleFormatter.FormatGeneric("MOD_ENABLED_STATUS", new object[] { m_ActiveModCount, Singleton <PluginManager> .instance.modCount }); DebugUtils.Log(text); if (m_ModsButton != null) { m_ModsButton.text = text; } if (m_ActiveSprite != null) { m_ActiveSprite.isVisible = (m_ActiveModCount == 0 || m_ActiveModCount > Singleton <PluginManager> .instance.enabledModCount); } }
public override string GetLocalizedTooltip() { return(TooltipHelper.Append(base.GetLocalizedTooltip(), TooltipHelper.Format(new string[] { LocaleFormatter.Info2, LocaleFormatter.FormatGeneric("AIINFO_WATER_OUTLET", new object[] { 0 }) }))); }
/// <summary> /// Creates a tooltip string for a building, including key stats. /// </summary> /// <param name="building">Building to generate for</param> /// <returns>A tooltip string</returns> private string BuildingTooltip(BuildingData building) { // Safety check. if (building?.prefab == null) { return(String.Empty); } StringBuilder tooltip = new StringBuilder(); tooltip.AppendLine(building.DisplayName); // Construction cost. try { tooltip.AppendLine(LocaleFormatter.FormatCost(building.prefab.GetConstructionCost(), false)); } catch { // Don't care - just don't show construction cost in the tooltip. } // Only add households or workplaces for Private AI types, not for e.g. Beautification (dummy service). if (building.prefab.GetAI() is PrivateBuildingAI thisAI) { // Household or workplace count. if (building.prefab.GetService() == ItemClass.Service.Residential) { // Residential - households. tooltip.Append(Translations.Translate("PRR_HOU")); tooltip.Append(": "); tooltip.AppendLine(thisAI.CalculateHomeCount(building.prefab.GetClassLevel(), new Randomizer(), building.prefab.GetWidth(), building.prefab.GetLength()).ToString()); } else { // Non-residential - workplaces. int[] workplaces = new int[4]; tooltip.Append(Translations.Translate("PRR_WOR")); tooltip.Append(": "); thisAI.CalculateWorkplaceCount(building.prefab.GetClassLevel(), new Randomizer(), building.prefab.GetWidth(), building.prefab.GetLength(), out workplaces[0], out workplaces[1], out workplaces[2], out workplaces[3]); tooltip.AppendLine(workplaces.Sum().ToString()); } } // Physical size. tooltip.Append("Size: "); tooltip.Append(building.prefab.GetWidth()); tooltip.Append("x"); tooltip.AppendLine(building.prefab.GetLength().ToString()); return(tooltip.ToString()); }
public static string GetLocalizedTooltip(Asset asset, PrefabInfo prefab, string title) { MilestoneInfo unlockMilestone = prefab.GetUnlockMilestone(); string text = TooltipHelper.Format(new string[] { LocaleFormatter.Title, title, LocaleFormatter.Sprite, (!string.IsNullOrEmpty(prefab.m_InfoTooltipThumbnail)) ? prefab.m_InfoTooltipThumbnail : prefab.name, LocaleFormatter.Text, (asset.findIt2Description + Asset.GetLocalizedDescription(prefab)), LocaleFormatter.Locked, (!ToolsModifierControl.IsUnlocked(unlockMilestone)).ToString() }); ToolsModifierControl.GetUnlockingInfo(unlockMilestone, out string unlockDesc, out string currentValue, out string targetValue, out string progress, out string locked); string addTooltip = TooltipHelper.Format(new string[] { LocaleFormatter.LockedInfo, locked, LocaleFormatter.UnlockDesc, unlockDesc, LocaleFormatter.UnlockPopulationProgressText, progress, LocaleFormatter.UnlockPopulationTarget, targetValue, LocaleFormatter.UnlockPopulationCurrent, currentValue }); text = TooltipHelper.Append(text, addTooltip); PrefabAI aI = prefab.GetAI(); if (aI != null) { text = TooltipHelper.Append(text, aI.GetLocalizedTooltip()); } if (prefab is PropInfo || prefab is TreeInfo) { text = TooltipHelper.Append(text, TooltipHelper.Format(new string[] { LocaleFormatter.Cost, LocaleFormatter.FormatCost(prefab.GetConstructionCost(), false) })); } return(text); }
public override string GetLocalizedTooltip() { return(TooltipHelper.Format(new string[] { LocaleFormatter.Cost, LocaleFormatter.FormatCost(this.GetConstructionCost(), true), LocaleFormatter.Upkeep, LocaleFormatter.FormatUpkeep(this.GetMaintenanceCost(), true), LocaleFormatter.Speed, LocaleFormatter.FormatGeneric("AIINFO_SPEED", new object[] { 15f }) })); }
private void SetProgress(UIProgressBar serviceBar, float val, float start, float target, bool isPositive) { float finalValue = (val - start) / (target - start); serviceBar.tooltip = string.Format(serviceBar.tooltip, LocaleFormatter.FormatPercentage((int)(finalValue * 100))); if (isPositive) { serviceBar.progressColor = Color.Lerp(Color.yellow, Color.green, finalValue); } else { serviceBar.progressColor = Color.Lerp(Color.yellow, Color.red, finalValue); } serviceBar.value = Mathf.Clamp01(finalValue); }
public override string GetLocalizedStats(ushort buildingID, ref Building data) { string str = string.Empty; if ((UnityEngine.Object) this.m_transportInfo != (UnityEngine.Object)null && this.m_maxVehicleCount != 0) { switch (this.m_transportInfo.m_transportType) { case TransportInfo.TransportType.Taxi: int vehicleCount1 = this.GetVehicleCount(buildingID, ref data); int num1 = (PlayerBuildingAI.GetProductionRate(100, Singleton <EconomyManager> .instance.GetBudget(this.m_info.m_class)) * this.m_maxVehicleCount + 99) / 100; str += LocaleFormatter.FormatGeneric("AIINFO_TAXIDEPOT_VEHICLES", (object)vehicleCount1, (object)num1); break; case TransportInfo.TransportType.Tram: int vehicleCount2 = this.GetVehicleCount(buildingID, ref data); int num2 = (PlayerBuildingAI.GetProductionRate(100, Singleton <EconomyManager> .instance.GetBudget(this.m_info.m_class)) * this.m_maxVehicleCount + 99) / 100; str += LocaleFormatter.FormatGeneric("AIINFO_TRAMDEPOT_TRAMCOUNT", (object)vehicleCount2, (object)num2); break; case TransportInfo.TransportType.Bus: int vehicleCount3 = this.GetVehicleCount(buildingID, ref data); int num3 = (PlayerBuildingAI.GetProductionRate(100, Singleton <EconomyManager> .instance.GetBudget(this.m_info.m_class)) * this.m_maxVehicleCount + 99) / 100; str += LocaleFormatter.FormatGeneric("AIINFO_BUSDEPOT_BUSCOUNT", (object)vehicleCount3, (object)num3); break; //begin mod case TransportInfo.TransportType.Metro: int vehicleCount4 = this.GetVehicleCount(buildingID, ref data); int num4 = (PlayerBuildingAI.GetProductionRate(100, Singleton <EconomyManager> .instance.GetBudget(this.m_info.m_class)) * this.m_maxVehicleCount + 99) / 100; str += $"Metro trains in use: {vehicleCount4}"; // of {num4}"; break; case TransportInfo.TransportType.Train: int vehicleCount5 = this.GetVehicleCount(buildingID, ref data); int num5 = (PlayerBuildingAI.GetProductionRate(100, Singleton <EconomyManager> .instance.GetBudget(this.m_info.m_class)) * this.m_maxVehicleCount + 99) / 100; str += $"Trains in use: {vehicleCount5}"; // of {num5}"; break; //end mod } } return(str); }
public override string GetLocalizedStats(ushort buildingID, ref Building data) { string text = string.Empty; if (this.m_waterConsumption > 0) { int num = this.GetWaterRate(buildingID, ref data) * 16 * m_consumption_multiplier; text += LocaleFormatter.FormatGeneric("AIINFO_WATER_INTAKE", new object[] { num }); } else { int num2 = -this.GetWaterRate(buildingID, ref data) * 16 * m_consumption_multiplier; text += LocaleFormatter.FormatGeneric("AIINFO_WATER_OUTLET", new object[] { num2 }); } text += "\nStored water: " + (data.m_waterBuffer * m_bufferMultiplier) + " m³"; text += "\nRunning at: " + (data.m_productionRate) + "%"; return(text); }
public override string GetLocalizedStats(ushort buildingID, ref Building data) { if (!MarketBuffers.ContainsKey(buildingID)) { AddMarketBufferToBuildingData(buildingID); } var marketBuffer = MarketBuffers[buildingID]; string str = ""; int num; for (int i = 0; i < m_incomingResources.Length; i++) { string name = m_incomingResources[i].ToString(); name = name.Replace("Grain", "Crops"); name = name.Replace("Flours", "Flour"); name = name.Replace("AnimalProducts", "Meat"); num = (int)(marketBuffer.amountSold2[i] * 10); str += name + " sold last week: " + num; str += Environment.NewLine; } str += Environment.NewLine; for (int i = 0; i < m_incomingResources.Length; i++) { string name = m_incomingResources[i].ToString(); name = name.Replace("Grain", "Crops"); name = name.Replace("Flours", "Flour"); name = name.Replace("AnimalProducts", "Meat"); num = (int)(marketBuffer.inputAmountBuffer[i]); str += name + " stored in market: " + num + "/" + m_goodsCapacity; str += Environment.NewLine; } str += Environment.NewLine; MarketBuffers[buildingID] = marketBuffer; int finalExport = (int)data.m_finalExport; return(str + LocaleFormatter.FormatGeneric("AIINFO_TOURISTS", new object[] { finalExport })); }
public static void Postfix(PowerPlantAI __instance, ushort buildingID, ref Building data, ref string __result) { int electricityRate = __instance.GetElectricityRate(buildingID, ref data); string text = LocaleFormatter.FormatGeneric("AIINFO_ELECTRICITY_PRODUCTION", new object[] { (electricityRate * 16 + 500) / 1000 }); text += Environment.NewLine; if (__instance.m_resourceType != TransferManager.TransferReason.None) { string name = __instance.m_resourceType.ToString(); name = name.Replace("Grain", "Crops"); name = name.Replace("Flours", "Flour"); name = name.Replace("Metals", "Metal"); name = name.Replace("Petroleum", "Petroleum"); name = name.Replace("Logs", "Raw Forest Products"); name = name.Replace("Lumber", "Zoned Forest Goods"); int resourceDuration = __instance.GetResourceDuration(buildingID, ref data); text += name + " stored for " + resourceDuration + " weeks"; } __result = text; }
public void updateBidings() { ushort lineID = m_lineIdSelecionado.TransportLine; TransportLine tl = Singleton <TransportManager> .instance.m_lines.m_buffer[(int)lineID]; TransportInfo info = tl.Info; int turistas = (int)Singleton <TransportManager> .instance.m_lines.m_buffer[(int)lineID].m_passengers.m_touristPassengers.m_averageCount; int residentes = (int)Singleton <TransportManager> .instance.m_lines.m_buffer[(int)lineID].m_passengers.m_residentPassengers.m_averageCount; int residentesPorc = residentes; if (residentesPorc == 0) { residentesPorc = 1; } int criancas = (int)Singleton <TransportManager> .instance.m_lines.m_buffer[(int)lineID].m_passengers.m_childPassengers.m_averageCount; int adolescentes = (int)Singleton <TransportManager> .instance.m_lines.m_buffer[(int)lineID].m_passengers.m_teenPassengers.m_averageCount; int jovens = (int)Singleton <TransportManager> .instance.m_lines.m_buffer[(int)lineID].m_passengers.m_youngPassengers.m_averageCount; int adultos = (int)Singleton <TransportManager> .instance.m_lines.m_buffer[(int)lineID].m_passengers.m_adultPassengers.m_averageCount; int idosos = (int)Singleton <TransportManager> .instance.m_lines.m_buffer[(int)lineID].m_passengers.m_seniorPassengers.m_averageCount; int motoristas = (int)Singleton <TransportManager> .instance.m_lines.m_buffer[(int)lineID].m_passengers.m_carOwningPassengers.m_averageCount; int veiculosLinha = TLMLineUtils.GetVehiclesCount(lineID); int porcCriancas = (criancas * 100 / residentesPorc); int porcAdolescentes = (adolescentes * 100 / residentesPorc); int porcJovens = (jovens * 100 / residentesPorc); int porcAdultos = (adultos * 100 / residentesPorc); int porcIdosos = (idosos * 100 / residentesPorc); int soma = porcCriancas + porcAdolescentes + porcJovens + porcAdultos + porcIdosos; if (soma != 0 && soma != 100) { porcAdultos = 100 - (porcCriancas + porcAdolescentes + porcJovens + porcIdosos); } agesPanel.SetValues(new int[] { porcCriancas, porcAdolescentes, porcJovens, porcAdultos, porcIdosos }); passageirosEturistasLabel.text = LocaleFormatter.FormatGeneric("TRANSPORT_LINE_PASSENGERS", new object[] { residentes, turistas }); int viagensSalvas = 0; int coeficienteViagens = 0; if (residentes + turistas != 0) { coeficienteViagens += criancas * 0; coeficienteViagens += adolescentes * 5; coeficienteViagens += jovens * ((15 * residentes + 20 * turistas + (residentes + turistas >> 1)) / (residentes + turistas)); coeficienteViagens += adultos * ((20 * residentes + 20 * turistas + (residentes + turistas >> 1)) / (residentes + turistas)); coeficienteViagens += idosos * ((10 * residentes + 20 * turistas + (residentes + turistas >> 1)) / (residentes + turistas)); } if (coeficienteViagens != 0) { viagensSalvas = (int)(((long)motoristas * 10000L + (long)(coeficienteViagens >> 1)) / (long)coeficienteViagens); viagensSalvas = Mathf.Clamp(viagensSalvas, 0, 100); } viagensEvitadasLabel.text = LocaleFormatter.FormatGeneric("TRANSPORT_LINE_TRIPSAVED", new object[] { viagensSalvas }); if (daytimeChange != null && daytimeChange.completedOrFailed) { linearMap.redrawLine(); daytimeChange = null; } else { linearMap.updateBidings(); } //lines info int stopsCount = TLMLineUtils.GetStopsCount(lineID); if (lastStopsCount != stopsCount) { float totalSize = TLMLineUtils.GetLineLength(lineID); lineLenghtLabel.text = string.Format(Locale.Get("TLM_LENGHT_AND_STOPS"), totalSize, stopsCount); lastStopsCount = stopsCount; } //estatisticas novas veiculosLinhaLabel.text = LocaleFormatter.FormatGeneric("TRANSPORT_LINE_VEHICLECOUNT", new object[] { veiculosLinha }); uint prefix = 0; if (TLMConfigWarehouse.getCurrentConfigInt(TLMConfigWarehouse.getConfigIndexForTransportInfo(info) | TLMConfigWarehouse.ConfigIndex.PREFIX) != (int)ModoNomenclatura.Nenhum) { prefix = Singleton <TransportManager> .instance.m_lines.m_buffer[lineID].m_lineNumber / 1000u; } float overallBudget = Singleton <EconomyManager> .instance.GetBudget(info.m_class) / 100f; float prefixMultiplier = TLMUtils.getExtensionFromConfigIndex(TLMCW.getConfigIndexForTransportInfo(info)).getBudgetMultiplierForHour(prefix, (int)Singleton <SimulationManager> .instance.m_currentDayTimeHour) / 100f; detailedStatsLabel.text = string.Format("{0:0%}", overallBudget * prefixMultiplier); detailedStatsLabel.tooltip = string.Format(Locale.Get("TLM_LINE_BUDGET_EXPLAIN"), TLMCW.getNameForTransportType(TLMCW.getConfigIndexForTransportInfo(info)), TLMUtils.getStringOptionsForPrefix((ModoNomenclatura)TLMConfigWarehouse.getCurrentConfigInt(TLMConfigWarehouse.getConfigIndexForTransportInfo(info) | TLMConfigWarehouse.ConfigIndex.PREFIX), true)[prefix + 1], overallBudget, prefixMultiplier, overallBudget * prefixMultiplier); //bool isZeroed = ((int)tl.m_flags & (int)TLMTransportLineFlags.ZERO_BUDGET_SETTED) > 0; //lineTime.isVisible = !isZeroed; //if (isZeroed) //{ // lineTimeTitle.localeID = ("TLM_LINE_DISABLED_NO_BUDGET"); // lineTimeTitle.tooltipLocaleID = ("TLM_LINE_DISABLED_NO_BUDGET_DESC"); //} //else //{ // lineTimeTitle.localeID = ("TRANSPORT_LINE_ACTIVITY"); // lineTimeTitle.tooltipLocaleID = (""); //} //generalDebugLabel.enabled = TransportLinesManagerMod.debugMode.value; //if (TransportLinesManagerMod.debugMode.value) //{ // string debugTxt = "!"; // var extraDatas = ExtraVehiclesStats.instance.getLineVehiclesData(lineID); // if (extraDatas.Count == 0) // { // debugTxt = "none"; // } // else // { // foreach (var item in extraDatas) // { // debugTxt += string.Format("BUS ID {0} - {1} Fill, {2} per lap ||", item.Key, item.Value.avgFill.ToString("0.00%"), string.Format("{0}d {1}h{2}m", item.Value.timeTakenLap.TotalDays, item.Value.timeTakenLap.Hours, item.Value.timeTakenLap.Minutes)); // } // } // generalDebugLabel.text = debugTxt; //} // //custos da linha // float costVehicles = 0; // ushort nextVehId = tl.m_vehicles; // while (nextVehId >0) { // costVehicles += Singleton<VehicleManager>.instance.m_vehicles.m_buffer [(int)nextVehId].Info.GetMaintenanceCost () ; // nextVehId = Singleton<VehicleManager>.instance.m_vehicles.m_buffer [(int)nextVehId].m_nextLineVehicle; // } // float costStops = 0; // int a = tl.m_stops; // for (int i = 0; i< stopsCount; i++) { // costStops += Singleton<NetManager>.instance.m_nodes.m_buffer [(int)tl.GetStop (i)].Info.GetMaintenanceCost () ; // } // custosLabel.text = String.Format (costsFormat, costVehicles, costStops, costVehicles + costStops); }
public void Update() { if (!this.m_buildingInfoPanel.isVisible) { return; } Building b = Singleton <BuildingManager> .instance.m_buildings.m_buffer[m_buildingIdSelecionado.Building]; if (!(b.Info.GetAI() is BuildingAI basicAI)) { closeBuildingInfo(null, null); return; } var ssds = ServiceSystemDefinition.from(b.Info); List <string> textVehicles = new List <string>(); foreach (var ssd in ssds) { int count = 0; int cargo = 0; int capacity = 0; int inbound = 0; int outbound = 0; var ext = SVMBuildingAIOverrideUtils.getBuildingOverrideExtension(b.Info); SVMBuildingUtils.CalculateOwnVehicles(m_buildingIdSelecionado.Building, ref b, ext.GetManagedReasons(b.Info).Keys, ref count, ref cargo, ref capacity, ref inbound, ref outbound); var maxField = ext.GetVehicleMaxCountField(ssd.vehicleType); int maxVehicles = (SVMUtils.GetPrivateField <int>(b.Info.GetAI(), maxField) * SVMBuildingUtils.GetProductionRate(ref b) / 100); string maxVehiclesStr = maxField == null || maxVehicles > 0x3FFF ? "∞" : maxVehicles.ToString(); textVehicles.Add($"{count}/{maxVehiclesStr} ({Locale.Get("SVM_VEHICLE_TYPE", ssd.vehicleType.ToString())})"); } vehiclesInUseLabel.text = string.Join(" | ", textVehicles.ToArray()); 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[] { SVMUtils.GetPrivateField <int>(basicAI, "m_workPlaceCount0"), SVMUtils.GetPrivateField <int>(basicAI, "m_workPlaceCount1"), SVMUtils.GetPrivateField <int>(basicAI, "m_workPlaceCount2"), SVMUtils.GetPrivateField <int>(basicAI, "m_workPlaceCount3") }); }
private void UpdateBindings() { ushort vehicleID = 0; ushort lineId = this.GetLineID(out vehicleID); if ((int)lineId == 0) { this._passengerPanel.Hide(); this._statsPanel.Hide(); this._buttonPanel.Hide(); this._publicTransportVehicleWorldInfoPanel.component.height = 229f; } else { this._publicTransportVehicleWorldInfoPanel.component.height = 332f; this._editType.isVisible = !OptionsWrapper <Settings> .Options.HideVehicleEditor; ItemClass itemClass = Singleton <TransportManager> .instance.m_lines.m_buffer[(int)lineId].Info.m_class; ItemClass.SubService subService = itemClass.m_subService; ItemClass.Service service = itemClass.m_service; ItemClass.Level level = itemClass.m_level; switch (subService) { case ItemClass.SubService.PublicTransportBus: case ItemClass.SubService.PublicTransportTours: case ItemClass.SubService.PublicTransportMetro: case ItemClass.SubService.PublicTransportTrain: case ItemClass.SubService.PublicTransportTram: case ItemClass.SubService.PublicTransportShip: case ItemClass.SubService.PublicTransportPlane: case ItemClass.SubService.PublicTransportMonorail: case ItemClass.SubService.PublicTransportCableCar: case ItemClass.SubService.PublicTransportTrolleybus: this._passengerPanel.Show(); if ((int)vehicleID != 0) { this._lastStopExchange.text = string.Format(Localization.Get("VEHICLE_PANEL_LAST_STOP_EXCHANGE"), (object)CachedVehicleData.m_cachedVehicleData[(int)vehicleID].LastStopGonePassengers, (object)CachedVehicleData.m_cachedVehicleData[(int)vehicleID].LastStopNewPassengers); } break; case ItemClass.SubService.None: if (service == ItemClass.Service.Disaster && level == ItemClass.Level.Level4) { this._passengerPanel.Show(); if ((int)vehicleID != 0) { this._lastStopExchange.text = string.Format(Localization.Get("VEHICLE_PANEL_LAST_STOP_EXCHANGE"), (object)CachedVehicleData.m_cachedVehicleData[(int)vehicleID].LastStopGonePassengers, (object)CachedVehicleData.m_cachedVehicleData[(int)vehicleID].LastStopNewPassengers); } } else { this._passengerPanel.Hide(); } break; default: this._passengerPanel.Hide(); break; } this._distanceTraveled.parent.Show(); this._distanceProgress.parent.Show(); VehicleManager vm = Singleton <VehicleManager> .instance; if ((vm.m_vehicles.m_buffer[(int)vehicleID].m_flags & Vehicle.Flags.Stopped) != ~(Vehicle.Flags.Created | Vehicle.Flags.Deleted | Vehicle.Flags.Spawned | Vehicle.Flags.Inverted | Vehicle.Flags.TransferToTarget | Vehicle.Flags.TransferToSource | Vehicle.Flags.Emergency1 | Vehicle.Flags.Emergency2 | Vehicle.Flags.WaitingPath | Vehicle.Flags.Stopped | Vehicle.Flags.Leaving | Vehicle.Flags.Arriving | Vehicle.Flags.Reversed | Vehicle.Flags.TakingOff | Vehicle.Flags.Flying | Vehicle.Flags.Landing | Vehicle.Flags.WaitingSpace | Vehicle.Flags.WaitingCargo | Vehicle.Flags.GoingBack | Vehicle.Flags.WaitingTarget | Vehicle.Flags.Importing | Vehicle.Flags.Exporting | Vehicle.Flags.Parking | Vehicle.Flags.CustomName | Vehicle.Flags.OnGravel | Vehicle.Flags.WaitingLoading | Vehicle.Flags.Congestion | Vehicle.Flags.DummyTraffic | Vehicle.Flags.Underground | Vehicle.Flags.Transition | Vehicle.Flags.InsideBuilding | Vehicle.Flags.LeftHandDrive)) { if (CachedVehicleData.m_cachedVehicleData[(int)vehicleID].IsUnbunchingInProgress) { this._status.text = Localization.Get("VEHICLE_PANEL_STATUS_UNBUNCHING"); } this._distance.text = this._status.text; float num = (float)vm.m_vehicles.m_buffer[(int)vehicleID].m_waitCounter / 12f; int p = Mathf.RoundToInt(num * 100f); this._distanceTraveled.value = num; this._distanceTraveled.progressColor = (Color32)Color.green; this._distanceProgress.text = LocaleFormatter.FormatPercentage(p); } else { bool flag = true; string text = Localization.Get("VEHICLE_PANEL_STATUS_NEXT_STOP"); if (subService == ItemClass.SubService.PublicTransportShip) { this.UpdateProgress(); } else if (subService == ItemClass.SubService.PublicTransportPlane) { if ((vm.m_vehicles.m_buffer[(int)vehicleID].m_flags & Vehicle.Flags.Landing) != ~(Vehicle.Flags.Created | Vehicle.Flags.Deleted | Vehicle.Flags.Spawned | Vehicle.Flags.Inverted | Vehicle.Flags.TransferToTarget | Vehicle.Flags.TransferToSource | Vehicle.Flags.Emergency1 | Vehicle.Flags.Emergency2 | Vehicle.Flags.WaitingPath | Vehicle.Flags.Stopped | Vehicle.Flags.Leaving | Vehicle.Flags.Arriving | Vehicle.Flags.Reversed | Vehicle.Flags.TakingOff | Vehicle.Flags.Flying | Vehicle.Flags.Landing | Vehicle.Flags.WaitingSpace | Vehicle.Flags.WaitingCargo | Vehicle.Flags.GoingBack | Vehicle.Flags.WaitingTarget | Vehicle.Flags.Importing | Vehicle.Flags.Exporting | Vehicle.Flags.Parking | Vehicle.Flags.CustomName | Vehicle.Flags.OnGravel | Vehicle.Flags.WaitingLoading | Vehicle.Flags.Congestion | Vehicle.Flags.DummyTraffic | Vehicle.Flags.Underground | Vehicle.Flags.Transition | Vehicle.Flags.InsideBuilding | Vehicle.Flags.LeftHandDrive) || (vm.m_vehicles.m_buffer[(int)vehicleID].m_flags & Vehicle.Flags.TakingOff) != ~(Vehicle.Flags.Created | Vehicle.Flags.Deleted | Vehicle.Flags.Spawned | Vehicle.Flags.Inverted | Vehicle.Flags.TransferToTarget | Vehicle.Flags.TransferToSource | Vehicle.Flags.Emergency1 | Vehicle.Flags.Emergency2 | Vehicle.Flags.WaitingPath | Vehicle.Flags.Stopped | Vehicle.Flags.Leaving | Vehicle.Flags.Arriving | Vehicle.Flags.Reversed | Vehicle.Flags.TakingOff | Vehicle.Flags.Flying | Vehicle.Flags.Landing | Vehicle.Flags.WaitingSpace | Vehicle.Flags.WaitingCargo | Vehicle.Flags.GoingBack | Vehicle.Flags.WaitingTarget | Vehicle.Flags.Importing | Vehicle.Flags.Exporting | Vehicle.Flags.Parking | Vehicle.Flags.CustomName | Vehicle.Flags.OnGravel | Vehicle.Flags.WaitingLoading | Vehicle.Flags.Congestion | Vehicle.Flags.DummyTraffic | Vehicle.Flags.Underground | Vehicle.Flags.Transition | Vehicle.Flags.InsideBuilding | Vehicle.Flags.LeftHandDrive) || (vm.m_vehicles.m_buffer[(int)vehicleID].m_flags & Vehicle.Flags.Flying) == ~(Vehicle.Flags.Created | Vehicle.Flags.Deleted | Vehicle.Flags.Spawned | Vehicle.Flags.Inverted | Vehicle.Flags.TransferToTarget | Vehicle.Flags.TransferToSource | Vehicle.Flags.Emergency1 | Vehicle.Flags.Emergency2 | Vehicle.Flags.WaitingPath | Vehicle.Flags.Stopped | Vehicle.Flags.Leaving | Vehicle.Flags.Arriving | Vehicle.Flags.Reversed | Vehicle.Flags.TakingOff | Vehicle.Flags.Flying | Vehicle.Flags.Landing | Vehicle.Flags.WaitingSpace | Vehicle.Flags.WaitingCargo | Vehicle.Flags.GoingBack | Vehicle.Flags.WaitingTarget | Vehicle.Flags.Importing | Vehicle.Flags.Exporting | Vehicle.Flags.Parking | Vehicle.Flags.CustomName | Vehicle.Flags.OnGravel | Vehicle.Flags.WaitingLoading | Vehicle.Flags.Congestion | Vehicle.Flags.DummyTraffic | Vehicle.Flags.Underground | Vehicle.Flags.Transition | Vehicle.Flags.InsideBuilding | Vehicle.Flags.LeftHandDrive)) { text = this._status.text; flag = false; } this.UpdateProgress(); } this._status.text = text; if (flag) { ushort targetBuilding = vm.m_vehicles.m_buffer[(int)vehicleID].m_targetBuilding; InstanceID id = new InstanceID(); id.NetNode = targetBuilding; string name = Singleton <InstanceManager> .instance.GetName(id); this._target.objectUserData = (object)id; this._target.text = name == null?string.Format(Localization.Get("STOP_LIST_BOX_ROW_STOP"), (object)(TransportLineUtil.GetStopIndex(lineId, targetBuilding) + 1)) : name; this._target.Enable(); this._target.Show(); } this._distance.text = ColossalFramework.Globalization.Locale.Get(this._distance.localeID); this._distanceTraveled.progressColor = new Color32(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue); } this._statsPanel.Show(); this._passengersCurrentWeek.text = CachedVehicleData.m_cachedVehicleData[(int)vehicleID].PassengersThisWeek.ToString(); this._passengersLastWeek.text = CachedVehicleData.m_cachedVehicleData[(int)vehicleID].PassengersLastWeek.ToString(); this._passengersAverage.text = CachedVehicleData.m_cachedVehicleData[(int)vehicleID].PassengersAverage.ToString(); PrefabData prefabData = Array.Find(VehiclePrefabs.instance.GetPrefabs(service, subService, level), item => item.PrefabDataIndex == vm.m_vehicles.m_buffer[(int)vehicleID].Info.m_prefabDataIndex); int num1 = CachedVehicleData.m_cachedVehicleData[(int)vehicleID].IncomeThisWeek - prefabData.MaintenanceCost; UILabel earningsCurrentWeek = this._earningsCurrentWeek; float num2 = (float)num1 * 0.01f; string str1 = num2.ToString(ColossalFramework.Globalization.Locale.Get("MONEY_FORMAT"), (IFormatProvider)LocaleManager.cultureInfo); earningsCurrentWeek.text = str1; this._earningsCurrentWeek.textColor = (Color32)this.GetColor((float)num1); int incomeLastWeek = CachedVehicleData.m_cachedVehicleData[(int)vehicleID].IncomeLastWeek; UILabel earningsLastWeek = this._earningsLastWeek; num2 = (float)incomeLastWeek * 0.01f; string str2 = num2.ToString(ColossalFramework.Globalization.Locale.Get("MONEY_FORMAT"), (IFormatProvider)LocaleManager.cultureInfo); earningsLastWeek.text = str2; this._earningsLastWeek.textColor = (Color32)this.GetColor((float)incomeLastWeek); int incomeAverage = CachedVehicleData.m_cachedVehicleData[(int)vehicleID].IncomeAverage; UILabel earningsAverage = this._earningsAverage; num2 = (float)incomeAverage * 0.01f; string str3 = num2.ToString(ColossalFramework.Globalization.Locale.Get("MONEY_FORMAT"), (IFormatProvider)LocaleManager.cultureInfo); earningsAverage.text = str3; this._earningsAverage.textColor = (Color32)this.GetColor((float)incomeAverage); this._buttonPanel.Show(); } }
public void RefreshData(bool colors, bool visible) { if (Singleton <TransportManager> .exists) { bool isRowVisible; if (this.m_LineOperation == null || this.m_LineOperation.completedOrFailed) { //this.m_DayLine.isVisible = (!isZeroed); //this.m_NightLine.isVisible = (!isZeroed); //this.m_DayNightLine.isVisible = (!isZeroed); //this.m_DisabledLine.isVisible = (!isZeroed); //this.m_noBudgetWarn.isVisible = (isZeroed); TLMLineUtils.getLineActive(ref Singleton <TransportManager> .instance.m_lines.m_buffer[m_LineID], out bool dayActive, out bool nightActive); bool zeroed; unchecked { zeroed = (Singleton <TransportManager> .instance.m_lines.m_buffer[m_LineID].m_flags & (TransportLine.Flags)TLMTransportLineFlags.ZERO_BUDGET_CURRENT) != 0; } if (!dayActive || !nightActive || zeroed) { m_LineColor.normalBgSprite = zeroed ? "NoBudgetIcon" : dayActive ? "DayIcon" : nightActive ? "NightIcon" : "DisabledIcon"; } else { m_LineColor.normalBgSprite = ""; } this.m_DayLine.isChecked = (dayActive && !nightActive); this.m_NightLine.isChecked = (nightActive && !dayActive); this.m_DayNightLine.isChecked = (dayActive && nightActive); this.m_DisabledLine.isChecked = (!dayActive && !nightActive); m_DisabledLine.relativePosition = new Vector3(730, 8); isRowVisible = TLMPublicTransportDetailPanel.instance.isActivityVisible(dayActive, nightActive) && TLMPublicTransportDetailPanel.instance.isOnCurrentPrefixFilter(m_LineNumber); } else { m_LineColor.normalBgSprite = "DisabledIcon"; isRowVisible = TLMPublicTransportDetailPanel.instance.isActivityVisible(false, false) && TLMPublicTransportDetailPanel.instance.isOnCurrentPrefixFilter(m_LineNumber); } if (!isRowVisible) { GetComponent <UIComponent>().isVisible = false; return; } GetComponent <UIComponent>().isVisible = true; this.m_LineName.text = Singleton <TransportManager> .instance.GetLineName(this.m_LineID); m_LineNumber = Singleton <TransportManager> .instance.m_lines.m_buffer[(int)this.m_LineID].m_lineNumber; this.m_LineStops.text = Singleton <TransportManager> .instance.m_lines.m_buffer[(int)this.m_LineID].CountStops(this.m_LineID).ToString("N0"); this.m_LineVehicles.text = Singleton <TransportManager> .instance.m_lines.m_buffer[(int)this.m_LineID].CountVehicles(this.m_LineID).ToString("N0"); uint prefix = 0; TransportInfo info = Singleton <TransportManager> .instance.m_lines.m_buffer[(int)this.m_LineID].Info; if (TLMConfigWarehouse.getCurrentConfigInt(TLMConfigWarehouse.getConfigIndexForTransportInfo(info) | TLMConfigWarehouse.ConfigIndex.PREFIX) != (int)ModoNomenclatura.Nenhum) { prefix = Singleton <TransportManager> .instance.m_lines.m_buffer[lineID].m_lineNumber / 1000u; } float overallBudget = Singleton <EconomyManager> .instance.GetBudget(info.m_class) / 100f; this.m_lineBudgetLabel.text = string.Format("{0:0%}", TLMLineUtils.getEffectiveBugdet(lineID));//585+1/7 = frames/week string vehTooltip = string.Format("{0} {1}", this.m_LineVehicles.text, Locale.Get("PUBLICTRANSPORT_VEHICLES")); this.m_LineVehicles.tooltip = vehTooltip; int averageCount = (int)Singleton <TransportManager> .instance.m_lines.m_buffer[(int)this.m_LineID].m_passengers.m_residentPassengers.m_averageCount; int averageCount2 = (int)Singleton <TransportManager> .instance.m_lines.m_buffer[(int)this.m_LineID].m_passengers.m_touristPassengers.m_averageCount; this.m_LinePassengers.text = (averageCount + averageCount2).ToString("N0"); // this.m_LineEarnings.text = string.Format("~₡ {0:0.00}", (averageCount + averageCount2) / 50f); // m_LineEarnings.relativePosition = m_LinePassengers.relativePosition + new Vector3(0, 20, 0); this.m_LinePassengers.tooltip = string.Format("{0}", LocaleFormatter.FormatGeneric("TRANSPORT_LINE_PASSENGERS", new object[] { averageCount, averageCount2 })); TLMLineUtils.setLineNumberCircleOnRef(lineID, m_LineNumberFormatted, 0.8f); m_LineColor.normalFgSprite = TLMLineUtils.getIconForLine(lineID); m_lineBudgetLabel.tooltip = string.Format(Locale.Get("TLM_LINE_BUDGET_EXPLAIN_2"), TLMCW.getNameForTransportType(TLMCW.getConfigIndexForTransportInfo(info)), overallBudget, Singleton <TransportManager> .instance.m_lines.m_buffer[lineID].m_budget / 100f, TLMLineUtils.getEffectiveBugdet(lineID)); this.m_PassengerCount = averageCount + averageCount2; this.m_lineIncompleteWarning.isVisible = ((Singleton <TransportManager> .instance.m_lines.m_buffer[(int)this.m_LineID].m_flags & TransportLine.Flags.Complete) == TransportLine.Flags.None); if (colors) { this.m_LineColor.selectedColor = Singleton <TransportManager> .instance.GetLineColor(this.m_LineID); } if (visible) { this.m_LineIsVisible.isChecked = ((Singleton <TransportManager> .instance.m_lines.m_buffer[(int)this.m_LineID].m_flags & TransportLine.Flags.Hidden) == TransportLine.Flags.None); } m_lineBudgetLabel.relativePosition = new Vector3(m_LineVehicles.relativePosition.x, 19, 0); bool tlmPerHour = TLMLineUtils.isPerHourBudget(m_LineID); m_DayLine.isVisible = !tlmPerHour; m_DayNightLine.isVisible = !tlmPerHour; m_NightLine.isVisible = !tlmPerHour; m_DisabledLine.isVisible = !tlmPerHour; m_perHourBudgetInfo.isVisible = tlmPerHour; m_perHourBudgetInfo.relativePosition = new Vector3(615, 2); } }
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 }); }
public void RefreshData(bool colors, bool visible) { if (Singleton <TransportManager> .exists) { bool isRowVisible; if (this.m_LineOperation == null || this.m_LineOperation.completedOrFailed) { //this.m_DayLine.isVisible = (!isZeroed); //this.m_NightLine.isVisible = (!isZeroed); //this.m_DayNightLine.isVisible = (!isZeroed); //this.m_DisabledLine.isVisible = (!isZeroed); //this.m_noBudgetWarn.isVisible = (isZeroed); bool isZeroed; bool dayActive; bool nightActive; TLMLineUtils.getLineActive(ref Singleton <TransportManager> .instance.m_lines.m_buffer[(int)this.m_LineID], out dayActive, out nightActive, out isZeroed); if (!isZeroed) { if (!dayActive || !nightActive) { m_LineColor.normalBgSprite = dayActive ? "DayIcon" : nightActive ? "NightIcon" : "DisabledIcon"; } else { m_LineColor.normalBgSprite = ""; } } else { m_LineColor.normalBgSprite = "NoBudgetIcon"; //m_noBudgetWarn.relativePosition = new Vector3(615, 2); } this.m_DayLine.isChecked = (dayActive && !nightActive); this.m_NightLine.isChecked = (nightActive && !dayActive); this.m_DayNightLine.isChecked = (dayActive && nightActive); this.m_DisabledLine.isChecked = (!dayActive && !nightActive); m_DisabledLine.relativePosition = new Vector3(730, 8); isRowVisible = TLMPublicTransportDetailPanel.instance.isActivityVisible(dayActive, nightActive) && TLMPublicTransportDetailPanel.instance.isOnCurrentPrefixFilter(m_LineNumber); } else { m_LineColor.normalBgSprite = "DisabledIcon"; isRowVisible = TLMPublicTransportDetailPanel.instance.isActivityVisible(false, false) && TLMPublicTransportDetailPanel.instance.isOnCurrentPrefixFilter(m_LineNumber); } if (!isRowVisible) { GetComponent <UIComponent>().isVisible = false; return; } GetComponent <UIComponent>().isVisible = true; this.m_LineName.text = Singleton <TransportManager> .instance.GetLineName(this.m_LineID); m_LineNumber = Singleton <TransportManager> .instance.m_lines.m_buffer[(int)this.m_LineID].m_lineNumber; this.m_LineStops.text = Singleton <TransportManager> .instance.m_lines.m_buffer[(int)this.m_LineID].CountStops(this.m_LineID).ToString("N0"); this.m_LineVehicles.text = Singleton <TransportManager> .instance.m_lines.m_buffer[(int)this.m_LineID].CountVehicles(this.m_LineID).ToString("N0"); uint prefix = 0; TransportInfo info = Singleton <TransportManager> .instance.m_lines.m_buffer[(int)this.m_LineID].Info; if (TLMConfigWarehouse.getCurrentConfigInt(TLMConfigWarehouse.getConfigIndexForTransportInfo(info) | TLMConfigWarehouse.ConfigIndex.PREFIX) != (int)ModoNomenclatura.Nenhum) { prefix = Singleton <TransportManager> .instance.m_lines.m_buffer[lineID].m_lineNumber / 1000u; } float overallBudget = Singleton <EconomyManager> .instance.GetBudget(info.m_class) / 100f; float prefixMultiplier = TLMUtils.getExtensionFromConfigIndex(TLMCW.getConfigIndexForTransportInfo(info)).getBudgetMultiplierForHour(prefix, (int)Singleton <SimulationManager> .instance.m_currentDayTimeHour) / 100f; this.m_budgetEffective.text = string.Format("{0:0%}", overallBudget * prefixMultiplier);//585+1/7 = frames/week string vehTooltip = string.Format("{0} {1}", this.m_LineVehicles.text, Locale.Get("PUBLICTRANSPORT_VEHICLES")); this.m_LineVehicles.tooltip = vehTooltip; int averageCount = (int)Singleton <TransportManager> .instance.m_lines.m_buffer[(int)this.m_LineID].m_passengers.m_residentPassengers.m_averageCount; int averageCount2 = (int)Singleton <TransportManager> .instance.m_lines.m_buffer[(int)this.m_LineID].m_passengers.m_touristPassengers.m_averageCount; this.m_LinePassengers.text = (averageCount + averageCount2).ToString("N0"); // this.m_LineEarnings.text = string.Format("~₡ {0:0.00}", (averageCount + averageCount2) / 50f); // m_LineEarnings.relativePosition = m_LinePassengers.relativePosition + new Vector3(0, 20, 0); this.m_LinePassengers.tooltip = string.Format("{0}", LocaleFormatter.FormatGeneric("TRANSPORT_LINE_PASSENGERS", new object[] { averageCount, averageCount2 })); ModoNomenclatura prefixMode; Separador sep; ModoNomenclatura suffix; ModoNomenclatura nonPrefix; bool zerosEsquerda; bool invertPrefixSuffix; string bgSprite; TLMLineUtils.getLineNamingParameters(lineID, out prefixMode, out sep, out suffix, out nonPrefix, out zerosEsquerda, out invertPrefixSuffix, out bgSprite); TLMLineUtils.setLineNumberCircleOnRef(lineNumber, prefixMode, sep, suffix, nonPrefix, zerosEsquerda, m_LineNumberFormatted, invertPrefixSuffix, 0.8f); m_LineColor.normalFgSprite = bgSprite; m_budgetEffective.tooltip = string.Format(Locale.Get("TLM_LINE_BUDGET_EXPLAIN"), TLMCW.getNameForTransportType(TLMCW.getConfigIndexForTransportInfo(info)), TLMUtils.getStringOptionsForPrefix(prefixMode, true)[prefix + 1], overallBudget, prefixMultiplier, overallBudget * prefixMultiplier); this.m_PassengerCount = averageCount + averageCount2; if (colors) { this.m_LineColor.selectedColor = Singleton <TransportManager> .instance.GetLineColor(this.m_LineID); } if (visible) { this.m_LineIsVisible.isChecked = ((Singleton <TransportManager> .instance.m_lines.m_buffer[(int)this.m_LineID].m_flags & TransportLine.Flags.Hidden) == TransportLine.Flags.None); } m_budgetEffective.relativePosition = new Vector3(m_LineVehicles.relativePosition.x, 19, 0); } }
public void RefreshData(bool updateColors, bool updateVisibility) { if (this.m_LineOperation == null || this.m_LineOperation.completedOrFailed) { TLMLineUtils.getLineActive(ref Singleton <TransportManager> .instance.m_lines.m_buffer[m_LineID], out bool dayActive, out bool nightActive); bool zeroed; unchecked { zeroed = (Singleton <TransportManager> .instance.m_lines.m_buffer[m_LineID].m_flags & (TransportLine.Flags)TLMTransportLineFlags.ZERO_BUDGET_CURRENT) != 0; } if (!dayActive || !nightActive || zeroed) { m_LineColor.normalBgSprite = zeroed ? "NoBudgetIcon" : dayActive ? "DayIcon" : nightActive ? "NightIcon" : "DisabledIcon"; } else { m_LineColor.normalBgSprite = ""; } this.m_DayLine.isChecked = (dayActive && !nightActive); this.m_NightLine.isChecked = (nightActive && !dayActive); this.m_DayNightLine.isChecked = (dayActive && nightActive); this.m_DisabledLine.isChecked = (!dayActive && !nightActive); m_DisabledLine.relativePosition = new Vector3(730, 8); } else { m_LineColor.normalBgSprite = "DisabledIcon"; } this.m_LineName.text = Singleton <TransportManager> .instance.GetLineName(this.m_LineID); m_LineNumber = Singleton <TransportManager> .instance.m_lines.m_buffer[(int)this.m_LineID].m_lineNumber; this.m_LineStops.text = Singleton <TransportManager> .instance.m_lines.m_buffer[(int)this.m_LineID].CountStops(this.m_LineID).ToString("N0"); this.m_LineVehicles.text = Singleton <TransportManager> .instance.m_lines.m_buffer[(int)this.m_LineID].CountVehicles(this.m_LineID).ToString("N0"); uint prefix = 0; var tsd = Singleton <T> .instance.GetTSD(); if (TLMConfigWarehouse.getCurrentConfigInt(tsd.toConfigIndex() | TLMConfigWarehouse.ConfigIndex.PREFIX) != (int)ModoNomenclatura.Nenhum) { prefix = Singleton <TransportManager> .instance.m_lines.m_buffer[lineID].m_lineNumber / 1000u; } int averageCount = (int)Singleton <TransportManager> .instance.m_lines.m_buffer[(int)this.m_LineID].m_passengers.m_residentPassengers.m_averageCount; int averageCount2 = (int)Singleton <TransportManager> .instance.m_lines.m_buffer[(int)this.m_LineID].m_passengers.m_touristPassengers.m_averageCount; this.m_LinePassengers.text = (averageCount + averageCount2).ToString("N0"); this.m_LinePassengers.tooltip = string.Format("{0}", LocaleFormatter.FormatGeneric("TRANSPORT_LINE_PASSENGERS", new object[] { averageCount, averageCount2 })); TLMLineUtils.setLineNumberCircleOnRef(lineID, m_LineNumberFormatted, 0.8f); m_LineColor.normalFgSprite = TLMLineUtils.getIconForLine(lineID); this.m_PassengerCount = averageCount + averageCount2; this.m_lineIncompleteWarning.isVisible = ((Singleton <TransportManager> .instance.m_lines.m_buffer[(int)this.m_LineID].m_flags & TransportLine.Flags.Complete) == TransportLine.Flags.None); if (updateColors) { this.m_LineColor.selectedColor = Singleton <TransportManager> .instance.GetLineColor(this.m_LineID); } if (updateVisibility) { this.m_LineIsVisible.isChecked = ((Singleton <TransportManager> .instance.m_lines.m_buffer[(int)this.m_LineID].m_flags & TransportLine.Flags.Hidden) == TransportLine.Flags.None); } if (tsd.hasVehicles()) { TransportInfo info = Singleton <TransportManager> .instance.m_lines.m_buffer[(int)this.m_LineID].Info; float overallBudget = Singleton <EconomyManager> .instance.GetBudget(info.m_class) / 100f; string vehTooltip = string.Format("{0} {1}", this.m_LineVehicles.text, Locale.Get("PUBLICTRANSPORT_VEHICLES")); this.m_LineVehicles.tooltip = vehTooltip; if (!TLMTransportLineExtension.instance.IsUsingCustomConfig(this.lineID) || !TLMTransportLineExtension.instance.IsUsingAbsoluteVehicleCount(this.lineID)) { this.m_lineBudgetLabel.text = string.Format("{0:0%}", TLMLineUtils.getEffectiveBugdet(lineID));//585+1/7 = frames/week m_lineBudgetLabel.tooltip = string.Format(Locale.Get("TLM_LINE_BUDGET_EXPLAIN_2"), TLMConfigWarehouse.getNameForTransportType(tsd.toConfigIndex()), overallBudget, Singleton <TransportManager> .instance.m_lines.m_buffer[lineID].m_budget / 100f, TLMLineUtils.getEffectiveBugdet(lineID)); m_lineBudgetLabel.relativePosition = new Vector3(m_LineVehicles.relativePosition.x, 19, 0); m_lineBudgetLabel.isVisible = true; } else { m_lineBudgetLabel.isVisible = false; } bool tlmPerHour = TLMLineUtils.isPerHourBudget(m_LineID); m_DayLine.isVisible = !tlmPerHour; m_DayNightLine.isVisible = !tlmPerHour; m_NightLine.isVisible = !tlmPerHour; m_DisabledLine.isVisible = !tlmPerHour; m_perHourBudgetInfo.isVisible = tlmPerHour; m_perHourBudgetInfo.relativePosition = new Vector3(615, 2); } else { m_DayLine.isVisible = true; m_DayNightLine.isVisible = true; m_NightLine.isVisible = true; m_DisabledLine.isVisible = true; } }
public override string GetLocalizedStats(ushort buildingID, ref Building data) { string text = string.Empty; if ((UnityEngine.Object) this.m_transportInfo != (UnityEngine.Object)null && this.m_maxVehicleCount != 0) { switch (this.m_transportInfo.m_transportType) { case TransportInfo.TransportType.Bus: case TransportInfo.TransportType.TouristBus: { int vehicleCount = this.GetVehicleCount(buildingID, ref data); int budget = Singleton <EconomyManager> .instance.GetBudget(this.m_info.m_class); int productionRate = PlayerBuildingAI.GetProductionRate(100, budget); int num = (productionRate * this.m_maxVehicleCount + 99) / 100; text += LocaleFormatter.FormatGeneric("AIINFO_BUSDEPOT_BUSCOUNT", new object[] { vehicleCount, num }); break; } case TransportInfo.TransportType.Ship: if (this.m_transportInfo.m_vehicleType == VehicleInfo.VehicleType.Ferry) { int vehicleCount2 = this.GetVehicleCount(buildingID, ref data); int budget2 = Singleton <EconomyManager> .instance.GetBudget(this.m_info.m_class); int productionRate2 = PlayerBuildingAI.GetProductionRate(100, budget2); int num2 = (productionRate2 * this.m_maxVehicleCount + 99) / 100; text += LocaleFormatter.FormatGeneric("AIINFO_FERRYDEPOT_FERRYCOUNT", new object[] { vehicleCount2, num2 }); } break; case TransportInfo.TransportType.Airplane: if (this.m_transportInfo.m_vehicleType == VehicleInfo.VehicleType.Blimp) { int vehicleCount3 = this.GetVehicleCount(buildingID, ref data); int budget3 = Singleton <EconomyManager> .instance.GetBudget(this.m_info.m_class); int productionRate3 = PlayerBuildingAI.GetProductionRate(100, budget3); int num3 = (productionRate3 * this.m_maxVehicleCount + 99) / 100; text += LocaleFormatter.FormatGeneric("AIINFO_BLIMPDEPOT_BLIMPCOUNT", new object[] { vehicleCount3, num3 }); } break; case TransportInfo.TransportType.Taxi: { int vehicleCount4 = this.GetVehicleCount(buildingID, ref data); int budget4 = Singleton <EconomyManager> .instance.GetBudget(this.m_info.m_class); int productionRate4 = PlayerBuildingAI.GetProductionRate(100, budget4); int num4 = (productionRate4 * this.m_maxVehicleCount + 99) / 100; text += LocaleFormatter.FormatGeneric("AIINFO_TAXIDEPOT_VEHICLES", new object[] { vehicleCount4, num4 }); break; } case TransportInfo.TransportType.Tram: { int vehicleCount5 = this.GetVehicleCount(buildingID, ref data); int budget5 = Singleton <EconomyManager> .instance.GetBudget(this.m_info.m_class); int productionRate5 = PlayerBuildingAI.GetProductionRate(100, budget5); int num5 = (productionRate5 * this.m_maxVehicleCount + 99) / 100; text += LocaleFormatter.FormatGeneric("AIINFO_TRAMDEPOT_TRAMCOUNT", new object[] { vehicleCount5, num5 }); break; } //begin mod case TransportInfo.TransportType.Metro: { int vehicleCount6 = this.GetVehicleCount(buildingID, ref data); int budget6 = Singleton <EconomyManager> .instance.GetBudget(this.m_info.m_class); int productionRate6 = PlayerBuildingAI.GetProductionRate(100, budget6); int num6 = (productionRate6 * this.m_maxVehicleCount + 99) / 100; text += LocaleFormatter.FormatGeneric("AIINFO_TRAMDEPOT_TRAMCOUNT", new object[] { vehicleCount6, num6 }).Replace("Tram", "Metro"); break; } case TransportInfo.TransportType.Train: { int vehicleCount7 = this.GetVehicleCount(buildingID, ref data); int budget7 = Singleton <EconomyManager> .instance.GetBudget(this.m_info.m_class); int productionRate7 = PlayerBuildingAI.GetProductionRate(100, budget7); int num7 = (productionRate7 * this.m_maxVehicleCount + 99) / 100; text += LocaleFormatter.FormatGeneric("AIINFO_TRAMDEPOT_TRAMCOUNT", new object[] { vehicleCount7, num7 }).Replace("Tram", "Train"); break; //end mod } } } return(text); }
private void SpawnEntry(string name, bool enabled, MilestoneInfo info) { var landscapingInfo = (LandscapingPanel.LandscapingInfo) typeof(LandscapingPanel).GetProperty("landscapingInfo", BindingFlags.NonPublic | BindingFlags.Instance) .GetValue(this, null); landscapingInfo.m_DirtPrice = Singleton <TerrainManager> .instance.m_properties.m_dirtPrice; float cost = (float)((double)landscapingInfo.m_DirtPrice * 65536.0 / 262144.0 * 512.0 / 100.0); string str = TooltipHelper.Format(LocaleFormatter.Title, Locale.Get("LANDSCAPING_TITLE", name), LocaleFormatter.Sprite, name, LocaleFormatter.Text, Locale.Get("LANDSCAPING_DESC", name), LocaleFormatter.Locked, (!enabled).ToString(), LocaleFormatter.Cost, LocaleFormatter.FormatCubicCost(cost)); if (Singleton <UnlockManager> .exists) { string unlockDesc; string currentValue; string targetValue; string progress; string locked; ToolsModifierControl.GetUnlockingInfo(info, out unlockDesc, out currentValue, out targetValue, out progress, out locked); string addTooltip = TooltipHelper.Format(LocaleFormatter.LockedInfo, locked, LocaleFormatter.UnlockDesc, unlockDesc, LocaleFormatter.UnlockPopulationProgressText, progress, LocaleFormatter.UnlockPopulationTarget, targetValue, LocaleFormatter.UnlockPopulationCurrent, currentValue); str = TooltipHelper.Append(str, addTooltip); } //begin mod string buttonName; UITextureAtlas buttonAtlas; UIComponent tooltipBox; if (name == "Ditch") { buttonName = "TerrainDitch"; buttonAtlas = Util.CreateAtlasFromEmbeddedResources(Assembly.GetExecutingAssembly(), "NaturalResourcesBrush.resources", new List <string> { "TerrainDitch" }); tooltipBox = GeneratedPanel.landscapingTooltipBox; } else if (name == "Sand") { buttonName = "ResourceSand"; tooltipBox = GeneratedPanel.tooltipBox; buttonAtlas = UIView.GetAView().defaultAtlas; } else { buttonName = "Landscaping" + name; buttonAtlas = null; tooltipBox = GeneratedPanel.landscapingTooltipBox; } var button = (UIButton)this.SpawnEntry(name, str, buttonName, (UITextureAtlas)buttonAtlas, tooltipBox, enabled); button.objectUserData = (object)landscapingInfo; //end mod }
#pragma warning disable CS1591 protected Stage(Blob data) { _data = data; Locale = new(this); }