void TeamDeathMatch::initializePlayers(std::vector<Game::PlayerDefinition> &definitions) { Int32 index = 0; for (auto &definition : definitions) { const Team &team = getPlayerTeam(index); PlayerSkinColors &colors = definition.getColors(); colors.set(PlayerSkinColors::Trousers, team.color); colors.set(PlayerSkinColors::HairTop, team.color); index++; } }
void TeamDeathMatch::initializeRound(Game &game, std::vector<Player> &players, World &world) { teamMap.clear(); Int32 index = 0; for (auto &player : players) { const Team &team = getPlayerTeam(index); teamMap.insert(std::make_pair(&player, &team)); index++; } eventListener = std::make_unique<TeamDeathMatchPlayerEventListener>(world.getMessageQueue(), game.getSettings(), friendlyFire, teamMap); for (auto &player : players) { player.setEventListener(*eventListener); } }
//TODO: typedef? std::shared_ptr<boost::multi_array<TerrainTile*, 3>> CGameInfoCallback::getAllVisibleTiles() const { assert(player.is_initialized()); auto team = getPlayerTeam(player.get()); size_t width = gs->map->width; size_t height = gs->map->height; size_t levels = (gs->map->twoLevel ? 2 : 1); boost::multi_array<TerrainTile*, 3> tileArray(boost::extents[width][height][levels]); for (size_t x = 0; x < width; x++) for (size_t y = 0; y < height; y++) for (size_t z = 0; z < levels; z++) { if (team->fogOfWarMap[x][y][z]) tileArray[x][y][z] = &gs->map->getTile(int3(x, y, z)); else tileArray[x][y][z] = nullptr; } return std::make_shared<boost::multi_array<TerrainTile*, 3>>(tileArray); }