From: <au...@us...> - 2010-02-23 01:00:27
|
Revision: 4810 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=4810&view=rev Author: auria Date: 2010-02-23 01:00:21 +0000 (Tue, 23 Feb 2010) Log Message: ----------- Added a 'loading' screen, so that the game does not seem unresponsive when loading a big track Modified Paths: -------------- main/trunk/src/guiengine/engine.cpp main/trunk/src/guiengine/engine.hpp main/trunk/src/race/race_manager.cpp Added Paths: ----------- main/trunk/data/gui/loading.png Removed Paths: ------------- main/trunk/data/gui/main_challenges.png Copied: main/trunk/data/gui/loading.png (from rev 4805, main/trunk/data/gui/main_challenges.png) =================================================================== (Binary files differ) Deleted: main/trunk/data/gui/main_challenges.png =================================================================== (Binary files differ) Modified: main/trunk/src/guiengine/engine.cpp =================================================================== --- main/trunk/src/guiengine/engine.cpp 2010-02-23 00:09:09 UTC (rev 4809) +++ main/trunk/src/guiengine/engine.cpp 2010-02-23 01:00:21 UTC (rev 4810) @@ -292,6 +292,38 @@ } // render // ----------------------------------------------------------------------------- + +void renderLoading() +{ + g_skin->drawBgImage(); + ITexture* loading = irr_driver->getTexture( file_manager->getGUIDir() + "/loading.png" ); + + const int texture_w = loading->getSize().Width; + const int texture_h = loading->getSize().Height; + + core::dimension2d<u32> frame_size = GUIEngine::getDriver()->getCurrentRenderTargetSize(); + const int screen_w = frame_size.Width; + const int screen_h = frame_size.Height; + + const core::rect< s32 > dest_area = core::rect< s32 >(screen_w/2 - texture_w/2, + screen_h/2 - texture_h/2, + screen_w/2 + texture_w/2, + screen_h/2 + texture_h/2); + + const core::rect< s32 > source_area = core::rect< s32 >(0, 0, texture_w, texture_h); + + GUIEngine::getDriver()->draw2DImage( loading, dest_area, source_area, + 0 /* no clipping */, 0, true /* alpha */); + + + g_title_font->draw(_("Loading"), + core::rect< s32 >( 0, screen_h/2 + texture_h/2, screen_w, screen_h ), + SColor(255,255,255,255), + true/* center h */, false /* center v */ ); + +} // renderLoading + +// ----------------------------------------------------------------------------- Widget* getWidget(const char* name) { // if a modal dialog is shown, search within it too Modified: main/trunk/src/guiengine/engine.hpp =================================================================== --- main/trunk/src/guiengine/engine.hpp 2010-02-23 00:09:09 UTC (rev 4809) +++ main/trunk/src/guiengine/engine.hpp 2010-02-23 01:00:21 UTC (rev 4810) @@ -299,6 +299,7 @@ void reshowCurrentScreen(); void render(float dt); + void renderLoading(); void transmitEvent(Widget* widget, std::string& name, const int playerID); Modified: main/trunk/src/race/race_manager.cpp =================================================================== --- main/trunk/src/race/race_manager.cpp 2010-02-23 00:09:09 UTC (rev 4809) +++ main/trunk/src/race/race_manager.cpp 2010-02-23 01:00:21 UTC (rev 4810) @@ -207,6 +207,12 @@ */ void RaceManager::startNextRace() { + IrrlichtDevice* device = irr_driver->getDevice(); + GUIEngine::renderLoading(); + device->getVideoDriver()->endScene(); + device->getVideoDriver()->beginScene(true, true, video::SColor(255,100,101,140)); + + m_num_finished_karts = 0; m_num_finished_players = 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |