//--------------------------------------------------------- //--------------------------------------------------------- // game.h #ifndef GAME_H #define GAME_H #include #include #include #include #include "faction.h" #include "map.h" #include "projectile.h" class Game : public QObject { Q_OBJECT public: Game(QString name, bool multiplayer, QString mapName); ~Game(); bool loadMap(QString mapName); void unloadMap(); void start(); void finish(); Map *getMap() { return map; }; bool isActive() { return active; }; public slots: void fastTimerEvent(QTimerEvent *); void mediumTimerEvent(QTimerEvent *); void slowTimerEvent(QTimerEvent *); protected: QString name; bool multiplayer; Map *map; bool active; QTimer fastTimer, mediumTimer, slowTimer; QList factions; QList projectiles; }; #endif //--------------------------------------------------------- //--------------------------------------------------------- // game.cpp #include #include "game.h" Game::Game(QString name, bool multiplayer, QString mapName) : QObject(), name(name), multiplayer(multiplayer), map(0), active(false), fastTimer(), mediumTimer(), slowTimer() { loadMap(mapName); connect(&fastTimer, SIGNAL(timeout()), this, SLOT(fastTimerEvent())); connect(&mediumTimer, SIGNAL(timeout()), this, SLOT(mediumTimerEvent())); connect(&slowTimer, SIGNAL(timeout()), this, SLOT(slowTimerEvent())); // Testing data factions.append(new Faction(1, this)); factions.append(new Faction(2, this)); } Game::~Game() { finish(); unloadMap(); } bool Game::loadMap(QString mapName) { map = Map::getMap(mapName); if(!map) return false; return true; } void Game::unloadMap() { if(!map) return; map->notUsed(); map = 0; } void Game::start() { if(active) return; fastTimer.start(20); mediumTimer.start(500); slowTimer.start(1000); active = true; } void Game::finish() { if(!active) return; fastTimer.stop(); mediumTimer.stop(); slowTimer.stop(); active = false; } void Game::fastTimerEvent(QTimerEvent *) { qDebug() << "Fast"; } void Game::mediumTimerEvent(QTimerEvent *) { qDebug() << "Medium"; } void Game::slowTimerEvent(QTimerEvent *) { qDebug() << "Slow"; }