From 9898a0341721464ff6baebb897daec6c44f107ee Mon Sep 17 00:00:00 2001 From: njohnson Date: Wed, 10 Sep 2025 21:55:59 -0400 Subject: [PATCH] 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. --- libs/xassets/xanimparts.cpp | 81 ++++++++++++++----------------------- 1 file changed, 31 insertions(+), 50 deletions(-) diff --git a/libs/xassets/xanimparts.cpp b/libs/xassets/xanimparts.cpp index ab26f3f..7942cb4 100644 --- a/libs/xassets/xanimparts.cpp +++ b/libs/xassets/xanimparts.cpp @@ -31,68 +31,49 @@ XAnimParts::XAnimParts() , mDeltaPart() { SetType(ASSET_TYPE_XANIMPARTS); - SetName("XAnimParts"); + SetName("Animation Parts"); } -XAnimParts::~XAnimParts() -{ - -} - -void XAnimParts::ParseData(QDataStream *aStream) { +void XAnimParts::ParseData(XDataStream *aStream) { if (GetPtr() == -1) { mName.ParsePtr(aStream, false); // Parse all fields - *aStream - >> mDataByteCount - >> mDataShortCount - >> mDataIntCount - >> mRandomDataByteCount - >> mRandomDataIntCount - >> mNumFrames; + mDataByteCount = aStream->ParseUInt32(QString("%1 data byte count").arg(GetName())); + mDataShortCount = aStream->ParseUInt32(QString("%1 data short count").arg(GetName())); + mDataIntCount = aStream->ParseUInt32(QString("%1 data int count").arg(GetName())); + mRandomDataByteCount = aStream->ParseUInt32(QString("%1 random date byte count").arg(GetName())); + mRandomDataIntCount = aStream->ParseUInt32(QString("%1 random data int count").arg(GetName())); + mNumFrames = aStream->ParseUInt32(QString("%1 # frames").arg(GetName())); - quint8 loopDelta; - *aStream >> loopDelta; + quint8 loopDelta = aStream->ParseUInt8(QString("%1 loop delta").arg(GetName())); mIsLoop = (loopDelta & 0x1) != 0; mIsDelta = (loopDelta & 0x2) != 0; 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 - >> mAssetType; - - quint32 pad; - *aStream >> pad; - mPad = (pad != 0); + mNotifyCount = aStream->ParseUInt8(QString("%1 notify count").arg(GetName())); + mAssetType = aStream->ParseUInt8(QString("%1 asset type").arg(GetName())); + mPad = aStream->ParseUInt32(QString("%1 pad").arg(GetName())) != 0; qint32 namesPtr, dataBytePtr, dataShortPtr, dataIntPtr, randomDataShortPtr, randomDataBytePtr, randomDataIntPtr; - *aStream - >> mRandomDataShortCount - >> mIndexCount - >> mFramerate - >> mFrequency - >> namesPtr - >> mNames - >> dataBytePtr - >> mDataByte - >> dataShortPtr - >> mDataShort - >> dataIntPtr - >> mDataInt - >> randomDataShortPtr - >> mRandomDataShort - >> randomDataBytePtr - >> mRandomDataByte - >> randomDataIntPtr - >> mRandomDataInt; + mRandomDataShortCount = aStream->ParseUInt32(QString("%1 random data short count").arg(GetName())); + mIndexCount = aStream->ParseUInt32(QString("%1 index count").arg(GetName())); + mFramerate = aStream->ParseSingle(QString("%1 frame rate").arg(GetName())); + mFrequency = aStream->ParseSingle(QString("%1 frequency").arg(GetName())); + namesPtr = aStream->ParseInt32(QString("%1 names ptr").arg(GetName())); + dataBytePtr = aStream->ParseInt32(QString("%1 data byte ptr").arg(GetName())); + dataShortPtr = aStream->ParseInt32(QString("%1 data short ptr").arg(GetName())); + dataIntPtr = aStream->ParseInt32(QString("%1 data int ptr").arg(GetName())); + randomDataShortPtr = aStream->ParseInt32(QString("%1 random data short ptr").arg(GetName())); + randomDataBytePtr = aStream->ParseInt32(QString("%1 random data byte ptr").arg(GetName())); + randomDataIntPtr = aStream->ParseInt32(QString("%1 random data int ptr").arg(GetName())); // Parse indices mIndices.ParseData(aStream); @@ -102,33 +83,33 @@ void XAnimParts::ParseData(QDataStream *aStream) { mName.ParseData(aStream); if (namesPtr) { - + mNames = aStream->ParseInt32(QString("%1 names").arg(GetName())); } mNotify.ParseData(aStream); mDeltaPart.ParseData(aStream); if (dataBytePtr) { - *aStream >> mDataByte; + mDataByte = aStream->ParseUInt8(QString("%1 data byte").arg(GetName())); } if (dataShortPtr) { - *aStream >> mDataShort; + mDataShort = aStream->ParseInt16(QString("%1 data short").arg(GetName())); } if (dataIntPtr) { - *aStream >> mDataInt; + mDataInt = aStream->ParseInt32(QString("%1 data int").arg(GetName())); } if (randomDataShortPtr) { - *aStream >> mDataInt; + mRandomDataShort = aStream->ParseInt16(QString("%1 random data short").arg(GetName())); } if (randomDataBytePtr) { - *aStream >> mRandomDataByte; + mRandomDataByte = aStream->ParseUInt8(QString("%1 random data byte").arg(GetName())); } if (randomDataIntPtr) { - *aStream >> mRandomDataInt; + mRandomDataInt = aStream->ParseInt32(QString("%1 random data int").arg(GetName())); } mIndices.ParseData(aStream); }