Esempio n. 1
0
GameManager::GameManager() :
    _activeRenderingInstance(NULL)
{
    // disable escape key for quitting viewer
    // we use an own escape implementation
    _viewer.setKeyEventSetsDone(0);

    // configure viewer to use the primary screen only
    _viewer.setUpViewOnSingleScreen(0);
    // avoids segfaults when updating the HUD
    _viewer.setThreadingModel(osgViewer::Viewer::SingleThreaded);

    // set background color
    _viewer.getCamera()->setClearColor(osg::Vec4( 0., 0., 0., 1. ));

    // window view for testing purpose, uncomment if needed
    // push with fullscreen ONLY!!!
    // _viewer.setUpViewInWindow(40, 40, 800, 600, 0);

    addRenderingInstance("game", new Game(&_viewer));
    buildMenus();

    selectRenderingInstance("main_menu");

    _keyboardHandler = new GameManagerKeyboardHandler(this);
    _viewer.addEventHandler(_keyboardHandler);
}
Esempio n. 2
0
void GameManager::buildMenus()
{
    // main menu
    {
        Menu *menu = new Menu(&_viewer);

        menu->addButton("Quit", std::tr1::bind(&GameManager::quit, this));
        menu->addButton("Highscore", std::tr1::bind(&GameManager::quit, this));
        menu->addButton("Settings", std::tr1::bind(&GameManager::quit, this));
        menu->addButton("Start game", std::tr1::bind(&GameManager::roadSelectMenu, this));

        addRenderingInstance("main_menu", menu);
    }

    // road select menu
    {
        LevelOverview *menu = new LevelOverview(&_viewer);

        // load XML document
        rapidxml::file<> mf("resources/levels/overview.xml");
        rapidxml::xml_document<> xml_doc;
        xml_doc.parse<0>(mf.data());

        // parse XML document
        for(rapidxml::node_iterator<char> it(xml_doc.first_node()); it.dereference() != NULL; ++it)
        {
            if(strcmp(it->name(), "road") == 0)
            {
                std::string mapfile = it->first_attribute("filename")->value();
                menu->addButton(it->first_attribute("name")->value(), std::tr1::bind(&GameManager::runLevel, this, mapfile));
            }
            else
            {
                throw std::runtime_error("Error: Unrecognized element in level file!");
            }
        }

        addRenderingInstance("road_select_menu", menu);
    }
}
Esempio n. 3
0
void GameManager::buildMenus()
{
	// main menu
	{
		Menu *menu = new Menu(&_viewer);

		menu->addButton("Quit", std::tr1::bind(&GameManager::quit, this));
		menu->addButton("Highscore", std::tr1::bind(&GameManager::quit, this));
		menu->addButton("Settings", std::tr1::bind(&GameManager::quit, this));
		menu->addButton("Start game", std::tr1::bind(&GameManager::startGame, this));

    	addRenderingInstance("main_menu", menu);
	}
}
Esempio n. 4
0
GameManager::GameManager() :
    _activeRenderingInstance(NULL)
{    
    // configure viewer to use the primary screen only
    _viewer.setUpViewOnSingleScreen(0);
    
    // avoids segfaults when updating the HUD
    _viewer.setThreadingModel(osgViewer::Viewer::SingleThreaded);
	
	// set background color
	_viewer.getCamera()->setClearColor(osg::Vec4( 0., 0., 0., 1. )); 

	buildMenus();
    addRenderingInstance("game", new Game(&_viewer));

    selectRenderingInstance("main_menu");
}