public void OnSetTarget(Type source) { if (source == GetType()) { return; } TransportSystemDefinition tsd = TransportSystem; if (!tsd.HasVehicles()) { MainPanel.isVisible = false; return; } m_isLoading = true; var lineId = GetLineID(); List <ushort> cityDepotList = TLMDepotUtils.GetAllDepotsFromCity(tsd); Interfaces.IBasicExtension config = TLMLineUtils.GetEffectiveExtensionForLine(lineId); List <ushort> targetDepotList = config.GetAllowedDepots(tsd, lineId); UIPanel[] depotChecks = m_checkboxTemplateList.SetItemCount(cityDepotList.Count); LogUtils.DoLog($"depotChecks = {depotChecks.Length}"); for (int idx = 0; idx < cityDepotList.Count; idx++) { ushort buildingID = cityDepotList[idx]; UICheckBox uiCheck = depotChecks[idx].GetComponentInChildren <UICheckBox>(); uiCheck.objectUserData = buildingID; uiCheck.isChecked = targetDepotList.Contains(buildingID); UILabel uilabel = uiCheck.label; uilabel.prefix = BuildingUtils.GetBuildingName(buildingID, out _, out _); ref Building depotBuilding = ref BuildingManager.instance.m_buildings.m_buffer[buildingID]; Vector3 sidewalk = depotBuilding.CalculateSidewalkPosition(); TransportLinesManagerMod.Controller.ConnectorADR.GetAddressStreetAndNumber(sidewalk, depotBuilding.m_position, out int number, out string streetName); byte districtId = DistrictManager.instance.GetDistrict(sidewalk); uilabel.text = $"\n<color gray>{streetName}, {number} - {(districtId == 0 ? SimulationManager.instance.m_metaData.m_CityName : DistrictManager.instance.GetDistrictName(districtId))}</color>"; if (uilabel.objectUserData == null) { uiCheck.eventCheckChanged += (x, y) => { if (!m_isLoading) { if (y) { TLMLineUtils.GetEffectiveExtensionForLine(UVMPublicTransportWorldInfoPanel.GetLineID()).AddDepotForLine(UVMPublicTransportWorldInfoPanel.GetLineID(), (ushort)x.objectUserData); } else { TLMLineUtils.GetEffectiveExtensionForLine(UVMPublicTransportWorldInfoPanel.GetLineID()).RemoveDepotForLine(UVMPublicTransportWorldInfoPanel.GetLineID(), (ushort)x.objectUserData); } } }; KlyteMonoUtils.LimitWidthAndBox(uiCheck.label, 280, true); UIButton gotoButton = depotChecks[idx].Find <UIButton>("GoTo"); gotoButton.eventClick += delegate(UIComponent c, UIMouseEventParameter r) { ushort buildingId = (ushort)uiCheck.objectUserData; if (buildingId != 0) { Vector3 position = BuildingManager.instance.m_buildings.m_buffer[buildingId].m_position; ToolsModifierControl.cameraController.SetTarget(new InstanceID() { Building = buildingId }, position, true); } }; uilabel.objectUserData = true; } }