Support for Japanese character in savegame

This commit is contained in:
Rafael 2016-03-31 21:33:16 +02:00
parent cb1ae08394
commit 6e3f7118a9
3 changed files with 48 additions and 7 deletions

View file

@ -17,6 +17,8 @@
*****************************************************************************/
#include "SavegameData.h"
#include <QTextCodec>
#include <QDebug>
#include <QFile>
SavegameData::SavegameData(QString fileName, QObject *parent) : QObject(parent), savegameFileName(fileName)
@ -62,7 +64,6 @@ bool SavegameData::readingSavegame()
savegameOk = true;
}
}
saveFile->close();
saveFile->deleteLater();
delete saveFile;
@ -71,10 +72,43 @@ bool SavegameData::readingSavegame()
QString SavegameData::getSavegameDataString(QByteArray savegameHeader)
{
QByteArray savegameUsefulBytes = savegameHeader.left(savegameHeaderLength);
savegameUsefulBytes.replace(QByteArray::fromHex("00"),"");
savegameUsefulBytes.replace(QByteArray::fromHex("01"),"");
return QString::fromLatin1(savegameUsefulBytes);
QString savegameTitle;
QByteArray savegameBytes = savegameHeader.left(savegameHeaderLength);
QList<QByteArray> savegameBytesList = savegameBytes.split(char(0x01));
savegameBytes = savegameBytesList.at(1);
int savegameLength = savegameBytes.length();
int parsedBytes = 0;
while (parsedBytes <= savegameLength)
{
QList<QByteArray> parseByteList;
parseByteList.append(savegameBytes.mid(parsedBytes-1, 1));
parseByteList.append(savegameBytes.mid(parsedBytes-2, 1));
if (parseByteList.at(0).toHex() == "00")
{
// Latin character
savegameTitle.append(QString::fromLatin1(parseByteList.at(1)));
}
else if (parseByteList.at(0).toHex() == "30")
{
// Japanese character
QByteArray japaneseHex;
japaneseHex.append(QByteArray::fromHex("A5"));
japaneseHex.append(parseByteList.at(1));
savegameTitle.append(QTextCodec::codecForName("EUC-JP")->toUnicode(japaneseHex));
}
else
{
// Unsupported
}
parsedBytes = parsedBytes + 2;
parseByteList.clear();
}
savegameBytesList.clear();
savegameBytes.clear();
return savegameTitle;
}
bool SavegameData::readingSavegameFromFile(QString fileName)