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); }
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); } }
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); } }
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"); }