64 lines
2.5 KiB
Lua
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)
|