Fix: Parse data for asset list

This commit is contained in:
njohnson 2025-09-10 21:56:32 -04:00
parent 6e58c8fc2f
commit 21379d133d

View File

@ -10,6 +10,8 @@ XAssetList::XAssetList()
, mAssetHeaders() , mAssetHeaders()
, mZoneFile(nullptr) , mZoneFile(nullptr)
{ {
SetType(ASSET_TYPE_ASSETLIST);
SetName("Asset List");
} }
XAssetList::XAssetList(ZoneFile* aZoneFile) XAssetList::XAssetList(ZoneFile* aZoneFile)
@ -29,30 +31,23 @@ XAssetList::~XAssetList()
} }
void XAssetList::ParseData(QDataStream *aStream) { void XAssetList::ParseData(XDataStream *aStream) {
// Parse string list // Parse string list
if (IsDebug()) if (IsDebug())
{ {
qDebug() << QString("[%1] Parsing data for %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(GetName()); qDebug() << QString("[%1] Parsing data for %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(GetName());
} }
mStringList.ParsePtr(aStream); mStringList.ParsePtr(aStream, false);
// Parse asset count and assets // Parse asset count and assets
qint32 assetsPtr; mAssetCount = aStream->ParseUInt32(QString("%1 asset count").arg(GetName()));
*aStream qint32 assetsPtr = aStream->ParseInt32(QString("%1 assets ptr").arg(GetName()));
>> mAssetCount
>> assetsPtr;
if (IsDebug())
{
qDebug() << QString("[%1] mAssetCount = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(mAssetCount);
qDebug() << QString("[%1] assetsPtr = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(assetsPtr);
}
mStringList.ParseData(aStream); mStringList.ParseData(aStream);
if (assetsPtr) if (assetsPtr)
{ {
for (int i = 0; i < mAssetCount; i++) for (quint32 i = 0; i < mAssetCount; i++)
{ {
XAssetHeader assetHeader(mZoneFile); XAssetHeader assetHeader(mZoneFile);
assetHeader.ParseData(aStream); assetHeader.ParseData(aStream);
@ -62,14 +57,22 @@ void XAssetList::ParseData(QDataStream *aStream) {
for (int i = 0; i < mAssetHeaders.size(); i++) for (int i = 0; i < mAssetHeaders.size(); i++)
{ {
if (aStream->device()->pos() > 98000)
{
qDebug() << "test";
}
XAssetHeader assetHeader = mAssetHeaders[i]; XAssetHeader assetHeader = mAssetHeaders[i];
XAsset* asset = XAsset::Create(assetHeader.GetAssetType()); XAsset* asset = XAsset::Create(assetHeader.GetAssetType());
if (asset)
{
asset->SetPtr(assetHeader.GetAssetPtr());
asset->ParseData(aStream); asset->ParseData(aStream);
mAssets.append(asset); mAssets.append(asset);
} }
} }
} }
}
void XAssetList::Clear() void XAssetList::Clear()
{ {