diff --git a/libs/xassets/xassetlist.cpp b/libs/xassets/xassetlist.cpp index 012f57d..caf73ba 100644 --- a/libs/xassets/xassetlist.cpp +++ b/libs/xassets/xassetlist.cpp @@ -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,11 +57,19 @@ 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()); - asset->ParseData(aStream); + if (asset) + { + asset->SetPtr(assetHeader.GetAssetPtr()); + asset->ParseData(aStream); - mAssets.append(asset); + mAssets.append(asset); + } } } }