XPlor/libs/xassets/xscriptstringlist.cpp

71 lines
1.7 KiB
C++
Raw Permalink Normal View History

2025-09-03 13:22:24 -04:00
#include "xscriptstringlist.h"
#include "xstring.h"
XScriptStringList::XScriptStringList()
: XAsset()
, mCount(0)
, mScriptStrings()
{
2025-09-07 12:36:08 -04:00
SetName("Script String List");
2025-09-03 13:22:24 -04:00
}
int XScriptStringList::Size()
{
return mScriptStrings.size();
}
void XScriptStringList::Clear()
{
mCount = 0;
mScriptStrings.clear();
}
2025-09-10 21:58:26 -04:00
void XScriptStringList::ParseData(XDataStream *aStream)
2025-09-03 13:22:24 -04:00
{
2025-09-05 18:35:17 -04:00
if (GetPtr() == -1)
2025-09-03 13:22:24 -04:00
{
2025-09-07 12:36:08 -04:00
if (IsDebug())
{
qDebug() << QString("[%1] Parsing data for %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(GetName());
}
2025-09-03 13:22:24 -04:00
for (int i = 0; i < mCount; i++)
{
2025-09-10 21:58:26 -04:00
XString newScriptString;
newScriptString.ParsePtr(aStream, false);
mScriptStrings.append(newScriptString);
}
for (int i = 0; i < mCount; i++)
{
mScriptStrings[i].ParseData(aStream);
2025-09-03 13:22:24 -04:00
}
}
}
2025-09-10 21:58:26 -04:00
void XScriptStringList::ParsePtr(XDataStream *aStream, bool aDataFlag)
2025-09-03 13:22:24 -04:00
{
qint32 stringsPtr;
*aStream
>> mCount
>> stringsPtr;
2025-09-07 12:36:08 -04:00
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);
}
2025-09-03 13:22:24 -04:00
SetPtr(stringsPtr);
2025-09-05 18:35:17 -04:00
if (aDataFlag)
{
ParseData(aStream);
}
2025-09-03 13:22:24 -04:00
}