123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- using System;
- using CommonAIEditor.Plugins.Win32;
- using CommonAI.Zone;
- using System.Windows.Forms;
- using System.IO;
- using System.Configuration;
- using CommonLang.Property;
- using CommonAIServer.Node;
- using CommonLang.Protocol;
- namespace CommonAIEditor
- {
- public static class EditorPlugin
- {
- private static IGameEditorPlugin mGameEditorPlugin;
- private static IGameEditorPlugin mDefaultGameEditorPlugin;
- public static string PluginDLL { get; private set; }
- public static string ServerDLL { get; private set; }
- public static void Init()
- {
- InitPlugins();
- InitDataPath();
- }
- private static void InitPlugins()
- {
- string data_plugin = ConfigurationManager.AppSettings["data_plugin"] + "";
- string edit_plugin = ConfigurationManager.AppSettings["edit_plugin"] + "";
- string node_plugin = ConfigurationManager.AppSettings["node_plugin"] + "";
-
- try
- {
- if (!string.IsNullOrEmpty(data_plugin))
- {
- EditorPlugin.PluginDLL = Application.StartupPath + "\\" + data_plugin;
- TemplateManager.IsEditor = true;
- var factory = ReflectionUtil.LoadInterfaceFromDLL<InstanceZoneFactory>(PluginDLL);
- if (factory == null) throw new Exception(data_plugin);
- TemplateManager.setFactory(factory);
- }
- }
- catch (Exception err)
- {
- MessageBox.Show("数据插件初始化失败 : " + data_plugin + "\n" + err.Message);
- }
-
- try
- {
- if (!string.IsNullOrEmpty(node_plugin))
- {
- EditorPlugin.ServerDLL = Application.StartupPath + "\\" + node_plugin;
- var factory = ReflectionUtil.LoadInterfaceFromDLL<ZoneNodeFactory>(ServerDLL);
- if (factory == null) throw new Exception(node_plugin);
- }
- }
- catch (Exception err)
- {
- MessageBox.Show("服务器插件初始化失败 : " + node_plugin + "\n" + err.Message);
- }
-
- try
- {
- if (!string.IsNullOrEmpty(edit_plugin))
- {
- mDefaultGameEditorPlugin = new Win32EditorGamePlugin();
- try
- {
- Type type = ReflectionUtil.LoadTypeFromDLL<IGameEditorPlugin>(edit_plugin);
- mGameEditorPlugin = (IGameEditorPlugin)ReflectionUtil.CreateInstance(type);
- if (mGameEditorPlugin == null) throw new Exception(type.FullName);
- }
- catch (Exception err)
- {
- MessageBox.Show(err.Message);
- mGameEditorPlugin = new Win32EditorGamePlugin();
- }
- mGameEditorPlugin.PluginDLL = (PluginDLL);
- mDefaultGameEditorPlugin.PluginDLL = (PluginDLL);
- }
- }
- catch (Exception err)
- {
- MessageBox.Show("编辑器插件初始化失败 : " + edit_plugin + "\n" + err.Message);
- }
-
- }
- private static void InitDataPath()
- {
- string data_root = ConfigurationManager.AppSettings["data_root"];
- Editor.SetDataRoot(Application.StartupPath);
- if (!string.IsNullOrEmpty(data_root) && Directory.Exists(Application.StartupPath + "\\" + data_root + "\\data"))
- {
- Editor.SetDataRoot(Path.GetFullPath(Application.StartupPath + "\\" + data_root));
- }
- else if (Directory.Exists(Application.StartupPath + "\\..\\data"))
- {
- Editor.SetDataRoot(Path.GetFullPath(Application.StartupPath + "\\.."));
- }
- MessageFactoryGenerator codec = TemplateManager.MessageCodec;
- File.WriteAllText(Editor.EditorRootDir + "/codec.txt", codec.ListAll());
- mGameEditorPlugin.DataRoot = (Editor.EditorRootDir);
- mDefaultGameEditorPlugin.DataRoot = (Editor.EditorRootDir);
- }
- public static IGameEditorPlugin CurrentPlugin
- {
- get { return mGameEditorPlugin; }
- }
- public static IGameEditorPlugin DefaultPlugin
- {
- get { return mDefaultGameEditorPlugin; }
- }
- }
- }
|