示例#1
0
bool STATRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, uint32_t ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(uint32_t *)FieldValue);
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(uint32_t *)FieldValue);
            break;
        case 4: //eid
            EDID.Copy((char *)FieldValue);
            break;
        case 5: //modPath
            MODL.Load();
            MODL->MODL.Copy((char *)FieldValue);
            break;
        case 6: //modb
            MODL.Load();
            MODL->MODB.value = *(float *)FieldValue;
            break;
        case 7: //modt_p
            MODL.Load();
            MODL->MODT.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        default:
            break;
        }
    return false;
    }
示例#2
0
bool DIALRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, uint32_t ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(uint32_t *)FieldValue);
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(uint32_t *)FieldValue);
            break;
        case 4: //eid
            EDID.Copy((char *)FieldValue);
            break;
        case 5: //quests
            QSTI.resize(ArraySize);
            for(uint32_t x = 0; x < ArraySize; ++x)
                QSTI.value[x] = ((FORMIDARRAY)FieldValue)[x];
            return true;
        case 6: //removedQuests
            QSTR.resize(ArraySize);
            for(uint32_t x = 0; x < ArraySize; ++x)
                QSTR.value[x] = ((FORMIDARRAY)FieldValue)[x];
            return true;
        case 7: //full
            FULL.Copy((char *)FieldValue);
            break;
        case 8: //dialType
            SetType(*(uint8_t *)FieldValue);
            break;
        default:
            break;
        }
    return false;
    }
示例#3
0
bool DOORRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, UINT32 ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(UINT32 *)FieldValue);
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(UINT32 *)FieldValue);
            break;
        case 4: //eid
            EDID.Copy((STRING)FieldValue);
            break;
        case 5: //full
            FULL.Copy((STRING)FieldValue);
            break;
        case 6: //modPath
            MODL.Load();
            MODL->MODL.Copy((STRING)FieldValue);
            break;
        case 7: //modb
            MODL.Load();
            MODL->MODB.value = *(FLOAT32 *)FieldValue;
            break;
        case 8: //modt_p
            MODL.Load();
            MODL->MODT.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        case 9: //script
            SCRI.value = *(FORMID *)FieldValue;
            return true;
        case 10: //soundOpen
            SNAM.value = *(FORMID *)FieldValue;
            return true;
        case 11: //soundClose
            ANAM.value = *(FORMID *)FieldValue;
            return true;
        case 12: //soundLoop
            BNAM.value = *(FORMID *)FieldValue;
            return true;
        case 13: //flags
            SetFlagMask(*(UINT8 *)FieldValue);
            break;
        case 14: //destinations
            TNAM.resize(ArraySize);
            for(UINT32 x = 0; x < ArraySize; ++x)
                TNAM.value[x] = ((FORMIDARRAY)FieldValue)[x];
            return true;
        default:
            break;
        }
    return false;
    }
示例#4
0
bool FLORRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, UINT32 ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(UINT32 *)FieldValue);
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(UINT32 *)FieldValue);
            break;
        case 4: //eid
            EDID.Copy((STRING)FieldValue);
            break;
        case 5: //full
            FULL.Copy((STRING)FieldValue);
            break;
        case 6: //modPath
            MODL.Load();
            MODL->MODL.Copy((STRING)FieldValue);
            break;
        case 7: //modb
            MODL.Load();
            MODL->MODB.value = *(FLOAT32 *)FieldValue;
            break;
        case 8: //modt_p
            MODL.Load();
            MODL->MODT.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        case 9: //script
            SCRI.value = *(FORMID *)FieldValue;
            return true;
        case 10: //ingredient
            PFIG.Load();
            PFIG.value = *(FORMID *)FieldValue;
            return true;
        case 11: //spring
            PFPC.value.spring = *(UINT8 *)FieldValue;
            break;
        case 12: //summer
            PFPC.value.summer = *(UINT8 *)FieldValue;
            break;
        case 13: //fall
            PFPC.value.fall = *(UINT8 *)FieldValue;
            break;
        case 14: //winter
            PFPC.value.winter = *(UINT8 *)FieldValue;
            break;
        default:
            break;
        }
    return false;
    }
示例#5
0
bool SLGMRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, UINT32 ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(UINT32 *)FieldValue);
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(UINT32 *)FieldValue);
            break;
        case 4: //eid
            EDID.Copy((STRING)FieldValue);
            break;
        case 5: //full
            FULL.Copy((STRING)FieldValue);
            break;
        case 6: //modPath
            MODL.Load();
            MODL->MODL.Copy((STRING)FieldValue);
            break;
        case 7: //modb
            MODL.Load();
            MODL->MODB.value = *(FLOAT32 *)FieldValue;
            break;
        case 8: //modt_p
            MODL.Load();
            MODL->MODT.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        case 9: //iconPath
            ICON.Copy((STRING)FieldValue);
            break;
        case 10: //script
            SCRI.value = *(FORMID *)FieldValue;
            return true;
        case 11: //value
            DATA.value.value = *(UINT32 *)FieldValue;
            break;
        case 12: //weight
            DATA.value.weight = *(FLOAT32 *)FieldValue;
            break;
        case 13: //soulType
            SetSoul(*(UINT8 *)FieldValue);
            break;
        case 14: //capacity
            SetCapacity(*(UINT8 *)FieldValue);
            break;
        default:
            break;
        }
    return false;
    }
示例#6
0
bool ACTIRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, UINT32 ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(UINT32 *)FieldValue);
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(UINT32 *)FieldValue);
            break;
        case 4: //eid
            EDID.Copy((STRING)FieldValue);
            break;
        case 5: //full
            FULL.Copy((STRING)FieldValue);
            break;
        case 6: //modPath
            MODL.Load();
            MODL->MODL.Copy((STRING)FieldValue);
            break;
        case 7: //modb
            MODL.Load();
            MODL->MODB.value = *(FLOAT32 *)FieldValue;
            break;
        case 8: //modt_p
            MODL.Load();
            MODL->MODT.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        case 9: //script
            SCRI.value = *(FORMID *)FieldValue;
            return true;
        case 10: //sound
            SNAM.value = *(FORMID *)FieldValue;
            return true;
        default:
            break;
        }
    return false;
    }
示例#7
0
bool EFSHRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, UINT32 ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(UINT32 *)FieldValue);
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(UINT32 *)FieldValue);
            break;
        case 4: //eid
            EDID.Copy((STRING)FieldValue);
            break;
        case 5: //fillTexturePath
            ICON.Copy((STRING)FieldValue);
            break;
        case 6: //particleTexturePath
            ICO2.Copy((STRING)FieldValue);
            break;
        case 7: //flags
            SetFlagMask(*(UINT8 *)FieldValue);
            break;
        case 8: //unused1
            if(ArraySize != 3)
                break;
            DATA.value.unused1[0] = ((UINT8ARRAY)FieldValue)[0];
            DATA.value.unused1[1] = ((UINT8ARRAY)FieldValue)[1];
            DATA.value.unused1[2] = ((UINT8ARRAY)FieldValue)[2];
            break;
        case 9: //memSBlend
            DATA.value.memSBlend = *(UINT32 *)FieldValue;
            break;
        case 10: //memBlendOp
            DATA.value.memBlendOp = *(UINT32 *)FieldValue;
            break;
        case 11: //memZFunc
            DATA.value.memZFunc = *(UINT32 *)FieldValue;
            break;
        case 12: //fillRed
            DATA.value.fill.red = *(UINT8 *)FieldValue;
            break;
        case 13: //fillGreen
            DATA.value.fill.green = *(UINT8 *)FieldValue;
            break;
        case 14: //fillBlue
            DATA.value.fill.blue = *(UINT8 *)FieldValue;
            break;
        case 15: //unused2
            if(ArraySize != 1)
                break;
            DATA.value.fill.unused1 = ((UINT8ARRAY)FieldValue)[0];
            break;
        case 16: //fillAIn
            DATA.value.fillAIn = *(FLOAT32 *)FieldValue;
            break;
        case 17: //fillAFull
            DATA.value.fillAFull = *(FLOAT32 *)FieldValue;
            break;
        case 18: //fillAOut
            DATA.value.fillAOut = *(FLOAT32 *)FieldValue;
            break;
        case 19: //fillAPRatio
            DATA.value.fillAPRatio = *(FLOAT32 *)FieldValue;
            break;
        case 20: //fillAAmp
            DATA.value.fillAAmp = *(FLOAT32 *)FieldValue;
            break;
        case 21: //fillAFreq
            DATA.value.fillAFreq = *(FLOAT32 *)FieldValue;
            break;
        case 22: //fillAnimSpdU
            DATA.value.fillAnimSpdU = *(FLOAT32 *)FieldValue;
            break;
        case 23: //fillAnimSpdV
            DATA.value.fillAnimSpdV = *(FLOAT32 *)FieldValue;
            break;
        case 24: //edgeOff
            DATA.value.edgeOff = *(FLOAT32 *)FieldValue;
            break;
        case 25: //edgeRed
            DATA.value.edge.red = *(UINT8 *)FieldValue;
            break;
        case 26: //edgeGreen
            DATA.value.edge.green = *(UINT8 *)FieldValue;
            break;
        case 27: //edgeBlue
            DATA.value.edge.blue = *(UINT8 *)FieldValue;
            break;
        case 28: //unused3
            if(ArraySize != 1)
                break;
            DATA.value.edge.unused1 = ((UINT8ARRAY)FieldValue)[0];
            break;
        case 29: //edgeAIn
            DATA.value.edgeAIn = *(FLOAT32 *)FieldValue;
            break;
        case 30: //edgeAFull
            DATA.value.edgeAFull = *(FLOAT32 *)FieldValue;
            break;
        case 31: //edgeAOut
            DATA.value.edgeAOut = *(FLOAT32 *)FieldValue;
            break;
        case 32: //edgeAPRatio
            DATA.value.edgeAPRatio = *(FLOAT32 *)FieldValue;
            break;
        case 33: //edgeAAmp
            DATA.value.edgeAAmp = *(FLOAT32 *)FieldValue;
            break;
        case 34: //edgeAFreq
            DATA.value.edgeAFreq = *(FLOAT32 *)FieldValue;
            break;
        case 35: //fillAFRatio
            DATA.value.fillAFRatio = *(FLOAT32 *)FieldValue;
            break;
        case 36: //edgeAFRatio
            DATA.value.edgeAFRatio = *(FLOAT32 *)FieldValue;
            break;
        case 37: //memDBlend
            DATA.value.memDBlend = *(UINT8 *)FieldValue;
            break;
        case 38: //partSBlend
            DATA.value.partSBlend = *(UINT8 *)FieldValue;
            break;
        case 39: //partBlendOp
            DATA.value.partBlendOp = *(UINT8 *)FieldValue;
            break;
        case 40: //partZFunc
            DATA.value.partZFunc = *(UINT8 *)FieldValue;
            break;
        case 41: //partDBlend
            DATA.value.partDBlend = *(UINT8 *)FieldValue;
            break;
        case 42: //partBUp
            DATA.value.partBUp = *(FLOAT32 *)FieldValue;
            break;
        case 43: //partBFull
            DATA.value.partBFull = *(FLOAT32 *)FieldValue;
            break;
        case 44: //partBDown
            DATA.value.partBDown = *(FLOAT32 *)FieldValue;
            break;
        case 45: //partBFRatio
            DATA.value.partBFRatio = *(FLOAT32 *)FieldValue;
            break;
        case 46: //partBPRatio
            DATA.value.partBPRatio = *(FLOAT32 *)FieldValue;
            break;
        case 47: //partLTime
            DATA.value.partLTime = *(FLOAT32 *)FieldValue;
            break;
        case 48: //partLDelta
            DATA.value.partLDelta = *(FLOAT32 *)FieldValue;
            break;
        case 49: //partNSpd
            DATA.value.partNSpd = *(FLOAT32 *)FieldValue;
            break;
        case 50: //partNAcc
            DATA.value.partNAcc = *(FLOAT32 *)FieldValue;
            break;
        case 51: //partVel1
            DATA.value.partVel1 = *(FLOAT32 *)FieldValue;
            break;
        case 52: //partVel2
            DATA.value.partVel2 = *(FLOAT32 *)FieldValue;
            break;
        case 53: //partVel3
            DATA.value.partVel3 = *(FLOAT32 *)FieldValue;
            break;
        case 54: //partAcc1
            DATA.value.partAcc1 = *(FLOAT32 *)FieldValue;
            break;
        case 55: //partAcc2
            DATA.value.partAcc2 = *(FLOAT32 *)FieldValue;
            break;
        case 56: //partAcc3
            DATA.value.partAcc3 = *(FLOAT32 *)FieldValue;
            break;
        case 57: //partKey1
            DATA.value.partKey1 = *(FLOAT32 *)FieldValue;
            break;
        case 58: //partKey2
            DATA.value.partKey2 = *(FLOAT32 *)FieldValue;
            break;
        case 59: //partKey1Time
            DATA.value.partKey1Time = *(FLOAT32 *)FieldValue;
            break;
        case 60: //partKey2Time
            DATA.value.partKey2Time = *(FLOAT32 *)FieldValue;
            break;
        case 61: //key1Red
            DATA.value.key1.red = *(UINT8 *)FieldValue;
            break;
        case 62: //key1Green
            DATA.value.key1.green = *(UINT8 *)FieldValue;
            break;
        case 63: //key1Blue
            DATA.value.key1.blue = *(UINT8 *)FieldValue;
            break;
        case 64: //unused4
            if(ArraySize != 1)
                break;
            DATA.value.key1.unused1 = ((UINT8ARRAY)FieldValue)[0];
            break;
        case 65: //key2Red
            DATA.value.key2.red = *(UINT8 *)FieldValue;
            break;
        case 66: //key2Green
            DATA.value.key2.green = *(UINT8 *)FieldValue;
            break;
        case 67: //key2Blue
            DATA.value.key2.blue = *(UINT8 *)FieldValue;
            break;
        case 68: //unused5
            if(ArraySize != 1)
                break;
            DATA.value.key2.unused1 = ((UINT8ARRAY)FieldValue)[0];
            break;
        case 69: //key3Red
            DATA.value.key3.red = *(UINT8 *)FieldValue;
            break;
        case 70: //key3Green
            DATA.value.key3.green = *(UINT8 *)FieldValue;
            break;
        case 71: //key3Blue
            DATA.value.key3.blue = *(UINT8 *)FieldValue;
            break;
        case 72: //unused6
            if(ArraySize != 1)
                break;
            DATA.value.key3.unused1 = ((UINT8ARRAY)FieldValue)[0];
            break;
        case 73: //key1A
            DATA.value.key1A = *(FLOAT32 *)FieldValue;
            break;
        case 74: //key2A
            DATA.value.key2A = *(FLOAT32 *)FieldValue;
            break;
        case 75: //key3A
            DATA.value.key3A = *(FLOAT32 *)FieldValue;
            break;
        case 76: //key1Time
            DATA.value.key1Time = *(FLOAT32 *)FieldValue;
            break;
        case 77: //key2Time
            DATA.value.key2Time = *(FLOAT32 *)FieldValue;
            break;
        case 78: //key3Time
            DATA.value.key3Time = *(FLOAT32 *)FieldValue;
            break;
        default:
            break;
        }
    return false;
    }
示例#8
0
bool BOOKRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, uint32_t ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(uint32_t *)FieldValue);
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(uint32_t *)FieldValue);
            break;
        case 4: //eid
            EDID.Copy((char *)FieldValue);
            break;
        case 5: //full
            FULL.Copy((char *)FieldValue);
            break;
        case 6: //modPath
            MODL.Load();
            MODL->MODL.Copy((char *)FieldValue);
            break;
        case 7: //modb
            MODL.Load();
            MODL->MODB.value = *(float *)FieldValue;
            break;
        case 8: //modt_p
            MODL.Load();
            MODL->MODT.Load();
            MODL->MODT.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        case 9: //iconPath
            ICON.Copy((char *)FieldValue);
            break;
        case 10: //text
            DESC.Copy((char *)FieldValue);
            break;
        case 11: //script
            SCRI.value = *(FORMID *)FieldValue;
            return true;
        case 12: //enchantment
            ENAM.value = *(FORMID *)FieldValue;
            return true;
        case 13: //enchantPoints
            ANAM.value = *(uint16_t *)FieldValue;
            break;
        case 14: //flags
            SetFlagMask(*(uint8_t *)FieldValue);
            break;
        case 15: //teaches
            DATA.value.teaches = *(int8_t *)FieldValue;
            break;
        case 16: //value
            DATA.value.value = *(uint32_t *)FieldValue;
            break;
        case 17: //weight
            DATA.value.weight = *(float *)FieldValue;
            break;
        default:
            break;
        }
    return false;
    }
示例#9
0
bool LVLIRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, UINT32 ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(UINT32 *)FieldValue);
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(UINT32 *)FieldValue);
            break;
        case 4: //eid
            EDID.Copy((STRING)FieldValue);
            break;
        case 5: //chanceNone
            LVLD.value = *(UINT8 *)FieldValue;
            if((LVLD.value & fAltCalcFromAllLevels) != 0)
                {
                LVLD.value &= ~fAltCalcFromAllLevels;
                IsCalcFromAllLevels(true);
                }
            break;
        case 6: //flags
            SetFlagMask(*(UINT8 *)FieldValue);
            break;
        case 9: //entries
            if(ListFieldID == 0) //entriesSize
                {
                Entries.resize(ArraySize);
                return false;
                }

            if(ListIndex >= Entries.value.size())
                break;

            switch(ListFieldID)
                {
                case 1: //level
                    Entries.value[ListIndex]->level = *(SINT16 *)FieldValue;
                    break;
                case 2: //unused1
                    if(ArraySize != 2)
                        break;
                    Entries.value[ListIndex]->unused1[0] = ((UINT8ARRAY)FieldValue)[0];
                    Entries.value[ListIndex]->unused1[1] = ((UINT8ARRAY)FieldValue)[1];
                    break;
                case 3: //listId
                    Entries.value[ListIndex]->listId = *(FORMID *)FieldValue;
                    return true;
                case 4: //count
                    Entries.value[ListIndex]->count = *(SINT16 *)FieldValue;
                    break;
                case 5: //unused2
                    if(ArraySize != 2)
                        break;
                    Entries.value[ListIndex]->unused2[0] = ((UINT8ARRAY)FieldValue)[0];
                    Entries.value[ListIndex]->unused2[1] = ((UINT8ARRAY)FieldValue)[1];
                    break;
                default:
                    break;
                }
            break;
        default:
            break;
        }
    return false;
    }
示例#10
0
bool REFRRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, uint32_t ArraySize)
{
    Data.Load();
    switch(FieldID)
    {
    case 1: //flags1
        SetHeaderFlagMask(*(uint32_t *)FieldValue);
        break;
    case 3: //flags2
        SetHeaderUnknownFlagMask(*(uint32_t *)FieldValue);
        break;
    case 4: //eid
        Data->EDID.Copy((char *)FieldValue);
        break;
    case 5: //base
        Data->NAME.value = *(FORMID *)FieldValue;
        return true;
    case 6: //destination
        Data->XTEL.Load();
        Data->XTEL->destinationFid = *(FORMID *)FieldValue;
        return true;
    case 7: //destinationPosX
        Data->XTEL.Load();
        Data->XTEL->destination.posX = *(float *)FieldValue;
        break;
    case 8: //destinationPosY
        Data->XTEL.Load();
        Data->XTEL->destination.posY = *(float *)FieldValue;
        break;
    case 9: //destinationPosZ
        Data->XTEL.Load();
        Data->XTEL->destination.posZ = *(float *)FieldValue;
        break;
    case 10: //destinationRotX
        Data->XTEL.Load();
        Data->XTEL->destination.rotX = *(float *)FieldValue;
        break;
    case 11: //destinationRotY
        Data->XTEL.Load();
        Data->XTEL->destination.rotY = *(float *)FieldValue;
        break;
    case 12: //destinationRotZ
        Data->XTEL.Load();
        Data->XTEL->destination.rotZ = *(float *)FieldValue;
        break;
    case 13: //lockLevel
        Data->XLOC.Load();
        Data->XLOC->level = *(uint8_t *)FieldValue;
        break;
    case 14: //unused1
        if(ArraySize != 3)
            break;
        Data->XLOC.Load();
        Data->XLOC->unused1[0] = ((UINT8ARRAY)FieldValue)[0];
        Data->XLOC->unused1[1] = ((UINT8ARRAY)FieldValue)[1];
        Data->XLOC->unused1[2] = ((UINT8ARRAY)FieldValue)[2];
        break;
    case 15: //lockKey
        Data->XLOC.Load();
        Data->XLOC->key = *(FORMID *)FieldValue;
        return true;
    case 16: //unused2
        if(ArraySize != 4)
            break;
        Data->XLOC.Load();
        Data->XLOC->unused2[0] = ((UINT8ARRAY)FieldValue)[0];
        Data->XLOC->unused2[1] = ((UINT8ARRAY)FieldValue)[1];
        Data->XLOC->unused2[2] = ((UINT8ARRAY)FieldValue)[2];
        Data->XLOC->unused2[3] = ((UINT8ARRAY)FieldValue)[3];
        break;
    case 17: //lockFlags
        SetLockFlagMask(*(uint8_t *)FieldValue);
        break;
    case 18: //unused3
        if(ArraySize != 3)
            break;
        Data->XLOC.Load();
        Data->XLOC->unused3[0] = ((UINT8ARRAY)FieldValue)[0];
        Data->XLOC->unused3[1] = ((UINT8ARRAY)FieldValue)[1];
        Data->XLOC->unused3[2] = ((UINT8ARRAY)FieldValue)[2];
        break;
    case 19: //owner
        Data->Ownership.Load();
        Data->Ownership->XOWN.value = *(FORMID *)FieldValue;
        return true;
    case 20: //rank
        Data->Ownership.Load();
        Data->Ownership->XRNK.Load();
        *Data->Ownership->XRNK.value = *(int32_t *)FieldValue;
        break;
    case 21: //globalVariable
        Data->Ownership.Load();
        Data->Ownership->XGLB.value = *(FORMID *)FieldValue;
        return true;
    case 22: //parent
        Data->XESP.Load();
        Data->XESP->parent = *(FORMID *)FieldValue;
        return true;
    case 23: //parentFlags
        SetParentFlagMask(*(uint8_t *)FieldValue);
        break;
    case 24: //unused4
        if(ArraySize != 3)
            break;
        Data->XESP.Load();
        Data->XESP->unused1[0] = ((UINT8ARRAY)FieldValue)[0];
        Data->XESP->unused1[1] = ((UINT8ARRAY)FieldValue)[1];
        Data->XESP->unused1[2] = ((UINT8ARRAY)FieldValue)[2];
        break;
    case 25: //target
        Data->XTRG.value = *(FORMID *)FieldValue;
        return true;
    case 26: //seed
        Data->XSED.Load();
        //Borrowing ArraySize to flag if the new value is an offset
        if(ArraySize)
        {
            Data->XSED->isOffset = true;
            Data->XSED->offset = *(uint8_t *)FieldValue;
        }
        else
        {
            Data->XSED->isOffset = false;
            Data->XSED->seed = *(uint32_t *)FieldValue;
        }
        break;
    case 27: //lod1
        Data->XLOD.Load();
        Data->XLOD->lod1 = *(float *)FieldValue;
        break;
    case 28: //lod2
        Data->XLOD.Load();
        Data->XLOD->lod2 = *(float *)FieldValue;
        break;
    case 29: //lod3
        Data->XLOD.Load();
        Data->XLOD->lod3 = *(float *)FieldValue;
        break;
    case 30: //charge
        Data->XCHG.value = *(float *)FieldValue;
        break;
    case 31: //health
        Data->XHLT.value = *(int32_t *)FieldValue;
        break;
    case 32: //unknownXPCIFormID
        Data->XPCI.Load();
        Data->XPCI->XPCI.value = *(FORMID *)FieldValue;
        return true;
    case 33: //unknownXPCIString
        Data->XPCI.Load();
        Data->XPCI->FULL.Copy((char *)FieldValue);
        break;
    case 34: //levelMod
        Data->XLCM.value = *(int32_t *)FieldValue;
        break;
    case 35: //unknownXRTMFormID
        Data->XRTM.value = *(FORMID *)FieldValue;
        return true;
    case 36: //actionFlags
        SetActionFlagMask(*(uint32_t *)FieldValue);
        break;
    case 37: //count
        Data->XCNT.value = *(int32_t *)FieldValue;
        break;
    case 38: //markerFlags
        SetMapFlagMask(*(uint8_t *)FieldValue);
        break;
    case 39: //markerName
        Data->Marker.Load();
        Data->Marker->FULL.Copy((char *)FieldValue);
        break;
    case 40: //markerType
        SetMarkerType(*(uint8_t *)FieldValue);
        break;
    case 41: //markerUnused
        if(ArraySize != 1)
            break;
        Data->Marker.Load();
        Data->Marker->TNAM.value.unused1 = ((UINT8ARRAY)FieldValue)[0];
        break;
    case 42: //scale
        Data->XSCL.Load();
        Data->XSCL.value = *(float *)FieldValue;
        break;
    case 43: //soulType
        SetSoul(*(uint8_t *)FieldValue);
        break;
    case 44: //posX
        Data->DATA.value.posX = *(float *)FieldValue;
        break;
    case 45: //posY
        Data->DATA.value.posY = *(float *)FieldValue;
        break;
    case 46: //posZ
        Data->DATA.value.posZ = *(float *)FieldValue;
        break;
    case 47: //rotX
        Data->DATA.value.rotX = *(float *)FieldValue;
        break;
    case 48: //rotY
        Data->DATA.value.rotY = *(float *)FieldValue;
        break;
    case 49: //rotZ
        Data->DATA.value.rotZ = *(float *)FieldValue;
        break;
    default:
        break;
    }
    return false;
}
示例#11
0
bool ROADRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, UINT32 ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(UINT32 *)FieldValue);
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(UINT32 *)FieldValue);
            break;
        case 5: //pgrp
            if(ListFieldID == 0) //pgrpSize
                {
                PGRP.resize(ArraySize);
                return false;
                }

            if(ListIndex >= PGRP.value.size())
                break;

            switch(ListFieldID)
                {
                case 1: //x
                    PGRP.value[ListIndex].x = *(FLOAT32 *)FieldValue;
                    break;
                case 2: //y
                    PGRP.value[ListIndex].y = *(FLOAT32 *)FieldValue;
                    break;
                case 3: //z
                    PGRP.value[ListIndex].z = *(FLOAT32 *)FieldValue;
                    break;
                case 4: //connections
                    PGRP.value[ListIndex].connections = *(UINT8 *)FieldValue;
                    break;
                case 5: //unused1
                    if(ArraySize != 3)
                        break;
                    PGRP.value[ListIndex].unused1[0] = ((UINT8ARRAY)FieldValue)[0];
                    PGRP.value[ListIndex].unused1[1] = ((UINT8ARRAY)FieldValue)[1];
                    PGRP.value[ListIndex].unused1[2] = ((UINT8ARRAY)FieldValue)[2];
                    break;
                default:
                    break;
                }
            break;
        case 6: //pgrr
            if(ListFieldID == 0) //pgrrSize
                {
                PGRR.resize(ArraySize);
                return false;
                }

            if(ListIndex >= PGRR.value.size())
                break;

            switch(ListFieldID)
                {
                case 1: //x
                    PGRR.value[ListIndex].x = *(FLOAT32 *)FieldValue;
                    break;
                case 2: //y
                    PGRR.value[ListIndex].y = *(FLOAT32 *)FieldValue;
                    break;
                case 3: //z
                    PGRR.value[ListIndex].z = *(FLOAT32 *)FieldValue;
                    break;
                default:
                    break;
                }
            break;
        default:
            break;
        }
    return false;
    }
示例#12
0
bool MGEFRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, UINT32 ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(UINT32 *)FieldValue);
            break;
        case 2: //fid
            formID = *(FORMID *)FieldValue;
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(UINT32 *)FieldValue);
            break;
        case 4: //eid
            EDID.Copy((STRING)FieldValue);
            break;
        case 5: //full
            FULL.Copy((STRING)FieldValue);
            break;
        case 6: //text
            DESC.Copy((STRING)FieldValue);
            break;
        case 7: //iconPath
            ICON.Copy((STRING)FieldValue);
            break;
        case 8: //modPath
            MODL.Load();
            MODL->MODL.Copy((STRING)FieldValue);
            break;
        case 9: //modb
            MODL.Load();
            MODL->MODB.value = *(FLOAT32 *)FieldValue;
            break;
        case 10: //modt_p
            MODL.Load();
            MODL->MODT.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        case 11: //flags
            SetFlagMask(*(UINT32 *)FieldValue);
            break;
        case 12: //baseCost
            DATA.value.baseCost = *(FLOAT32 *)FieldValue;
            break;
        case 13: //associated
            DATA.value.associated = *(FORMID_OR_MGEFCODE_OR_ACTORVALUE_OR_UINT32 *)FieldValue;
            return true;
        case 14: //school
            DATA.value.schoolType = *(UINT32 *)FieldValue;
            break;
        case 15: //resistValue
            DATA.value.resistValue = *(FORMID *)FieldValue;
            return true;
        case 16: //numCounters
            DATA.value.numCounters = *(UINT16 *)FieldValue;
            ESCE.value.resize(*(UINT16 *)FieldValue);
            break;
        case 17: //unused1
            if(ArraySize != 2)
                break;
            DATA.value.unused1[0] = ((UINT8ARRAY)FieldValue)[0];
            DATA.value.unused1[1] = ((UINT8ARRAY)FieldValue)[1];
            break;
        case 18: //light
            DATA.value.light = *(FORMID *)FieldValue;
            return true;
        case 19: //projectileSpeed
            DATA.value.projectileSpeed = *(FLOAT32 *)FieldValue;
            break;
        case 20: //effectShader
            DATA.value.effectShader = *(FORMID *)FieldValue;
            return true;
        case 21: //enchantEffect
            DATA.value.enchantEffect = *(FORMID *)FieldValue;
            return true;
        case 22: //castingSound
            DATA.value.castingSound = *(FORMID *)FieldValue;
            return true;
        case 23: //boltSound
            DATA.value.boltSound = *(FORMID *)FieldValue;
            return true;
        case 24: //hitSound
            DATA.value.hitSound = *(FORMID *)FieldValue;
            return true;
        case 25: //areaSound
            DATA.value.areaSound = *(FORMID *)FieldValue;
            return true;
        case 26: //cefEnchantment
            DATA.value.cefEnchantment = *(FLOAT32 *)FieldValue;
            break;
        case 27: //cefBarter
            DATA.value.cefBarter = *(FLOAT32 *)FieldValue;
            break;
        case 28: //counterEffects
            ESCE.resize(ArraySize);
            for(UINT32 x = 0; x < ArraySize; x++)
                ESCE.value[x] = ((MGEFCODEARRAY)FieldValue)[x];
            return true;
        //OBME Fields
        case 29: //recordVersion
            OBME.Load();
            OBME->OBME.value.recordVersion = *(UINT8 *)FieldValue;
            break;
        case 30: //betaVersion
            OBME.Load();
            OBME->OBME.value.betaVersion = *(UINT8 *)FieldValue;
            break;
        case 31: //minorVersion
            OBME.Load();
            OBME->OBME.value.minorVersion = *(UINT8 *)FieldValue;
            break;
        case 32: //majorVersion
            OBME.Load();
            OBME->OBME.value.majorVersion = *(UINT8 *)FieldValue;
            break;
        case 33: //mgefParamAInfo
            OBME.Load();
            OBME->OBME.value.mgefParamAInfo = *(UINT8 *)FieldValue;
            return true;
        case 34: //mgefParamBInfo
            OBME.Load();
            OBME->OBME.value.mgefParamBInfo = *(UINT8 *)FieldValue;
            return true;
        case 35: //reserved1
            if(ArraySize != 0x2)
                break;
            OBME.Load();
            OBME->OBME.value.reserved1[0] = ((UINT8ARRAY)FieldValue)[0];
            OBME->OBME.value.reserved1[1] = ((UINT8ARRAY)FieldValue)[1];
            break;
        case 36: //handlerCode
            OBME.Load();
            OBME->OBME.value.handlerCode = *(UINT32 *)FieldValue;
            break;
        case 37: //OBMEFlags
            SetOBMEFlagMask(*(UINT32 *)FieldValue);
            break;
        case 38: //mgefParamB
            OBME.Load();
            OBME->OBME.value.mgefParamB = *(FORMID_OR_MGEFCODE_OR_ACTORVALUE_OR_UINT32 *)FieldValue;
            return true;
        case 39: //reserved2
            if(ArraySize != 0x1C)
                break;
            OBME.Load();
            memcpy(&OBME->OBME.value.reserved2[0], &((UINT8ARRAY)FieldValue)[0], sizeof(OBME->OBME.value.reserved2));
            break;
        case 40: //mgefCode
            OBME.Load();
            OBME->EDDX.Load();
            memcpy(&OBME->EDDX.value.mgefCode[0], FieldValue, sizeof(OBME->EDDX.value.mgefCode) - 1);
            OBME->EDDX.value.mgefCode[4] = 0;
            return true;
        case 41: //datx_p
            if(ArraySize != 0x20)
                break;
            OBME.Load();
            OBME->DATX.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        default:
            break;
        }
    return false;
    }
示例#13
0
bool ACHRRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, UINT32 ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(UINT32 *)FieldValue);
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(UINT32 *)FieldValue);
            break;
        case 4: //eid
            EDID.Copy((STRING)FieldValue);
            break;
        case 5: //base
            NAME.value = *(FORMID *)FieldValue;
            return true;
        case 6: //unknownXPCIFormID
            XPCI.Load();
            XPCI->XPCI.value = *(FORMID *)FieldValue;
            return true;
        case 7: //unknownXPCIString
            XPCI.Load();
            XPCI->FULL.Copy((STRING)FieldValue);
            break;
        case 8: //lod1
            XLOD.Load();
            XLOD->lod1 = *(FLOAT32 *)FieldValue;
            break;
        case 9: //lod2
            XLOD.Load();
            XLOD->lod2 = *(FLOAT32 *)FieldValue;
            break;
        case 10: //lod3
            XLOD.Load();
            XLOD->lod3 = *(FLOAT32 *)FieldValue;
            break;
        case 11: //parent
            XESP.Load();
            XESP->parent = *(FORMID *)FieldValue;
            return true;
        case 12: //parentFlags
            SetFlagMask(*(UINT8 *)FieldValue);
            break;
        case 13: //unused1
            if(ArraySize != 3)
                break;
            XESP.Load();
            XESP->unused1[0] = ((UINT8ARRAY)FieldValue)[0];
            XESP->unused1[1] = ((UINT8ARRAY)FieldValue)[1];
            XESP->unused1[2] = ((UINT8ARRAY)FieldValue)[2];
            break;
        case 14: //merchantContainer
            XMRC.value = *(FORMID *)FieldValue;
            return true;
        case 15: //horse
            XHRS.Load();
            XHRS.value = *(FORMID *)FieldValue;
            return true;
        case 16: //xrgd_p
            XRGD.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        case 17: //scale
            XSCL.Load();
            XSCL.value = *(FLOAT32 *)FieldValue;
            break;
        case 18: //posX
            DATA.value.posX = *(FLOAT32 *)FieldValue;
            break;
        case 19: //posY
            DATA.value.posY = *(FLOAT32 *)FieldValue;
            break;
        case 20: //posZ
            DATA.value.posZ = *(FLOAT32 *)FieldValue;
            break;
        case 21: //rotX
            DATA.value.rotX = *(FLOAT32 *)FieldValue;
            break;
        case 22: //rotY
            DATA.value.rotY = *(FLOAT32 *)FieldValue;
            break;
        case 23: //rotZ
            DATA.value.rotZ = *(FLOAT32 *)FieldValue;
            break;
        default:
            break;
        }
    return false;
    }
示例#14
0
bool SCPTRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, UINT32 ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(UINT32 *)FieldValue);
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(UINT32 *)FieldValue);
            break;
        case 4: //eid
            EDID.Copy((STRING)FieldValue);
            break;
        case 5: //unused1
            if(ArraySize != 4)
                break;
            SCHR.value.unused1[0] = ((UINT8ARRAY)FieldValue)[0];
            SCHR.value.unused1[1] = ((UINT8ARRAY)FieldValue)[1];
            SCHR.value.unused1[2] = ((UINT8ARRAY)FieldValue)[2];
            SCHR.value.unused1[3] = ((UINT8ARRAY)FieldValue)[3];
            break;
        case 6: //numRefs
            SCHR.value.numRefs = *(UINT32 *)FieldValue;
            break;
        case 7: //compiledSize
            SCHR.value.compiledSize = *(UINT32 *)FieldValue;
            break;
        case 8: //lastIndex
            SCHR.value.lastIndex = *(UINT32 *)FieldValue;
            break;
        case 9: //scriptType
            SetType(*(UINT32 *)FieldValue);
            break;
        case 10: //compiled_p
            SCDA.Copy((UINT8ARRAY)FieldValue, ArraySize);
            SCHR.value.compiledSize = ArraySize;
            break;
        case 11: //scriptText
            SCTX.Copy((STRING)FieldValue);
            break;
        case 12: //vars
            if(ListFieldID == 0) //varsSize
                {
                VARS.resize(ArraySize);
                }

            if(ListIndex >= VARS.value.size())
                break;

            switch(ListFieldID)
                {
                case 1: //index
                    VARS.value[ListIndex]->SLSD.value.index = *(UINT32 *)FieldValue;
                    break;
                case 2: //unused1
                    if(ArraySize != 12)
                        break;
                    VARS.value[ListIndex]->SLSD.value.unused1[0] = ((UINT8ARRAY)FieldValue)[0];
                    VARS.value[ListIndex]->SLSD.value.unused1[1] = ((UINT8ARRAY)FieldValue)[1];
                    VARS.value[ListIndex]->SLSD.value.unused1[2] = ((UINT8ARRAY)FieldValue)[2];
                    VARS.value[ListIndex]->SLSD.value.unused1[3] = ((UINT8ARRAY)FieldValue)[3];
                    VARS.value[ListIndex]->SLSD.value.unused1[4] = ((UINT8ARRAY)FieldValue)[4];
                    VARS.value[ListIndex]->SLSD.value.unused1[5] = ((UINT8ARRAY)FieldValue)[5];
                    VARS.value[ListIndex]->SLSD.value.unused1[6] = ((UINT8ARRAY)FieldValue)[6];
                    VARS.value[ListIndex]->SLSD.value.unused1[7] = ((UINT8ARRAY)FieldValue)[7];
                    VARS.value[ListIndex]->SLSD.value.unused1[8] = ((UINT8ARRAY)FieldValue)[8];
                    VARS.value[ListIndex]->SLSD.value.unused1[9] = ((UINT8ARRAY)FieldValue)[9];
                    VARS.value[ListIndex]->SLSD.value.unused1[10] = ((UINT8ARRAY)FieldValue)[10];
                    VARS.value[ListIndex]->SLSD.value.unused1[11] = ((UINT8ARRAY)FieldValue)[11];
                    break;
                case 3: //flags
                    VARS.value[ListIndex]->SetFlagMask(*(UINT8 *)FieldValue);
                    break;
                case 4: //unused2
                    if(ArraySize != 7)
                        break;
                    VARS.value[ListIndex]->SLSD.value.unused2[0] = ((UINT8ARRAY)FieldValue)[0];
                    VARS.value[ListIndex]->SLSD.value.unused2[1] = ((UINT8ARRAY)FieldValue)[1];
                    VARS.value[ListIndex]->SLSD.value.unused2[2] = ((UINT8ARRAY)FieldValue)[2];
                    VARS.value[ListIndex]->SLSD.value.unused2[3] = ((UINT8ARRAY)FieldValue)[3];
                    VARS.value[ListIndex]->SLSD.value.unused2[4] = ((UINT8ARRAY)FieldValue)[4];
                    VARS.value[ListIndex]->SLSD.value.unused2[5] = ((UINT8ARRAY)FieldValue)[5];
                    VARS.value[ListIndex]->SLSD.value.unused2[6] = ((UINT8ARRAY)FieldValue)[6];
                    break;
                case 5: //name
                    VARS.value[ListIndex]->SCVR.Copy((STRING)FieldValue);
                    break;
                default:
                    break;
                }
            break;
        case 13: //references
            if(ListFieldID == 0) //referencesSize
                {
                SCR_.resize(ArraySize);
                return false;
                }

            if(ListIndex >= SCR_.value.size())
                break;

            switch(ListFieldID)
                {
                case 1: //reference
                    //Borrowing ArraySize to flag if the new value is a formID
                    SCR_.value[ListIndex]->reference = *(UINT32 *)FieldValue;
                    SCR_.value[ListIndex]->isSCRO = ArraySize ? true : false;
                    return ArraySize != 0;
                default:
                    break;
                }
            break;
        default:
            break;
        }
    return false;
    }
示例#15
0
bool TREERecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, uint32_t ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(uint32_t *)FieldValue);
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(uint32_t *)FieldValue);
            break;
        case 4: //eid
            EDID.Copy((char *)FieldValue);
            break;
        case 5: //modPath
            MODL.Load();
            MODL->MODL.Copy((char *)FieldValue);
            break;
        case 6: //modb
            MODL.Load();
            MODL->MODB.value = *(float *)FieldValue;
            break;
        case 7: //modt_p
            MODL.Load();
            MODL->MODT.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        case 8: //iconPath
            ICON.Copy((char *)FieldValue);
            break;
        case 9: //speedTree
            SNAM.resize(ArraySize);
            for(uint32_t x = 0; x < ArraySize; x++)
                SNAM.value[x] = ((UINT32ARRAY)FieldValue)[x];
            break;
        case 10: //curvature
            CNAM.value.curvature = *(float *)FieldValue;
            break;
        case 11: //minAngle
            CNAM.value.minAngle = *(float *)FieldValue;
            break;
        case 12: //maxAngle
            CNAM.value.maxAngle = *(float *)FieldValue;
            break;
        case 13: //branchDim
            CNAM.value.branchDim = *(float *)FieldValue;
            break;
        case 14: //leafDim
            CNAM.value.leafDim = *(float *)FieldValue;
            break;
        case 15: //shadowRadius
            CNAM.value.shadowRadius = *(int32_t *)FieldValue;
            break;
        case 16: //rockSpeed
            CNAM.value.rockSpeed = *(float *)FieldValue;
            break;
        case 17: //rustleSpeed
            CNAM.value.rustleSpeed = *(float *)FieldValue;
            break;
        case 18: //widthBill
            BNAM.value.widthBill = *(float *)FieldValue;
            break;
        case 19: //heightBill
            BNAM.value.heightBill = *(float *)FieldValue;
            break;
        default:
            break;
        }
    return false;
    }
示例#16
0
bool IDLERecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, uint32_t ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(uint32_t *)FieldValue);
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(uint32_t *)FieldValue);
            break;
        case 4: //eid
            EDID.Copy((char *)FieldValue);
            break;
        case 5: //modPath
            MODL.Load();
            MODL->MODL.Copy((char *)FieldValue);
            break;
        case 6: //modb
            MODL.Load();
            MODL->MODB.value = *(float *)FieldValue;
            break;
        case 7: //modt_p
            MODL.Load();
            MODL->MODT.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        case 8: //conditions
            if(ListFieldID == 0) //conditionsSize
                {
                CTDA.resize(ArraySize);
                return false;
                }

            if(ListIndex >= CTDA.value.size())
                break;

            switch(ListFieldID)
                {
                case 1: //operType
                    CTDA.value[ListIndex]->operType = *(uint8_t *)FieldValue;
                    break;
                case 2: //unused1
                    if(ArraySize != 3)
                        break;
                    CTDA.value[ListIndex]->unused1[0] = ((UINT8ARRAY)FieldValue)[0];
                    CTDA.value[ListIndex]->unused1[1] = ((UINT8ARRAY)FieldValue)[1];
                    CTDA.value[ListIndex]->unused1[2] = ((UINT8ARRAY)FieldValue)[2];
                    break;
                case 3: //compValue
                    CTDA.value[ListIndex]->compValue = *(FORMID_OR_FLOAT32 *)FieldValue;
                    return true;
                case 4: //ifunc
                    CTDA.value[ListIndex]->ifunc = *(uint32_t *)FieldValue;
                    return true;
                case 5: //param1
                    CTDA.value[ListIndex]->param1 = *(uint32_t *)FieldValue;
                    return true;
                case 6: //param2
                    CTDA.value[ListIndex]->param2 = *(uint32_t *)FieldValue;
                    return true;
                case 7: //unused2
                    if(ArraySize != 4)
                        break;
                    CTDA.value[ListIndex]->unused2[0] = ((UINT8ARRAY)FieldValue)[0];
                    CTDA.value[ListIndex]->unused2[1] = ((UINT8ARRAY)FieldValue)[1];
                    CTDA.value[ListIndex]->unused2[2] = ((UINT8ARRAY)FieldValue)[2];
                    CTDA.value[ListIndex]->unused2[3] = ((UINT8ARRAY)FieldValue)[3];
                    break;
                default:
                    break;
                }
            break;
        case 9: //group
            ANAM.value = *(uint8_t *)FieldValue;
            break;
        case 10: //parent
            DATA.value.parent = *(FORMID *)FieldValue;
            return true;
        case 11: //prevId
            DATA.value.prevId = *(FORMID *)FieldValue;
            return true;
        default:
            break;
        }
    return false;
    }
示例#17
0
bool WATRRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, UINT32 ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(UINT32 *)FieldValue);
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(UINT32 *)FieldValue);
            break;
        case 4: //eid
            EDID.Copy((STRING)FieldValue);
            break;
        case 5: //texturePath
            TNAM.Copy((STRING)FieldValue);
            break;
        case 6: //opacity
            ANAM.value = *(UINT8 *)FieldValue;
            break;
        case 7: //flags
            SetFlagMask(*(UINT8 *)FieldValue);
            break;
        case 8: //materialPath
            MNAM.Copy((STRING)FieldValue);
            break;
        case 9: //sound
            SNAM.value = *(FORMID *)FieldValue;
            return true;
        case 10: //windVelocity
            DATA.Load();
            DATA->windVelocity = *(FLOAT32 *)FieldValue;
            break;
        case 11: //windDirection
            DATA.Load();
            DATA->windDirection = *(FLOAT32 *)FieldValue;
            break;
        case 12: //waveAmp
            DATA.Load();
            DATA->waveAmp = *(FLOAT32 *)FieldValue;
            break;
        case 13: //waveFreq
            DATA.Load();
            DATA->waveFreq = *(FLOAT32 *)FieldValue;
            break;
        case 14: //sunPower
            DATA.Load();
            DATA->sunPower = *(FLOAT32 *)FieldValue;
            break;
        case 15: //reflectAmt
            DATA.Load();
            DATA->reflectAmt = *(FLOAT32 *)FieldValue;
            break;
        case 16: //fresnelAmt
            DATA.Load();
            DATA->fresnelAmt = *(FLOAT32 *)FieldValue;
            break;
        case 17: //xSpeed
            DATA.Load();
            DATA->xSpeed = *(FLOAT32 *)FieldValue;
            break;
        case 18: //ySpeed
            DATA.Load();
            DATA->ySpeed = *(FLOAT32 *)FieldValue;
            break;
        case 19: //fogNear
            DATA.Load();
            DATA->fogNear = *(FLOAT32 *)FieldValue;
            break;
        case 20: //fogFar
            DATA.Load();
            DATA->fogFar = *(FLOAT32 *)FieldValue;
            break;
        case 21: //shallowRed
            DATA.Load();
            DATA->shallow.red = *(UINT8 *)FieldValue;
            break;
        case 22: //shallowGreen
            DATA.Load();
            DATA->shallow.green = *(UINT8 *)FieldValue;
            break;
        case 23: //shallowBlue
            DATA.Load();
            DATA->shallow.blue = *(UINT8 *)FieldValue;
            break;
        case 24: //unused1
            if(ArraySize != 1)
                break;
            DATA.Load();
            DATA->shallow.unused1 = ((UINT8ARRAY)FieldValue)[0];
            break;
        case 25: //deepRed
            DATA.Load();
            DATA->deep.red = *(UINT8 *)FieldValue;
            break;
        case 26: //deepGreen
            DATA.Load();
            DATA->deep.green = *(UINT8 *)FieldValue;
            break;
        case 27: //deepBlue
            DATA.Load();
            DATA->deep.blue = *(UINT8 *)FieldValue;
            break;
        case 28: //unused2
            if(ArraySize != 1)
                break;
            DATA.Load();
            DATA->deep.unused1 = ((UINT8ARRAY)FieldValue)[0];
            break;
        case 29: //reflRed
            DATA.Load();
            DATA->refl.red = *(UINT8 *)FieldValue;
            break;
        case 30: //reflGreen
            DATA.Load();
            DATA->refl.green = *(UINT8 *)FieldValue;
            break;
        case 31: //reflBlue
            DATA.Load();
            DATA->refl.blue = *(UINT8 *)FieldValue;
            break;
        case 32: //unused3
            if(ArraySize != 1)
                break;
            DATA.Load();
            DATA->refl.unused1 = ((UINT8ARRAY)FieldValue)[0];
            break;
        case 33: //blend
            DATA.Load();
            DATA->blend = *(UINT8 *)FieldValue;
            break;
        case 34: //unused4
            if(ArraySize != 3)
                break;
            DATA.Load();
            DATA->unused1[0] = ((UINT8ARRAY)FieldValue)[0];
            DATA->unused1[1] = ((UINT8ARRAY)FieldValue)[1];
            DATA->unused1[2] = ((UINT8ARRAY)FieldValue)[2];
            break;
        case 35: //rainForce
            DATA.Load();
            DATA->rainForce = *(FLOAT32 *)FieldValue;
            break;
        case 36: //rainVelocity
            DATA.Load();
            DATA->rainVelocity = *(FLOAT32 *)FieldValue;
            break;
        case 37: //rainFalloff
            DATA.Load();
            DATA->rainFalloff = *(FLOAT32 *)FieldValue;
            break;
        case 38: //rainDampner
            DATA.Load();
            DATA->rainDampner = *(FLOAT32 *)FieldValue;
            break;
        case 39: //rainSize
            DATA.Load();
            DATA->rainSize = *(FLOAT32 *)FieldValue;
            break;
        case 40: //dispForce
            DATA.Load();
            DATA->dispForce = *(FLOAT32 *)FieldValue;
            break;
        case 41: //dispVelocity
            DATA.Load();
            DATA->dispVelocity = *(FLOAT32 *)FieldValue;
            break;
        case 42: //dispFalloff
            DATA.Load();
            DATA->dispFalloff = *(FLOAT32 *)FieldValue;
            break;
        case 43: //dispDampner
            DATA.Load();
            DATA->dispDampner = *(FLOAT32 *)FieldValue;
            break;
        case 44: //dispSize
            DATA.Load();
            DATA->dispSize = *(FLOAT32 *)FieldValue;
            break;
        case 45: //damage
            DATA.Load();
            DATA->damage = *(UINT16 *)FieldValue;
            break;
        case 46: //dayWater
            GNAM.Load();
            GNAM->dayWater = *(FORMID *)FieldValue;
            return true;
        case 47: //nightWater
            GNAM.Load();
            GNAM->nightWater = *(FORMID *)FieldValue;
            return true;
        case 48: //underWater
            GNAM.Load();
            GNAM->underWater = *(FORMID *)FieldValue;
            return true;
        default:
            break;
        }
    return false;
    }
示例#18
0
bool FACTRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, UINT32 ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(UINT32 *)FieldValue);
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(UINT32 *)FieldValue);
            break;
        case 4: //eid
            EDID.Copy((STRING)FieldValue);
            break;
        case 5: //full
            FULL.Copy((STRING)FieldValue);
            break;
        case 6: //relations
            if(ListFieldID == 0) //relationsSize
                {
                XNAM.resize(ArraySize);
                return false;
                }

            if(ListIndex >= XNAM.value.size())
                break;

            switch(ListFieldID)
                {
                case 1: //faction
                    XNAM.value[ListIndex]->faction = *(FORMID *)FieldValue;
                    return true;
                case 2: //mod
                    XNAM.value[ListIndex]->mod = *(SINT32 *)FieldValue;
                    break;
                default:
                    break;
                }
            break;
        case 7: //flags
            SetFlagMask(*(UINT8 *)FieldValue);
            break;
        case 8: //crimeGoldMultiplier
            CNAM.Load();
            *CNAM.value = *(FLOAT32 *)FieldValue;
            break;
        case 9: //ranks
            if(ListFieldID == 0) //ranksSize
                {
                RNAM.resize(ArraySize);
                return false;
                }

            if(ListIndex >= RNAM.value.size())
                break;

            switch(ListFieldID)
                {
                case 1: //rank
                    RNAM.value[ListIndex]->RNAM.value = *(SINT32 *)FieldValue;
                    break;
                case 2: //male
                    RNAM.value[ListIndex]->MNAM.Copy((STRING)FieldValue);
                    break;
                case 3: //female
                    RNAM.value[ListIndex]->FNAM.Copy((STRING)FieldValue);
                    break;
                case 4: //insigniaPath
                    RNAM.value[ListIndex]->INAM.Copy((STRING)FieldValue);
                    break;
                default:
                    break;
                }
            break;
        default:
            break;
        }
    return false;
    }
示例#19
0
bool PGRDRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, uint32_t ArraySize)
    {
    uint32_t reference = 0;

    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(uint32_t *)FieldValue);
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(uint32_t *)FieldValue);
            break;
        case 5: //count
            DATA.value = *(uint16_t *)FieldValue;
            break;
        case 6: //pgrp
            if(ListFieldID == 0) //pgrpSize
                {
                PGRP.resize(ArraySize);
                return false;
                }

            if(ListIndex >= PGRP.value.size())
                break;

            switch(ListFieldID)
                {
                case 1: //x
                    PGRP.value[ListIndex].x = *(float *)FieldValue;
                    break;
                case 2: //y
                    PGRP.value[ListIndex].y = *(float *)FieldValue;
                    break;
                case 3: //z
                    PGRP.value[ListIndex].z = *(float *)FieldValue;
                    break;
                case 4: //connections
                    PGRP.value[ListIndex].connections = *(uint8_t *)FieldValue;
                    break;
                case 5: //unused1
                    if(ArraySize != 3)
                        break;
                    PGRP.value[ListIndex].unused1[0] = ((UINT8ARRAY)FieldValue)[0];
                    PGRP.value[ListIndex].unused1[1] = ((UINT8ARRAY)FieldValue)[1];
                    PGRP.value[ListIndex].unused1[2] = ((UINT8ARRAY)FieldValue)[2];
                    break;
                default:
                    break;
                }
            break;
        case 7: //pgag_p
            PGAG.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        case 8: //pgrr_p
            PGRR.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        case 9: //pgri
            if(ListFieldID == 0) //pgriSize
                {
                PGRI.resize(ArraySize);
                return false;
                }

            if(ListIndex >= PGRI.value.size())
                break;

            switch(ListFieldID)
                {
                case 1: //point
                    PGRI.value[ListIndex].point = *(uint16_t *)FieldValue;
                    break;
                case 2: //unused1
                    if(ArraySize != 2)
                        break;
                    PGRI.value[ListIndex].unused1[0] = ((UINT8ARRAY)FieldValue)[0];
                    PGRI.value[ListIndex].unused1[1] = ((UINT8ARRAY)FieldValue)[1];
                    break;
                case 3: //x
                    PGRI.value[ListIndex].x = *(float *)FieldValue;
                    break;
                case 4: //y
                    PGRI.value[ListIndex].y = *(float *)FieldValue;
                    break;
                case 5: //z
                    PGRI.value[ListIndex].z = *(float *)FieldValue;
                    break;
                default:
                    break;
                }
            break;
        case 10: //pgrl
            if(ListFieldID == 0) //pgrlSize
                {
                PGRL.resize(ArraySize);
                return false;
                }

            if(ListIndex >= PGRL.value.size())
                break;

            switch(ListFieldID)
                {
                case 1: //reference
                    if(PGRL.value[ListIndex]->points.value.size() == 0) //Sanity check, should already have a minimum of 1
                        PGRL.value[ListIndex]->points.value.resize(1);
                    PGRL.value[ListIndex]->points.value[0] = *(FORMID *)FieldValue;
                    return true;
                case 2: //points
                    reference = PGRL.value[ListIndex]->points.value.size() ? PGRL.value[ListIndex]->points.value[0] : 0;

                    PGRL.value[ListIndex]->points.value.resize(ArraySize + 1);
                    PGRL.value[ListIndex]->points.value[0] = reference;

                    for(uint32_t x = 0; x < ArraySize; x++)
                        PGRL.value[ListIndex]->points.value[x + 1] = ((UINT32ARRAY)FieldValue)[x];
                    break;
                default:
                    break;
                }
            break;
        default:
            break;
        }
    return false;
    }
示例#20
0
bool ACRERecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, uint32_t ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(uint32_t *)FieldValue);
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(uint32_t *)FieldValue);
            break;
        case 4: //eid
            EDID.Copy((char *)FieldValue);
            break;
        case 5: //base
            NAME.value = *(FORMID *)FieldValue;
            return true;
        case 6: //owner
            Ownership.Load();
            Ownership->XOWN.value = *(FORMID *)FieldValue;
            return true;
        case 7: //rank
            Ownership.Load();
            Ownership->XRNK.Load();
            *Ownership->XRNK.value = *(int32_t *)FieldValue;
            break;
        case 8: //globalVariable
            Ownership.Load();
            Ownership->XGLB.value = *(FORMID *)FieldValue;
            return true;
        case 9: //lod1
            XLOD.Load();
            XLOD->lod1 = *(float *)FieldValue;
            break;
        case 10: //lod2
            XLOD.Load();
            XLOD->lod2 = *(float *)FieldValue;
            break;
        case 11: //lod3
            XLOD.Load();
            XLOD->lod3 = *(float *)FieldValue;
            break;
        case 12: //parent
            XESP.Load();
            XESP->parent = *(FORMID *)FieldValue;
            return true;
        case 13: //parentFlags
            SetFlagMask(*(uint8_t *)FieldValue);
            break;
        case 14: //unused1
            if(ArraySize != 3)
                break;
            XESP.Load();
            XESP->unused1[0] = ((UINT8ARRAY)FieldValue)[0];
            XESP->unused1[1] = ((UINT8ARRAY)FieldValue)[1];
            XESP->unused1[2] = ((UINT8ARRAY)FieldValue)[2];
            break;
        case 15: //xrgd_p
            XRGD.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        case 16: //scale
            XSCL.Load();
            XSCL.value = *(float *)FieldValue;
            break;
        case 17: //posX
            DATA.value.posX = *(float *)FieldValue;
            break;
        case 18: //posY
            DATA.value.posY = *(float *)FieldValue;
            break;
        case 19: //posZ
            DATA.value.posZ = *(float *)FieldValue;
            break;
        case 20: //rotX
            DATA.value.rotX = *(float *)FieldValue;
            break;
        case 21: //rotY
            DATA.value.rotY = *(float *)FieldValue;
            break;
        case 22: //rotZ
            DATA.value.rotZ = *(float *)FieldValue;
            break;
        default:
            break;
        }
    return false;
    }