XPlor/libs/xassets/xassetlist.cpp
2025-09-05 18:35:17 -04:00

113 lines
2.1 KiB
C++

#include "xassetlist.h"
#include "qdebug.h"
#include "qfiledevice.h"
XAssetList::XAssetList()
: XAsset()
, mStringList()
, mAssetCount()
, mAssets()
, mAssetHeaders()
, mZoneFile(nullptr)
{
}
XAssetList::XAssetList(ZoneFile* aZoneFile)
: XAsset()
, mStringList()
, mAssetCount()
, mAssets()
, mAssetHeaders()
, mZoneFile(aZoneFile)
{
}
XAssetList::~XAssetList()
{
}
void XAssetList::ParseData(QDataStream *aStream) {
// Parse string list
qDebug() << aStream->device()->pos();
mStringList.ParsePtr(aStream);
// Parse asset count and assets
qint32 assetsPtr;
*aStream
>> mAssetCount
>> assetsPtr;
mStringList.ParseData(aStream);
if (assetsPtr)
{
for (int i = 0; i < mAssetCount; i++)
{
XAssetHeader assetHeader(mZoneFile);
assetHeader.ParseData(aStream);
mAssetHeaders.append(assetHeader);
}
for (int i = 0; i < mAssetHeaders.size(); i++)
{
XAssetHeader assetHeader = mAssetHeaders[i];
XAsset* asset = XAsset::Create(assetHeader.GetAssetType());
asset->ParseData(aStream);
mAssets.append(asset);
}
}
}
void XAssetList::Clear()
{
}
XScriptStringList XAssetList::GetStringList() const {
return mStringList;
}
void XAssetList::SetStringList(const XScriptStringList& stringList) {
mStringList = stringList;
}
QVector<XAsset*> XAssetList::GetAssets() const {
return mAssets;
}
XAsset *XAssetList::GetAsset(size_t aIndex) const
{
return mAssets[aIndex];
}
QVector<XAsset*> XAssetList::GetAssetsByType(XAssetType aAssetType) const
{
QVector<XAsset *> foundAssets;
for (int i = 0; i < mAssets.size(); i++)
{
XAsset* asset = mAssets[i];
if (asset->GetType() == aAssetType)
{
foundAssets.append(asset);
}
}
return foundAssets;
}
void XAssetList::SetAssets(QVector<XAsset *> assets) {
mAssets = assets;
}
void XAssetList::AddAsset(XAsset *aAsset)
{
mAssets.append(aAsset);
}
size_t XAssetList::Size() const
{
return mAssets.size();
}