lolautoaccept/include/config.h

68 lines
1.2 KiB
C++

#pragma once
#include <memory>
#include <QJsonObject>
#include "position.h"
#include "runepage.h"
class Config {
public:
struct StageConfig {
StageConfig();
StageConfig(const QJsonObject&);
operator QJsonObject() const;
std::vector<std::string> champs;
bool enabled = false;
};
struct PositionConfig {
PositionConfig();
PositionConfig(const QJsonObject&);
operator QJsonObject() const;
Position position; // top, bot, sup,...
StageConfig ban;
StageConfig pick;
};
struct RunePageConfig {
RunePageConfig();
RunePageConfig(const QJsonObject&);
operator QJsonObject() const;
QString name;
RunePage runepage;
};
struct RootConfig {
RootConfig();
RootConfig(const QJsonObject&);
operator QJsonObject() const;
std::shared_ptr<Config::PositionConfig> getPositionConfig(Position position);
std::vector<std::shared_ptr<PositionConfig>> positionConfigs;
std::vector<::RunePage*> runePages;
bool enabledAutoAccept;
bool enabledSmiteWarn;
bool enabledAutoWrite;
std::string autoWriteText;
};
Config();
~Config();
bool load();
void save();
RootConfig& getConfig();
private:
std::string configFolderPath;
std::string configFilePath;
RootConfig root;
};