268 lines
8.6 KiB
C#
268 lines
8.6 KiB
C#
|
using UnityEngine;
|
|||
|
using UnityEngine.UI;
|
|||
|
using UnityEditor;
|
|||
|
using System.Collections;
|
|||
|
using System.IO;
|
|||
|
using GCGame.Table;
|
|||
|
|
|||
|
public class RechargeTableToStr : ScriptableObject
|
|||
|
{
|
|||
|
private static Vector3 position;
|
|||
|
private static Quaternion rotation;
|
|||
|
//private static Vector3 scale;
|
|||
|
|
|||
|
[MenuItem("ProTool/Table/RechargeTabToStr")]
|
|||
|
public static void RechargeTabToStr()
|
|||
|
{
|
|||
|
string writePath = Application.dataPath + "/Editor/ZhanyouTool/RechargeTableStr.txt";
|
|||
|
string readPath = Application.dataPath + "/Project/BundleData/Tables/Recharge.txt";
|
|||
|
|
|||
|
|
|||
|
StreamReader tableReader = new StreamReader(readPath);
|
|||
|
StreamWriter tableWrite = new StreamWriter(writePath);
|
|||
|
tableReader.ReadLine();
|
|||
|
tableReader.ReadLine();
|
|||
|
tableReader.ReadLine();
|
|||
|
tableReader.ReadLine();
|
|||
|
string writeLine = "";
|
|||
|
while (!tableReader.EndOfStream)
|
|||
|
{
|
|||
|
string line = tableReader.ReadLine();
|
|||
|
string[] lineSplit = line.Split('\t');
|
|||
|
if (lineSplit.Length >= 7)
|
|||
|
{
|
|||
|
writeLine = "+\"{";
|
|||
|
writeLine += "\\\"goods_id\\\"" + " = " + lineSplit[0] + ";";
|
|||
|
writeLine += "\\\"goods_describe\\\"" + " = " + lineSplit[1] + ";";
|
|||
|
writeLine += "\\\"goods_register_id\\\"" + " = " + lineSplit[2] + ";";
|
|||
|
writeLine += "\\\"goods_icon\\\"" + " = " + lineSplit[4] + ";";
|
|||
|
writeLine += "\\\"goods_number\\\"" + " = " + lineSplit[5] + ";";
|
|||
|
writeLine += "\\\"goods_price\\\"" + " = " + "10" + ";";
|
|||
|
writeLine += "}\"";
|
|||
|
tableWrite.WriteLine(writeLine);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
tableReader.Close();
|
|||
|
tableWrite.Close();
|
|||
|
}
|
|||
|
|
|||
|
private static string[] MySplit(string str, string[] nTypeList, string regix)
|
|||
|
{
|
|||
|
if (string.IsNullOrEmpty(str))
|
|||
|
{
|
|||
|
return null;
|
|||
|
}
|
|||
|
string[] content = new string[nTypeList.Length];
|
|||
|
int nIndex = 0;
|
|||
|
int nstartPos = 0;
|
|||
|
while (nstartPos <= str.Length)
|
|||
|
{
|
|||
|
int nsPos = str.IndexOf(regix, nstartPos);
|
|||
|
if (nsPos < 0)
|
|||
|
{
|
|||
|
string lastdataString = str.Substring(nstartPos);
|
|||
|
if (string.IsNullOrEmpty(lastdataString) && nTypeList[nIndex].ToLower() != "string")
|
|||
|
{
|
|||
|
content[nIndex++] = "--";
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
content[nIndex++] = lastdataString;
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (nstartPos == nsPos)
|
|||
|
{
|
|||
|
if (nTypeList[nIndex].ToLower() != "string")
|
|||
|
{
|
|||
|
content[nIndex++] = "--";
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
content[nIndex++] = "";
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
content[nIndex++] = str.Substring(nstartPos, nsPos - nstartPos);
|
|||
|
}
|
|||
|
nstartPos = nsPos + 1;
|
|||
|
}
|
|||
|
}
|
|||
|
return content;
|
|||
|
}
|
|||
|
|
|||
|
[MenuItem("ProTool/Table/CheckTable1")]
|
|||
|
public static void CheckTable1()
|
|||
|
{
|
|||
|
string m_Key = "";
|
|||
|
string[] Values = null;
|
|||
|
|
|||
|
Object selectObj = Selection.activeObject;
|
|||
|
TextAsset testAsset = selectObj as TextAsset;
|
|||
|
string[] alldataRow;
|
|||
|
alldataRow = testAsset.text.Split('\n');
|
|||
|
//skip fort three
|
|||
|
int skip = 0;
|
|||
|
string[] typeList = null;
|
|||
|
string[] typeNames = null;
|
|||
|
foreach (string line in alldataRow)
|
|||
|
{
|
|||
|
int nKey = -1;
|
|||
|
if (skip == 0)
|
|||
|
{
|
|||
|
string sztemp = line;
|
|||
|
if (sztemp.Length >= 1)
|
|||
|
{
|
|||
|
if (sztemp[sztemp.Length - 1] == '\r')
|
|||
|
{
|
|||
|
sztemp = sztemp.TrimEnd('\r');
|
|||
|
}
|
|||
|
}
|
|||
|
typeNames = line.Split('\t');
|
|||
|
++skip;
|
|||
|
continue;
|
|||
|
}
|
|||
|
|
|||
|
if (skip == 1)
|
|||
|
{
|
|||
|
string sztemp = line;
|
|||
|
if (sztemp.Length >= 1)
|
|||
|
{
|
|||
|
if (sztemp[sztemp.Length - 1] == '\r')
|
|||
|
{
|
|||
|
sztemp = sztemp.TrimEnd('\r');
|
|||
|
}
|
|||
|
}
|
|||
|
typeList = line.Split('\t');
|
|||
|
Values = new string[typeList.Length];
|
|||
|
++skip;
|
|||
|
continue;
|
|||
|
}
|
|||
|
if (++skip < 4) continue;
|
|||
|
if (string.IsNullOrEmpty(line)) continue;
|
|||
|
if (line[0] == '#') continue;
|
|||
|
string szlinetemp = line;
|
|||
|
if (szlinetemp.Length >= 1)
|
|||
|
{
|
|||
|
if (szlinetemp[szlinetemp.Length - 1] == '\r')
|
|||
|
{
|
|||
|
szlinetemp = szlinetemp.TrimEnd('\r');
|
|||
|
}
|
|||
|
}
|
|||
|
string[] strCol = MySplit(szlinetemp, typeList, "\t");
|
|||
|
if (strCol.Length == 0) continue;
|
|||
|
string skey = strCol[0];
|
|||
|
string[] valuesList = new string[strCol.Length];
|
|||
|
|
|||
|
if (string.IsNullOrEmpty(skey) || skey.Equals("--"))
|
|||
|
{
|
|||
|
skey = m_Key;
|
|||
|
nKey = int.Parse(skey);
|
|||
|
valuesList[0] = skey;
|
|||
|
for (int i = 1; i < strCol.Length; ++i)
|
|||
|
{
|
|||
|
if (string.IsNullOrEmpty(strCol[i]) || strCol[i] == "--")
|
|||
|
{
|
|||
|
valuesList[i] = Values[i];
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
valuesList[i] = strCol[i];
|
|||
|
Values[i] = strCol[i];
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
m_Key = skey;
|
|||
|
nKey = int.Parse(skey);
|
|||
|
|
|||
|
for (int i = 0; i < strCol.Length; ++i)
|
|||
|
|
|||
|
{
|
|||
|
if (strCol[i] == "--")
|
|||
|
{
|
|||
|
valuesList[i] = "0";
|
|||
|
Values[i] = "0";
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
valuesList[i] = strCol[i];
|
|||
|
Values[i] = strCol[i];
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
for (int i = 0; i < typeList.Length; i++)
|
|||
|
{
|
|||
|
bool isError = false;
|
|||
|
if (typeList[i].Contains("INT") || typeList[i].Contains("BOOL"))
|
|||
|
{
|
|||
|
string value = Values[i];
|
|||
|
int outValue = 0;
|
|||
|
if (int.TryParse(value, out outValue) == false)
|
|||
|
{
|
|||
|
isError = true;
|
|||
|
}
|
|||
|
}
|
|||
|
if (typeList[i].Contains("FLOAT"))
|
|||
|
{
|
|||
|
string value = Values[i];
|
|||
|
float outValue = 0;
|
|||
|
if (float.TryParse(value, out outValue) == false)
|
|||
|
{
|
|||
|
isError = true;
|
|||
|
}
|
|||
|
}
|
|||
|
if (typeList[i].Contains("SHORT"))
|
|||
|
{
|
|||
|
string value = Values[i];
|
|||
|
short outValue = 0;
|
|||
|
if (short.TryParse(value, out outValue) == false)
|
|||
|
{
|
|||
|
isError = true;
|
|||
|
}
|
|||
|
}
|
|||
|
if (isError)
|
|||
|
{
|
|||
|
Debug.Log(string.Format("key = {0} index = {1} typeName = {2}", nKey, i, typeNames[i]));
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
[MenuItem("ProTool/Table/CheckTable")]
|
|||
|
public static void CheckTable()
|
|||
|
{
|
|||
|
var strDicts = TableManager.GetStrDictionary();
|
|||
|
var strFilts = TableManager.GetStrFilter();
|
|||
|
|
|||
|
int filt1 = 0;
|
|||
|
foreach (var strDict in strDicts)
|
|||
|
{
|
|||
|
foreach (var filter in strFilts.Values)
|
|||
|
{
|
|||
|
if (null != filter)
|
|||
|
{
|
|||
|
//找到了
|
|||
|
foreach(var item in strDict.Value)
|
|||
|
{
|
|||
|
if (item.StrDictionary.IndexOf(filter.SzString) != -1)
|
|||
|
{
|
|||
|
++filt1;
|
|||
|
Debug.LogError("字典和谐:" + strDict.Key.ToString() + "," + filter.SzString + "," + item.StrDictionary);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
if (filt1 == 0)
|
|||
|
Debug.Log("字典没有和谐字");
|
|||
|
}
|
|||
|
}
|
|||
|
|