Пример #1
0
        public static ushort[] GetDepots(ItemClass.Service service, ItemClass.SubService subService, ItemClass.Level level)
        {
            HashSet <ushort> source;
            TransportInfo    info = null;

            return(_depotMap.TryGetValue(new ItemClassTriplet(service, subService, level), out source) ?
                   source.Where(d => DepotUtil.IsValidDepot(ref BuildingManager.instance.m_buildings.m_buffer[d], ref info, out _, out _, out _)).ToArray() :
                   new ushort[] {}); //we validate here to be compatible with MOM (if MOM sets max vehicle count later than this mod loads)
        }
Пример #2
0
        public static ushort[] GetDepots(TransportInfo transportInfo)
        {
            if (transportInfo == null)
            {
                return(new ushort[0]);
            }

            return(_depotMap.TryGetValue(
                       new ItemClassTriplet(transportInfo.GetService(), transportInfo.GetSubService(),
                                            transportInfo.GetClassLevel()),
                       out HashSet <ushort> source)
                ? source.Where(d => DepotUtil.IsValidDepot(d, transportInfo))
                   .ToArray()
                : new ushort [0]);
            //we validate here to be compatible with MOM (if MOM sets max vehicle count later than this mod loads)
        }
        private static void ObserveForInfo(ushort buildingId, TransportInfo transportInfo)
        {
            if (transportInfo == null || !DepotUtil.IsValidDepot(ref BuildingManager.instance.m_buildings.m_buffer[buildingId], transportInfo))
            {
                return;
            }
            var itemClassTriplet = new ItemClassTriplet(transportInfo.GetService(), transportInfo.GetSubService(),
                                                        transportInfo.GetClassLevel());

            if (!_depotMap.TryGetValue(itemClassTriplet, out HashSet <ushort> depots))
            {
                depots = new HashSet <ushort>();
                _depotMap.Add(itemClassTriplet, depots);
            }
            if (depots.Contains(buildingId))
            {
                return;
            }
            depots.Add(buildingId);
            OnDepotAdded?.Invoke(itemClassTriplet.Service, itemClassTriplet.SubService, itemClassTriplet.Level);
        }