fix currentcounter in stage, show runes

This commit is contained in:
mrbesen 2022-07-09 16:23:09 +02:00
parent d3379ab794
commit d8e8e1c459
Signed by untrusted user: MrBesen
GPG Key ID: 596B2350DCD67504
6 changed files with 32 additions and 10 deletions

View File

@ -12,6 +12,7 @@
class LolAutoAccept {
public:
using onposchange_func = std::function<void(Position)>;
using onruneschange_func = std::function<void(const std::vector<uint32_t>, uint32_t, uint32_t)>;
protected:
struct Stage {
Stage();
@ -29,6 +30,7 @@ protected:
Config::RootConfig& config;
DataDragon& dd;
onposchange_func onPoschange;
onruneschange_func onRuneschange;
bool shouldrun = false;
std::thread lolaathread;
@ -45,7 +47,7 @@ public:
PICK = 2,
};
LolAutoAccept(Config::RootConfig& config, DataDragon& dd, onposchange_func = {});
LolAutoAccept(Config::RootConfig& config, DataDragon& dd, onposchange_func = {}, onruneschange_func = {});
~LolAutoAccept();
void setChamps(const std::vector<uint32_t>& champs, State s);

View File

@ -15,7 +15,7 @@ public:
~RuneDisplay();
void setRuneMeta(const std::vector<RuneAspekt>& runeinfo);
void setRunes(std::vector<uint32_t> ids, uint32_t primary, uint32_t secondary);
void setRunes(const std::vector<uint32_t>& ids, uint32_t primary, uint32_t secondary);
private:
void updateText();
std::string getRuneText(uint32_t id);

View File

@ -51,7 +51,7 @@ BlitzAPI::ChampionInfo::ChampionInfo(const QJsonObject& json) {
if(!it.isObject()) continue;
QJsonObject rune = it.toObject();
auto runeid = rune["runeid"];
auto runeid = rune["runeId"];
if(runeid.isDouble()) {
runes.push_back(runeid.toDouble());
}

View File

@ -7,7 +7,7 @@
LolAutoAccept::Stage::Stage() {}
LolAutoAccept::Stage::~Stage() {}
LolAutoAccept::LolAutoAccept(Config::RootConfig& config, DataDragon& dd, onposchange_func onposch) : config(config), dd(dd), onPoschange(onposch) {
LolAutoAccept::LolAutoAccept(Config::RootConfig& config, DataDragon& dd, onposchange_func onposch, onruneschange_func onrunch) : config(config), dd(dd), onPoschange(onposch), onRuneschange(onrunch) {
std::lock_guard lock(stagesMutex);
stages.resize(3); // accept, ban, pick
}
@ -21,6 +21,8 @@ void LolAutoAccept::setChamps(const std::vector<uint32_t>& champs, State s) {
Log::warn << "setChamps() called on invalid State";
return;
}
Log::debug << "LolAutoAccept::setChamps";
{
std::lock_guard lock(stagesMutex);
stages.at((int) s).champids = champs;
@ -174,7 +176,7 @@ void LolAutoAccept::loadPosition(Position pos) {
}
uint32_t LolAutoAccept::getChampOfState(State s) {
assert(((int) s) >= 0 && s <= State::PICK);
assert(s > State::LOBBY && s <= State::PICK);
Stage& stage = stages[(int) s];
uint32_t size = stage.champids.size();
@ -191,7 +193,7 @@ uint32_t LolAutoAccept::getChampOfState(State s) {
void LolAutoAccept::nextChampOfState(State s) {
assert(s > State::LOBBY && s <= State::PICK);
auto stage = stages[(int) s];
Stage& stage = stages[(int) s];
uint32_t size = stage.champids.size();
stage.currentOffset++;
@ -286,9 +288,12 @@ void LolAutoAccept::champSelect() {
// find own cellid info
const ClientAPI::ChampSelectCell* me = nullptr;
uint32_t pickedChamp = 0;
static uint32_t lastPickedChamp = 0;
for(const auto& it : session.myTeam) {
if(it.cellID == cellid) {
me = &it;
pickedChamp = it.championID;
break;
}
}
@ -298,6 +303,20 @@ void LolAutoAccept::champSelect() {
pos = Position::UTILITY; // default: support TODO: make the default changeable? extra tab?
}
// check if runes need adjustment
if(pickedChamp != lastPickedChamp) {
Log::info << "picked champ changed from: " << lastPickedChamp << " to: " << pickedChamp;
lastPickedChamp = pickedChamp;
// update runes
if(onRuneschange) {
auto champinfo = blitzapi.getChampionInfo(pickedChamp, pos); // TODO: add detection for enemy champ
Log::info << "champinfo aquired: " << champinfo.runes.size() << " runes primary: " << champinfo.primaryRune;
onRuneschange(champinfo.runes, champinfo.primaryRune, 0); //
}
}
// reload config based on position if changed
if(pos != currentPosition) {
Log::note << "LolAutoAccept reloading config for position: " << pos << " because it was: " << currentPosition;

View File

@ -3,7 +3,8 @@
#include <Log.h>
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow), dd(QLocale().name().toStdString()), lolaa(conf.getConfig(), dd, std::bind(&MainWindow::onPosChange, this, std::placeholders::_1)) {
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow), dd(QLocale().name().toStdString()),
lolaa(conf.getConfig(), dd, std::bind(&MainWindow::onPosChange, this, std::placeholders::_1), std::bind(&MainWindow::onRuneChanged, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)) {
ui->setupUi(this);
conf.load();

View File

@ -15,7 +15,7 @@ void RuneDisplay::setRuneMeta(const std::vector<RuneAspekt>& ri) {
runeinfo = ri;
}
void RuneDisplay::setRunes(std::vector<uint32_t> ids, uint32_t primary, uint32_t secondary) {
void RuneDisplay::setRunes(const std::vector<uint32_t>& ids, uint32_t primary, uint32_t secondary) {
runes = ids;
this->primary = primary;
this->secondary = secondary;
@ -26,10 +26,10 @@ void RuneDisplay::setRunes(std::vector<uint32_t> ids, uint32_t primary, uint32_t
void RuneDisplay::updateText() {
std::ostringstream out;
out << "primary: " << getRuneText(primary) << " secondary: " << getRuneText(secondary) << " ";
out << "primary: " << getRuneText(primary) << " secondary: " << getRuneText(secondary) << '\n';
for(uint32_t rune : runes) {
out << getRuneText(rune);
out << getRuneText(rune) << '\n';
}
ui->runetext->setText(QString::fromStdString(out.str()));
}