diff options
author | Perttu Ahola <celeron55@gmail.com> | 2011-06-26 20:00:04 +0300 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2011-06-26 20:00:04 +0300 |
commit | d702a2c33b975a4763f6831a0ba5d8fce110c8f9 (patch) | |
tree | d514fbe9424a1c9b6c92d312f4760c6c08280b6e | |
parent | 7e59938c5468a948634d93adaa61a71d383852ff (diff) | |
download | minetest-d702a2c33b975a4763f6831a0ba5d8fce110c8f9.tar.gz minetest-d702a2c33b975a4763f6831a0ba5d8fce110c8f9.tar.bz2 minetest-d702a2c33b975a4763f6831a0ba5d8fce110c8f9.zip |
Made the initial loading screen slightly more alive
-rw-r--r-- | src/game.cpp | 77 |
1 files changed, 52 insertions, 25 deletions
diff --git a/src/game.cpp b/src/game.cpp index 3197985e6..55ae6686e 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -639,6 +639,34 @@ void update_skybox(video::IVideoDriver* driver, } } +/* + Draws a screen with a single text on it. + Text will be removed when the screen is drawn the next time. +*/ +/*gui::IGUIStaticText **/ +void draw_load_screen(const std::wstring &text, + video::IVideoDriver* driver, gui::IGUIFont* font) +{ + v2u32 screensize = driver->getScreenSize(); + const wchar_t *loadingtext = text.c_str(); + core::vector2d<u32> textsize_u = font->getDimension(loadingtext); + core::vector2d<s32> textsize(textsize_u.X,textsize_u.Y); + core::vector2d<s32> center(screensize.X/2, screensize.Y/2); + core::rect<s32> textrect(center - textsize/2, center + textsize/2); + + gui::IGUIStaticText *guitext = guienv->addStaticText( + loadingtext, textrect, false, false); + guitext->setTextAlignment(gui::EGUIA_CENTER, gui::EGUIA_UPPERLEFT); + + driver->beginScene(true, true, video::SColor(255,0,0,0)); + guienv->drawAll(); + driver->endScene(); + + guitext->remove(); + + //return guitext; +} + void the_game( bool &kill, bool random_input, @@ -655,6 +683,9 @@ void the_game( { video::IVideoDriver* driver = device->getVideoDriver(); scene::ISceneManager* smgr = device->getSceneManager(); + + // Calculate text height using the font + u32 text_height = font->getDimension(L"Random test string").Height; v2u32 screensize(0,0); v2u32 last_screensize(0,0); @@ -674,20 +705,10 @@ void the_game( /* Draw "Loading" screen */ - const wchar_t *loadingtext = L"Loading and connecting..."; - u32 text_height = font->getDimension(loadingtext).Height; - core::vector2d<s32> center(screensize.X/2, screensize.Y/2); - core::vector2d<s32> textsize(300, text_height); - core::rect<s32> textrect(center - textsize/2, center + textsize/2); - - gui::IGUIStaticText *gui_loadingtext = guienv->addStaticText( - loadingtext, textrect, false, false); - gui_loadingtext->setTextAlignment(gui::EGUIA_CENTER, gui::EGUIA_UPPERLEFT); - - driver->beginScene(true, true, video::SColor(255,0,0,0)); - guienv->drawAll(); - driver->endScene(); + /*gui::IGUIStaticText *gui_loadingtext = */ + //draw_load_screen(L"Loading and connecting...", driver, font); + draw_load_screen(L"Loading...", driver, font); /* Create server. @@ -695,6 +716,7 @@ void the_game( */ SharedPtr<Server> server; if(address == ""){ + draw_load_screen(L"Creating server...", driver, font); std::cout<<DTIME<<"Creating server"<<std::endl; server = new Server(map_dir); server->start(port); @@ -704,9 +726,11 @@ void the_game( Create client */ + draw_load_screen(L"Creating client...", driver, font); std::cout<<DTIME<<"Creating client"<<std::endl; Client client(device, playername.c_str(), password, draw_control); + draw_load_screen(L"Resolving address...", driver, font); Address connect_address(0,0,0,0, port); try{ if(address == "") @@ -720,7 +744,7 @@ void the_game( std::cout<<DTIME<<"Couldn't resolve address"<<std::endl; //return 0; error_message = L"Couldn't resolve address"; - gui_loadingtext->remove(); + //gui_loadingtext->remove(); return; } @@ -753,11 +777,17 @@ void the_game( { break; } + + std::wostringstream ss; + ss<<L"Connecting to server... (timeout in "; + ss<<(int)(10.0 - time_counter + 1.0); + ss<<L" seconds)"; + draw_load_screen(ss.str(), driver, font); - // Update screen + /*// Update screen driver->beginScene(true, true, video::SColor(255,0,0,0)); guienv->drawAll(); - driver->endScene(); + driver->endScene();*/ // Update client and server @@ -787,7 +817,7 @@ void the_game( error_message = L"Connection timed out."; std::cout<<DTIME<<"Timed out."<<std::endl; } - gui_loadingtext->remove(); + //gui_loadingtext->remove(); return; } @@ -849,7 +879,7 @@ void the_game( Move into game */ - gui_loadingtext->remove(); + //gui_loadingtext->remove(); /* Add some gui stuff @@ -2254,15 +2284,12 @@ void the_game( generator and other stuff quits */ { - const wchar_t *shuttingdowntext = L"Shutting down stuff..."; - gui::IGUIStaticText *gui_shuttingdowntext = guienv->addStaticText( - shuttingdowntext, textrect, false, false); - gui_shuttingdowntext->setTextAlignment(gui::EGUIA_CENTER, - gui::EGUIA_UPPERLEFT); - driver->beginScene(true, true, video::SColor(255,0,0,0)); + /*gui::IGUIStaticText *gui_shuttingdowntext = */ + draw_load_screen(L"Shutting down stuff...", driver, font); + /*driver->beginScene(true, true, video::SColor(255,0,0,0)); guienv->drawAll(); driver->endScene(); - gui_shuttingdowntext->remove(); + gui_shuttingdowntext->remove();*/ } } |