exdeath/src/exdeath.hh

130 lines
2.6 KiB
C++

#ifndef EXDEATH_HH_GUARD
#define EXDEATH_HH_GUARD
#include <random>
#include <QButtonGroup>
#include <QCheckBox>
#include <QComboBox>
#include <QCryptographicHash>
#include <QErrorMessage>
#include <QFile>
#include <QFileDialog>
#include <QFormLayout>
#include <QGridLayout>
#include <QGroupBox>
#include <QIODevice>
#include <QLabel>
#include <QList>
#include <QMessageBox>
#include <QPixmap>
#include <QPushButton>
#include <QRadioButton>
#include <QSettings>
#include <QSpinBox>
#include <QStandardPaths>
#include <QVBoxLayout>
#include <QWidget>
#include "data.hh"
#include "randomizer.hh"
#if 0
#include "fiesta.hh"
#endif
class Exdeath : public QWidget {
public:
Exdeath(QSettings *cfg, QList<QPair<QString,QString> > modes, QList<QPair<QString,QString> > NEDs, QWidget *parent = nullptr);
~Exdeath();
private:
QSettings *_cfg;
QString filename;
QErrorMessage *error;
QVBoxLayout *layApp;
QHBoxLayout *layColumns;
QVBoxLayout *layLeft;
QVBoxLayout *layRight;
// Main settings
QGridLayout *layMain;
QGroupBox *grpMain;
QLabel *txtROM;
QLabel *txtMode;
QLabel *txtUnlock;
QLabel *txtPortraits;
QLabel *txtSound;
QPushButton *btnROM;
QPushButton *btnApply;
QPushButton *btnSave;
QComboBox *selMode;
QCheckBox *chkUnlock;
QCheckBox *chkPortraits;
QCheckBox *chkSound;
// Randomized settings
QGroupBox *grpRandom;
QFormLayout *layRandom;
QSpinBox *numSeed;
QComboBox *selNED;
QCheckBox *chkRandom;
#if 0
QCheckBox *chkFiesta;
QComboBox *selFiesta;
QComboBox *selModifier;
//QCheckBox *chkVoid;
#endif
// Innate abilities
QGroupBox *grpInnates;
QVBoxLayout *layInnates;
QCheckBox *chkPassages;
QCheckBox *chkPitfalls;
QCheckBox *chkLiteStep;
QCheckBox *chkDash;
QCheckBox *chkLearning;
bool innates_enabled;
// Multipliers
QGroupBox *grpMulti;
QFormLayout *layMulti;
QHBoxLayout *layXP;
QHBoxLayout *layAP;
QHBoxLayout *layGil;
QButtonGroup *butsXP;
QButtonGroup *butsAP;
QButtonGroup *butsGil;
QRadioButton *radXP[4];
QRadioButton *radAP[4];
QRadioButton *radGil[4];
// NED preview
QGroupBox *grpPreview;
QVBoxLayout *layPreview;
QLabel *txtPreview;
QPixmap *imgPreview;
// Initialization
void initMain(QList<QPair<QString,QString> > modes);
void initInnates(void);
void initRandom(QList<QPair<QString,QString> > NEDs);
void initMulti(void);
void initPreview(void);
void initConfig(void);
// Event handlers
void btnROM_clicked(bool trigger);
void btnApply_clicked(bool trigger);
void btnSave_clicked(bool trigger);
void selMode_index(int idx);
void selNED_index(int idx);
// Where the magic happens
void applyPatch(QFile *file, QIODevice *Data);
void applyInnates(QFile *file);
};
#endif