Refactor: Improve data parsing for XAnimParts

This commit refactors the data parsing logic for XAnimParts to improve clarity and maintainability. It replaces the use of raw `*aStream` with `aStream->ParseUIntX()` for all data fields. This approach simplifies the code and enhances readability by explicitly stating the data type being parsed. Furthermore, the message has been updated to reflect the name change of this asset.
This commit is contained in:
njohnson 2025-09-10 21:55:59 -04:00
parent 7174f1fe22
commit 9898a03417

View File

@ -31,68 +31,49 @@ XAnimParts::XAnimParts()
, mDeltaPart() , mDeltaPart()
{ {
SetType(ASSET_TYPE_XANIMPARTS); SetType(ASSET_TYPE_XANIMPARTS);
SetName("XAnimParts"); SetName("Animation Parts");
} }
XAnimParts::~XAnimParts() void XAnimParts::ParseData(XDataStream *aStream) {
{
}
void XAnimParts::ParseData(QDataStream *aStream) {
if (GetPtr() == -1) { if (GetPtr() == -1) {
mName.ParsePtr(aStream, false); mName.ParsePtr(aStream, false);
// Parse all fields // Parse all fields
*aStream mDataByteCount = aStream->ParseUInt32(QString("%1 data byte count").arg(GetName()));
>> mDataByteCount mDataShortCount = aStream->ParseUInt32(QString("%1 data short count").arg(GetName()));
>> mDataShortCount mDataIntCount = aStream->ParseUInt32(QString("%1 data int count").arg(GetName()));
>> mDataIntCount mRandomDataByteCount = aStream->ParseUInt32(QString("%1 random date byte count").arg(GetName()));
>> mRandomDataByteCount mRandomDataIntCount = aStream->ParseUInt32(QString("%1 random data int count").arg(GetName()));
>> mRandomDataIntCount mNumFrames = aStream->ParseUInt32(QString("%1 # frames").arg(GetName()));
>> mNumFrames;
quint8 loopDelta; quint8 loopDelta = aStream->ParseUInt8(QString("%1 loop delta").arg(GetName()));
*aStream >> loopDelta;
mIsLoop = (loopDelta & 0x1) != 0; mIsLoop = (loopDelta & 0x1) != 0;
mIsDelta = (loopDelta & 0x2) != 0; mIsDelta = (loopDelta & 0x2) != 0;
for (int i = 0; i < 12; i++) for (int i = 0; i < 12; i++)
{ {
*aStream >> mBoneCount[i]; mBoneCount[i] = aStream->ParseUInt8(QString("%1 bone count %2").arg(GetName()).arg(i));
} }
*aStream mNotifyCount = aStream->ParseUInt8(QString("%1 notify count").arg(GetName()));
>> mNotifyCount mAssetType = aStream->ParseUInt8(QString("%1 asset type").arg(GetName()));
>> mAssetType; mPad = aStream->ParseUInt32(QString("%1 pad").arg(GetName())) != 0;
quint32 pad;
*aStream >> pad;
mPad = (pad != 0);
qint32 namesPtr, dataBytePtr, dataShortPtr, dataIntPtr, qint32 namesPtr, dataBytePtr, dataShortPtr, dataIntPtr,
randomDataShortPtr, randomDataBytePtr, randomDataIntPtr; randomDataShortPtr, randomDataBytePtr, randomDataIntPtr;
*aStream mRandomDataShortCount = aStream->ParseUInt32(QString("%1 random data short count").arg(GetName()));
>> mRandomDataShortCount mIndexCount = aStream->ParseUInt32(QString("%1 index count").arg(GetName()));
>> mIndexCount mFramerate = aStream->ParseSingle(QString("%1 frame rate").arg(GetName()));
>> mFramerate mFrequency = aStream->ParseSingle(QString("%1 frequency").arg(GetName()));
>> mFrequency namesPtr = aStream->ParseInt32(QString("%1 names ptr").arg(GetName()));
>> namesPtr dataBytePtr = aStream->ParseInt32(QString("%1 data byte ptr").arg(GetName()));
>> mNames dataShortPtr = aStream->ParseInt32(QString("%1 data short ptr").arg(GetName()));
>> dataBytePtr dataIntPtr = aStream->ParseInt32(QString("%1 data int ptr").arg(GetName()));
>> mDataByte randomDataShortPtr = aStream->ParseInt32(QString("%1 random data short ptr").arg(GetName()));
>> dataShortPtr randomDataBytePtr = aStream->ParseInt32(QString("%1 random data byte ptr").arg(GetName()));
>> mDataShort randomDataIntPtr = aStream->ParseInt32(QString("%1 random data int ptr").arg(GetName()));
>> dataIntPtr
>> mDataInt
>> randomDataShortPtr
>> mRandomDataShort
>> randomDataBytePtr
>> mRandomDataByte
>> randomDataIntPtr
>> mRandomDataInt;
// Parse indices // Parse indices
mIndices.ParseData(aStream); mIndices.ParseData(aStream);
@ -102,33 +83,33 @@ void XAnimParts::ParseData(QDataStream *aStream) {
mName.ParseData(aStream); mName.ParseData(aStream);
if (namesPtr) if (namesPtr)
{ {
mNames = aStream->ParseInt32(QString("%1 names").arg(GetName()));
} }
mNotify.ParseData(aStream); mNotify.ParseData(aStream);
mDeltaPart.ParseData(aStream); mDeltaPart.ParseData(aStream);
if (dataBytePtr) if (dataBytePtr)
{ {
*aStream >> mDataByte; mDataByte = aStream->ParseUInt8(QString("%1 data byte").arg(GetName()));
} }
if (dataShortPtr) if (dataShortPtr)
{ {
*aStream >> mDataShort; mDataShort = aStream->ParseInt16(QString("%1 data short").arg(GetName()));
} }
if (dataIntPtr) if (dataIntPtr)
{ {
*aStream >> mDataInt; mDataInt = aStream->ParseInt32(QString("%1 data int").arg(GetName()));
} }
if (randomDataShortPtr) if (randomDataShortPtr)
{ {
*aStream >> mDataInt; mRandomDataShort = aStream->ParseInt16(QString("%1 random data short").arg(GetName()));
} }
if (randomDataBytePtr) if (randomDataBytePtr)
{ {
*aStream >> mRandomDataByte; mRandomDataByte = aStream->ParseUInt8(QString("%1 random data byte").arg(GetName()));
} }
if (randomDataIntPtr) if (randomDataIntPtr)
{ {
*aStream >> mRandomDataInt; mRandomDataInt = aStream->ParseInt32(QString("%1 random data int").arg(GetName()));
} }
mIndices.ParseData(aStream); mIndices.ParseData(aStream);
} }