Esempio n. 1
0
        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)));
                }
            }
        }
Esempio n. 3
0
        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 });
            }
        }
Esempio n. 4
0
        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));
        }
Esempio n. 5
0
        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);
            }
        }
Esempio n. 6
0
        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();
        }
Esempio n. 9
0
        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;
        }
Esempio n. 10
0
        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();
        }
Esempio n. 12
0
        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);
                    }
                }
            }
        }
Esempio n. 13
0
        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;
        }
Esempio n. 14
0
        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);
            }
        }
Esempio n. 16
0
        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;
        }
Esempio n. 17
0
        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>";
        }
Esempio n. 18
0
        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);
        }
Esempio n. 19
0
        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);
            }
        }
Esempio n. 20
0
        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))));
        }
Esempio n. 21
0
        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;
        }
Esempio n. 22
0
        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);
            }
        }
Esempio n. 23
0
 public static IBasicExtension GetEffectiveExtensionForLine(ushort lineId)
 {
     if (TLMTransportLineExtension.Instance.IsUsingCustomConfig(lineId))
     {
         return(TLMTransportLineExtension.Instance);
     }
     else
     {
         var tsd = TransportSystemDefinition.From(lineId);
         return(tsd.GetTransportExtension());
     }
 }
Esempio n. 24
0
 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)));
     }
 }
Esempio n. 25
0
        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);
        }
Esempio n. 26
0
 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);
     }
 }
Esempio n. 27
0
 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]);
 }
Esempio n. 28
0
        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;