37 lines
1.6 KiB
Lua

require "template"
local sensor = ValueSensor.new("evolution_factor")
sensor.extra_precision = sensor:make_on_click_checkbox_handler("extra_precision")
function sensor:get_line(player)
local percent_evo_factor = game.forces.enemy.evolution_factor * 100
-- this nonsense is because string.format(%.4f) is not safe in MP across platforms, but integer math is
local whole_number = math.floor(percent_evo_factor)
local fractional_component = math.floor((percent_evo_factor - whole_number) * 10)
if self.settings.extra_precision then
fractional_component = math.floor((percent_evo_factor - whole_number) * 10000)
return {self.format_key, string.format("%d.%04d%%", whole_number, fractional_component)}
end
return {self.format_key, string.format("%d.%d%%", whole_number, fractional_component)}
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.evolution_factor.settings.title"}}
root.add{type="checkbox", name="evogui_sensor_evolution_factor_checkbox_extra_precision",
caption={"sensor.evolution_factor.settings.extra_precision"},
state=sensor_settings.extra_precision}
root.add{type="button", name="evogui_sensor_evolution_factor_close", caption={"settings_close"}}
end
ValueSensor.register(sensor)