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

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

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

revision 713 by william, Tue Jun 18 10:25:55 2013 UTC revision 714 by william, Tue Jun 18 10:44:55 2013 UTC
# Line 426  namespace RomCheater.PluginFramework.Cor Line 426  namespace RomCheater.PluginFramework.Cor
426              #endregion              #endregion
427          }          }
428          #endregion          #endregion
429            #region UnkownPlugin Support
430            internal static class UnknownPlugins
431            {
432                private const PluginType PluginType = Core.PluginType.Unknown;
433                #region UnknownPlugin
434                internal class UnknownPlugin
435                {
436                    private const PluginNames PluginName = Core.PluginNames.Unknown;
437                    private static List<IBasePluginDefinition> bpds = new List<IBasePluginDefinition>();
438                    static UnknownPlugin()
439                    {
440                        bpds = new List<IBasePluginDefinition>();
441                        PluginLoader loader = new PluginLoader();
442                        loader.LoadPlugins(true);
443                        var config_plugins = loader.LoadedConfigPlugins;
444                        var input_plugins = loader.LoadedInputPlugins;
445                        var window_plugins = loader.LoadedWindowPlugins;
446                        var user_plugins = loader.LoadedUserControlPlugins;
447    
448                        config_plugins.ForEach(s => bpds.Add(new BasePluginDefinition(s.Name, s.Description, s.ID)));
449                        input_plugins.ForEach(s => bpds.Add(new BasePluginDefinition(s.Name, s.Description, s.ID)));
450                        window_plugins.ForEach(s => bpds.Add(new BasePluginDefinition(s.Name, s.Description, s.ID)));
451                        user_plugins.ForEach(s => bpds.Add(new BasePluginDefinition(s.Name, s.Description, s.ID)));
452    
453                    }
454                    public static List<IBasePluginDefinition> Plugin { get { return (bpds as List<IBasePluginDefinition>); } }
455                }
456                #endregion
457            }
458            #endregion
459    
460          #region Name/Guid Collection          #region Name/Guid Collection
461          public static IBasePluginDefinition GetPluginByName(PluginNames plugin_name)          public static List<IBasePluginDefinition> GetPluginByName(PluginNames plugin_name)
462          {          {
463              Type t = typeof(PluginCollection);              Type t = typeof(PluginCollection);
464              List<Type> types = new List<Type>(t.GetNestedTypes(BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public));              List<Type> types = new List<Type>(t.GetNestedTypes(BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public));
# Line 469  namespace RomCheater.PluginFramework.Cor Line 498  namespace RomCheater.PluginFramework.Cor
498                      bpd = (prop_value as IBasePluginDefinition);                      bpd = (prop_value as IBasePluginDefinition);
499                      if (bpd != null)                      if (bpd != null)
500                      {                      {
501                          return bpd;                          return new List<IBasePluginDefinition>() { bpd };
502                        }
503                        else
504                        {
505                            List<IBasePluginDefinition> bpds = new List<IBasePluginDefinition>();
506                            bpds = (prop_value as List<IBasePluginDefinition>);
507                            bpds.TrimExcess();
508                            return bpds;
509                      }                      }
510                  }                  }
511              }              }
# Line 499  namespace RomCheater.PluginFramework.Cor Line 535  namespace RomCheater.PluginFramework.Cor
535                  {                  {
536                      var sub_field = sub_type.GetField("PluginName", BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);                      var sub_field = sub_type.GetField("PluginName", BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
537                      PluginNames o = (PluginNames)sub_field.GetValue(null);                      PluginNames o = (PluginNames)sub_field.GetValue(null);
538                      var bpd = GetPluginByName(o);                      var bpds = GetPluginByName(o);
539                      if (bpd != null)                      if (bpds != null)
540                      {                      {
541                          plugins.Add(bpd);                          if (bpds.Count == 0)
542                            {
543                                throw new ArgumentOutOfRangeException(string.Format("Found pluginby name: '{0}' but no plugin data was returned", o.ToString()));
544                            }
545                            foreach (var bpd in bpds)
546                            {
547                                plugins.Add(bpd);
548                            }
549                      }                      }
550                      else                      else
551                      {                      {

Legend:
Removed from v.713  
changed lines
  Added in v.714

  ViewVC Help
Powered by ViewVC 1.1.22