private static int CompareLineNumbers(UIComponent left, UIComponent right) { if (left == null || right == null) { return(0); } UVMLineListItem component = left.GetComponent <UVMLineListItem>(); UVMLineListItem component2 = right.GetComponent <UVMLineListItem>(); if (component == null || component2 == null) { return(0); } var tsd = TransportSystemDefinition.From(component.LineID); var tsd2 = TransportSystemDefinition.From(component2.LineID); if (tsd == tsd2) { return(component.LineNumber.CompareTo(component2.LineNumber)); } else { return(tsd.GetHashCode().CompareTo(tsd2.GetHashCode())); } }
private static int ticketPriceForPrefix(ushort vehicleID, ref Vehicle vehicleData, int defaultPrice) { var def = TransportSystemDefinition.from(vehicleData.Info); if (def == default(TransportSystemDefinition)) { if (TLMSingleton.instance != null && TLMSingleton.debugMode) { TLMUtils.doLog("NULL TSysDef! {0}+{1}+{2}", vehicleData.Info.GetAI().GetType(), vehicleData.Info.m_class.m_subService, vehicleData.Info.m_vehicleType); } return(defaultPrice); } if (vehicleData.m_transportLine == 0) { var value = (int)def.GetTransportExtension().GetDefaultTicketPrice(0); return(value); } else { if (TLMTransportLineExtension.instance.GetUseCustomConfig(vehicleData.m_transportLine)) { return((int)TLMTransportLineExtension.instance.GetTicketPrice(vehicleData.m_transportLine)); } else { return((int)def.GetTransportExtension().GetTicketPrice(TLMLineUtils.getPrefix(vehicleData.m_transportLine))); } } }
private void CreateTsdTabstrip() { UIButton tabTemplate = CreateTabSubStripTemplate(); UIComponent bodyContent = CreateContentTemplate(m_stripMain.tabContainer.width, m_stripMain.tabContainer.height, false); foreach (var targetType in ReflectionUtils.GetSubtypesRecursive(typeof(UVMLinesPanel), GetType())) { TransportSystemDefinition tsd = (targetType.GetConstructor(new Type[0]).Invoke(null) as UVMLinesPanel).TSD; GameObject tab = Instantiate(tabTemplate.gameObject); GameObject body = Instantiate(bodyContent.gameObject); string name = tsd.GetTransportName(); string bgIcon = KlyteResourceLoader.GetDefaultSpriteNameFor(TLMPrefixesUtils.GetLineIcon(0, tsd), true); string fgIcon = tsd.GetTransportTypeIcon(); UIButton tabButton = tab.GetComponent <UIButton>(); tabButton.tooltip = name; tabButton.hoveredBgSprite = bgIcon; tabButton.focusedBgSprite = bgIcon; tabButton.normalBgSprite = bgIcon; tabButton.disabledBgSprite = bgIcon; tabButton.focusedColor = Color.green; tabButton.hoveredColor = new Color(0, 0.5f, 0f); tabButton.color = Color.black; tabButton.disabledColor = Color.gray; if (!string.IsNullOrEmpty(fgIcon)) { KlyteMonoUtils.CreateUIElement(out UIButton secSprite, tabButton.transform, "OverSprite", new Vector4(5, 5, 30, 30)); secSprite.normalFgSprite = fgIcon; secSprite.foregroundSpriteMode = UIForegroundSpriteMode.Scale; secSprite.isInteractive = false; secSprite.disabledColor = Color.black; } m_stripMain.AddTab(name, tab, body, new Type[] { targetType }); } }
public static string GetBuildingDetails(ushort buildingId, out ItemClass.Service serviceFound, out ItemClass.SubService subserviceFound, out string prefix, out NamingType namingType, ushort lineId = 0) { BuildingManager bm = Singleton <BuildingManager> .instance; Building b = bm.m_buildings.m_buffer[buildingId]; while (b.m_parentBuilding > 0) { LogUtils.DoLog("getBuildingName(): building id {0} - parent = {1}", buildingId, b.m_parentBuilding); buildingId = b.m_parentBuilding; b = bm.m_buildings.m_buffer[buildingId]; } InstanceID iid = default; iid.Building = buildingId; serviceFound = b.Info?.GetService() ?? default; subserviceFound = b.Info?.GetSubService() ?? default; TransportSystemDefinition tsd = TransportSystemDefinition.From(b.Info.GetAI()); if (tsd is null) { var data = TLMBaseConfigXML.CurrentContextConfig.GetAutoNameData(serviceFound); prefix = data?.NamingPrefix?.Trim(); namingType = NamingTypeExtensions.From(serviceFound, subserviceFound); } else { prefix = tsd.GetConfig().NamingPrefix?.TrimStart(); LogUtils.DoLog($"getBuildingName(): serviceFound {serviceFound} - subserviceFound = {subserviceFound} - tsd = {tsd} - prefix = {prefix}"); namingType = NamingTypeExtensions.From(tsd); } return(bm.GetBuildingName(buildingId, iid)); }
public void SetRandomBuilding(ref TransportSystemDefinition tsd, ushort lineId, ref ushort currentId) { Interfaces.IBasicExtension config = TLMLineUtils.GetEffectiveExtensionForLine(lineId); List <ushort> allowedDepots = config.GetAllowedDepots(ref tsd, lineId); if (allowedDepots.Count == 0 || allowedDepots.Contains(currentId)) { if (TransportLinesManagerMod.DebugMode) { TLMUtils.doLog("allowedDepots.Count --{0}-- == 0|| allowedDepots.Contains({1}): --{2}-- ", allowedDepots.Count, currentId, string.Join(",", allowedDepots.Select(x => x.ToString()).ToArray())); } return; } var r = new Randomizer(new System.Random().Next()); if (TransportLinesManagerMod.DebugMode) { TLMUtils.doLog("DEPOT POSSIBLE VALUES FOR {2} LINE {1}: {0} ", string.Join(",", allowedDepots.Select(x => x.ToString()).ToArray()), lineId, tsd); } currentId = allowedDepots[r.Int32(0, allowedDepots.Count - 1)]; if (TransportLinesManagerMod.DebugMode) { TLMUtils.doLog("DEPOT FOR {2} LINE {1}: {0} ", currentId, lineId, tsd); } }
public static string GetLineSortString(ushort s, ref TransportLine tl) { var tsd = TransportSystemDefinition.GetDefinitionForLine(s); if (tsd == default) { return(null); } string transportTypeLetter = tsd == TransportSystemDefinition.PLANE ? "A" : tsd == TransportSystemDefinition.SHIP ? "B" : tsd == TransportSystemDefinition.BLIMP ? "C" : tsd == TransportSystemDefinition.HELICOPTER ? "D" : tsd == TransportSystemDefinition.TRAIN ? "E" : tsd == TransportSystemDefinition.FERRY ? "F" : tsd == TransportSystemDefinition.MONORAIL ? "G" : tsd == TransportSystemDefinition.METRO ? "H" : tsd == TransportSystemDefinition.CABLE_CAR ? "I" : tsd == TransportSystemDefinition.TROLLEY ? "J" : tsd == TransportSystemDefinition.TRAM ? "K" : tsd == TransportSystemDefinition.BUS ? "L" : tsd == TransportSystemDefinition.TOUR_BUS ? "M" : tsd == TransportSystemDefinition.TOUR_PED ? "N" : ""; return(transportTypeLetter + tl.m_lineNumber.ToString().PadLeft(5, '0')); }
public static string getBuildingName(ushort buildingId, out ItemClass.Service serviceFound, out ItemClass.SubService subserviceFound, out string prefix) { NetManager nm = Singleton <NetManager> .instance; BuildingManager bm = Singleton <BuildingManager> .instance; Building b = bm.m_buildings.m_buffer[buildingId]; while (b.m_parentBuilding > 0) { doLog("getStationNameWithPrefix(): building id {0} - parent = {1}", buildingId, b.m_parentBuilding); buildingId = b.m_parentBuilding; b = bm.m_buildings.m_buffer[buildingId]; } InstanceID iid = default(InstanceID); iid.Building = buildingId; serviceFound = b.Info?.GetService() ?? default(ItemClass.Service); subserviceFound = b.Info?.GetSubService() ?? default(ItemClass.SubService); TLMCW.ConfigIndex index = GameServiceExtensions.toConfigIndex(serviceFound, subserviceFound); if (index == TLMCW.ConfigIndex.PUBLICTRANSPORT_SERVICE_CONFIG) { var tsd = TransportSystemDefinition.from(b.Info.GetAI()); index = tsd.toConfigIndex(); } prefix = index.getPrefixTextNaming()?.Trim(); return(bm.GetBuildingName(buildingId, iid)); }
private void syncForm() { TransportSystemDefinition tsd = TransportSystemDefinition.from(transportTool.m_prefab); var configIdx = tsd.toConfigIndex(); if (TLMLineUtils.hasPrefix(transportTool.m_prefab)) { linePrefixDropDown.isVisible = true; linePrefixDropDown.items = TLMUtils.getPrefixesOptions(configIdx, false); linePrefixDropDown.selectedIndex = getCurrentPrefix(); lineNumberTxtBox.text = getCurrentNumber().ToString(); lineNumberTxtBox.width = 90; lineNumberTxtBox.relativePosition = new Vector3(85f, 45f); lineNumberTxtBox.maxLength = 3; prefixIncrementChk.isChecked = TLMConfigWarehouse.getCurrentConfigBool(configIdx | TLMConfigWarehouse.ConfigIndex.PREFIX_INCREMENT); prefixIncrementChk.isVisible = true; } else { linePrefixDropDown.isVisible = false; lineNumberTxtBox.text = getCurrentNumber().ToString(); lineNumberTxtBox.width = 170; lineNumberTxtBox.relativePosition = new Vector3(5f, 45f); lineNumberTxtBox.maxLength = 4; prefixIncrementChk.isVisible = false; } updateUI(); }
private void updateCheckboxes() { bool oldIsLoading = isLoading; isLoading = true; DepotAI depotAI = Singleton <BuildingManager> .instance.m_buildings.m_buffer[m_buildingIdSelecionado.Building].Info.GetAI() as DepotAI; List <string> prefixOptions = TLMUtils.getDepotPrefixesOptions(TransportSystemDefinition.from(m_secondary ? depotAI.m_secondaryTransportInfo : depotAI.m_transportInfo).toConfigIndex()); var prefixesServedList = TLMDepotAI.getPrefixesServedByDepot(m_buildingIdSelecionado.Building, m_secondary); for (uint i = 0; i <= 64; i++) { if (i < prefixOptions.Count) { prefixesCheckboxes[i].isVisible = true; prefixesCheckboxes[i].isChecked = prefixesServedList.Contains(i); prefixesCheckboxes[i].text = prefixOptions[(int)i]; } else { prefixesCheckboxes[i].isVisible = false; } } prefixesCheckboxes[65].isChecked = prefixesServedList.Contains(65); isLoading = oldIsLoading; }
public static string getBuildingName(ushort buildingId, out ItemClass.Service serviceFound, out ItemClass.SubService subserviceFound, out string prefix, ushort lineId = 0) { NetManager nm = Singleton <NetManager> .instance; BuildingManager bm = Singleton <BuildingManager> .instance; Building b = bm.m_buildings.m_buffer[buildingId]; while (b.m_parentBuilding > 0) { doLog("getBuildingName(): building id {0} - parent = {1}", buildingId, b.m_parentBuilding); buildingId = b.m_parentBuilding; b = bm.m_buildings.m_buffer[buildingId]; } InstanceID iid = default; iid.Building = buildingId; serviceFound = b.Info?.GetService() ?? default; subserviceFound = b.Info?.GetSubService() ?? default; var index = GameServiceExtensions.ToConfigIndex(serviceFound, subserviceFound); TransportSystemDefinition tsd = default; if ((index & TLMCW.ConfigIndex.DESC_DATA) == TLMCW.ConfigIndex.PUBLICTRANSPORT_SERVICE_CONFIG) { tsd = TransportSystemDefinition.From(b.Info.GetAI()); index = tsd.ToConfigIndex(); } prefix = index.GetSystemStationNamePrefix(lineId)?.TrimStart(); doLog($"getBuildingName(): serviceFound {serviceFound} - subserviceFound = {subserviceFound} - tsd = {tsd} - index = {index} - prefix = {prefix}"); return(bm.GetBuildingName(buildingId, iid)); }
public void incrementNumber() { //TLMUtils.doLog("Increment Toolbox num"); TransportSystemDefinition tsd = TransportSystemDefinition.from(transportTool.m_prefab); int num = nextLineNumber; bool prefixIncrementVal = TLMConfigWarehouse.getCurrentConfigBool(tsd.toConfigIndex() | TLMConfigWarehouse.ConfigIndex.PREFIX_INCREMENT); //TLMUtils.doLog("prefixIncrement = " + prefixIncrementVal + "| num = " + num); while (((num + 1) & 0xFFFF) == 0 || TLMLineUtils.isNumberUsed((num + 1) & 0xFFFF, tsd, 0)) { if (!TLMLineUtils.hasPrefix(transportTool.m_prefab) || !prefixIncrementVal) { num++; } else { num++; num /= 1000; num++; num &= 0x4F; num *= 1000; num--; } } nextLineNumber = (ushort)num; syncForm(); }
private static void AddToArrayWithName(string[] input, List <string> saida, ref TransportSystemDefinition tsd, bool usePrefixName = false) { ushort offset = (ushort)saida.Count; if (!usePrefixName) { saida.AddRange(input); } else { for (uint i = 0; i < input.Length; i++) { string item = input[i]; string prefixName = tsd == default ? null : tsd.GetTransportExtension().GetName(offset + i); if (string.IsNullOrEmpty(prefixName)) { saida.Add(item); } else { saida.Add(item + " - " + prefixName); } } } }
public void RefreshData() { Building b = Singleton <BuildingManager> .instance.m_buildings.m_buffer[this.m_buildingID]; m_depotName.text = Singleton <BuildingManager> .instance.GetBuildingName(this.m_buildingID, default(InstanceID)); byte districtID = Singleton <DistrictManager> .instance.GetDistrict(b.m_position); string districtName = districtID == 0 ? Locale.Get("TLM_DISTRICT_NONE") : Singleton <DistrictManager> .instance.GetDistrictName(districtID); m_districtName.text = districtName; if (!(b.Info.GetAI() is ShelterAI)) { m_prefixesServed.relativePosition = new Vector2(340, 0); //prefix m_prefixesServed.text = TLMLineUtils.getPrefixesServedString(m_buildingID, secondary); DepotAI buildingAI = b.Info.GetAI() as DepotAI; List <string> prefixOptions = TLMUtils.getDepotPrefixesOptions(TransportSystemDefinition.from(secondary ? buildingAI.m_secondaryTransportInfo : buildingAI.m_transportInfo).toConfigIndex()); prefixOptions.Add(Locale.Get("TLM_REGIONAL")); if (m_prefixOptions.items.Length != prefixOptions.Count) { m_prefixOptions.items = prefixOptions.ToArray(); onChangePrefixSelected(m_prefixOptions.selectedIndex); } } m_isDirty = false; }
private void RecountRows(TimeableList <TicketPriceEntryXml> config, int?stopsCount, ref TransportLine tl) { TLMTicketPriceEditorLine[] currentLines = m_entryListContainer.GetComponentsInChildren <TLMTicketPriceEditorLine>(); m_timeRows = new List <TLMTicketPriceEditorLine>(); var tsd = TransportSystemDefinition.GetDefinitionForLine(ref tl); uint maxTicketPrice = TLMLineUtils.GetTicketPriceForLine(tsd, 0).First.Value * 5; int count = 0; for (int i = 0; i < stopsCount; i++, count++) { if (i < currentLines.Length) { currentLines[i].SetLegendInfo(GetColorForNumber(i), maxTicketPrice); m_timeRows.Add(currentLines[i]); currentLines[i].Entry = config[i]; } else { TLMTicketPriceEditorLine line = KlyteMonoUtils.CreateElement <TLMTicketPriceEditorLine>(m_entryListContainer.transform); line.Entry = config[i]; line.SetLegendInfo(GetColorForNumber(i), maxTicketPrice); line.OnTimeChanged += ValidateTime; line.OnDie += RemoveTime; line.OnBudgetChanged += SetBudget; m_timeRows.Add(line); } } for (int i = count; i < currentLines.Length; i++) { GameObject.Destroy(currentLines[i].gameObject); } }
public Color AutoColor(ushort i, bool ignoreRandomIfSet = true, bool ignoreAnyIfSet = false) { TransportLine t = tm.m_lines.m_buffer[(int)i]; try { var tsd = TransportSystemDefinition.getDefinitionForLine(i); if (tsd == default(TransportSystemDefinition) || (((t.m_flags & TransportLine.Flags.CustomColor) > 0) && ignoreAnyIfSet)) { return(Color.clear); } TLMCW.ConfigIndex transportType = tsd.toConfigIndex(); Color c = TLMUtils.CalculateAutoColor(t.m_lineNumber, transportType, ((t.m_flags & TransportLine.Flags.CustomColor) > 0) && ignoreRandomIfSet, true); if (c.a == 1) { TLMLineUtils.setLineColor(i, c); } //TLMUtils.doLog("Colocada a cor {0} na linha {1} ({3} {2})", c, i, t.m_lineNumber, t.Info.m_transportType); return(c); } catch (Exception e) { TLMUtils.doErrorLog("ERRO!!!!! " + e.Message); TLMCW.setCurrentConfigBool(TLMCW.ConfigIndex.AUTO_COLOR_ENABLED, false); return(Color.clear); } }
private static void saveConfigForTransportType(TransportSystemDefinition tsd, Dictionary <ushort, List <uint> > value) { string depotList = getConfigStringFromDictionary(value); TLMConfigWarehouse.setCurrentConfigString(TLMConfigWarehouse.getConfigDepotPrefix(tsd), depotList); cached_lists[tsd] = value; }
private void PrintIncomeExpenseVehicle(ushort lineID, int idx, UILabel labelVehicle, long income, long expense, float scale) { var tsd = TransportSystemDefinition.From(lineID); m_vehicleButtons.items[idx].color = Color.Lerp(Color.white, income > expense ? Color.green : Color.red, Mathf.Max(income, expense) / scale * TLMLineUtils.GetTicketPriceForLine(tsd, lineID).First.Value); labelVehicle.text = $"\n<color #00cc00>{(income / 100.0f).ToString(Settings.moneyFormat, LocaleManager.cultureInfo)}</color>"; labelVehicle.suffix = $"\n<color #ff0000>{(expense / 100.0f).ToString(Settings.moneyFormat, LocaleManager.cultureInfo)}</color>"; }
public static bool StartTransfer(DepotAI __instance, ushort buildingID, ref Building data, TransferManager.TransferReason reason, TransferManager.TransferOffer offer) { if (!managedReasons.Contains(reason) || offer.TransportLine == 0) { return(true); } TLMUtils.doLog("START TRANSFER!!!!!!!!"); TransportInfo m_transportInfo = __instance.m_transportInfo; BuildingInfo m_info = __instance.m_info; if (TLMSingleton.instance != null && TLMSingleton.debugMode) { TLMUtils.doLog("m_info {0} | m_transportInfo {1} | Line: {2}", m_info.name, m_transportInfo.name, offer.TransportLine); } if (reason == m_transportInfo.m_vehicleReason || (__instance.m_secondaryTransportInfo != null && reason == __instance.m_secondaryTransportInfo.m_vehicleReason)) { VehicleInfo randomVehicleInfo = null; var tsd = TransportSystemDefinition.from(__instance.m_transportInfo); TransportLine tl = Singleton <TransportManager> .instance.m_lines.m_buffer[offer.TransportLine]; TransportInfo.TransportType t = tl.Info.m_transportType; if (TLMLineUtils.hasPrefix(ref tl)) { setRandomBuildingByPrefix(tsd, tl.m_lineNumber / 1000u, ref buildingID); } else { setRandomBuildingByPrefix(tsd, 0, ref buildingID); } TLMUtils.doLog("randomVehicleInfo"); randomVehicleInfo = doModelDraw(offer.TransportLine); if (randomVehicleInfo == null) { randomVehicleInfo = Singleton <VehicleManager> .instance.GetRandomVehicleInfo(ref Singleton <SimulationManager> .instance.m_randomizer, m_info.m_class.m_service, m_info.m_class.m_subService, m_info.m_class.m_level); } if (randomVehicleInfo != null) { TLMUtils.doLog("randomVehicleInfo != null"); Array16 <Vehicle> vehicles = Singleton <VehicleManager> .instance.m_vehicles; __instance.CalculateSpawnPosition(buildingID, ref Singleton <BuildingManager> .instance.m_buildings.m_buffer[buildingID], ref Singleton <SimulationManager> .instance.m_randomizer, randomVehicleInfo, out Vector3 position, out Vector3 vector); if (Singleton <VehicleManager> .instance.CreateVehicle(out ushort vehicleID, ref Singleton <SimulationManager> .instance.m_randomizer, randomVehicleInfo, position, reason, false, true)) { TLMUtils.doLog("CreatedVehicle!!!"); randomVehicleInfo.m_vehicleAI.SetSource(vehicleID, ref vehicles.m_buffer[(int)vehicleID], buildingID); randomVehicleInfo.m_vehicleAI.StartTransfer(vehicleID, ref vehicles.m_buffer[(int)vehicleID], reason, offer); } return(false); } } return(true); }
public uint GetDefaultTicketPrice(uint lineId = 0) { var tsd = TransportSystemDefinition.from(lineId); switch (tsd.subService) { case ItemClass.SubService.PublicTransportCableCar: case ItemClass.SubService.PublicTransportBus: case ItemClass.SubService.PublicTransportMonorail: return(100); case ItemClass.SubService.PublicTransportMetro: case ItemClass.SubService.PublicTransportTaxi: case ItemClass.SubService.PublicTransportTrain: case ItemClass.SubService.PublicTransportTram: return(200); case ItemClass.SubService.PublicTransportPlane: if (tsd.vehicleType == VehicleInfo.VehicleType.Blimp) { return(100); } else { return(1000); } case ItemClass.SubService.PublicTransportShip: if (tsd.vehicleType == VehicleInfo.VehicleType.Ferry) { return(100); } else { return(500); } case ItemClass.SubService.PublicTransportTours: if (tsd.vehicleType == VehicleInfo.VehicleType.Car) { return(100); } else if (tsd.vehicleType == VehicleInfo.VehicleType.None) { return(0); } return(102); default: if (TLMSingleton.instance != null && TLMSingleton.debugMode) { TLMUtils.doLog("subservice not found: {0}", tsd.subService); } return(103); } }
public Dictionary <string, string> GetAllBasicAssets(uint lineId) { TransportSystemDefinition tsd = TransportSystemDefinition.from(lineId); if (!basicAssetsList.ContainsKey(tsd)) { basicAssetsList[tsd] = TLMUtils.LoadBasicAssets(ref tsd); } return(basicAssetsList[tsd].ToDictionary(x => x, x => string.Format("[Cap={0}] {1}", TLMUtils.getCapacity(PrefabCollection <VehicleInfo> .FindLoaded(x)), Locale.Get("VEHICLE_TITLE", x)))); }
public void openDepotInfo(ushort buildingID, bool secondary) { isLoading = true; WorldInfoPanel.HideAllWorldInfoPanels(); m_buildingIdSelecionado = default(InstanceID); m_buildingIdSelecionado.Building = buildingID; DepotAI depotAI = Singleton <BuildingManager> .instance.m_buildings.m_buffer[buildingID].Info.GetAI() as DepotAI; if (depotAI == null) { return; } depotNameField.text = Singleton <BuildingManager> .instance.GetBuildingName(buildingID, default(InstanceID)); bool hasPrimary = depotAI.m_transportInfo != null && depotAI.m_maxVehicleCount > 0; bool hasSecondary = depotAI.m_secondaryTransportInfo != null && depotAI.m_maxVehicleCount2 > 0; if (!hasPrimary && !hasSecondary) { closeDepotInfo(null, null); return; } m_secondary = !hasPrimary || (secondary && hasSecondary); TransportInfo currentTransportInfo = m_secondary ? depotAI.m_secondaryTransportInfo : depotAI.m_transportInfo; TransportInfo otherInfo = !m_secondary && depotAI.m_secondaryTransportInfo != null ? depotAI.m_secondaryTransportInfo : depotAI.m_transportInfo; var tsd = TransportSystemDefinition.from(currentTransportInfo); depotInfoPanel.color = Color.Lerp(TLMCW.getColorForTransportType(tsd.toConfigIndex()), Color.white, 0.5f); lineTransportIconTypeLabel.relativePosition = new Vector3(10f, 12f); lineTransportIconTypeLabel.height = 20; lineTransportIconTypeLabel.normalBgSprite = PublicTransportWorldInfoPanel.GetVehicleTypeIcon(currentTransportInfo.m_transportType); lineTransportIconTypeLabel.disabledBgSprite = PublicTransportWorldInfoPanel.GetVehicleTypeIcon(currentTransportInfo.m_transportType); lineTransportIconTypeLabel.focusedBgSprite = PublicTransportWorldInfoPanel.GetVehicleTypeIcon(currentTransportInfo.m_transportType); lineTransportIconTypeLabel.hoveredBgSprite = PublicTransportWorldInfoPanel.GetVehicleTypeIcon(otherInfo.m_transportType); if (depotAI.m_secondaryTransportInfo != null) { lineTransportIconTypeLabel.tooltip = string.Format(Locale.Get("TLM_SEE_OTHER_DEPOT"), TLMConfigWarehouse.getNameForTransportType(TransportSystemDefinition.from(otherInfo).toConfigIndex())); } else { lineTransportIconTypeLabel.tooltip = ""; } Show(); m_controller.defaultListingLinesPanel.Hide(); updateCheckboxes(); isLoading = false; }
public static void removeAllPrefixesFromDepot(ushort buildingID, bool secondary) { var bm = Singleton <BuildingManager> .instance; if (bm.m_buildings.m_buffer[buildingID].Info.GetAI() is DepotAI buildingAI) { var tsd = TransportSystemDefinition.from(secondary ? buildingAI.m_secondaryTransportInfo : buildingAI.m_transportInfo); var dic = getConfigForTransportType(tsd); dic[buildingID] = new List <uint>(); saveConfigForTransportType(tsd, dic); } }
public static IBasicExtension GetEffectiveExtensionForLine(ushort lineId) { if (TLMTransportLineExtension.Instance.IsUsingCustomConfig(lineId)) { return(TLMTransportLineExtension.Instance); } else { var tsd = TransportSystemDefinition.From(lineId); return(tsd.GetTransportExtension()); } }
public static IBasicExtensionStorage GetEffectiveConfigForLine(ushort lineId) { if (TLMTransportLineExtension.Instance.IsUsingCustomConfig(lineId)) { return(TLMTransportLineExtension.Instance.SafeGet(lineId)); } else { var tsd = TransportSystemDefinition.From(lineId); return((tsd.GetTransportExtension() as ISafeGettable <TLMPrefixConfiguration>).SafeGet(TLMPrefixesUtils.GetPrefix(lineId))); } }
public static bool GetNearLines(Vector3 pos, float maxDistance, ref List <ushort> linesFound) { float extendedMaxDistance = maxDistance * 1.3f; int num = Mathf.Max((int)((pos.x - extendedMaxDistance) / 64f + 135f), 0); int num2 = Mathf.Max((int)((pos.z - extendedMaxDistance) / 64f + 135f), 0); int num3 = Mathf.Min((int)((pos.x + extendedMaxDistance) / 64f + 135f), 269); int num4 = Mathf.Min((int)((pos.z + extendedMaxDistance) / 64f + 135f), 269); bool noneFound = true; NetManager nm = Singleton <NetManager> .instance; TransportManager tm = Singleton <TransportManager> .instance; for (int i = num2; i <= num4; i++) { for (int j = num; j <= num3; j++) { ushort num6 = nm.m_nodeGrid[i * 270 + j]; int num7 = 0; while (num6 != 0) { NetInfo info = nm.m_nodes.m_buffer[num6].Info; if ((info.m_class.m_service == ItemClass.Service.PublicTransport)) { ushort transportLine = nm.m_nodes.m_buffer[num6].m_transportLine; var tsd = TransportSystemDefinition.GetDefinitionForLine(transportLine); if (transportLine != 0 && tsd != default && tsd.GetConfig().ShowInLinearMap) { TransportInfo info2 = tm.m_lines.m_buffer[transportLine].Info; if (!linesFound.Contains(transportLine) && (tm.m_lines.m_buffer[transportLine].m_flags & TransportLine.Flags.Temporary) == TransportLine.Flags.None) { float num8 = Vector3.SqrMagnitude(pos - nm.m_nodes.m_buffer[num6].m_position); if (num8 < maxDistance * maxDistance || (info2.m_transportType == TransportInfo.TransportType.Ship && num8 < extendedMaxDistance * extendedMaxDistance)) { linesFound.Add(transportLine); GetNearLines(nm.m_nodes.m_buffer[num6].m_position, maxDistance, ref linesFound); noneFound = false; } } } } num6 = nm.m_nodes.m_buffer[num6].m_nextGridNode; if (++num7 >= 32768) { CODebugBase <LogChannel> .Error(LogChannel.Core, "Invalid list detected!\n" + Environment.StackTrace); break; } } } } return(noneFound); }
public void Update() { if (m_container.isVisible) { ushort lineID = UVMPublicTransportWorldInfoPanel.GetLineID(); m_minutePointer.transform.localEulerAngles = new Vector3(0, 0, (SimulationManager.instance.m_currentDayTimeHour % 1 * -360) + 180); m_hourPointer.transform.localEulerAngles = new Vector3(0, 0, (SimulationManager.instance.m_currentDayTimeHour / 24 * -360) + 180); var tsd = TransportSystemDefinition.From(lineID); Tuple <TicketPriceEntryXml, int> value = TLMLineUtils.GetTicketPriceForLine(ref tsd, lineID); m_effectiveLabel.color = value.Second < 0 ? Color.gray : TLMTicketConfigTab.m_colorOrder[value.Second % TLMTicketConfigTab.m_colorOrder.Count]; m_effectiveLabel.text = (value.First.Value / 100f).ToString(Settings.moneyFormat, LocaleManager.cultureInfo); } }
private static Dictionary <ushort, List <uint> > getConfigForTransportType(TransportSystemDefinition tsd) { if (!cached_lists.ContainsKey(tsd)) { string depotList = TLMConfigWarehouse.getCurrentConfigString(TLMConfigWarehouse.getConfigDepotPrefix(tsd)); if (TransportLinesManagerMod.instance != null && TransportLinesManagerMod.debugMode) { TLMUtils.doLog("getConfigForTransportType STRING FOR {0}: {1}", tsd.ToString(), depotList); } cached_lists[tsd] = getDictionaryFromConfigString(depotList, tsd); } return(cached_lists[tsd]); }
public static void removeAllPrefixesFromDepot(ushort buildingID) { var bm = Singleton <BuildingManager> .instance; DepotAI buildingAI = bm.m_buildings.m_buffer[buildingID].Info.GetAI() as DepotAI; if (buildingAI != null) { var tsd = TransportSystemDefinition.from(buildingAI.m_info.m_class.m_subService, buildingAI.m_transportInfo.m_vehicleType); var dic = getConfigForTransportType(tsd); dic[buildingID] = new List <uint>(); saveConfigForTransportType(tsd, dic); } }
internal static Color CalculateAutoColor(ushort num, TransportSystemDefinition tsdRef, bool avoidRandom = false, bool allowClear = false) { var config = tsdRef.GetConfig(); if (tsdRef.TransportType == TransportInfo.TransportType.EvacuationBus) { return(tsdRef.Color); } bool prefixBased = config.PalettePrefixBased; bool randomOnOverflow = config.PaletteRandomOnOverflow; var pal = new List <string>(); if (num >= 0 && config.Prefix != NamingMode.None) { uint prefix = num / 1000u; ITLMTransportTypeExtension ext = tsdRef.GetTransportExtension(); string tempPal = ext.GetCustomPalette(prefix) ?? string.Empty; if (tempPal != string.Empty) { pal.Add(tempPal); num %= 1000; } else { if (prefix > 0 && prefixBased) { num /= 1000; } else { num %= 1000; } } pal.Add(config.Palette); } else { pal.Add(config.Palette); } Color c; c = TLMAutoColorPaletteContainer.GetColor(num, pal.ToArray(), randomOnOverflow, avoidRandom); if (c == Color.clear && !allowClear) { c = tsdRef.Color; } return(c); }
public static NamingType From(TransportSystemDefinition tsd) => tsd == TransportSystemDefinition.PLANE ? NamingType.PLANE : tsd == TransportSystemDefinition.SHIP ? NamingType.SHIP : tsd == TransportSystemDefinition.BLIMP ? NamingType.BLIMP : tsd == TransportSystemDefinition.HELICOPTER ? NamingType.HELICOPTER : tsd == TransportSystemDefinition.TRAIN ? NamingType.TRAIN : tsd == TransportSystemDefinition.FERRY ? NamingType.FERRY : tsd == TransportSystemDefinition.MONORAIL ? NamingType.MONORAIL : tsd == TransportSystemDefinition.METRO ? NamingType.METRO : tsd == TransportSystemDefinition.CABLE_CAR ? NamingType.CABLE_CAR : tsd == TransportSystemDefinition.TROLLEY ? NamingType.TROLLEY : tsd == TransportSystemDefinition.TRAM ? NamingType.TRAM : tsd == TransportSystemDefinition.BUS ? NamingType.BUS : tsd == TransportSystemDefinition.TOUR_BUS ? NamingType.TOUR_BUS : NamingType.NONE;