/[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 715 by william, Tue Jun 18 10:51:47 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 IBasePluginDefinition GetPluginByName(PluginNames plugin_name)
462          {          {
463                return GetPluginsByName(plugin_name).FirstOrDefault();
464            }
465            public static List<IBasePluginDefinition> GetPluginsByName(PluginNames plugin_name)
466            {
467              Type t = typeof(PluginCollection);              Type t = typeof(PluginCollection);
468              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));
469    
# Line 469  namespace RomCheater.PluginFramework.Cor Line 502  namespace RomCheater.PluginFramework.Cor
502                      bpd = (prop_value as IBasePluginDefinition);                      bpd = (prop_value as IBasePluginDefinition);
503                      if (bpd != null)                      if (bpd != null)
504                      {                      {
505                          return bpd;                          return new List<IBasePluginDefinition>() { bpd };
506                        }
507                        else
508                        {
509                            List<IBasePluginDefinition> bpds = new List<IBasePluginDefinition>();
510                            bpds = (prop_value as List<IBasePluginDefinition>);
511                            bpds.TrimExcess();
512                            return bpds;
513                      }                      }
514                  }                  }
515              }              }
# Line 499  namespace RomCheater.PluginFramework.Cor Line 539  namespace RomCheater.PluginFramework.Cor
539                  {                  {
540                      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);
541                      PluginNames o = (PluginNames)sub_field.GetValue(null);                      PluginNames o = (PluginNames)sub_field.GetValue(null);
542                      var bpd = GetPluginByName(o);                      var bpds = GetPluginsByName(o);
543                      if (bpd != null)                      if (bpds != null)
544                      {                      {
545                          plugins.Add(bpd);                          if (bpds.Count == 0)
546                            {
547                                throw new ArgumentOutOfRangeException(string.Format("Found pluginby name: '{0}' but no plugin data was returned", o.ToString()));
548                            }
549                            foreach (var bpd in bpds)
550                            {
551                                plugins.Add(bpd);
552                            }
553                      }                      }
554                      else                      else
555                      {                      {

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

  ViewVC Help
Powered by ViewVC 1.1.22