VectorEditElement::VectorEditElement(gui::IGUIElement* parent, int x, int y, const vector3df& vector): target(vector) { IGUIEnvironment* env = EditorEnvironment::getInstance()->getGUI(); int editBoxWidth = 70; int pos = x; env->addSpinBox( core::stringw(vector.X).c_str() , core::rect<s32>(pos,y,pos+editBoxWidth,y+getHeight()),true, parent); pos += editBoxWidth+5; env->addSpinBox( core::stringw(vector.Y).c_str() , core::rect<s32>(pos,y,pos+editBoxWidth,y+getHeight()),true, parent); pos += editBoxWidth+5; env->addSpinBox( core::stringw(vector.Z).c_str() , core::rect<s32>(pos,y,pos+editBoxWidth,y+getHeight()),true, parent); }
void MultiBouncerGame::initGUI() { //TODO: Filesystem tools //Clear file names m_MapFiles.clear(); if( !filesystem::exists( "maps" ) ) { std::cout << "Directory maps does not exist!" << std::endl; exit( EXIT_FAILURE ); } //Read bouncer and map file names filesystem::directory_iterator end; for( filesystem::directory_iterator x( "maps" ); x != end; x++ ) m_MapFiles.push_back( x->path() ); for( unsigned int x = 0; x < m_MapFiles.size(); x++ ) { ConfigStorage *conf = new ConfigStorage(); conf->parseXMLFile( m_MapFiles.at( x ).string().c_str(), "Data" ); m_MapData.push_back( conf ); } //Get gui environment //TODO: Add a better method for gui management IGUIEnvironment *gui = m_Engine->getIrrlichtDevice()->getGUIEnvironment(); //some defines for easier size definitions #define W mWinWidth #define H mWindHeight #define W2 (W/2) #define H2 (H/2) #define W4 (W/4) #define H4 (H/4) //Add main menu window m_MainMenu = gui->addWindow( recti( 20, 20, W - 20, H - 20 ), false, L"MainMenu" ); m_MainMenu->getCloseButton()->setVisible( false ); m_MainMenu->setDraggable( false ); m_MainMenu->setDrawTitlebar( false ); //Add the reconnect button mReconnectButton = gui->addButton( recti( 10, 10, 410, 60 ), m_MainMenu, -1, L"(Re)connect wiimotes" ); mReconnectButton->setVisible( m_Engine->getConfig()->get<bool>( "UseWiimotes", false ) ); //Add the bouncer list m_MapList = gui->addListBox( recti( W4, H4, 3 * W4, 3 * H4 ), m_MainMenu, -1, true ); for( unsigned int x = 0; x < m_MapFiles.size(); x++ ) m_MapList->addItem( stringw( m_MapData.at( x )->get<String>( "MapName", "No Name!" ) ).c_str() ); m_OkButton = gui->addButton( recti( W4, 3 * H4 + 10, W2 - 5, 3 * H4 + 60 ), m_MainMenu, -1, L"Start" ); m_PlayerCounter = gui->addSpinBox( L"Spieleranzahl:", recti( W2 + 4, 3 * H4 + 10, 3 * W4, 3 * H4 + 60 ), true, m_MainMenu ); m_PlayerCounter->getEditBox()->setTextAlignment( irr::gui::EGUIA_CENTER, irr::gui::EGUIA_CENTER ); m_PlayerCounter->setDecimalPlaces( 0 ); m_PlayerCounter->setRange( 1.f, 32.f ); m_PlayerCounter->setValue( 2.f ); //Create ingame gui //Upper window for scores etc. mScoreWindow = gui->addWindow( recti( 0, 0, W, 50 ) ); mScoreWindow->setDraggable( false ); mScoreWindow->setDrawTitlebar( false ); mScoreWindow->getCloseButton()->setVisible( false ); mScoreCounter = gui->addStaticText( TEXT_SCORE_ZERO, recti( W4, 0, 3 * W4, 50 ), false, false, mScoreWindow ); mScoreCounter->setTextAlignment( irr::gui::EGUIA_CENTER, irr::gui::EGUIA_CENTER ); mScoreCounter->setOverrideColor( SColor( 255, 255, 255, 255 ) ); //undefine sizes #undef W #undef H #undef W2 #undef H2 #undef W4 #undef H4 //hide all windows m_MainMenu->setVisible( false ); mScoreWindow->setVisible( false ); }