105 lines
3.7 KiB
C#
105 lines
3.7 KiB
C#
|
using System.Collections.Generic;
|
|||
|
using System.IO;
|
|||
|
|
|||
|
|
|||
|
namespace Thousandto.DIY
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 修改UIEventDefine.cs文件,添加open和close的事件定义
|
|||
|
/// </summary>
|
|||
|
public static class ModifyUIEventDefine
|
|||
|
{
|
|||
|
public const string UIEVENT_FILE_PATH = "Assets/Code/Global/Event/UIEventDefine.cs";
|
|||
|
|
|||
|
public static void ModifyFile(string formName, int uiconfigID)
|
|||
|
{
|
|||
|
string openEventDefine = string.Format("{0}_OPEN", formName);
|
|||
|
string openEventValue = string.Format("{0} + EventConstDefine.EVENT_UI_BASE_ID,", uiconfigID * 10);
|
|||
|
string closeEventDefine = string.Format("{0}_CLOSE", formName);
|
|||
|
string closeEventValue = string.Format("{0} + EventConstDefine.EVENT_UI_BASE_ID,", uiconfigID * 10 + 9);
|
|||
|
|
|||
|
List<string> lineList = new List<string>();
|
|||
|
List<string> endSignList = new List<string>();
|
|||
|
|
|||
|
StreamReader sr = new StreamReader(UIEVENT_FILE_PATH);
|
|||
|
int changed = 0;
|
|||
|
string line = "";
|
|||
|
while ((line = sr.ReadLine()) != null)
|
|||
|
{
|
|||
|
if (line.IndexOf("}") >= 0 && line.IndexOf("//") == -1)
|
|||
|
{
|
|||
|
endSignList.Add(line);
|
|||
|
continue;
|
|||
|
}
|
|||
|
|
|||
|
int checkValue = checkLine(ref line, openEventDefine, openEventValue);
|
|||
|
if (checkValue > changed)
|
|||
|
changed = checkValue;
|
|||
|
|
|||
|
checkValue = checkLine(ref line, closeEventDefine, closeEventValue);
|
|||
|
if (checkValue > changed)
|
|||
|
changed = checkValue;
|
|||
|
|
|||
|
lineList.Add(line);
|
|||
|
}
|
|||
|
sr.Close();
|
|||
|
|
|||
|
//不存在,需要新增
|
|||
|
if (changed == 0)
|
|||
|
{
|
|||
|
string newOpenDefine = string.Format(" {0} = {1}", openEventDefine, openEventValue);
|
|||
|
string newCloseDefine = string.Format(" {0} = {1}", closeEventDefine, closeEventValue);
|
|||
|
lineList.Add(newOpenDefine);
|
|||
|
lineList.Add(newCloseDefine);
|
|||
|
}
|
|||
|
|
|||
|
//不存在或者做了修改
|
|||
|
if (changed == 0 || changed == 2)
|
|||
|
{
|
|||
|
lineList.AddRange(endSignList);
|
|||
|
WriteToFile(lineList);
|
|||
|
}
|
|||
|
else
|
|||
|
UnityEngine.Debug.LogError("UIEventDefine已经定义窗体Open和Close事件: " + formName);
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 检查form的事件定义是否存在,如果存在则判断是否需要修改
|
|||
|
/// </summary>
|
|||
|
/// <param name="line">已知行</param>
|
|||
|
/// <param name="define">事件定义</param>
|
|||
|
/// <param name="value">事件值</param>
|
|||
|
/// <returns>0:不存在; 1: 存在但相同; 2:存在且不同</returns>
|
|||
|
private static int checkLine(ref string line, string define, string value)
|
|||
|
{
|
|||
|
int ret = 0;
|
|||
|
if (line.IndexOf(define) >= 0)
|
|||
|
{
|
|||
|
if (line.IndexOf(value) == -1)
|
|||
|
{
|
|||
|
line = string.Format(" {0} = {1}", define, value);
|
|||
|
ret = 2;
|
|||
|
}
|
|||
|
else
|
|||
|
ret = 1;
|
|||
|
}
|
|||
|
|
|||
|
return ret;
|
|||
|
}
|
|||
|
|
|||
|
private static void WriteToFile(List<string> contentList)
|
|||
|
{
|
|||
|
if (contentList == null || contentList.Count == 0) return;
|
|||
|
|
|||
|
StreamWriter sw = new StreamWriter(UIEVENT_FILE_PATH);
|
|||
|
for (int i = 0; i < contentList.Count; ++i)
|
|||
|
{
|
|||
|
sw.WriteLine(contentList[i]);
|
|||
|
}
|
|||
|
sw.Close();
|
|||
|
|
|||
|
UnityEngine.Debug.LogError("保存到UIEventDefine成功");
|
|||
|
}
|
|||
|
}
|
|||
|
}
|