std::vector<std::vector<std::string> > & getDescription() { if (_desc.size() == 0) { _desc.push_back(std::vector<std::string>()); _desc.push_back(std::vector<std::string>()); std::stringstream ss; _desc[0].push_back("Player Type:"); _desc[0].push_back("Time Limit:"); _desc[0].push_back("C Value:"); _desc[0].push_back("Max Traversals:"); _desc[0].push_back("Max Children:"); _desc[0].push_back("Move Ordering:"); _desc[0].push_back("Player To Move:"); _desc[0].push_back("Opponent Model:"); _desc[0].push_back("Move Selection:"); ss << "Rave"; _desc[1].push_back(ss.str()); ss.str(std::string()); ss << timeLimit() << "ms"; _desc[1].push_back(ss.str()); ss.str(std::string()); ss << cValue(); _desc[1].push_back(ss.str()); ss.str(std::string()); ss << maxTraversals(); _desc[1].push_back(ss.str()); ss.str(std::string()); ss << maxChildren(); _desc[1].push_back(ss.str()); ss.str(std::string()); ss << MoveOrderMethod::getName(moveOrderingMethod()); _desc[1].push_back(ss.str()); ss.str(std::string()); ss << PlayerToMove::getName(playerToMoveMethod()); _desc[1].push_back(ss.str()); ss.str(std::string()); ss << PlayerModels::getName(playerModel((maxPlayer()+1)%2)); _desc[1].push_back(ss.str()); ss.str(std::string()); ss << UCTMoveSelect::getName(rootMoveSelectionMethod()); _desc[1].push_back(ss.str()); ss.str(std::string()); } return _desc; }
void GameView::UpdateCamera() { bool bAnooneAline = false; for (Player* p : m_players) { if (p->IsAlive()) { bAnooneAline = true; break; } } if (bAnooneAline) { // Fit players in view Vector2 minPlayer((float)m_pTilemap->getWidth(), (float)m_pTilemap->getHeight()); Vector2 maxPlayer(0.f); for (auto pPlayer : m_players) { minPlayer.x = onut::min(pPlayer->GetPosition().x, minPlayer.x); minPlayer.y = onut::min(pPlayer->GetPosition().y, minPlayer.y); maxPlayer.x = onut::max(pPlayer->GetPosition().x, maxPlayer.x); maxPlayer.y = onut::max(pPlayer->GetPosition().y, maxPlayer.y); } minPlayer.x -= 3; minPlayer.y -= 3; maxPlayer.x += 3; maxPlayer.y += 3; m_camera = (minPlayer + maxPlayer) * .5f; float playerViewHeight = maxPlayer.y - minPlayer.y; float zoomH = OScreenHf / playerViewHeight; if (zoomH > 64.f) zoomH = 64.f; float playerViewWidth = maxPlayer.x - minPlayer.x; float zoomW = OScreenWf / playerViewWidth; if (zoomW > 64.f) zoomW = 64.f; m_zoom = onut::min(zoomW, zoomH); } // Animate to target position m_cameraReal = Vector2::Lerp(m_cameraReal, m_camera, ODT * 1.5f); m_zoomReal = lerpf(m_zoomReal, m_zoom, ODT * 4.f); // Update camera based on the players position GetRootNode()->SetScale(Vector2(m_zoomReal)); GetRootNode()->SetPosition(-m_cameraReal * m_zoomReal + OScreenf * .5f); }