summaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
authorZeg9 <dazeg9@gmail.com>2013-05-09 18:23:48 +0200
committerPilzAdam <pilzadam@minetest.net>2013-05-10 15:04:21 +0200
commit81c863ac4df1530123ef7952713623dadb049bec (patch)
tree62b2060c1758bafb22f1d05d6a16f9b0256883ff /src/main.cpp
parentd859ad7ed7419ce858b4cb1fc02c681563145bdb (diff)
downloadminetest-81c863ac4df1530123ef7952713623dadb049bec.tar.gz
minetest-81c863ac4df1530123ef7952713623dadb049bec.tar.bz2
minetest-81c863ac4df1530123ef7952713623dadb049bec.zip
Add clouds to all loading screens and better progress handling
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp44
1 files changed, 26 insertions, 18 deletions
diff --git a/src/main.cpp b/src/main.cpp
index b87a3e6d0..94382ec60 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -88,6 +88,10 @@ Settings *g_settings = &main_settings;
Profiler main_profiler;
Profiler *g_profiler = &main_profiler;
+// Menu clouds are created later
+Clouds *g_menuclouds = 0;
+irr::scene::ISceneManager *g_menucloudsmgr = 0;
+
/*
Debug streams
*/
@@ -1569,6 +1573,19 @@ int main(int argc, char *argv[])
skin->setColor(gui::EGDC_FOCUSED_EDITABLE, video::SColor(255,96,134,49));
#endif
+
+ // Create the menu clouds
+ if (!g_menucloudsmgr)
+ g_menucloudsmgr = smgr->createNewSceneManager();
+ if (!g_menuclouds)
+ g_menuclouds = new Clouds(g_menucloudsmgr->getRootSceneNode(),
+ g_menucloudsmgr, -1, rand(), 100);
+ g_menuclouds->update(v2f(0, 0), video::SColor(255,200,200,255));
+ scene::ICameraSceneNode* camera;
+ camera = g_menucloudsmgr->addCameraSceneNode(0,
+ v3f(0,0,0), v3f(0, 60, 100));
+ camera->setFarValue(10000);
+
/*
GUI stuff
*/
@@ -1744,18 +1761,6 @@ int main(int argc, char *argv[])
&g_menumgr, &menudata, g_gamecallback);
menu->allowFocusRemoval(true);
- // Always create clouds because they may or may not be
- // needed based on the game selected
- Clouds *clouds = new Clouds(smgr->getRootSceneNode(),
- smgr, -1, rand(), 100);
- clouds->update(v2f(0, 0), video::SColor(255,200,200,255));
-
- // A camera to see the clouds
- scene::ICameraSceneNode* camera;
- camera = smgr->addCameraSceneNode(0,
- v3f(0,0,0), v3f(0, 60, 100));
- camera->setFarValue(10000);
-
if(error_message != L"")
{
verbosestream<<"error_message = "
@@ -1796,7 +1801,7 @@ int main(int argc, char *argv[])
}
// Time calc for the clouds
- f32 dtime; // in seconds
+ f32 dtime=0; // in seconds
if (cloud_menu_background) {
u32 time = device->getTimer()->getTime();
if(time > lasttime)
@@ -1811,9 +1816,9 @@ int main(int argc, char *argv[])
if (cloud_menu_background) {
// *3 otherwise the clouds would move very slowly
- clouds->step(dtime*3);
- clouds->render();
- smgr->drawAll();
+ g_menuclouds->step(dtime*3);
+ g_menuclouds->render();
+ g_menucloudsmgr->drawAll();
drawMenuOverlay(driver, menutextures);
drawMenuHeader(driver, menutextures);
drawMenuFooter(driver, menutextures);
@@ -1856,8 +1861,6 @@ int main(int argc, char *argv[])
infostream<<"Dropping main menu"<<std::endl;
menu->drop();
- clouds->drop();
- smgr->clear();
}
playername = wide_to_narrow(menudata.name);
@@ -2018,6 +2021,7 @@ int main(int argc, char *argv[])
gamespec,
simple_singleplayer_mode
);
+ smgr->clear();
} //try
catch(con::PeerNotFoundException &e)
@@ -2048,6 +2052,10 @@ int main(int argc, char *argv[])
}
} // Menu-game loop
+
+ g_menuclouds->drop();
+ g_menucloudsmgr->drop();
+
delete input;
/*