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) }
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); }