#include #include #include class Cell; class GameManager : public QObject { public: static GameManager& getInstance() { static GameManager instance; return instance; } void buildGameTable(int colSize, int rowSize, double radius, double start_x_coordinate, double start_y_coordinate); UnitsQueue* getTurnQueue(); void AddToUnitQueue(Unit* unit); void RmFromUnitQueue(Unit* unit); Player* getCurrentPlayer(); int getCurPlayerId(); private: private: explicit GameManager(QObject *parent = nullptr); std::vector< std::vector< Cell* > > game_table_; int col_table_size_, row_table_size_; double cell_radius_, start_x_coordinate_, start_y_coordinate_; void generateTable(); void printAll(); /******************************/ UnitsQueue turn_queue_; PlayerManager* player_manager_; int cur_player_id_; };