#pragma once #include #include #include #include "runeaspekt.h" #include "runepage.h" #include "runestyle.h" namespace Ui { class RuneEditor; } class ClientAPI; class RuneAspektButton; class RuneAspektButtonGroup; class QGridLayout; class RuneEditor : public QDialog { Q_OBJECT public: explicit RuneEditor(QWidget* parent = nullptr); ~RuneEditor(); void setClient(ClientAPI& client); void setRunepage(const ::RunePage& rp); void selectStyle(uint32_t id); void selectSubStyle(uint32_t id); void clearLayout(QLayout* layout); void setName(QString text); QString getName() const; const RunePage& getRunepage(); signals: void selectionChanged(); void selectPrimary(int aspektId); void selectSecondary(int aspektId); private: const RuneStyle* getRuneStyle(uint32_t id) const; RuneAspektButton* createStyleButton(const RuneStyle& rs, bool selected); RuneAspektButton* createAspektButton(uint32_t perk); RuneAspektButton* createButtonFromResource(QString resource); void fillRuneStyle(QGridLayout* target, const RuneStyle& rs); QString fixString(QString text); Ui::RuneEditor* ui; ClientAPI* client = nullptr; ::RunePage runepage; std::vector aspekts; std::vector styles; // 0 = keystone, 1-3 = main runes, 4 = sub runes (2), 5-7 = stats QVector groups; };