First draft of player faces in the login dialog

This commit is contained in:
Sky
2013-10-19 06:40:46 +01:00
parent be2c7f4515
commit 681d36b232
7 changed files with 227 additions and 5 deletions

View File

@@ -57,6 +57,8 @@
#include "logic/lists/JavaVersionList.h"
#include "logic/net/LoginTask.h"
#include "logic/net/SkinDownload.h"
#include "logic/BaseInstance.h"
#include "logic/InstanceFactory.h"
#include "logic/MinecraftProcess.h"
@@ -517,6 +519,42 @@ void MainWindow::onLoginComplete()
tDialog.exec(updateTask);
delete updateTask;
}
auto download = new SkinDownload(m_activeLogin.player_name);
download->start();
auto filename = MMC->metacache()->resolveEntry("skins", "skins.json")->getFullPath();
QFile listFile(filename);
// Add skin mapping
QByteArray data;
{
if(!listFile.open(QIODevice::ReadWrite))
{
QLOG_ERROR() << "Failed to open/make skins list JSON";
return;
}
data = listFile.readAll();
}
QJsonParseError jsonError;
QJsonDocument jsonDoc = QJsonDocument::fromJson(data, &jsonError);
QJsonObject root = jsonDoc.object();
QJsonObject mappings = root.value("mappings").toObject();
QJsonArray usernames = mappings.value(m_activeLogin.username).toArray();
if(!usernames.contains(m_activeLogin.player_name))
{
usernames.prepend(m_activeLogin.player_name);
mappings[m_activeLogin.username] = usernames;
root["mappings"] = mappings;
jsonDoc.setObject(root);
// QJson hack - shouldn't have to clear the file every time a save happens
listFile.resize(0);
listFile.write(jsonDoc.toJson());
}
}
void MainWindow::onGameUpdateComplete()