Exemple #1
0
        public void writeFieldObject(int fieldId, Object obj)
        {
            writeUShort((ushort)fieldId);
            EexType etype = ScriptConfig.Instance.getEexType(fieldId);

            writeFieldValue(etype, obj);
        }
Exemple #2
0
        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()));
            }
        }
Exemple #3
0
 public CommandConfig()
 {
     Id          = 0;
     FieldIds    = new int[0];
     Name        = "";
     FieldTypes  = new EexType[0];
     FieldRepeat = 1;
 }
Exemple #4
0
        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));
        }
Exemple #5
0
        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);
            }
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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()));
            }
        }
Exemple #8
0
        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()));
            }
        }
Exemple #9
0
        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()));
            }
        }