/[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 22 by william, Wed Apr 4 02:39:20 2012 UTC revision 31 by william, Wed Apr 4 05:12:58 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 20  namespace EmuXPortal.Api Line 20  namespace EmuXPortal.Api
20          string EmuRomPath { get; set; }          string EmuRomPath { get; set; }
21      }      }
22    
23      
24    
25      public static class EmuConfigLoader      public static class EmuConfigLoader
26      {      {
27          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
28            #region load
29          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); }
30          public static IEmuConfig Load(string config_path, string rom_path)          public static IEmuConfig Load(string config_path, string rom_path)
31          {          {
# Line 89  namespace EmuXPortal.Api Line 91  namespace EmuXPortal.Api
91                  }                  }
92              }              }
93              else { logger.WriteLine("Could not find EMU Config File: {0}", config_path); }              else { logger.WriteLine("Could not find EMU Config File: {0}", config_path); }
94                
95              return config;              return config;
96          }          }
97            #endregion
98            #region parse emu options
99            public static string GetEMUOptions(IRomConfig config)
100            {
101                EMUOptions EMUOptions = new EMUOptions(config);
102                return EMUOptions.Options;
103            }
104            #endregion
105            #region private class EMUOptions
106            private class EMUOptions
107            {
108                #region Replaceable Constant Options
109                private const string ROM_FILE = "%ROM_FILE%";
110                private const string ROM_PATH = "%ROM_PATH%";
111                #endregion
112                private Dictionary<string, string> options_dict = new Dictionary<string, string>();
113                public EMUOptions(IRomConfig config)
114                {
115                    init_dict(config);
116                    string options = config.Config.EmuOptions;
117                    string real_options = options;
118                    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); } }
119                    Options = real_options;
120                }
121                private void init_dict(IRomConfig config)
122                {
123                    options_dict.Add(ROM_FILE, config.RomFile);
124                    options_dict.Add(ROM_PATH, config.Config.EmuRomPath);
125                }
126                public string Options { get; set; }
127            }
128            #endregion
129    
130          #region private class EmuConfig : IEmuConfig          #region private class EmuConfig : IEmuConfig
131          private class EmuConfig : IEmuConfig          private class EmuConfig : IEmuConfig, IComparable
132          {          {
133              private const string Unknown_Platform = "Unknown Platform";              private const string Unknown_Platform = "Unknown Platform";
134              public EmuConfig() : this("") { }              public EmuConfig() : this("") { }
# Line 153  namespace EmuXPortal.Api Line 189  namespace EmuXPortal.Api
189              public string EmuOptions { get; set; }              public string EmuOptions { get; set; }
190              public string EmuRomPath { get; set; }              public string EmuRomPath { get; set; }
191              #endregion                    #endregion      
192            
193                #region IComparable Members
194    
195                public int CompareTo(object obj)
196                {
197                    return this.PlatformNameLong.CompareTo((obj as EmuConfig).PlatformNameLong);
198                }
199    
200                #endregion
201          }          }
202          #endregion          #endregion
203    

Legend:
Removed from v.22  
changed lines
  Added in v.31

  ViewVC Help
Powered by ViewVC 1.1.22