Refactor and tweak sky light overwrite

Wuzzy 2017-11-22 01:09:41 +01:00
parent b7880529a8
commit c434a41dec
5 changed files with 14 additions and 23 deletions

@ -39,7 +39,6 @@ rain.set_sky_box = function()
skycolor.active = true skycolor.active = true
for _, player in pairs(minetest.get_connected_players()) do for _, player in pairs(minetest.get_connected_players()) do
player:set_clouds({color="#5D5D5FE8"}) player:set_clouds({color="#5D5D5FE8"})
player:override_day_night_ratio(0.8)
end end
end end
end end
@ -146,7 +145,6 @@ rain.clear = function()
for _, player in ipairs(minetest.get_connected_players()) do for _, player in ipairs(minetest.get_connected_players()) do
rain.remove_sound(player) rain.remove_sound(player)
rain.remove_player(player) rain.remove_player(player)
player:override_day_night_ratio(nil)
end end
end end
@ -180,7 +178,7 @@ end
if weather.reg_weathers.rain == nil then if weather.reg_weathers.rain == nil then
weather.reg_weathers.rain = { weather.reg_weathers.rain = {
chance = 15, chance = 15,
day_night_ratio = 0.8, light_factor = 0.7,
clear = rain.clear clear = rain.clear
} }
end end

@ -80,21 +80,17 @@ skycolor = {
if dim == "overworld" then if dim == "overworld" then
player:set_sky(color, "plain", nil, true) player:set_sky(color, "plain", nil, true)
local dnn = weather.get_current_day_night_ratio() local lf = weather.get_current_light_factor()
if dnn then if lf then
local w = minetest.get_timeofday() local w = minetest.get_timeofday()
if w > 0.5 then local light = (w * (lf*2))
w = 2*(1 - w) if light > 1 then
else light = 1 - (light - 1)
w = 1 - (1 - 2*w)
end
if w > dnn then
-- FIXME: This color will cause a sharp brightness change.
-- The correct ratio value needs to be calculated.
player:override_day_night_ratio(dnn)
else
player:override_day_night_ratio(nil)
end end
light = (light * lf) + 0.15
player:override_day_night_ratio(light)
else else
player:override_day_night_ratio(nil) player:override_day_night_ratio(nil)
end end

@ -84,7 +84,7 @@ end)
if weather.reg_weathers.snow == nil then if weather.reg_weathers.snow == nil then
weather.reg_weathers.snow = { weather.reg_weathers.snow = {
chance = 10, chance = 10,
day_night_ratio = 0.8, light_factor = 0.7,
clear = snow.clear clear = snow.clear
} }
end end

@ -44,9 +44,6 @@ thunder.clear = function()
rain.clear() rain.clear()
skycolor.remove_layer("weather-pack-thunder-sky") skycolor.remove_layer("weather-pack-thunder-sky")
skycolor.remove_layer("lightning") skycolor.remove_layer("lightning")
for _, player in pairs(minetest.get_connected_players()) do
player:override_day_night_ratio(nil)
end
thunder.init_done = false thunder.init_done = false
end end
@ -54,7 +51,7 @@ end
if weather.reg_weathers.thunder == nil then if weather.reg_weathers.thunder == nil then
weather.reg_weathers.thunder = { weather.reg_weathers.thunder = {
chance = 5, chance = 5,
day_night_ratio = 0.33333, light_factor = 0.33333,
clear = thunder.clear, clear = thunder.clear,
min_duration = 120, min_duration = 120,
max_duration = 600, max_duration = 600,

@ -38,11 +38,11 @@ weather.get_rand_end_time = function(min_duration, max_duration)
end end
end end
weather.get_current_day_night_ratio = function() weather.get_current_light_factor = function()
if weather.state == "none" then if weather.state == "none" then
return nil return nil
else else
return weather.reg_weathers[weather.state].day_night_ratio return weather.reg_weathers[weather.state].light_factor
end end
end end