1
0
mirror of https://github.com/Refactorio/RedMew.git synced 2025-03-03 14:53:01 +02:00

Merge pull request #921 from linaori/fix/nested-setting-in-event

setting set should not nest the setting in the event
This commit is contained in:
Lynn 2019-05-27 16:48:10 +02:00 committed by GitHub
commit 2bc236c602
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 20 deletions

View File

@ -203,12 +203,11 @@ local function save_changes(event)
end
local function setting_set(event)
local setting = event.setting
if not setting.value_changed then
if not event.value_changed then
return
end
local player = game.get_player(setting.player_index)
local player = game.get_player(event.player_index)
if not player or not player.valid then
return
end
@ -223,8 +222,7 @@ local function setting_set(event)
return
end
local setting_name = setting.name
local element_data = data[setting_name]
local element_data = data[event.setting_name]
if not element_data then
return
@ -235,8 +233,8 @@ local function setting_set(event)
-- for some reason it has been removed already
return
end
set_element_value(input, setting.new_value)
element_data.previous_value = setting.old_value
set_element_value(input, event.new_value)
element_data.previous_value = event.old_value
end
Gui.on_custom_close(main_frame_name, function(event)

View File

@ -69,12 +69,11 @@ local function setting_set(event)
return
end
local setting = event.setting
if not setting.value_changed then
if not event.value_changed then
return
end
schedule_sync_to_server(setting.player_index)
schedule_sync_to_server(event.player_index)
end
local on_player_settings_get = Token.register(function (data)

View File

@ -80,7 +80,7 @@ Public.events = {
--- Triggered when a setting is set or updated. Old value may be null if never set before
--- if the value hasn't changed, value_changed = false
-- Event {
-- name = name,
-- setting_name = setting_name,
-- old_value = old_value,
-- new_value = new_value,
-- player_index = player_index,
@ -177,13 +177,11 @@ function Public.set(player_index, name, value)
player_settings[name] = sanitized_value
raise_event(Public.events.on_setting_set, {
setting = {
name = name,
setting_name = name,
old_value = old_value,
new_value = sanitized_value,
player_index = player_index,
value_changed = old_value ~= sanitized_value
}
})
return sanitized_value
@ -207,7 +205,11 @@ function Public.get(player_index, name)
end
local player_setting = player_settings[name]
return player_setting ~= nil and player_setting or setting.default
if player_setting == nil then
return setting.default
end
return player_setting
end
---Returns a table of all settings for a given player in a key => value setup
@ -216,7 +218,12 @@ function Public.all(player_index)
local player_settings = memory[player_index] or {}
local output = {}
for name, data in pairs(settings) do
output[name] = player_settings[name] or data.default
local setting_value = player_settings[name]
if setting_value == nil then
output[name] = data.default
else
output[name] = setting_value
end
end
return output