/[EmuXPortal]/trunk/EmuXPortal/Api/EmuConfig.cs
ViewVC logotype

Diff of /trunk/EmuXPortal/Api/EmuConfig.cs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 21 by william, Wed Apr 4 02:13:41 2012 UTC revision 32 by william, Wed Apr 4 05:42:03 2012 UTC
# Line 9  using System.Xml; Line 9  using System.Xml;
9    
10  namespace EmuXPortal.Api  namespace EmuXPortal.Api
11  {  {
12      public interface IEmuConfig      public interface IEmuConfig : IComparable
13      {      {
14          string PlatformNameShort { get; }          string PlatformNameShort { get; }
15          string PlatformNameLong { get; }          string PlatformNameLong { get; }
# Line 18  namespace EmuXPortal.Api Line 18  namespace EmuXPortal.Api
18          string EmuPath { get; }          string EmuPath { get; }
19          string EmuOptions { get; }          string EmuOptions { get; }
20          string EmuRomPath { get; set; }          string EmuRomPath { get; set; }
21            string ToString();
22      }      }
23    
24      
25    
26      public static class EmuConfigLoader      public static class EmuConfigLoader
27      {      {
28          private const string EMU_CONFIG = "emu.config"; // if this file signifies the emulator configuration          private const string EMU_CONFIG = "emu.config"; // if this file signifies the emulator configuration
29            #region load
30          public static IEmuConfig Load(string rom_path) { return Load(string.Empty, rom_path); }          public static IEmuConfig Load(string rom_path) { return Load(string.Empty, rom_path); }
31          public static IEmuConfig Load(string config_path, string rom_path)          public static IEmuConfig Load(string config_path, string rom_path)
32          {          {
# Line 44  namespace EmuXPortal.Api Line 47  namespace EmuXPortal.Api
47                      {                      {
48                          using (XmlReader reader = XmlReader.Create(fs))                          using (XmlReader reader = XmlReader.Create(fs))
49                          {                          {
50                                string value = "";
51                              reader.ReadToFollowing("PLATFORMNAMESHORT");                              reader.ReadToFollowing("PLATFORMNAMESHORT");
52                              config.PlatformNameShort = reader.ReadElementContentAsString();                              value = reader.ReadElementContentAsString();
53                                config.PlatformNameShort = (value == "") ? config.PlatformNameShort: value;
54                              logger.WriteLine("\t\tPLATFORMNAMESHORT={0}", config.PlatformNameShort);                              logger.WriteLine("\t\tPLATFORMNAMESHORT={0}", config.PlatformNameShort);
55    
56                              reader.ReadToFollowing("PLATFORMNAMELONG");                              reader.ReadToFollowing("PLATFORMNAMELONG");
57                              config.PlatformNameLong = reader.ReadElementContentAsString();                              value = reader.ReadElementContentAsString();
58                                config.PlatformNameLong = (value == "") ? config.PlatformNameLong : value;
59                              logger.WriteLine("\t\tPLATFORMNAMELONG={0}", config.PlatformNameLong);                              logger.WriteLine("\t\tPLATFORMNAMELONG={0}", config.PlatformNameLong);
60    
61                              reader.ReadToFollowing("PLATFORMIMAGE");                              reader.ReadToFollowing("PLATFORMIMAGE");
# Line 59  namespace EmuXPortal.Api Line 65  namespace EmuXPortal.Api
65                              logger.WriteLine("\t\tPLATFORMIMAGE={0}", str_platform_image);                              logger.WriteLine("\t\tPLATFORMIMAGE={0}", str_platform_image);
66    
67                              reader.ReadToFollowing("EXTENSIONS");                              reader.ReadToFollowing("EXTENSIONS");
68                              config.Extenstions = reader.ReadElementContentAsString();                              value = reader.ReadElementContentAsString();
69                                config.Extenstions = (value == "") ? config.Extenstions : value;
70                              logger.WriteLine("\t\tEXTENSIONS={0}", config.Extenstions);                              logger.WriteLine("\t\tEXTENSIONS={0}", config.Extenstions);
71    
72                              reader.ReadToFollowing("EMULATORPATH");                              reader.ReadToFollowing("EMULATORPATH");
73                              config.EmuPath = reader.ReadElementContentAsString();                              value = reader.ReadElementContentAsString();
74                                config.EmuPath = (value == "") ? config.EmuPath : value;
75                              logger.WriteLine("\t\tEMULATORPATH={0}", config.EmuPath);                              logger.WriteLine("\t\tEMULATORPATH={0}", config.EmuPath);
76    
77                              reader.ReadToFollowing("EMULATOROPTIONS");                              reader.ReadToFollowing("EMULATOROPTIONS");
78                              config.EmuOptions = reader.ReadElementContentAsString();                              value = reader.ReadElementContentAsString();
79                              logger.WriteLine("\t\tEMULATOROPTIONS={0}", config.EmuOptions);                              config.EmuOptions = (value == "") ? config.EmuOptions : value;
80                                logger.WriteLine("\tEMULATOROPTIONS={0}", config.EmuOptions);
81                          }                          }
82                      }                      }
83                      logger.WriteLine("\tLoaded Config: {0}", config_path);                      logger.WriteLine("\tLoaded Config: {0}", config_path);
# Line 83  namespace EmuXPortal.Api Line 92  namespace EmuXPortal.Api
92                  }                  }
93              }              }
94              else { logger.WriteLine("Could not find EMU Config File: {0}", config_path); }              else { logger.WriteLine("Could not find EMU Config File: {0}", config_path); }
95                
96              return config;              return config;
97          }          }
98            #endregion
99            #region parse emu options
100            public static string GetEMUOptions(IRomConfig config)
101            {
102                EMUOptions EMUOptions = new EMUOptions(config);
103                return EMUOptions.Options;
104            }
105            #endregion
106            #region private class EMUOptions
107            private class EMUOptions
108            {
109                #region Replaceable Constant Options
110                private const string ROM_FILE = "%ROM_FILE%";
111                private const string ROM_PATH = "%ROM_PATH%";
112                #endregion
113                private Dictionary<string, string> options_dict = new Dictionary<string, string>();
114                public EMUOptions(IRomConfig config)
115                {
116                    init_dict(config);
117                    string options = config.Config.EmuOptions;
118                    string real_options = options;
119                    foreach (KeyValuePair<string, string> pair in options_dict) { if (options.ToLower().Contains(pair.Key.ToLower())) { real_options = real_options.ToLower().Replace(pair.Key.ToLower(), pair.Value); } }
120                    Options = real_options;
121                }
122                private void init_dict(IRomConfig config)
123                {
124                    options_dict.Add(ROM_FILE, config.RomFile);
125                    options_dict.Add(ROM_PATH, config.Config.EmuRomPath);
126                }
127                public string Options { get; set; }
128            }
129            #endregion
130    
131          #region private class EmuConfig : IEmuConfig          #region private class EmuConfig : IEmuConfig
132          private class EmuConfig : IEmuConfig          private class EmuConfig : IEmuConfig, IComparable
133          {          {
134              private const string Unknown_Platform = "Unknown Platform";              private const string Unknown_Platform = "Unknown Platform";
135              public EmuConfig() : this("") { }              public EmuConfig() : this("") { }
# Line 147  namespace EmuXPortal.Api Line 190  namespace EmuXPortal.Api
190              public string EmuOptions { get; set; }              public string EmuOptions { get; set; }
191              public string EmuRomPath { get; set; }              public string EmuRomPath { get; set; }
192              #endregion                    #endregion      
193            
194                public override string ToString()
195                {
196                    return string.Format("{2} {0}{3}{1}","{","}", PlatformNameLong,PlatformNameShort);
197                }
198                #region IComparable Members
199    
200                public int CompareTo(object obj)
201                {
202                    return this.PlatformNameLong.CompareTo((obj as EmuConfig).PlatformNameLong);
203                }
204    
205                #endregion
206          }          }
207          #endregion          #endregion
208    

Legend:
Removed from v.21  
changed lines
  Added in v.32

  ViewVC Help
Powered by ViewVC 1.1.22