/[RomCheater]/trunk/RomCheater.PluginFramework/Core/PluginLoader.cs
ViewVC logotype

Diff of /trunk/RomCheater.PluginFramework/Core/PluginLoader.cs

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

revision 87 by william, Wed May 9 19:51:42 2012 UTC revision 366 by william, Sun Jun 10 03:14:42 2012 UTC
# Line 18  namespace RomCheater.PluginFramework.Cor Line 18  namespace RomCheater.PluginFramework.Cor
18              LoadedWindowPlugins = new List<IWindowPlugin>();              LoadedWindowPlugins = new List<IWindowPlugin>();
19          }          }
20          #region IPluginLoader Members          #region IPluginLoader Members
21            public void LoadPlugins() { LoadPlugins(false); }
22          public void LoadPlugins()          public void LoadPlugins(bool silent)
23          {          {
24              try              try
25              {              {
26                  logger.Info.WriteLine("Loading Plugins...");                  if (!silent)
27                        logger.Info.WriteLine("Loading Plugins...");
28    
29                  string PluginPath = string.Format(@"{0}\Plugins", typeof(PluginLoader).Assembly.Location.Replace(@"\RomCheater.PluginFramework.dll", ""));                  string PluginPath = string.Format(@"{0}\Plugins", typeof(PluginLoader).Assembly.Location.Replace(@"\RomCheater.PluginFramework.dll", ""));
30                  logger.Debug.WriteLine("Plugins Path: {0}", PluginPath);                  if (!silent)
31                        logger.Debug.WriteLine("Plugins Path: {0}", PluginPath);
32                  List<string> dlls = new List<string>(Directory.GetFiles(PluginPath, "*.dll"));                  List<string> dlls = new List<string>(Directory.GetFiles(PluginPath, "*.dll"));
33                  logger.Debug.WriteLine("  Found: {0} plugin dlls", dlls.Count);                  if (!silent)
34                        logger.Debug.WriteLine("  Found: {0} plugin dlls", dlls.Count);
35                  foreach (string dll in dlls)                  foreach (string dll in dlls)
36                  {                  {
37                      FileInfo fi = new FileInfo(dll);                      FileInfo fi = new FileInfo(dll);
38                      logger.Debug.WriteLine("    plugin[{0}]: {1}", dlls.IndexOf(dll), fi.Name);                      if (!silent)
39                            logger.Debug.WriteLine("    plugin[{0}]: {1}", dlls.IndexOf(dll), fi.Name);
40                      GetConfigPluginsFromDll(fi);                      GetConfigPluginsFromDll(fi);
41                      GetInputPluginsFromDll(fi);                      GetInputPluginsFromDll(fi);
42                      GetWindowPluginsFromDll(fi);                      GetWindowPluginsFromDll(fi);
43                  }                  }
44    
45                  logger.Info.WriteLine("  Loaded {0} config plugins", LoadedConfigPlugins.Count);                  if (!silent)
46                  logger.Info.WriteLine("  Loaded {0} input plugins", LoadedInputPlugins.Count);                      logger.Info.WriteLine("  Loaded {0} config plugins", LoadedConfigPlugins.Count);
47                  logger.Info.WriteLine("  Loaded {0} window plugins", LoadedWindowPlugins.Count);                  if (!silent)
48                        logger.Info.WriteLine("  Loaded {0} input plugins", LoadedInputPlugins.Count);
49                  logger.Info.WriteLine("Plugins Loaded.");                  if (!silent)
50                        logger.Info.WriteLine("  Loaded {0} window plugins", LoadedWindowPlugins.Count);
51                    if (!silent)
52                        logger.Info.WriteLine("Plugins Loaded.");
53              }              }
54              catch (ReflectionTypeLoadException ex)              catch (ReflectionTypeLoadException ex)
55              {              {
# Line 54  namespace RomCheater.PluginFramework.Cor Line 61  namespace RomCheater.PluginFramework.Cor
61                          builder.AppendLine(c.ToString());                          builder.AppendLine(c.ToString());
62                      }                      }
63                  }                  }
64                  logger.Error.WriteLine("Failed to load one or more plugins{0}Possible Reason:{0}{1}", System.Environment.NewLine, builder.ToString());                  if (!silent)
65                        logger.Error.WriteLine("Failed to load one or more plugins{0}Possible Reason:{0}{1}", System.Environment.NewLine, builder.ToString());
66              }              }
67              catch (Exception ex)              catch (Exception ex)
68              {              {
69                  logger.Error.WriteLine("Failed to load one or more plugins{0}Possible Reason:{0}{1}", System.Environment.NewLine, ex.ToString());                  if (!silent)
70                        logger.Error.WriteLine("Failed to load one or more plugins{0}Possible Reason:{0}{1}", System.Environment.NewLine, ex.ToString());
71              }              }
72          }          }
73          public List<IConfigPlugin> LoadedConfigPlugins { get; private set; }          public List<IConfigPlugin> LoadedConfigPlugins { get; private set; }
# Line 68  namespace RomCheater.PluginFramework.Cor Line 77  namespace RomCheater.PluginFramework.Cor
77          public IConfigPlugin GetConfigPlugin(string t)          public IConfigPlugin GetConfigPlugin(string t)
78          {          {
79              foreach (IConfigPlugin c in LoadedConfigPlugins) { if (c.ToString().ToLower() == t.ToLower()) { return c; } }              foreach (IConfigPlugin c in LoadedConfigPlugins) { if (c.ToString().ToLower() == t.ToLower()) { return c; } }
80                return GetGenericConfigPlugin();
81            }
82            private IConfigPlugin GetGenericConfigPlugin()
83            {
84                foreach (IConfigPlugin c in LoadedConfigPlugins) { if (c.ID.ToString().ToLower() == "478e225b-c3e8-9280-57ca-384b884fc4cc".ToLower()) { return c; } }
85              return null;              return null;
86          }          }
87          public IInputPlugin GetInputPlugin(string t)          public IInputPlugin GetInputPlugin(string t)
88          {          {
89              foreach (IInputPlugin c in LoadedInputPlugins) { if (c.ToString().ToLower() == t.ToLower()) { return c; } }              foreach (IInputPlugin c in LoadedInputPlugins) { if (c.ToString().ToLower() == t.ToLower()) { return c; } }
90                return GetGenericInputPlugin();
91            }
92            private IInputPlugin GetGenericInputPlugin()
93            {
94                foreach (IInputPlugin c in LoadedInputPlugins) { }
95              return null;              return null;
96          }          }
97          public IWindowPlugin GetWindowPlugin(string t)          public IWindowPlugin GetWindowPlugin(string t)
98          {          {
99              foreach (IWindowPlugin c in LoadedWindowPlugins) { if (c.ToString().ToLower() == t.ToLower()) { return c; } }              foreach (IWindowPlugin c in LoadedWindowPlugins) { if (c.ToString().ToLower() == t.ToLower()) { return c; } }
100                return GetGenericWindowPlugin();
101            }
102            private IWindowPlugin GetGenericWindowPlugin()
103            {
104                foreach (IWindowPlugin c in LoadedWindowPlugins) { }
105              return null;              return null;
106          }          }
   
107          #endregion          #endregion
108    
109          private void GetConfigPluginsFromDll(FileInfo dll)          private void GetConfigPluginsFromDll(FileInfo dll)
# Line 93  namespace RomCheater.PluginFramework.Cor Line 116  namespace RomCheater.PluginFramework.Cor
116                  if (type.BaseType == typeof(ConfigPlugin))                  if (type.BaseType == typeof(ConfigPlugin))
117                  {                  {
118                      ConstructorInfo ci = null;                      ConstructorInfo ci = null;
119                      ci = type.GetConstructor(new Type[] {});                      ci = type.GetConstructor(new Type[] { });
120                      if (ci == null)                      if (ci == null)
121                      {                      {
122                          throw new NullReferenceException(string.Format("Unable to bind to constructor for type: {0}", type.Name));                          throw new NullReferenceException(string.Format("Unable to bind to constructor for type: {0}", type.Name));

Legend:
Removed from v.87  
changed lines
  Added in v.366

  ViewVC Help
Powered by ViewVC 1.1.22