Add automatic light correction.

Correct light when brush is used with terraform:light off, turn correction
off when terraform:light is enabled (e.g. in caves) to avoid flicker.

Fixes #8
master
Dmitry Kostenko 2021-04-07 12:15:41 +02:00
parent 86121a51cd
commit ec30a83c9b
1 changed files with 6 additions and 1 deletions

View File

@ -79,6 +79,9 @@ terraform = {
_tools = {}, _tools = {},
_history = history, _history = history,
-- Per-player flags for skipping light updates
skip_light = {},
-- register a terraform tool -- register a terraform tool
register_tool = function(self, name, spec) register_tool = function(self, name, spec)
spec.tool_name = name spec.tool_name = name
@ -599,7 +602,7 @@ terraform:register_tool("brush", {
-- Save back to map, no light information -- Save back to map, no light information
v:set_data(data) v:set_data(data)
v:write_to_map(false) v:write_to_map(not terraform.skip_light[player:get_player_name()])
end, end,
@ -918,6 +921,7 @@ local light = {
end, end,
add_player = function(self, player) add_player = function(self, player)
self.players[player:get_player_name()] = { player = player } self.players[player:get_player_name()] = { player = player }
terraform.skip_light[player:get_player_name()] = true
end, end,
remove_player = function(self, player) remove_player = function(self, player)
local light = self.players[player:get_player_name()] local light = self.players[player:get_player_name()]
@ -928,6 +932,7 @@ local light = {
end end
end end
self.players[player:get_player_name()] = nil self.players[player:get_player_name()] = nil
terraform.skip_light[player:get_player_name()] = false
self:tick() self:tick()
end, end,
tick = function(self) tick = function(self)