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