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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }