miduo_client/Assets/Scripts/Editor/ExcelTool/DataConfig/ExcelData/DataField.cs

285 lines
8.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
namespace GameEditor.Core.DataConfig
{
public enum DataFieldType
{
None = 'n',
Int = 'i',
Float = 'f',
Double = 'd',
Long = 'l',
Bool = 'b',
String = 's',
Stringt = 't',
Ref = 'r',
Mut = 'm',
Res = 'u',
Battle = 'a',
Max = Res+1,
}
[Flags]
public enum DataFieldExportType
{
None = 0,
Unexport = 1,
All = 2,
Client = 3,
Server = 4,
}
[Flags]
public enum DataFieldValidationType
{
None = 0,
NeverRepeat = 1 << 0,
NeverNull = 1 << 1,
StrLengthMax = 1 << 2,
NumberRange = 1 << 3,
Resource = 1 << 4,
NeverDefault = 1<<5,
MutRelate = 1<<6,
}
public class DataField
{
private delegate void SetValue(string str);
public int columnIndex = -1;
public bool isFirstField = false;
public string name = null;
public DataFieldType fieldType = DataFieldType.None;
public string refName;
public string ext;
public int extType;
//public DataField childField;
public DataFieldExportType exportType = DataFieldExportType.None;
public string desc = null;
public DataFieldValidationType validationType = DataFieldValidationType.None;
public string validationValue = null;
public string defaultContent = null;
private List<SetValue> setList = null;
public DataField(int colIndex,bool isFirst = false)
{
columnIndex = colIndex;
isFirstField = false;
setList = new List<SetValue>()
{
SetName,
SetFieldType,
SetExportType,
SetDesc,
SetDefault,
SetValidationType,
SetValidationValue,
};
}
public void SetFiledValue(int rowIndex,string value)
{
setList[rowIndex](value);
}
private void SetName(string str)
{
name = str;
}
private void SetDesc(string str)
{
desc = str;
}
private void SetDefault(string str)
{
defaultContent = str;
}
private void SetValidationValue(string str)
{
validationValue = str;
}
private string fieldTypeStr;
public string FieldTypeStr
{
get
{
return fieldTypeStr;
}
}
private void SetFieldType(string fieldTypeStr)
{
this.fieldTypeStr = fieldTypeStr;
if (!string.IsNullOrEmpty(fieldTypeStr))
{
string fType = "";
string[] splitStrs = null;
int indexSplit = fieldTypeStr.IndexOf(",");
if (indexSplit>0)
{
splitStrs = fieldTypeStr.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
fType = splitStrs[0];
}else
{
fType = fieldTypeStr;
}
try
{
fieldType = (DataFieldType)Enum.Parse(typeof(DataFieldType), fType, true);
}catch
{
fieldType = DataFieldType.None;
return;
}
if(fieldType == DataFieldType.Ref && splitStrs.Length == 2)
{
refName = splitStrs[1];
}else if(fieldType == DataFieldType.Res && splitStrs.Length == 2)
{
ext = splitStrs[1];
}else if(fieldType == DataFieldType.Mut && splitStrs.Length == 3)
{
ext = splitStrs[1];
extType = int.Parse(splitStrs[2]);
}
}
}
private void SetExportType(string exportTypeStr)
{
if(string.IsNullOrEmpty(exportTypeStr))
{
return;
}
try
{
int epInt = int.Parse(exportTypeStr);
if (Enum.IsDefined(typeof(DataFieldExportType), epInt))
{
exportType = (DataFieldExportType)epInt;
}
}
catch
{
}
}
private void SetValidationType(string validationTypeStr)
{
if (string.IsNullOrEmpty(validationTypeStr))
{
return;
}
try
{
int vInt = int.Parse(validationTypeStr);
if (Enum.IsDefined(typeof(DataFieldValidationType), vInt))
{
validationType = (DataFieldValidationType)vInt;
}
}
catch
{
}
}
public DataFieldType FieldRealType()
{
return fieldType;
}
public bool Verify(DataSheet sheet,out string msg)
{
msg = null;
//LogMsgMgr MsgMgr = LogMsgMgr.GetInstance();
//if(string.IsNullOrEmpty(name))
//{
// return false;
//}
//string nameReg = @"^[A-Z][A-Za-z0-9]{1,9}";
//if(!Regex.IsMatch(name,nameReg))
//{
// MsgMgr.Add(new ErrorLogData2(LogConst.E_DataField_NameFormat, ""+columnIndex,name));
// return false;
//}
//if(isFirstField && name!="ID")
//{
// MsgMgr.Add(new ErrorLogData(LogConst.E_DataField_ID));
// return false;
//}
//if(FieldType == DataFieldType.None)
//{
// MsgMgr.Add(new ErrorLogData2(LogConst.E_DataField_TypeNone, "" + columnIndex, name));
// return false;
//}
//if(FieldType == DataFieldType.Ref && string.IsNullOrEmpty(refName))
//{
// MsgMgr.Add(new ErrorLogData1(LogConst.E_DataField_ResType, name));
// return false;
//}else if(FieldType == DataFieldType.Mut )
//{
// if(RefFieldType == DataFieldType.None)
// {
// MsgMgr.Add(new ErrorLogData1(LogConst.E_DataField_MutType, name));
// return false;
// }else if(string.IsNullOrEmpty(ext) || ext.Length>1)
// {
// MsgMgr.Add(new ErrorLogData1(LogConst.E_DataField_MutExt, name));
// return false;
// }
//}
//if(!string.IsNullOrEmpty(defaultContent))
//{
// if (FieldType != DataFieldType.Mut)
// {
// if (!DataHelper.IsValidData(defaultContent, FieldType))
// {
// MsgMgr.Add(new ErrorLogData1(LogConst.E_DataField_DefaultParse, name));
// return false;
// }
// }
// else
// {
// string[] splitContent = defaultContent.Split(new char[] { ext[0] }, StringSplitOptions.RemoveEmptyEntries);
// foreach(string sc in splitContent)
// {
// if(!DataHelper.IsValidData(sc,RefFieldType))
// {
// MsgMgr.Add(new ErrorLogData1(LogConst.E_DataField_DefaultParse, name));
// return false;
// }
// }
// }
//}
return true;
}
public override string ToString()
{
StringBuilder sb = new StringBuilder();
sb.Append("(index = " + columnIndex + ",");
sb.Append("name = " + name + ",");
sb.Append("type = " + fieldType + ",");
sb.Append("export = " + exportType + ",");
sb.Append("desc = " + desc + ",");
sb.Append("validation = " + validationType + ",");
sb.Append("validationValue = " + validationValue + ",");
sb.Append("default = " + defaultContent + ",");
sb.Append("refName = " + refName + ",");
sb.Append("ext = " + ext + ")");
return sb.ToString();
}
}
}