XPlor/libs/xassets/xscriptstringlist.cpp
2025-09-07 12:36:08 -04:00

78 lines
2.0 KiB
C++

#include "xscriptstringlist.h"
#include "xstring.h"
XScriptStringList::XScriptStringList()
: XAsset()
, mCount(0)
, mStringPtrs()
, mScriptStrings()
{
SetName("Script String List");
}
int XScriptStringList::Size()
{
return mScriptStrings.size();
}
void XScriptStringList::Clear()
{
mCount = 0;
mStringPtrs.clear();
mScriptStrings.clear();
}
void XScriptStringList::ParseData(QDataStream *aStream)
{
if (GetPtr() == -1)
{
if (IsDebug())
{
qDebug() << QString("[%1] Parsing data for %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(GetName());
}
for (int i = 0; i < mCount; i++)
{
qint32 tempStringPtr;
*aStream >> tempStringPtr;
if (tempStringPtr == -1)
{
const QString newScriptString = XString::ParseCustom(aStream);
mScriptStrings << newScriptString;
if (IsDebug())
{
qDebug() << QString("[%1] newScriptString = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(newScriptString);
}
}
}
}
}
void XScriptStringList::ParsePtr(QDataStream *aStream, bool aDataFlag)
{
qint32 stringsPtr;
*aStream
>> mCount
>> stringsPtr;
if (mDebug)
{
// Always treat as unsigned when displaying in hex
quint64 raw = static_cast<quint64>(static_cast<quint32>(GetPtr()));
QString hexPtr = QString("0x%1")
.arg(raw, 8, 16, QLatin1Char('0'))
.toUpper();
qDebug() << QString("[%1] Parsed %2 ptr %3 (%4)").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(GetName()).arg(stringsPtr).arg(hexPtr);
qDebug() << QString("[%1] mCount = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(mCount);
}
SetPtr(stringsPtr);
if (aDataFlag)
{
ParseData(aStream);
}
}