예제 #1
0
        public bool TryReadFloat(out float value)
        {
            int bSuccess;

            value = ResGff.ReadFieldFLOAT(parentStruct, fieldId, &bSuccess);
            return(bSuccess.ToBool());
        }
예제 #2
0
        public bool TryReadInt(out int value)
        {
            int bSuccess;

            value = ResGff.ReadFieldINT(parentStruct, fieldId, &bSuccess);
            return(bSuccess.ToBool());
        }
예제 #3
0
        public bool TryReadDouble(out double value)
        {
            int bSuccess;

            value = ResGff.ReadFieldDOUBLE(parentStruct, fieldId, &bSuccess);
            return(bSuccess.ToBool());
        }
예제 #4
0
        public bool TryReadDWord64(out ulong value)
        {
            int bSuccess;

            value = ResGff.ReadFieldDWORD64(parentStruct, fieldId, &bSuccess);
            return(bSuccess.ToBool());
        }
예제 #5
0
        public bool TryReadChar(out byte value)
        {
            int bSuccess;

            value = ResGff.ReadFieldCHAR(parentStruct, fieldId, &bSuccess);
            return(bSuccess.ToBool());
        }
예제 #6
0
        public bool TryReadCResRef(out string value)
        {
            int bSuccess;

            value = ResGff.ReadFieldCResRef(parentStruct, fieldId, &bSuccess).ToString();
            return(bSuccess.ToBool());
        }
예제 #7
0
        public bool TryReadCExoLocString(out string value, int id = 0, Gender gender = Gender.Male)
        {
            int bSuccess;

            value = ResGff.ReadFieldCExoLocString(parentStruct, fieldId, &bSuccess).ExtractLocString(id, (byte)gender);
            return(bSuccess.ToBool());
        }
예제 #8
0
        public bool TryReadWord(out ushort value)
        {
            int bSuccess;

            value = ResGff.ReadFieldWORD(parentStruct, fieldId, &bSuccess);
            return(bSuccess.ToBool());
        }
예제 #9
0
        public bool TryReadShort(out short value)
        {
            int bSuccess;

            value = ResGff.ReadFieldSHORT(parentStruct, fieldId, &bSuccess);
            return(bSuccess.ToBool());
        }
예제 #10
0
 internal GffResourceFieldList(CResGFF resGff, CResList list, uint count) : base(resGff)
 {
     for (uint i = 0; i < count; i++)
     {
         CResStruct             resStruct  = new CResStruct();
         GffResourceFieldStruct?childField = ResGff.GetListElement(resStruct, list, i).ToBool() ? new GffResourceFieldStruct(ResGff, resStruct) : null;
         if (childField != null)
         {
             children.Add(childField);
         }
     }
 }
예제 #11
0
        internal GffResourceFieldStruct(CResGFF resGff, CResStruct resStruct) : base(resGff)
        {
            int fieldCount = (int)resGff.GetFieldCount(resStruct);
            List <KeyValuePair <string, GffResourceField> > entrySet = new List <KeyValuePair <string, GffResourceField> >();

            for (uint i = 0; i < fieldCount; i++)
            {
                byte *           fieldIdPtr = ResGff.GetFieldLabel(resStruct, i);
                string           key        = StringHelper.ReadNullTerminatedString(fieldIdPtr);
                GffResourceField?value      = Create(resGff, resStruct, i, fieldIdPtr);

                if (value == null)
                {
                    continue;
                }

                keys.Add(key);
                values.Add(value);
                fieldLookup.Add(key, value);
                entrySet.Add(new KeyValuePair <string, GffResourceField>(key, value));
            }

            EntrySet = entrySet;
        }