public void writeFieldObject(int fieldId, Object obj) { writeUShort((ushort)fieldId); EexType etype = ScriptConfig.Instance.getEexType(fieldId); writeFieldValue(etype, obj); }
private Object readFieldValue(EexType etype, int i) { switch (etype) { case EexType.EexString: return(fieldArray[i]["v"].Value <string>()); case EexType.EexBoolean: return(fieldArray[i]["v"].Value <bool>()); case EexType.EexInteger: return(fieldArray[i]["v"].Value <int>()); case EexType.EexUShort: return(fieldArray[i]["v"].Value <ushort>()); case EexType.EexUShortArray: { JArray ja = (JArray)fieldArray[i]["v"]; ushort[] result = new ushort[ja.Count]; for (int j = 0; j < ja.Count; j++) { result[j] = ja[j].Value <ushort>(); } return(result); } default: throw new EexReaderException(String.Format("unknow type={0}", etype.ToString())); } }
public CommandConfig() { Id = 0; FieldIds = new int[0]; Name = ""; FieldTypes = new EexType[0]; FieldRepeat = 1; }
public Object readFieldObject(int fieldId) { int readId = readUShort(); if (readId != fieldId) { throw new EexReaderException(String.Format("readFieldObject,fieldId=0x{0:x2},readId=0x{1:x2}", fieldId, readId)); } EexType etype = ScriptConfig.Instance.getEexType(fieldId); return(readFieldValue(etype)); }
public void loadXmlNode(XmlNode xn) { String cmdId = xn.Attributes["CommandId"].Value; if (!cmdId.StartsWith("0x")) { throw new ApplicationException(String.Format("CommandId:{0} must start with 0x", cmdId)); } Id = Convert.ToInt32(cmdId, 16); FieldIds = Util.getIntArray(xn.Attributes["FieldIds"].Value); if (xn.Attributes["Name"] != null) { Name = xn.Attributes["Name"].Value; } XmlNode xnTypes = xn.Attributes["FieldTypes"]; if (xnTypes != null && !String.IsNullOrEmpty(xnTypes.Value)) { String[] strArr = xnTypes.Value.Split(','); FieldTypes = new EexType[strArr.Length]; for (int i = 0; i < strArr.Length; i++) { String item = strArr[i]; switch (item) { case "UShort": FieldTypes[i] = EexType.EexUShort; break; case "Integer": FieldTypes[i] = EexType.EexInteger; break; case "String": FieldTypes[i] = EexType.EexString; break; default: throw new ApplicationException(String.Format("EexType:{0} not find!", item)); } } } XmlNode xnRepeat = xn.Attributes["FieldRepeat"]; if (xnRepeat != null) { FieldRepeat = Int32.Parse(xnRepeat.Value); } }
public Object readFieldObject(int fieldId) { int k = Util.hexString2Int(fieldArray[index]["k"].Value <string>()); if (k != fieldId) { throw new EexReaderException(String.Format("readFieldObject,fieldId={0},k={1}", fieldId, k)); } EexType etype = ScriptConfig.Instance.getEexType(fieldId); Object ret = readFieldValue(etype, index); index++; return(ret); }
public Object newFieldValue(int fieldId) { ParaTypeInfo TypeInfo = CScenario.GetParaTypeInfo(fieldId); EexType etype = ScriptConfig.Instance.getEexType(fieldId); switch (etype) { case EexType.EexString: { string ret = ""; return(ret); } case EexType.EexBoolean: { return(false); } case EexType.EexInteger: if (!TypeInfo.isAllowNULL) { return(0); } else { return(TypeInfo.DefIndex == 0x10000 ? 0xFFFF : TypeInfo.DefIndex); } case EexType.EexUShort: if (!TypeInfo.isAllowNULL) { return((ushort)0); } else { return(TypeInfo.DefIndex == 0x10000 ? (ushort)0xFFFF : (ushort)TypeInfo.DefIndex); } case EexType.EexUShortArray: { ushort[] result = new ushort[0]; return(result); } default: throw new EexReaderException(String.Format("unknow type={0}", etype.ToString())); } }
public Object readFieldValue(EexType etype) { switch (etype) { case EexType.EexString: return(readCString()); case EexType.EexBoolean: { int readInt = readUShort(); if (readInt == 1) { return(true); } if (readInt == 0) { return(false); } throw new EexReaderException("readFieldBoolean,boolValue=" + readInt.ToString()); } case EexType.EexInteger: return(readInt32()); case EexType.EexUShort: return(readUShort()); case EexType.EexUShortArray: { int readInt = readUShort(); ushort[] result = new ushort[readInt]; for (int i = 0; i < readInt; i++) { result[i] = readUShort(); } return(result); } default: throw new EexReaderException(String.Format("unknow type={0}", etype.ToString())); } }
private void writeFieldValue(EexType etype, Object obj) { switch (etype) { case EexType.EexString: writeCString((string)obj); break; case EexType.EexBoolean: { ushort uByte = (ushort)(((bool)obj)?1:0); writeUShort(uByte); } break; case EexType.EexInteger: writeInt32((int)obj); break; case EexType.EexUShort: writeUShort((ushort)obj); break; case EexType.EexUShortArray: { ushort[] v = (ushort[])obj; writeUShort((ushort)v.Length); for (int i = 0; i < v.Length; i++) { writeUShort(v[i]); } } break; default: throw new ApplicationException(String.Format("unknow type={0}", etype.ToString())); } }