//using System; //using System.Collections.Generic; //using System.IO; //using System.Reflection; //using Uber.Core; //namespace Uber.Plugins //{ // class PluginHandler // { // public Types.AvailablePlugins AvailablePlugins; // public Dictionary PluginHandlers; // public PluginHandler() // { // AvailablePlugins = new Types.AvailablePlugins(); // PluginHandlers = new Dictionary(); // } // public void LoadPlugins() // { // LoadPlugins(AppDomain.CurrentDomain.BaseDirectory); // } // public void LoadPlugins(string Path) // { // AvailablePlugins.Clear(); // PluginHandlers.Clear(); // foreach (string fileOn in Directory.GetFiles(Path)) // { // FileInfo File = new FileInfo(fileOn); // if (File.Extension.Equals(".dll")) // { // InitPlugin(fileOn); // } // } // } // public void UnloadPlugins() // { // lock (AvailablePlugins) // { // foreach (Types.AvailablePlugin Plugin in AvailablePlugins) // { // Plugin.Instance.Dispose(); // Plugin.Instance = null; // } // } // AvailablePlugins.Clear(); // PluginHandlers.Clear(); // } // public Boolean UnloadPlugin(string Name) // { // lock (AvailablePlugins) // { // foreach (Types.AvailablePlugin Plugin in AvailablePlugins) // { // if (Plugin.Instance.Name.ToLower() == Name.ToLower()) // { // Plugin.Instance.Dispose(); // Plugin.Instance = null; // AvailablePlugins.Remove(Plugin); // return true; // } // } // } // return false; // } // public void InitPlugin(string FileName) // { // Assembly PluginAssembly = Assembly.LoadFrom(FileName); // try // { // foreach (Type PluginType in PluginAssembly.GetTypes()) // { // if (PluginType.IsPublic) // { // if (!PluginType.IsAbstract) // { // Type TypeInterface = PluginType.GetInterface("PluginInterface.IUberPlugin", true); // if (TypeInterface != null) // { // Types.AvailablePlugin newPlugin = new Types.AvailablePlugin(); // newPlugin.AssemblyPath = FileName; // newPlugin.Instance = (IUberPlugin)Activator.CreateInstance(PluginAssembly.GetType(PluginType.ToString())); // newPlugin.Instance.Host = this; // newPlugin.Instance.Initialize(); // UberEnvironment.GetLogging().WriteLine("Initialized plugin " + newPlugin.Instance.Name, LogLevel.Debug); // this.AvailablePlugins.Add(newPlugin); // newPlugin = null; // } // TypeInterface = null; // } // } // } // } // catch (Exception e) // { // UberEnvironment.GetLogging().WriteLine("Could not load plugin " + FileName + ": " + e.Message, LogLevel.Error); // } // PluginAssembly = null; // } // public void Destroy() // { // UnloadPlugins(); // this.AvailablePlugins.Clear(); // this.AvailablePlugins = null; // } // public Types.AvailablePlugin GetPlugin(string Plugin) // { // lock (AvailablePlugins) // { // foreach (Types.AvailablePlugin P in AvailablePlugins) // { // if (P.Instance.Name.ToLower() == Plugin.ToLower()) // { // return P; // } // } // } // return null; // } // public void UnregisterPacketHandler(string Plugin, int Header) // { // PluginHandlers.Remove(Header); // } // public Boolean RegisterPacketHandler(string Plugin, int Header) // { // if (HasPacketHandler(Header)) // { // return false; // } // PluginHandlers.Add(Header, Plugin); // return true; // } // public Boolean HasPacketHandler(int HeaderId) // { // if (PluginHandlers.ContainsKey(HeaderId)) // { // return true; // } // return false; // } // public Boolean ExecutePacketHandler(uint HabboId, int HeaderId, byte[] Data) // { // if (!HasPacketHandler(HeaderId)) // { // return true; // } // Types.AvailablePlugin Plugin = GetPlugin(PluginHandlers[HeaderId]); // if (Plugin == null) // { // return true; // } // return Plugin.Instance.HandlePacket(HabboId, HeaderId, Data); // } // } // namespace Types // { // public class AvailablePlugins : System.Collections.CollectionBase // { // public void Add(Types.AvailablePlugin pluginToAdd) // { // this.List.Add(pluginToAdd); // } // public void Remove(Types.AvailablePlugin pluginToRemove) // { // this.List.Remove(pluginToRemove); // } // public Types.AvailablePlugin Find(string pluginNameOrPath) // { // Types.AvailablePlugin toReturn = null; // foreach (Types.AvailablePlugin pluginOn in this.List) // { // if ((pluginOn.Instance.Name.Equals(pluginNameOrPath)) || pluginOn.AssemblyPath.Equals(pluginNameOrPath)) // { // toReturn = pluginOn; // break; // } // } // return toReturn; // } // } // public class AvailablePlugin // { // private IUberPlugin myInstance = null; // private string myAssemblyPath = ""; // public IUberPlugin Instance // { // get // { // return myInstance; // } // set // { // myInstance = value; // } // } // public string AssemblyPath // { // get // { // return myAssemblyPath; // } // set // { // myAssemblyPath = value; // } // } // } // } //}