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;
    }
Exemple #2
0
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);
}