1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.IO;
- using CommonAI.Zone.ZoneEditor;
- namespace GameEditorPlugin.Lua
- {
- public class LuaCodeGen
- {
- private static Encoding UTF8 = new UTF8Encoding(false);
- private readonly int sceneID;
- private readonly DirectoryInfo scene_proj;
- private readonly DirectoryInfo client_dir;
- private readonly DirectoryInfo server_dir;
- private readonly DirectoryInfo template_dir;
- public LuaCodeGen(DirectoryInfo scene_proj, int sceneID)
- {
- this.scene_proj = scene_proj;
- this.sceneID = sceneID;
- if (!scene_proj.Exists)
- {
- scene_proj.Create();
- client_dir = scene_proj.CreateSubdirectory("client");
- server_dir = scene_proj.CreateSubdirectory("server");
- }
- else
- {
- client_dir = new DirectoryInfo(scene_proj.FullName + "/client");
- server_dir = new DirectoryInfo(scene_proj.FullName + "/server");
- if (!client_dir.Exists) client_dir.Create();
- if (!server_dir.Exists) server_dir.Create();
- }
- template_dir = new DirectoryInfo(scene_proj.Parent.FullName + "/doc/template");
- }
- public FileInfo GenSceneScript(object data)
- {
- FileInfo ret = null;
- if (data is SceneData)
- {
- SceneData sdata = data as SceneData;
- FileInfo dst_zone_script = new FileInfo(server_dir.FullName + "/ZoneEvents.lua");
- ret = new FileInfo(server_dir.FullName + "/ZoneEvents.lua");
- if (!dst_zone_script.Exists)
- {
- string st = File.ReadAllText(template_dir.FullName + "/IZoneListener.lua", UTF8);
- st = st.Replace("_Name_", "_" + sdata.Name + "_");
- File.WriteAllText(ret.FullName, st, UTF8);
- }
- }
- else if (data is SceneObjectData)
- {
- SceneObjectData obj = (data as SceneObjectData);
- if (data is UnitData)
- {
- ret = RedirectTemplate(obj.Name, "IUnitListener.lua", server_dir);
- }
- else if (data is RegionData)
- {
- ret = RedirectTemplate(obj.Name, "IRegionListener.lua", server_dir);
- }
- else
- {
- ret = RedirectTemplate(obj.Name, "IFlagListener.lua", server_dir);
- }
- obj.Script = ret.Name;
- }
- return ret;
- }
- private FileInfo RedirectTemplate(string name, string template_file_name, DirectoryInfo dst_dir)
- {
- FileInfo dst_file = new FileInfo(dst_dir.FullName + "/" + name + "_Events.lua");
- if (!dst_file.Exists)
- {
- string ut = File.ReadAllText(template_dir.FullName + "/" + template_file_name, UTF8);
- ut = ut.Replace("_Name_", "_" + name + "_");
- File.WriteAllText(dst_file.FullName, ut, UTF8);
- }
- return dst_file;
- }
- }
- }
|