forked from mtcontrib/weather_pack
		
	#4 add several variations of sky color and runtime update for raining
This commit is contained in:
		| @@ -7,6 +7,10 @@ rain = { | |||||||
|    |    | ||||||
|   -- flag useful when mixing weathers |   -- flag useful when mixing weathers | ||||||
|   raining = false, |   raining = false, | ||||||
|  |  | ||||||
|  |   -- keeping last timeofday value (rounded).  | ||||||
|  |   -- Defaulted to non-existing value for initial comparing. | ||||||
|  |   sky_last_update = -1, | ||||||
| } | } | ||||||
|  |  | ||||||
| rain.sound_handler = function(player)  | rain.sound_handler = function(player)  | ||||||
| @@ -19,16 +23,36 @@ end | |||||||
|  |  | ||||||
| -- set skybox based on time (darker if night lighter otherwise) | -- set skybox based on time (darker if night lighter otherwise) | ||||||
| rain.set_sky_box = function(player) | rain.set_sky_box = function(player) | ||||||
|   if (minetest.get_timeofday() < 0.8) then |   local current_time = minetest.get_timeofday() | ||||||
|     player:set_sky({r=65, g=80, b=100}, "plain", nil) |   local diff = math.abs(rain.sky_last_update - math.floor(current_time * 10)) | ||||||
|   else |   -- don't need update sky if time does not change significantly | ||||||
|     player:set_sky({r=10, g=10, b=15}, "plain", nil) |   if diff < 1 then | ||||||
|  |     return | ||||||
|   end |   end | ||||||
|  |  | ||||||
|  |   local color_table = {} | ||||||
|  |   color_table[0] = {r=6, g=8, b=8} | ||||||
|  |   color_table[1] = {r=16, g=23, b=23} | ||||||
|  |   color_table[2] = {r=32, g=46, b=46} | ||||||
|  |   color_table[3] = {r=48, g=69, b=69} | ||||||
|  |   color_table[4] = {r=64, g=92, b=92} | ||||||
|  |   color_table[5] = {r=70, g=100, b=100} | ||||||
|  |   color_table[6] = {r=64, g=92, b=92} | ||||||
|  |   color_table[7] = {r=48, g=69, b=69} | ||||||
|  |   color_table[8] = {r=32, g=46, b=46} | ||||||
|  |   color_table[9] = {r=16, g=23, b=23} | ||||||
|  |  | ||||||
|  |   local timeofday = current_time | ||||||
|  |   local rounded_time = math.floor(timeofday * 10) | ||||||
|  |  | ||||||
|  |   player:set_sky(color_table[rounded_time], "plain", nil) | ||||||
|  |   rain.sky_last_update = rounded_time | ||||||
| end | end | ||||||
|  |  | ||||||
| -- creating manually parctiles instead of particles spawner because of easier to control | -- creating manually parctiles instead of particles spawner because of easier to control | ||||||
| -- spawn position. | -- spawn position. | ||||||
| rain.add_rain_particles = function(player) | rain.add_rain_particles = function(player) | ||||||
|  |  | ||||||
|   rain.last_rp_count = 0 |   rain.last_rp_count = 0 | ||||||
|   for i=rain.particles_count, 1,-1 do |   for i=rain.particles_count, 1,-1 do | ||||||
|     local random_pos_x, random_pos_y, random_pos_z = weather.get_random_pos_by_player_look_dir(player) |     local random_pos_x, random_pos_y, random_pos_z = weather.get_random_pos_by_player_look_dir(player) | ||||||
| @@ -70,7 +94,6 @@ rain.add_player = function(player) | |||||||
|   if weather.players[player:get_player_name()] == nil then |   if weather.players[player:get_player_name()] == nil then | ||||||
|     local player_meta = {} |     local player_meta = {} | ||||||
|     player_meta.origin_sky = {player:get_sky()} |     player_meta.origin_sky = {player:get_sky()} | ||||||
|     rain.set_sky_box(player) |  | ||||||
|     weather.players[player:get_player_name()] = player_meta |     weather.players[player:get_player_name()] = player_meta | ||||||
|   end |   end | ||||||
| end | end | ||||||
| @@ -141,6 +164,7 @@ rain.make_weather = function() | |||||||
|       return false |       return false | ||||||
|     end |     end | ||||||
|     rain.add_player(player) |     rain.add_player(player) | ||||||
|  |     rain.set_sky_box(player) | ||||||
|     rain.add_rain_particles(player) |     rain.add_rain_particles(player) | ||||||
|     rain.update_sound(player) |     rain.update_sound(player) | ||||||
|   end |   end | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user