Co-authored-by: MrBesen <mrbesen@users.noreply.github.com>
This commit is contained in:
Oliver 2022-08-20 21:42:30 +02:00
parent ffc83a175f
commit 03e4017e7f
Signed by: okaestne
GPG Key ID: 06A81B143EA9588F
5 changed files with 21 additions and 16 deletions

View File

@ -1,5 +1,6 @@
#pragma once
#include <memory>
#include <QJsonObject>
#include "position.h"
@ -31,9 +32,9 @@ public:
RootConfig(const QJsonObject&);
operator QJsonObject() const;
PositionConfig& getPositionConfig(Position position);
std::shared_ptr<Config::PositionConfig> getPositionConfig(Position position);
std::vector<PositionConfig> positionConfigs;
std::vector<std::shared_ptr<PositionConfig>> positionConfigs;
bool enabledAutoAccept;
};

View File

@ -87,8 +87,8 @@ Config::RootConfig::operator QJsonObject() const {
QJsonObject out;
QJsonArray positionarr;
for(const PositionConfig& pos : positionConfigs) {
positionarr.push_back((QJsonObject) pos);
for(auto pos : positionConfigs) {
positionarr.push_back((QJsonObject) *pos.get());
}
out["positions"] = positionarr;
@ -97,17 +97,19 @@ Config::RootConfig::operator QJsonObject() const {
return out;
}
Config::PositionConfig& Config::RootConfig::getPositionConfig(Position position) {
for(uint32_t i = 0; i < positionConfigs.size(); ++i) {
if(positionConfigs.at(i).position == position) {
return positionConfigs.at(i);
std::shared_ptr<Config::PositionConfig> Config::RootConfig::getPositionConfig(Position position) {
// find existing configuration with given position
for(auto posc : positionConfigs) {
if(posc->position == position) {
return posc;
}
}
// add a new config
positionConfigs.emplace_back();
positionConfigs.back().position = position;
return positionConfigs.back();
auto posconfig = std::make_shared<Config::PositionConfig>();
positionConfigs.push_back(posconfig);
posconfig->position = position;
return posconfig;
}
Config::Config() {

View File

@ -222,10 +222,10 @@ void LolAutoAccept::loadPosition(Position pos) {
stages.resize(1); // first stage does not change
stages.resize(3);
const Config::PositionConfig& posconf = config.getPositionConfig(pos);
std::shared_ptr<Config::PositionConfig> posconf = config.getPositionConfig(pos);
applyConfigToStage(stages.at((int) State::BAN), posconf.ban);
applyConfigToStage(stages.at((int) State::PICK), posconf.pick);
applyConfigToStage(stages.at((int) State::BAN), posconf->ban);
applyConfigToStage(stages.at((int) State::PICK), posconf->pick);
currentPosition = pos;
currentPositionSet = true;

View File

@ -15,7 +15,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi
Config::RootConfig& rc = conf.getConfig();
for(int32_t tabnr = 0; tabnr < ui->tabWidget->count(); ++tabnr) {
SettingsTab* tab = (SettingsTab*) ui->tabWidget->widget(tabnr);
tab->setup(rc.getPositionConfig(tab->getPosition()), &dd);
tab->setup(*rc.getPositionConfig(tab->getPosition()), &dd);
QObject::connect(tab, SIGNAL( changed(Position, LolAutoAccept::State) ), this, SLOT( tabchanged(Position, LolAutoAccept::State) ));
QObject::connect(tab, SIGNAL( toggled(Position, LolAutoAccept::State, bool) ), this, SLOT( tabtoggled(Position, LolAutoAccept::State, bool) ));

View File

@ -71,7 +71,9 @@ void SettingsTab::pickToggled(bool b) {
}
void SettingsTab::pickChampsChanged() {
conf->pick.champs = toChampionNameList(ui->pickstage->getChampions());
auto champs = ui->pickstage->getChampions();
auto champnames = toChampionNameList(champs);
conf->pick.champs.swap(champnames);
emit changed(position, LolAutoAccept::State::BAN);
}