Exemplo n.º 1
0
        public static Map LoadHeader(string fileName)
        {
            if (fileName == null)
            {
                throw new ArgumentNullException("fileName");
            }

            MapFormatType targetType = MapFormatType.SingleFile;

            if (!File.Exists(fileName))
            {
                if (Directory.Exists(fileName))
                {
                    targetType = MapFormatType.Directory;
                }
                else
                {
                    throw new FileNotFoundException();
                }
            }

            List <IMapConverter> fallbackConverters = new List <IMapConverter>();

            // first try all converters for the file extension
            foreach (IMapConverter converter in AvailableConverters.Values)
            {
                bool claims = false;
                try {
                    claims = (converter.FormatType == targetType) &&
                             converter.ClaimsName(fileName) &&
                             converter.Claims(fileName);
                } catch (Exception) { }
                if (claims)
                {
                    try {
                        Map map = converter.LoadHeader(fileName);
                        map.ChangedSinceSave = false;
                        return(map);
                    } catch (NotImplementedException) { }
                }
                else
                {
                    fallbackConverters.Add(converter);
                }
            }

            foreach (IMapConverter converter in fallbackConverters)
            {
                try {
                    Map map = converter.LoadHeader(fileName);
                    map.ChangedSinceSave = false;
                    return(map);
                } catch { }
            }

            throw new MapFormatException("Unknown map format.");
        }
Exemplo n.º 2
0
        public static MapFormat Identify(string fileName)
        {
            if (fileName == null)
            {
                throw new ArgumentNullException("fileName");
            }
            MapFormatType targetType = MapFormatType.SingleFile;

            if (!File.Exists(fileName))
            {
                if (Directory.Exists(fileName))
                {
                    targetType = MapFormatType.Directory;
                }
                else
                {
                    throw new FileNotFoundException();
                }
            }

            List <IMapConverter> fallbackConverters = new List <IMapConverter>();

            foreach (IMapConverter converter in AvailableConverters.Values)
            {
                try {
                    if (converter.FormatType == targetType && converter.ClaimsName(fileName))
                    {
                        if (converter.Claims(fileName))
                        {
                            return(converter.Format);
                        }
                    }
                    else
                    {
                        fallbackConverters.Add(converter);
                    }
                } catch { }
            }

            foreach (IMapConverter converter in fallbackConverters)
            {
                try {
                    if (converter.Claims(fileName))
                    {
                        return(converter.Format);
                    }
                } catch { }
            }

            return(MapFormat.Unknown);
        }