]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/game.cpp
Revert "Fix settings to honor numeric conversion errors"
[dragonfireclient.git] / src / game.cpp
index 407672ac29c857b2103dcadaa692f088392b4cbb..56519d30aa9dbfa40593315c7e028c8fcd239477 100644 (file)
@@ -1337,6 +1337,8 @@ void the_game(
 
        Sky *sky = NULL;
        sky = new Sky(smgr->getRootSceneNode(), smgr, -1, client.getEnv().getLocalPlayer());
+
+       scene::ISceneNode* skybox = NULL;
        
        /*
                A copy of the local inventory
@@ -2462,6 +2464,46 @@ void the_game(
                                        delete event.hudchange.v2fdata;
                                        delete event.hudchange.sdata;
                                }
+                               else if (event.type == CE_SET_SKY)
+                               {
+                                       sky->setVisible(false);
+                                       if(skybox){
+                                               skybox->drop();
+                                               skybox = NULL;
+                                       }
+                                       // Handle according to type
+                                       if(*event.set_sky.type == "regular"){
+                                               sky->setVisible(true);
+                                       }
+                                       else if(*event.set_sky.type == "skybox" &&
+                                                       event.set_sky.params->size() == 6){
+                                               sky->setFallbackBgColor(*event.set_sky.bgcolor);
+                                               skybox = smgr->addSkyBoxSceneNode(
+                                                               tsrc->getTexture((*event.set_sky.params)[0]),
+                                                               tsrc->getTexture((*event.set_sky.params)[1]),
+                                                               tsrc->getTexture((*event.set_sky.params)[2]),
+                                                               tsrc->getTexture((*event.set_sky.params)[3]),
+                                                               tsrc->getTexture((*event.set_sky.params)[4]),
+                                                               tsrc->getTexture((*event.set_sky.params)[5]));
+                                       }
+                                       // Handle everything else as plain color
+                                       else {
+                                               if(*event.set_sky.type != "plain")
+                                                       infostream<<"Unknown sky type: "
+                                                                       <<(*event.set_sky.type)<<std::endl;
+                                               sky->setFallbackBgColor(*event.set_sky.bgcolor);
+                                       }
+
+                                       delete event.set_sky.bgcolor;
+                                       delete event.set_sky.type;
+                                       delete event.set_sky.params;
+                               }
+                               else if (event.type == CE_OVERRIDE_DAY_NIGHT_RATIO)
+                               {
+                                       bool enable = event.override_day_night_ratio.do_override;
+                                       u32 value = event.override_day_night_ratio.ratio_f * 1000;
+                                       client.getEnv().setDayNightRatioOverride(enable, value);
+                               }
                        }
                }