forked from MrBesen/lolautoaccept
resolve runestyle names
This commit is contained in:
parent
1cb3134c8e
commit
c2203b4b5d
|
@ -5,6 +5,7 @@
|
|||
#include "position.h"
|
||||
#include "runeaspekt.h"
|
||||
#include "runepage.h"
|
||||
#include "runestyle.h"
|
||||
|
||||
class ClientAPI : public RestClient {
|
||||
public:
|
||||
|
@ -170,10 +171,9 @@ public:
|
|||
bool editRunePage(const RunePage& page);
|
||||
|
||||
std::vector<RuneAspekt> getAllRuneAspekts();
|
||||
std::vector<RuneStyle> getAllRuneStyles();
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
const std::string& getRuneStyleByID(uint32_t id);
|
||||
|
||||
private:
|
||||
ClientAccess access;
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#include "config.h"
|
||||
#include "datadragon.h"
|
||||
#include "runepage.h"
|
||||
#include "runestyle.h"
|
||||
|
||||
class LolAutoAccept {
|
||||
public:
|
||||
|
@ -40,6 +41,7 @@ protected:
|
|||
|
||||
BlitzAPI blitzapi;
|
||||
std::vector<RuneAspekt> runeaspekts;
|
||||
std::vector<RuneStyle> runestyles;
|
||||
|
||||
bool nextApplyRunes = false;
|
||||
|
||||
|
@ -63,6 +65,7 @@ public:
|
|||
void reload(); // reload the config, when something was changed
|
||||
|
||||
const std::vector<RuneAspekt>& getRuneAspekts();
|
||||
const std::vector<RuneStyle>& getRuneStyles();
|
||||
void applyRunes();
|
||||
void setOnRuneChangeFunc(onruneschange_func on);
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
#include "runeaspekt.h"
|
||||
#include "runepage.h"
|
||||
#include "runestyle.h"
|
||||
|
||||
namespace Ui {
|
||||
class RuneDisplay;
|
||||
|
@ -17,6 +18,7 @@ public:
|
|||
~RuneDisplay();
|
||||
|
||||
void setRuneMeta(const std::vector<RuneAspekt>& runeinfo);
|
||||
void setStyles(const std::vector<RuneStyle>& styleinfos);
|
||||
void setRunes(const RunePage& rp);
|
||||
|
||||
private slots:
|
||||
|
@ -28,10 +30,13 @@ signals:
|
|||
private:
|
||||
void updateText();
|
||||
std::string getRuneText(uint32_t id);
|
||||
std::string getRuneStyleByID(uint32_t id);
|
||||
|
||||
Ui::RuneDisplay *ui;
|
||||
|
||||
RunePage runepage;
|
||||
|
||||
std::vector<RuneAspekt> runeinfo;
|
||||
std::vector<RuneStyle> runestyles;
|
||||
|
||||
};
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
#include <string>
|
||||
|
||||
// fwd.
|
||||
class QJsonObject;
|
||||
|
||||
struct RuneStyle {
|
||||
uint32_t id;
|
||||
std::string name;
|
||||
std::string iconPath;
|
||||
std::string tooltip;
|
||||
|
||||
RuneStyle();
|
||||
explicit RuneStyle(const QJsonObject& json);
|
||||
};
|
|
@ -247,3 +247,22 @@ std::vector<RuneAspekt> ClientAPI::getAllRuneAspekts() {
|
|||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
std::vector<RuneStyle> ClientAPI::getAllRuneStyles() {
|
||||
QJsonDocument doc = request("lol-perks/v1/styles");
|
||||
|
||||
if(!doc.isArray()) {
|
||||
Log::warn << __PRETTY_FUNCTION__ << " doc is not array";
|
||||
return {};
|
||||
}
|
||||
|
||||
QJsonArray arr = doc.array();
|
||||
std::vector<RuneStyle> out;
|
||||
out.reserve(arr.size());
|
||||
for(auto it : arr) {
|
||||
if(it.isObject()) {
|
||||
out.push_back((RuneStyle) it.toObject());
|
||||
}
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
|
|
@ -207,6 +207,15 @@ ClientAPI::RunePage::RunePage(const QJsonObject& json) {
|
|||
}
|
||||
}
|
||||
|
||||
RuneStyle::RuneStyle() {}
|
||||
RuneStyle::RuneStyle(const QJsonObject& json) {
|
||||
id = getValue<int32_t>(json, "id", 0);
|
||||
name = getValue<std::string>(json, "name");
|
||||
iconPath = getValue<std::string>(json, "iconPath");
|
||||
tooltip = getValue<std::string>(json, "tooltip");
|
||||
}
|
||||
|
||||
|
||||
RuneAspekt::RuneAspekt() {}
|
||||
RuneAspekt::RuneAspekt(const QJsonObject& json) {
|
||||
id = getValue<int32_t>(json, "id", 0);
|
||||
|
|
|
@ -83,6 +83,17 @@ const std::vector<RuneAspekt>& LolAutoAccept::getRuneAspekts() {
|
|||
return runeaspekts;
|
||||
}
|
||||
|
||||
const std::vector<RuneStyle>& LolAutoAccept::getRuneStyles() {
|
||||
if(runestyles.empty()) {
|
||||
if(clientapi) {
|
||||
runestyles = clientapi->getAllRuneStyles();
|
||||
Log::info << "Loaded " << runestyles.size() << " rune styles";
|
||||
}
|
||||
}
|
||||
|
||||
return runestyles;
|
||||
}
|
||||
|
||||
void LolAutoAccept::applyRunes() {
|
||||
nextApplyRunes = true;
|
||||
}
|
||||
|
|
|
@ -56,6 +56,7 @@ void MainWindow::toggleMainswitch(bool state) {
|
|||
}
|
||||
|
||||
ui->runedisplay->setRuneMeta(lolaa.getRuneAspekts());
|
||||
ui->runedisplay->setStyles(lolaa.getRuneStyles());
|
||||
|
||||
lolaa.run();
|
||||
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
|
||||
#include <sstream>
|
||||
|
||||
const static std::string EMPTY;
|
||||
|
||||
RuneDisplay::RuneDisplay(QWidget *parent) : QWidget(parent), ui(new Ui::RuneDisplay) {
|
||||
ui->setupUi(this);
|
||||
}
|
||||
|
@ -15,6 +17,10 @@ void RuneDisplay::setRuneMeta(const std::vector<RuneAspekt>& ri) {
|
|||
runeinfo = ri;
|
||||
}
|
||||
|
||||
void RuneDisplay::setStyles(const std::vector<RuneStyle>& styleinfos) {
|
||||
runestyles = styleinfos;
|
||||
}
|
||||
|
||||
void RuneDisplay::setRunes(const RunePage& rp) {
|
||||
runepage = rp;
|
||||
|
||||
|
@ -34,7 +40,7 @@ void RuneDisplay::updateText() {
|
|||
return;
|
||||
}
|
||||
|
||||
out << "primary: " << getRuneText(runepage.primaryStyle) << " secondary: " << getRuneText(runepage.secondaryStyle) << '\n';
|
||||
out << getRuneStyleByID(runepage.primaryStyle) << " with " << getRuneStyleByID(runepage.secondaryStyle) << '\n';
|
||||
|
||||
for(uint32_t rune : runepage.selectedAspects) {
|
||||
out << getRuneText(rune) << '\n';
|
||||
|
@ -51,4 +57,13 @@ std::string RuneDisplay::getRuneText(uint32_t id) {
|
|||
}
|
||||
|
||||
return "(" + std::to_string(id) + ")";
|
||||
}
|
||||
}
|
||||
|
||||
std::string RuneDisplay::getRuneStyleByID(uint32_t id) {
|
||||
auto it = std::find_if(runestyles.begin(), runestyles.end(), [id](const RuneStyle& rs) { return rs.id == id; });
|
||||
if(it == runestyles.end()) {
|
||||
return '(' + std::to_string(id) + ')';
|
||||
}
|
||||
|
||||
return it->name;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue