#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(static_cast(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); } }