64 lines
2.5 KiB
Lua

require "template"
local sensor = ValueSensor.new("day_time")
if remote.interfaces.MoWeather then
-- assume MoWeather's getdaytime is sane
function get_day_time(player) return remote.call("MoWeather", "getdaytime", player.surface.index) end
else
-- 0.5 is midnight; let's make days *start* at midnight instead.
function get_day_time(player) return player.surface.daytime + 0.5 end
end
sensor.show_day_number = sensor:make_on_click_checkbox_handler("show_day_number")
sensor.minute_rounding = sensor:make_on_click_checkbox_handler("minute_rounding")
function sensor:get_line(player)
local day_time = math.fmod(get_day_time(player), 1)
local day_time_minutes = math.floor(day_time * 24 * 60)
local day_time_hours = math.floor(day_time_minutes / 60)
local display_minutes = day_time_minutes
if self.settings.minute_rounding then
display_minutes = day_time_minutes - (day_time_minutes % 15)
end
local brightness = math.floor((1 - player.surface.darkness) * 100)
if self.settings.show_day_number then
local day_number = 1 + ((game.tick + 12500) / 25000)
return {"sensor.day_time.day_format",
string.format("%d:%02d", day_time_hours, display_minutes % 60),
string.format("%d", day_number),
string.format("%d%%", brightness)}
else
return {self.format_key,
string.format("%d:%02d", day_time_hours, display_minutes % 60),
string.format("%d%%", brightness)}
end
end
function sensor:settings_gui(player_index)
local player = game.players[player_index]
local sensor_settings = global.evogui[player.name].sensor_settings[self.name]
local root_name = self:settings_root_name()
local root = player.gui.center.add{type="frame",
name=root_name,
direction="vertical",
caption={"sensor.day_time.settings.title"}}
root.add{type="checkbox", name="evogui_sensor_day_time_checkbox_show_day_number",
caption={"sensor.day_time.settings.show_day_number"},
state=sensor_settings.show_day_number}
root.add{type="checkbox", name="evogui_sensor_day_time_checkbox_minute_rounding",
caption={"sensor.day_time.settings.minute_rounding"},
state=sensor_settings.minute_rounding}
root.add{type="button", name="evogui_sensor_day_time_btn_close", caption={"settings_close"}}
end
ValueSensor.register(sensor)