4
1
mirror of https://github.com/QuasarApp/Snake.git synced 2025-04-30 03:34:45 +00:00

89 lines
1.9 KiB
C
Raw Normal View History

2018-09-11 20:10:37 +03:00
#ifndef CONTROLLER_H
#define CONTROLLER_H
#include <QObject>
2018-10-30 21:23:41 +03:00
#include <QTimer>
#include <QTime>
#include "diff.h"
2018-09-11 20:10:37 +03:00
#include "snake.h"
2018-09-27 14:59:10 +03:00
#include "world.h"
2018-09-11 20:10:37 +03:00
2019-07-29 11:45:04 +03:00
class MainMenuModel;
class Controller : public QObject
2018-09-11 20:10:37 +03:00
{
2018-10-11 00:04:52 +03:00
Q_OBJECT
2018-11-25 18:10:08 +03:00
Q_PROPERTY(int long_ READ long_ NOTIFY long_changed)
2018-12-01 22:39:03 +03:00
Q_PROPERTY(int generalLong READ generalLong NOTIFY generalLongchanged)
2019-07-29 11:45:04 +03:00
Q_PROPERTY(QObject* mainMenuModel READ mainMenuModel NOTIFY mainMenuModelchanged)
2019-08-19 14:08:10 +03:00
Q_PROPERTY(bool showMenu READ showMenu WRITE setShowMenu NOTIFY showMenuChanged)
2018-11-25 18:10:08 +03:00
2018-09-11 20:10:37 +03:00
private:
2019-07-28 15:14:51 +03:00
2018-09-27 14:59:10 +03:00
World world;
QMap<int, GuiObject *> objectsContainer;
2019-07-28 15:14:51 +03:00
QTimer *timer = nullptr;
2019-07-28 15:14:51 +03:00
int lvl = 0;
2018-12-01 22:39:03 +03:00
int m_generalLong = 0;
2019-07-28 15:14:51 +03:00
bool pause = false;
2019-08-19 14:08:10 +03:00
bool _showMenu = true;
2019-07-28 15:14:51 +03:00
void generateDiff(const QMap<int, GuiObject *> &);
2018-12-01 22:39:03 +03:00
2019-07-29 11:45:04 +03:00
MainMenuModel* _networkModel = nullptr;
2018-09-11 20:10:37 +03:00
public:
Controller();
2019-07-28 15:14:51 +03:00
~Controller();
2018-10-30 21:23:41 +03:00
void startTimer();
void stopTimer();
2018-11-25 18:10:08 +03:00
int long_() const;
2018-12-01 22:39:03 +03:00
int generalLong() const;
2019-08-19 14:08:10 +03:00
bool showMenu() const;
2018-12-01 22:39:03 +03:00
2019-07-29 11:45:04 +03:00
QObject* mainMenuModel() const;
2018-10-11 18:09:35 +03:00
public slots:
2018-11-16 02:08:35 +03:00
void buttonPress();
2018-11-28 22:17:30 +03:00
void setPause(bool);
2018-11-04 15:02:03 +03:00
void update();
2018-11-25 03:24:41 +03:00
/**
* @brief nextLvl - switch to next lvl from array lvels
* @return true if all levels are passed
*/
bool nextLvl();
/**
* @brief newGame - start game from first lvl
*/
2019-07-29 11:45:04 +03:00
void handleNewGame();
/**
* @brief getGameObject
* @param id - id of guiObject;
* @return guiObject if (id is not valid return nullptr)
*/
QObject* getGameObject(int id);
2019-08-19 14:08:10 +03:00
void setShowMenu(bool showMenu);
signals:
/**
* @brief gameObjectsChanged
* @param dif
*/
void gameObjectsChanged(const Diff &dif);
2018-11-25 18:10:08 +03:00
void long_changed(int m_long);
2018-12-01 22:39:03 +03:00
void generalLongchanged(int generalLong);
2019-07-29 11:45:04 +03:00
void mainMenuModelchanged(QObject* mainMenuModel);
2019-08-19 14:08:10 +03:00
void showMenuChanged(bool showMenu);
2018-09-11 20:10:37 +03:00
};
#endif // CONTROLLER_H