public override Dictionary <TransferManager.TransferReason, Tuple <VehicleInfo.VehicleType, bool, bool> > GetManagedReasons(CargoStationAI ai, TransferManager.TransferOffer offer)
        {
            List <VehicleInfo.VehicleType> allowedTypes = new List <VehicleInfo.VehicleType>();

            DepotAIOverrides.AddAllowedType(ai?.m_transportInfo?.m_transportType, allowedTypes);
            DepotAIOverrides.AddAllowedType(ai?.m_transportInfo2?.m_transportType, allowedTypes);
            IEnumerable <KeyValuePair <TransferManager.TransferReason, Tuple <VehicleInfo.VehicleType, bool, bool> > > result = new Dictionary <TransferManager.TransferReason, Tuple <VehicleInfo.VehicleType, bool, bool> >();

            foreach (var type in allowedTypes)
            {
                switch (type)
                {
                case VehicleInfo.VehicleType.Train:
                    result = result.Union(reasonsTrain);
                    break;

                case VehicleInfo.VehicleType.Ship:
                    result = result.Union(reasonsShip);
                    break;

                case VehicleInfo.VehicleType.Plane:
                    result = result.Union(reasonsPlane);
                    break;
                }
            }

            return(result.ToDictionary(x => x.Key, x => x.Value));
        }
        public override bool AllowVehicleType(VehicleInfo.VehicleType type, TransportStationAI ai)
        {
            List <VehicleInfo.VehicleType> allowedTypes = new List <VehicleInfo.VehicleType>();

            DepotAIOverrides.AddAllowedType(ai?.m_transportInfo?.m_transportType, allowedTypes);
            DepotAIOverrides.AddAllowedType(ai?.m_secondaryTransportInfo?.m_transportType, allowedTypes);
            return(allowedTypes.Contains(type));
        }