aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2010-12-29 15:26:47 +0200
committerPerttu Ahola <celeron55@gmail.com>2010-12-29 15:26:47 +0200
commit6d4cd2ea1acc07ad5a25a422f430fa1159a3e872 (patch)
treebcd1cb48ecfd06a34271128b7baf445e482302a7
parenta9dd12281feae53366314927fd67ba1fc3a241f7 (diff)
downloadminetest-6d4cd2ea1acc07ad5a25a422f430fa1159a3e872.tar.gz
minetest-6d4cd2ea1acc07ad5a25a422f430fa1159a3e872.tar.bz2
minetest-6d4cd2ea1acc07ad5a25a422f430fa1159a3e872.zip
A bit longer day and a bit shorter night. Client-side.
-rw-r--r--src/client.cpp67
-rw-r--r--src/main.cpp15
-rw-r--r--src/map.cpp9
-rw-r--r--src/server.cpp2
4 files changed, 55 insertions, 38 deletions
diff --git a/src/client.cpp b/src/client.cpp
index 4792490f9..b7a076c50 100644
--- a/src/client.cpp
+++ b/src/client.cpp
@@ -139,37 +139,6 @@ void Client::step(float dtime)
if(dtime > 2.0)
dtime = 2.0;
- /*
- Day/night
- */
- {
- s32 d = 8;
- s32 t = (((m_time_of_day.get() + 24000/d/2)%24000)/(24000/d));
- s32 dn = 0;
- if(t == d/4 || t == (d-d/4))
- dn = 1;
- else if(t < d/4 || t > (d-d/4))
- dn = 2;
- else
- dn = 0;
-
- u32 dr = 1000;
- if(dn == 0)
- dr = 1000;
- if(dn == 1)
- dr = 600;
- if(dn == 2)
- dr = 300;
-
- if(dr != m_env.getDayNightRatio())
- {
- //dstream<<"dr="<<dr<<std::endl;
- dout_client<<DTIME<<"Client: changing day-night ratio"<<std::endl;
- m_env.setDayNightRatio(dr);
- m_env.expireMeshes(true);
- }
- }
-
//dstream<<"Client steps "<<dtime<<std::endl;
@@ -1003,6 +972,42 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id)
time = time % 24000;
m_time_of_day.set(time);
//dstream<<"Client: time="<<time<<std::endl;
+
+ /*
+ Day/night
+
+ time_of_day:
+ 0 = midnight
+ 12000 = midday
+ */
+ {
+ const s32 daylength = 8;
+ const s32 nightlength = 2;
+ const s32 daytimelength = 4;
+ s32 d = daylength;
+ s32 t = (((m_time_of_day.get()/* + 24000/d/2*/)%24000)/(24000/d));
+ u32 dr;
+ if(t < nightlength/2 || t >= d - nightlength/2)
+ dr = 350;
+ else if(t >= d/2 - daytimelength/2 && t < d/2 + daytimelength/2)
+ dr = 1000;
+ else
+ dr = 750;
+
+ dstream<<"time_of_day="<<m_time_of_day.get()
+ <<", t="<<t
+ <<", dr="<<dr
+ <<std::endl;
+
+ if(dr != m_env.getDayNightRatio())
+ {
+ //dstream<<"dr="<<dr<<std::endl;
+ dout_client<<DTIME<<"Client: changing day-night ratio"<<std::endl;
+ m_env.setDayNightRatio(dr);
+ m_env.expireMeshes(true);
+ }
+ }
+
}
else if(command == TOCLIENT_CHAT_MESSAGE)
{
diff --git a/src/main.cpp b/src/main.cpp
index f9022de64..a5b9ba0d5 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -181,7 +181,9 @@ TODO: There has to be some better way to handle static objects than to
TODO: When server sees that client is removing an inexistent block or
adding a block to an existent position, resend the MapBlock.
-TODO: Map generator: add other materials underground (mud)
+TODO: When player dies, throw items on map
+
+TODO: Map generator version 2
Doing now:
======================================================================
@@ -2275,11 +2277,18 @@ int main(int argc, char *argv[])
camera->setAspectRatio((f32)screensize.X / (f32)screensize.Y);
u32 daynight_ratio = client.getDayNightRatio();
- video::SColor bgcolor = video::SColor(
+ /*video::SColor bgcolor = video::SColor(
255,
skycolor.getRed() * daynight_ratio / 1000,
skycolor.getGreen() * daynight_ratio / 1000,
- skycolor.getBlue() * daynight_ratio / 1000);
+ skycolor.getBlue() * daynight_ratio / 1000);*/
+
+ u8 l = decode_light((daynight_ratio * LIGHT_SUN) / 1000);
+ video::SColor bgcolor = video::SColor(
+ 255,
+ skycolor.getRed() * l / 255,
+ skycolor.getGreen() * l / 255,
+ skycolor.getBlue() * l / 255);
/*
Fog
diff --git a/src/map.cpp b/src/map.cpp
index 93c4d5052..a3fe9922e 100644
--- a/src/map.cpp
+++ b/src/map.cpp
@@ -3178,9 +3178,12 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass)
/*
This has to be done with the mesh_mutex unlocked
*/
- if(mesh_expired && mesh_update_count < 6
- && (d < faraway || mesh_update_count < 3))
- //if(mesh_expired && mesh_update_count < 4)
+ // Pretty random but this should work somewhat nicely
+ if(mesh_expired && mesh_update_count < 3
+ && (d < faraway || mesh_update_count < 2
+ || m_control.range_all))
+ /*if(mesh_expired && mesh_update_count < 6
+ && (d < faraway || mesh_update_count < 3))*/
{
mesh_update_count++;
diff --git a/src/server.cpp b/src/server.cpp
index 05ef13d93..daf00b8ee 100644
--- a/src/server.cpp
+++ b/src/server.cpp
@@ -876,7 +876,7 @@ Server::Server(
m_con(PROTOCOL_ID, 512, CONNECTION_TIMEOUT, this),
m_thread(this),
m_emergethread(this),
- m_time_of_day(8000),
+ m_time_of_day(9000),
m_time_counter(0),
m_time_of_day_send_timer(0),
m_uptime(0)