2025-09-03 13:22:24 -04:00
|
|
|
#include "xscriptstringlist.h"
|
|
|
|
|
#include "xstring.h"
|
|
|
|
|
|
|
|
|
|
XScriptStringList::XScriptStringList()
|
|
|
|
|
: XAsset()
|
|
|
|
|
, mCount(0)
|
|
|
|
|
, mStringPtrs()
|
|
|
|
|
, 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;
|
|
|
|
|
mStringPtrs.clear();
|
|
|
|
|
mScriptStrings.clear();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void XScriptStringList::ParseData(QDataStream *aStream)
|
|
|
|
|
{
|
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++)
|
|
|
|
|
{
|
|
|
|
|
qint32 tempStringPtr;
|
|
|
|
|
*aStream >> tempStringPtr;
|
|
|
|
|
|
|
|
|
|
if (tempStringPtr == -1)
|
|
|
|
|
{
|
2025-09-07 12:36:08 -04:00
|
|
|
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);
|
|
|
|
|
}
|
2025-09-03 13:22:24 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void XScriptStringList::ParsePtr(QDataStream *aStream, bool aDataFlag)
|
|
|
|
|
{
|
|
|
|
|
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
|
|
|
}
|