public void LoadPluginAssembly(string path) { Logger.Debug("PLUGIN_LOADER", path); Assembly a = Assembly.LoadFrom(path); try { foreach (Type t in a.GetTypes()) { if (t.IsSubclassOf(typeof(Plugin)) && t != typeof(Plugin)) { try { Plugin plugin = (Plugin)Activator.CreateInstance(t); PluginDetails details = (PluginDetails)Attribute.GetCustomAttribute(t, typeof(PluginDetails)); if (details.id != null) { if (details.SmodMajor != SMOD_MAJOR && details.SmodMinor != SMOD_MINOR) { Logger.Warn("PLUGIN_LOADER", "Trying to load an outdated plugin " + details.name + " " + details.version); } else { plugin.Details = details; plugin.Pipes = new PluginPipes(plugin); ConfigManager.Manager.RegisterPlugin(plugin); LangManager.Manager.RegisterPlugin(plugin); PipeManager.Manager.RegisterPlugin(plugin); plugin.Register(); disabledPlugins.Add(details.id, plugin); Logger.Info("PLUGIN_LOADER", "Plugin loaded: " + plugin.ToString()); } } else { Logger.Warn("PLUGIN_LOADER", "Plugin loaded but missing an id: " + t + "[" + path + "]"); } } catch (Exception e) { Logger.Error("PLUGIN_LOADER", "Failed to create instance of plugin " + t + "[" + path + "]"); Logger.Error("PLUGIN_LOADER", e.GetType().Name + ": " + e.Message); Logger.Error("PLUGIN_LOADER", e.StackTrace); } } } } catch (Exception e) { Logger.Error("PLUGIN_LOADER", "Failed to load DLL [" + path + "], is it up to date?"); Logger.Debug("PLUGIN_LOADER", e.Message); Logger.Debug("PLUGIN_LOADER", e.StackTrace); } }
public void RegisterTranslation(Plugin plugin, LangSetting setting) { if (!settings.ContainsKey(setting.Key)) { settings.Add(setting.Key, plugin); if (!keyvalue.ContainsKey(setting.Key)) { keyvalue.Add(setting.Key, setting.Default); File.AppendAllText(Directory.GetCurrentDirectory() + "/./sm_translations/" + setting.Filename + ".txt", setting.Key + " = " + setting.Default + System.Environment.NewLine); } else { PluginManager.Manager.Logger.Debug("LANG_MANAGER", setting.Key + " exists in translation files."); } } else { PluginManager.Manager.Logger.Warn("LANG_MANAGER", plugin.ToString() + " is trying to register a duplicate setting: " + setting.Key); } }