#ifndef MANAGER_H #define MANAGER_H #include #include #include "agent.h" #include "agentitem.h" #include "aphistory.h" #include "manageritem.h" #include "model.h" #include "Kolch_Shind/qcustomplot.h" class Manager : public QObject { Q_OBJECT public: explicit Manager(QObject *parent = 0); // конструктор void initSettings(QGroupBox *set); // создание окна настроек void initTab(QTabWidget *tabs); QVector calculateAvContenmentForGroups(uint typeCalc, uint iModel); void iteration(uint j); // геттеры uint getCowardMedian(){return this->cowardMedian;} uint getCowardNormal(){return this->cowardNormal;} uint getProtectorMedian(){return this->protectorMedian;} uint getProtectorNormal(){return this->protectorNormal;} private: QList modelList; QVector xCoord; // x координата для построения графика средней неудовлетворённости QVector yCoord; // y координата для построения графика средней неудовлетворённости QVector xBatchCoord; QVector yBatchCoord; uint cowardMedian; // число игроков в режиме труса, движущихся по медиане uint cowardNormal; // число игроков в режиме труса, движущихся по нормали uint protectorMedian; // число игроков в режиме защитника, движущихся по медиане uint protectorNormal; // число игроков в режиме защитника, движущихся по нормали int agentRadius; // радиус шарика-агента (для передачи в конструктор) uint speedDistr; // распределение скоростей (однородное) uint gamerSpeed; // скорость агентов bool period; // метка периодичности краёв сцены (true - сцена периодична) uint initDistr; // метка начального распределения игроков сцены (0 - случайное, 1 - на круге) uint enmity; // минимальное расстояние, на которое игроки могут приближаются друг к другу, enmity = 0 - возможно покоординатное совпадение игроков uint newEnmity; // параметр enmity, полученный из диалогового окна int viewOrPackageMode; // 0 - визуализация одной модели, 1 - пакетное задание int nIterations; // число итераций для пакетного задания int nModels; // число запусков модели для пакетного задания uint typeContentment; // способ расчёта ср.неудовлетворённости: 0 - сравнение со всеми агентами, 1 - сравнение внутри окрестности //qreal avContentment; // ср.неудовлетворённость (ToDo: а надо ли?) uint radiusLocality; // радиус окрестности в случае typeContenment = 1 QWidget *window; QGridLayout *base; QTabWidget *tabWindow; QGraphicsScene *scene; ManagerItem *manItem; QCustomPlot *plot; QPushButton *createButton; // кнопка создания модели QPushButton *buttonTime; // кнопка "Pause/Start" QLabel *labelContent; QSpinBox *spinLocality; QComboBox *viewOrPackage; QCheckBox *checkLink; QCheckBox *checkOutputToTxt; QComboBox *comboTime; QSpinBox *spinIterations; QSpinBox *spinModels; bool outputToTxt; QTimer *timer; QProgressBar *prBar; QComboBox *graphCombo; QCustomPlot *batchPlot; QLineEdit *lineSaveWithName; APHistory *history; private slots: void setCowardMedian(int cm) {this->cowardMedian = cm;} void setCowardNormal(int cn) {this->cowardNormal = cn;} void setProtectorMedian(int pm) {this->protectorMedian = pm;} void setProtectorNormal(int pn) {this->protectorNormal = pn;} void setAgentRadius(int rad){this->agentRadius = rad;} void setSpeedDistr(int spDistr) {this->speedDistr = spDistr;} void setGamerSpeed(int gamerSp) {this->gamerSpeed = gamerSp;} void setPeriodicity(bool value) {this->period = value;} void setDistr(int distr){this->initDistr = distr;} void setEnmity(int enm) {this->enmity = enm;} void setNewEnmity(int nEnm){this->newEnmity = nEnm;} void setviewOrPackageMode(int val){this->viewOrPackageMode = val;} void setNIterations(int number){this->nIterations = number;} void setNModels(int number){this->nModels = number;} void setOutputToTxt(bool output) {this->outputToTxt = output;} void setTypeContenment(int type){this->typeContentment = type;} //void setAvContentment(qreal cont){this->avContentment = cont;} void setRadiusLocality(int rad){this->radiusLocality = rad;} void initModel(); // создание модели по полученным данным void timerEvent(); // итерация игры - вычисление новых координат для всех игроков void handlePrBar(); void handleButton(); // остановка/возобновление игры void timerRestart(int index); // перезапуск таймера void resetProgressBarAndHistory(); void composeGraph(int iModel); void saveGragh(); // вкл/выкл пункты окна настроеек void manageSpinLocality(int value); void managePackageOptions(int val); }; #endif // MANAGER_H