void FormGame:: createGame() { _green_circles_destroyers = 0; _red_circles_destroyers = 0; RandomNumberMannager::_index = 0; _tanks.clear(); _timing = 0; _game = Game::instance(); _game->init(); Team* team_1 = new Team(GREEN, "Green", _game); Team* team_2 = new Team(RED, "Red", _game); for(int i = 0; i < _players_data.size(); ++i) { PlayerData pd = _players_data.at(i); Player* player = new Player(pd._nick, pd._rank, pd._index_of_tank, _scene, _mini_map_scene, (pd._team == 1 ? team_1: team_2)); player->getTank()->setObstructecAreas(Terrain::instance()->getObstructedAreas()); player->getTank()->setCorner(Terrain::instance()->getWidthInPX(), Terrain::instance()->getHeightInPX()); _tanks.append(player->getTank()); connect(player->getTank(), &ITank::notifyDead, this, &FormGame::updateTankDeaths); connect(player->getTank(), &ITank::notifyLevelUp, this, &FormGame::updateTankLevel); connect(player->getTank(), &ITank::notifyTimeToReborn, this, &FormGame::updateTankTimeToReborn); connect(player->getTank(), &ITank::notifyReborn, this, &FormGame::updateTankReborn); } int index_of_this_player = TcpGameConnectionClient::instance()->index(); if(_players_data.at(index_of_this_player)._team == 1) team_2->setLikeEnemy(); else team_1->setLikeEnemy(); foreach(IObject * object, Terrain::instance()->objects()) { object->setTanks(_tanks); if(object->inherits("CircleOfPower")) { CircleOfPower* cp = dynamic_cast<CircleOfPower*>(object); Team* team = cp->team() == 1 ? team_1 : team_2; if(cp->player() <= team->getTanks().size()) cp->setTank(team->getTanks().at(cp->player()-1)); connect(cp, &CircleOfPower::notifyDesactive, this, &FormGame::circleOfPowerDesactive); } object->initObject(); }