예제 #1
0
        public ApplicationSettingsReader(string appdir, string filename)
        {
            XmlSerializer          serializer = new XmlSerializer(typeof(ApplicationSettingRoot));
            ApplicationSettingRoot readitems;

            using (Stream reader = new FileStream(Path.Combine(appdir, filename), FileMode.Open))
            {
                readitems = (ApplicationSettingRoot)serializer.Deserialize(reader);
            }
            ConversionLibrary = new Dictionary <string, RealToGameSpaceConversion>();
            PathLibrary       = new Dictionary <string, string>();
            //IconFiles = new Dictionary<string, string>();
            PinTypes        = new List <MapPinType>();
            ShortNameLookup = new Dictionary <string, string>();
            ShortNames      = new List <string>();
            LongNames       = new List <string>();
            foreach (WorldSetting ws in readitems.worldsettings.Worlds)
            {
                string loc = ws.ShortName;
                ConversionLibrary[loc] = new RealToGameSpaceConversion(ws.conversionsetting.Slope,
                                                                       ws.conversionsetting.xintercept, ws.conversionsetting.yintercept);
                if (!File.Exists(Path.Combine(appdir, ws.filename)))
                {
                    throw new FileNotFoundException("Invalid filename");
                }
                PathLibrary[loc] = Path.Combine(appdir, ws.filename);
                ShortNameLookup[ws.ShortName] = loc;
                if (ws.AliasShortName != null)
                {
                    ShortNameLookup[ws.AliasShortName] = ws.ShortName;
                }
                LongNames.Add(ws.Name);
                ShortNames.Add(ws.ShortName);
            }
            TypeLookup = new Dictionary <string, MapPinType>();
            foreach (IconSetting icset in readitems.iconsettings.Icons)
            {
                MapPinType m = new MapPinType(icset.Groupname, icset.InternalName);
                m.Aliases  = icset.Aliases;
                m.IconFile = icset.ImageName;
                TypeLookup[icset.InternalName] = m;
                foreach (string alias in icset.Aliases)
                {
                    TypeLookup[alias] = m;
                }
                PinTypes.Add(m);
            }
            largeiconpath = readitems.iconsettings.LargeIconPath;
            smalliconpath = readitems.iconsettings.SmallIconPath;
        }
        /// <summary>
        /// Gets the resource ID for the provided pin type.
        /// </summary>
        /// <param name="pinType">Pin type to get image resource.</param>
        /// <returns>Image resource identifier.</returns>
        private static int GetResourceId(MapPinType pinType)
        {
            switch (pinType)
            {
            case MapPinType.DropPoint:
                return(Resource.Drawable.pin_drop_point);

            case MapPinType.Favorite:
                return(Resource.Drawable.pin_favorite);

            case MapPinType.PrimaryFavorite:
                return(Resource.Drawable.pin_primary_favorite);

            default:
                return(Resource.Drawable.pin_vehicle);
            }
        }