diff options
author | Perttu Ahola <celeron55@gmail.com> | 2010-12-29 15:26:47 +0200 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2010-12-29 15:26:47 +0200 |
commit | 6d4cd2ea1acc07ad5a25a422f430fa1159a3e872 (patch) | |
tree | bcd1cb48ecfd06a34271128b7baf445e482302a7 /src | |
parent | a9dd12281feae53366314927fd67ba1fc3a241f7 (diff) | |
download | minetest-6d4cd2ea1acc07ad5a25a422f430fa1159a3e872.tar.gz minetest-6d4cd2ea1acc07ad5a25a422f430fa1159a3e872.tar.bz2 minetest-6d4cd2ea1acc07ad5a25a422f430fa1159a3e872.zip |
A bit longer day and a bit shorter night. Client-side.
Diffstat (limited to 'src')
-rw-r--r-- | src/client.cpp | 67 | ||||
-rw-r--r-- | src/main.cpp | 15 | ||||
-rw-r--r-- | src/map.cpp | 9 | ||||
-rw-r--r-- | src/server.cpp | 2 |
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) |