-
Notifications
You must be signed in to change notification settings - Fork 0
/
modlist.cpp
49 lines (43 loc) · 1.15 KB
/
modlist.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include "modlist.h"
#include <QByteArray>
#include <QDir>
#include <QFile>
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QList>
ModList::ModList()
{
}
ModList ModList::Load(QString filePath)
{
QFile modfile(filePath);
modfile.open(QIODevice::ReadOnly);
QByteArray filedata = modfile.readAll();
QJsonDocument modlist(QJsonDocument::fromJson(filedata));
QJsonObject object = modlist.object();
QJsonArray modArray = object["mods"].toArray();
ModList newModList;
for (int idx = 0; idx < modArray.size(); ++idx)
{
QJsonObject mod = modArray[idx].toObject();
newModList.mods.append(Mod(mod));
}
return newModList;
}
void ModList::Save(QString filePath)
{
QJsonArray array;
for (int idx = 0; idx < mods.size(); ++idx)
{
array.append(mods.at(idx).save());
}
QJsonObject object;
object.insert("mods", array);
QJsonDocument doc;
doc.setObject(object);
QByteArray filedata = doc.toJson(QJsonDocument::Indented);
QFile targetFile(filePath);
targetFile.open(QIODevice::Truncate|QIODevice::WriteOnly);
targetFile.write(filedata);
}