From a73b10eb1c17d7be32c432cb15f508c7f99c5209 Mon Sep 17 00:00:00 2001
From: Perttu Ahola <celeron55@gmail.com>
Date: Fri, 29 Apr 2011 17:53:07 +0300
Subject: made proper skyboxes for dawn/evening and night

---
 data/skybox1_dawn.png  | Bin 0 -> 598 bytes
 data/skybox1_night.png | Bin 0 -> 2247 bytes
 data/skybox2_dawn.png  | Bin 0 -> 199 bytes
 data/skybox2_night.png | Bin 0 -> 2583 bytes
 data/skybox3_dawn.png  | Bin 0 -> 190 bytes
 data/skybox3_night.png | Bin 0 -> 190 bytes
 src/game.cpp           |  66 ++++++++++++++++++++++++++++++++++++++++++-------
 src/utility.h          |   3 ++-
 8 files changed, 59 insertions(+), 10 deletions(-)
 create mode 100644 data/skybox1_dawn.png
 create mode 100644 data/skybox1_night.png
 create mode 100644 data/skybox2_dawn.png
 create mode 100644 data/skybox2_night.png
 create mode 100644 data/skybox3_dawn.png
 create mode 100644 data/skybox3_night.png

diff --git a/data/skybox1_dawn.png b/data/skybox1_dawn.png
new file mode 100644
index 000000000..9711c4781
Binary files /dev/null and b/data/skybox1_dawn.png differ
diff --git a/data/skybox1_night.png b/data/skybox1_night.png
new file mode 100644
index 000000000..32e43a63e
Binary files /dev/null and b/data/skybox1_night.png differ
diff --git a/data/skybox2_dawn.png b/data/skybox2_dawn.png
new file mode 100644
index 000000000..a761dff2d
Binary files /dev/null and b/data/skybox2_dawn.png differ
diff --git a/data/skybox2_night.png b/data/skybox2_night.png
new file mode 100644
index 000000000..beb07a9cf
Binary files /dev/null and b/data/skybox2_night.png differ
diff --git a/data/skybox3_dawn.png b/data/skybox3_dawn.png
new file mode 100644
index 000000000..22c8cbef5
Binary files /dev/null and b/data/skybox3_dawn.png differ
diff --git a/data/skybox3_night.png b/data/skybox3_night.png
new file mode 100644
index 000000000..bb509789b
Binary files /dev/null and b/data/skybox3_night.png differ
diff --git a/src/game.cpp b/src/game.cpp
index 8981638a8..771b05d87 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -580,6 +580,47 @@ void getPointedNode(Client *client, v3f player_position,
 	} // for coords
 }
 
+void update_skybox(video::IVideoDriver* driver,
+		scene::ISceneManager* smgr, scene::ISceneNode* &skybox,
+		float brightness)
+{
+	if(skybox)
+	{
+		skybox->remove();
+	}
+	
+	if(brightness >= 0.5)
+	{
+		skybox = smgr->addSkyBoxSceneNode(
+			driver->getTexture(porting::getDataPath("skybox2.png").c_str()),
+			driver->getTexture(porting::getDataPath("skybox3.png").c_str()),
+			driver->getTexture(porting::getDataPath("skybox1.png").c_str()),
+			driver->getTexture(porting::getDataPath("skybox1.png").c_str()),
+			driver->getTexture(porting::getDataPath("skybox1.png").c_str()),
+			driver->getTexture(porting::getDataPath("skybox1.png").c_str()));
+	}
+	else if(brightness >= 0.2)
+	{
+		skybox = smgr->addSkyBoxSceneNode(
+			driver->getTexture(porting::getDataPath("skybox2_dawn.png").c_str()),
+			driver->getTexture(porting::getDataPath("skybox3_dawn.png").c_str()),
+			driver->getTexture(porting::getDataPath("skybox1_dawn.png").c_str()),
+			driver->getTexture(porting::getDataPath("skybox1_dawn.png").c_str()),
+			driver->getTexture(porting::getDataPath("skybox1_dawn.png").c_str()),
+			driver->getTexture(porting::getDataPath("skybox1_dawn.png").c_str()));
+	}
+	else
+	{
+		skybox = smgr->addSkyBoxSceneNode(
+			driver->getTexture(porting::getDataPath("skybox2_night.png").c_str()),
+			driver->getTexture(porting::getDataPath("skybox3_night.png").c_str()),
+			driver->getTexture(porting::getDataPath("skybox1_night.png").c_str()),
+			driver->getTexture(porting::getDataPath("skybox1_night.png").c_str()),
+			driver->getTexture(porting::getDataPath("skybox1_night.png").c_str()),
+			driver->getTexture(porting::getDataPath("skybox1_night.png").c_str()));
+	}
+}
+
 void the_game(
 	bool &kill,
 	bool random_input,
@@ -718,14 +759,9 @@ void the_game(
 	/*
 		Create skybox
 	*/
-	scene::ISceneNode* skybox;
-	skybox = smgr->addSkyBoxSceneNode(
-		driver->getTexture(porting::getDataPath("skybox2.png").c_str()),
-		driver->getTexture(porting::getDataPath("skybox3.png").c_str()),
-		driver->getTexture(porting::getDataPath("skybox1.png").c_str()),
-		driver->getTexture(porting::getDataPath("skybox1.png").c_str()),
-		driver->getTexture(porting::getDataPath("skybox1.png").c_str()),
-		driver->getTexture(porting::getDataPath("skybox1.png").c_str()));
+	float old_brightness = 1.0;
+	scene::ISceneNode* skybox = NULL;
+	update_skybox(driver, smgr, skybox, 1.0);
 	
 	/*
 		Create the camera node
@@ -1682,12 +1718,24 @@ void the_game(
 				skycolor.getGreen() * l / 255,
 				skycolor.getBlue() * l / 255);*/
 
+		float brightness = (float)l/255.0;
+
+		/*
+			Update skybox
+		*/
+		if(fabs(brightness - old_brightness) > 0.01)
+			update_skybox(driver, smgr, skybox, brightness);
+
 		/*
 			Update coulds
 		*/
 		clouds->step(dtime);
-		clouds->update(v2f(player_position.X, player_position.Z), (float)l/255.0);
+		clouds->update(v2f(player_position.X, player_position.Z),
+				0.05+brightness*0.95);
 		
+		// Store brightness value
+		old_brightness = brightness;
+
 		/*
 			Fog
 		*/
diff --git a/src/utility.h b/src/utility.h
index 9c2099fb8..5cb3080a7 100644
--- a/src/utility.h
+++ b/src/utility.h
@@ -2001,7 +2001,8 @@ inline u32 time_to_daynight_ratio(u32 time_of_day)
 	s32 d = daylength;
 	s32 t = (((time_of_day)%24000)/(24000/d));
 	if(t < nightlength/2 || t >= d - nightlength/2)
-		return 300;
+		//return 300;
+		return 350;
 	else if(t >= d/2 - daytimelength/2 && t < d/2 + daytimelength/2)
 		return 1000;
 	else
-- 
cgit v1.2.3