Add player as an event argument

This commit is contained in:
Cooldude2606
2025-01-29 23:47:32 +00:00
parent 1a88592a8a
commit 6850cfa968
17 changed files with 91 additions and 141 deletions

View File

@@ -14,7 +14,8 @@ ExpElement.events = {}
--- @alias ExpElement.DrawCallback fun(def: ExpElement, parent: LuaGuiElement, ...): LuaGuiElement?, function? --- @alias ExpElement.DrawCallback fun(def: ExpElement, parent: LuaGuiElement, ...): LuaGuiElement?, function?
--- @alias ExpElement.PostDrawCallback fun(def: ExpElement, element: LuaGuiElement?, parent: LuaGuiElement, ...): table? --- @alias ExpElement.PostDrawCallback fun(def: ExpElement, element: LuaGuiElement?, parent: LuaGuiElement, ...): table?
--- @alias ExpElement.PostDrawCallbackAdder fun(self: ExpElement, definition: table | ExpElement.PostDrawCallback): ExpElement --- @alias ExpElement.PostDrawCallbackAdder fun(self: ExpElement, definition: table | ExpElement.PostDrawCallback): ExpElement
--- @alias ExpElement.OnEventAdder<E> fun(self: ExpElement, handler: fun(def: ExpElement, event: E, element: LuaGuiElement)): ExpElement --- @alias ExpElement.EventHandler<E> fun(def: ExpElement, player: LuaPlayer, element: LuaGuiElement, event: E)
--- @alias ExpElement.OnEventAdder<E> fun(self: ExpElement, handler: fun(def: ExpElement, player: LuaPlayer, element: LuaGuiElement, event: E)): ExpElement
--- @class ExpElement._debug --- @class ExpElement._debug
--- @field defined_at string --- @field defined_at string
@@ -41,7 +42,7 @@ ExpElement.events = {}
--- @field _player_data ExpElement.PostDrawCallback? --- @field _player_data ExpElement.PostDrawCallback?
--- @field _force_data ExpElement.PostDrawCallback? --- @field _force_data ExpElement.PostDrawCallback?
--- @field _global_data ExpElement.PostDrawCallback? --- @field _global_data ExpElement.PostDrawCallback?
--- @field _events table<defines.events, function[]> --- @field _events table<defines.events, ExpElement.EventHandler<EventData>[]>
--- @overload fun(parent: LuaGuiElement, ...: any): LuaGuiElement --- @overload fun(parent: LuaGuiElement, ...: any): LuaGuiElement
ExpElement._prototype = { ExpElement._prototype = {
_track_elements = false, _track_elements = false,
@@ -393,18 +394,22 @@ local function event_handler(event)
end end
--- Raise all handlers for an event on this definition --- Raise all handlers for an event on this definition
--- @param event EventData | { element: LuaGuiElement } --- @param event EventData | { element: LuaGuiElement, player_index: number? }
function ExpElement._prototype:raise_event(event) function ExpElement._prototype:raise_event(event)
local handlers = self._events[event.name] local handlers = self._events[event.name]
if not handlers then return end if not handlers then return end
local player = event.player_index and game.get_player(event.player_index)
if event.element then player = game.get_player(event.element.player_index) end
for _, handler in ipairs(handlers) do for _, handler in ipairs(handlers) do
handler(self, event, event.element) -- All gui elements will contain player and element, other events might have these as nil
-- Therefore only the signature of on_event has these values as optional
handler(self, player --[[ @as LuaPlayer ]], event.element, event --[[ @as EventData ]])
end end
end end
--- Add an event handler --- Add an event handler
--- @param event defines.events --- @param event defines.events
--- @param handler fun(def: ExpElement, event: EventData, element: LuaGuiElement) --- @param handler fun(def: ExpElement, player: LuaPlayer?, element: LuaGuiElement?, event: EventData)
--- @return ExpElement --- @return ExpElement
function ExpElement._prototype:on_event(event, handler) function ExpElement._prototype:on_event(event, handler)
ExpElement.events[event] = event_handler ExpElement.events[event] = event_handler

View File

@@ -204,8 +204,7 @@ function Toolbar.create_button(options)
-- Setup auto toggle, required if there is a left element -- Setup auto toggle, required if there is a left element
if auto_toggle or left_element then if auto_toggle or left_element then
toolbar_button:on_click(function(def, event) toolbar_button:on_click(function(def, player)
local player = ExpGui.get_player(event)
if left_element then if left_element then
Toolbar.set_left_element_visible_state(left_element, player) Toolbar.set_left_element_visible_state(left_element, player)
else else
@@ -233,8 +232,7 @@ elements.close_toolbar = ExpGui.element("close_toolbar")
width = 18, width = 18,
height = 36, height = 36,
} }
:on_click(function(def, event, element) :on_click(function(def, player, element, event)
local player = ExpGui.get_player(event)
if event.button == defines.mouse_button_type.left then if event.button == defines.mouse_button_type.left then
Toolbar.set_left_element_visible_state(elements.toolbar_settings, player) Toolbar.set_left_element_visible_state(elements.toolbar_settings, player)
else else
@@ -256,8 +254,7 @@ elements.open_toolbar = ExpGui.element("open_toolbar")
width = 18, width = 18,
height = 20, height = 20,
} }
:on_click(function(def, event, element) :on_click(function(def, player, element, event)
local player = ExpGui.get_player(event)
if event.button == defines.mouse_button_type.left then if event.button == defines.mouse_button_type.left then
Toolbar.set_left_element_visible_state(elements.toolbar_settings, player) Toolbar.set_left_element_visible_state(elements.toolbar_settings, player)
else else
@@ -279,9 +276,8 @@ elements.clear_left_flow = ExpGui.element("clear_left_flow")
width = 18, width = 18,
height = 20, height = 20,
} }
:on_click(function(def, event, element) :on_click(function(def, player, element)
element.visible = false element.visible = false
local player = ExpGui.get_player(event)
for define in pairs(ExpGui.left_elements) do for define in pairs(ExpGui.left_elements) do
if define ~= elements.core_button_flow then if define ~= elements.core_button_flow then
Toolbar.set_left_element_visible_state(define, player, false, true) Toolbar.set_left_element_visible_state(define, player, false, true)
@@ -564,8 +560,7 @@ elements.toggle_toolbar = ExpGui.element("toggle_toolbar")
:style(ExpGui.styles.sprite{ :style(ExpGui.styles.sprite{
size = 22, size = 22,
}) })
:on_click(function(def, event, element) :on_click(function(def, player, element)
local player = ExpGui.get_player(event)
Toolbar.set_visible_state(player, element.toggled) Toolbar.set_visible_state(player, element.toggled)
end) end)
@@ -581,8 +576,7 @@ elements.reset_toolbar = ExpGui.element("reset_toolbar")
size = 22, size = 22,
padding = -1, padding = -1,
}) })
:on_click(function(def, event, element) :on_click(function(def, player, element)
local player = ExpGui.get_player(event)
Toolbar.set_order(player, Toolbar.get_default_order()) Toolbar.set_order(player, Toolbar.get_default_order())
end) end)
@@ -596,8 +590,7 @@ elements.move_item_up = ExpGui.element("move_item_up")
:style(ExpGui.styles.sprite{ :style(ExpGui.styles.sprite{
size = toolbar_button_small, size = toolbar_button_small,
}) })
:on_click(function(def, event, element) :on_click(function(def, player, element)
local player = ExpGui.get_player(event)
local item = assert(element.parent.parent) local item = assert(element.parent.parent)
move_toolbar_button(player, item, -1) move_toolbar_button(player, item, -1)
end) end)
@@ -612,8 +605,7 @@ elements.move_item_down = ExpGui.element("move_item_down")
:style(ExpGui.styles.sprite{ :style(ExpGui.styles.sprite{
size = toolbar_button_small, size = toolbar_button_small,
}) })
:on_click(function(def, event, element) :on_click(function(def, player, element)
local player = ExpGui.get_player(event)
local item = assert(element.parent.parent) local item = assert(element.parent.parent)
move_toolbar_button(player, item, 1) move_toolbar_button(player, item, 1)
end) end)
@@ -637,8 +629,7 @@ elements.set_favourite = ExpGui.element("set_favourite")
:style{ :style{
width = 180, width = 180,
} }
:on_checked_state_changed(function(def, event, element) :on_checked_state_changed(function(def, player, element)
local player = ExpGui.get_player(event)
local define = ExpElement.get(element.tags.element_name --[[ @as string ]]) local define = ExpElement.get(element.tags.element_name --[[ @as string ]])
local top_element = ExpGui.get_top_element(define, player) local top_element = ExpGui.get_top_element(define, player)
local had_visible = Toolbar.has_visible_buttons(player) local had_visible = Toolbar.has_visible_buttons(player)

View File

@@ -64,8 +64,7 @@ end
--- Teleports the user to the action player --- Teleports the user to the action player
-- @element goto_player -- @element goto_player
local goto_player = new_button("utility/export", { "player-list.goto-player" }) local goto_player = new_button("utility/export", { "player-list.goto-player" })
:on_click(function(def, event, element) :on_click(function(def, player, element)
local player = Gui.get_player(event)
local selected_player_name = get_action_player_name(player) local selected_player_name = get_action_player_name(player)
local selected_player = game.players[selected_player_name] local selected_player = game.players[selected_player_name]
if not player.character or not selected_player.character then if not player.character or not selected_player.character then
@@ -78,8 +77,7 @@ local goto_player = new_button("utility/export", { "player-list.goto-player" })
--- Teleports the action player to the user --- Teleports the action player to the user
-- @element bring_player -- @element bring_player
local bring_player = new_button("utility/import", { "player-list.bring-player" }) local bring_player = new_button("utility/import", { "player-list.bring-player" })
:on_click(function(def, event, element) :on_click(function(def, player, element)
local player = Gui.get_player(event)
local selected_player_name = get_action_player_name(player) local selected_player_name = get_action_player_name(player)
local selected_player = game.players[selected_player_name] local selected_player = game.players[selected_player_name]
if not player.character or not selected_player.character then if not player.character or not selected_player.character then
@@ -92,8 +90,7 @@ local bring_player = new_button("utility/import", { "player-list.bring-player" }
--- Reports the action player, requires a reason to be given --- Reports the action player, requires a reason to be given
-- @element report_player -- @element report_player
local report_player = new_button("utility/spawn_flag", { "player-list.report-player" }) local report_player = new_button("utility/spawn_flag", { "player-list.report-player" })
:on_click(function(def, event, element) :on_click(function(def, player, element)
local player = Gui.get_player(event)
local selected_player_name = get_action_player_name(player) local selected_player_name = get_action_player_name(player)
if Reports.is_reported(selected_player_name, player.name) then if Reports.is_reported(selected_player_name, player.name) then
player.print({ "exp-commands_report.already-reported" }, Colors.orange_red) player.print({ "exp-commands_report.already-reported" }, Colors.orange_red)
@@ -113,8 +110,7 @@ end
--- Gives the action player a warning, requires a reason --- Gives the action player a warning, requires a reason
-- @element warn_player -- @element warn_player
local warn_player = new_button("utility/spawn_flag", { "player-list.warn-player" }) local warn_player = new_button("utility/spawn_flag", { "player-list.warn-player" })
:on_click(function(def, event, element) :on_click(function(def, player, element)
local player = Gui.get_player(event)
SelectedAction:set(player, "command/give-warning") SelectedAction:set(player, "command/give-warning")
end) end)
@@ -128,8 +124,7 @@ end
--- Jails the action player, requires a reason --- Jails the action player, requires a reason
-- @element jail_player -- @element jail_player
local jail_player = new_button("utility/multiplayer_waiting_icon", { "player-list.jail-player" }) local jail_player = new_button("utility/multiplayer_waiting_icon", { "player-list.jail-player" })
:on_click(function(def, event, element) :on_click(function(def, player, element)
local player = Gui.get_player(event)
local selected_player_name, selected_player_color = get_action_player_name(player) local selected_player_name, selected_player_color = get_action_player_name(player)
if Jail.is_jailed(selected_player_name) then if Jail.is_jailed(selected_player_name) then
player.print({ "exp-commands_jail.already-jailed", selected_player_color }, Colors.orange_red) player.print({ "exp-commands_jail.already-jailed", selected_player_color }, Colors.orange_red)
@@ -148,8 +143,7 @@ end
--- Kicks the action player, requires a reason --- Kicks the action player, requires a reason
-- @element kick_player -- @element kick_player
local kick_player = new_button("utility/warning_icon", { "player-list.kick-player" }) local kick_player = new_button("utility/warning_icon", { "player-list.kick-player" })
:on_click(function(def, event, element) :on_click(function(def, player, element)
local player = Gui.get_player(event)
SelectedAction:set(player, "command/kick") SelectedAction:set(player, "command/kick")
end) end)
@@ -161,8 +155,7 @@ end
--- Bans the action player, requires a reason --- Bans the action player, requires a reason
-- @element ban_player -- @element ban_player
local ban_player = new_button("utility/danger_icon", { "player-list.ban-player" }) local ban_player = new_button("utility/danger_icon", { "player-list.ban-player" })
:on_click(function(def, event, element) :on_click(function(def, player, element)
local player = Gui.get_player(event)
SelectedAction:set(player, "command/ban") SelectedAction:set(player, "command/ban")
end) end)

View File

@@ -123,11 +123,13 @@ follow_label = Gui.element("follow-label")
return label return label
end) end)
:on_click(Public.stop_follow) :on_click(function(def, player, element)
:on_closed(function(def, event) Public.stop_follow(player)
end)
:on_closed(function(def, player, element)
-- Don't call set_controller during on_close as it invalidates the controller -- Don't call set_controller during on_close as it invalidates the controller
-- Setting an invalid position (as to not equal their current) will call stop_follow on the next tick -- Setting an invalid position (as to not equal their current) will call stop_follow on the next tick
following[event.player_index][3] = {} following[player.index][3] = {}
end) end)
----- Events ----- ----- Events -----

View File

@@ -36,7 +36,7 @@ local toggle_section = Gui.element("autofill_toggle_section")
:style(Gui.styles.sprite{ :style(Gui.styles.sprite{
size = 20 size = 20
}) })
:on_click(function(def, event, element) :on_click(function(def, player, element)
local header_flow = assert(element.parent) local header_flow = assert(element.parent)
local flow_name = header_flow.caption local flow_name = header_flow.caption
local flow = header_flow.parent.parent[flow_name] local flow = header_flow.parent.parent[flow_name]
@@ -64,8 +64,7 @@ local entity_toggle = Gui.element("entity_toggle")
:style(Gui.styles.sprite{ :style(Gui.styles.sprite{
size = 22 size = 22
}) })
:on_click(function(def, event, element) :on_click(function(def, player, element)
local player = Gui.get_player(event)
local entity_name = string.match(element.parent.parent.name, "(.*)%-header") local entity_name = string.match(element.parent.parent.name, "(.*)%-header")
if not autofill_player_settings[player.name] then return end if not autofill_player_settings[player.name] then return end
local setting = autofill_player_settings[player.name][entity_name] local setting = autofill_player_settings[player.name][entity_name]
@@ -115,7 +114,7 @@ local section = Gui.element("autofill_section")
return def:unlink_element(section_table) return def:unlink_element(section_table)
end) end)
:on_click(function(def, event, element) :on_click(function(def, player, element, event)
event.element = element.parent.alignment[toggle_section.name] event.element = element.parent.alignment[toggle_section.name]
toggle_section:raise_event(event) toggle_section:raise_event(event)
end) end)
@@ -135,8 +134,7 @@ local toggle_item_button = Gui.element("toggle_item_button")
size = 32, size = 32,
right_margin = -3, right_margin = -3,
}) })
:on_click(function(def, event, element) :on_click(function(def, player, element)
local player = Gui.get_player(event)
local item_name = element.parent.tooltip local item_name = element.parent.tooltip
local entity_name = element.parent.parent.parent.name local entity_name = element.parent.parent.parent.name
if not autofill_player_settings[player.name] then return end if not autofill_player_settings[player.name] then return end
@@ -178,10 +176,9 @@ local amount_textfield = Gui.element("amount_textfield")
height = 31, height = 31,
padding = -2, padding = -2,
} }
:on_text_changed(function(def, event, element) :on_text_changed(function(def, player, element)
local value = tonumber(element.text) local value = tonumber(element.text)
if not value then value = 0 end if not value then value = 0 end
local player = Gui.get_player(event)
local clamped = math.clamp(value, 0, 1000) local clamped = math.clamp(value, 0, 1000)
local item_name = element.parent.tooltip local item_name = element.parent.tooltip
local entity_name = element.parent.parent.parent.name local entity_name = element.parent.parent.parent.name

View File

@@ -176,8 +176,7 @@ local bonus_gui_control_reset = Gui.element("bonus_gui_control_reset")
caption = { "bonus.control-reset" }, caption = { "bonus.control-reset" },
}:style{ }:style{
width = config.gui_display_width["half"], width = config.gui_display_width["half"],
}:on_click(function(def, event, element) }:on_click(function(def, player, element)
local player = Gui.get_player(event)
local container = Gui.get_left_element(bonus_container, player) local container = Gui.get_left_element(bonus_container, player)
local disp = container.frame["bonus_st_2"].disp.table local disp = container.frame["bonus_st_2"].disp.table
@@ -210,8 +209,7 @@ local bonus_gui_control_apply = Gui.element("bonus_gui_control_apply")
caption = { "bonus.control-apply" }, caption = { "bonus.control-apply" },
}:style{ }:style{
width = config.gui_display_width["half"], width = config.gui_display_width["half"],
}:on_click(function(def, event, element) }:on_click(function(def, player, element)
local player = Gui.get_player(event)
local n = bonus_gui_pts_needed(player) local n = bonus_gui_pts_needed(player)
element.parent[bonus_gui_control_pts_n_count.name].caption = n element.parent[bonus_gui_control_pts_n_count.name].caption = n
local r = tonumber(element.parent[bonus_gui_control_pts_a_count.name].caption) - n local r = tonumber(element.parent[bonus_gui_control_pts_a_count.name].caption) - n
@@ -290,8 +288,7 @@ local bonus_gui_slider = Gui.element("bonus_gui_slider")
return slider return slider
end) end)
:on_value_changed(function(def, event, element) :on_value_changed(function(def, player, element)
local player = Gui.get_player(event)
if element.tags.is_percentage then if element.tags.is_percentage then
element.parent[element.tags.counter].caption = format_number(element.slider_value * 100, false) .. " %" element.parent[element.tags.counter].caption = format_number(element.slider_value * 100, false) .. " %"
else else

View File

@@ -174,8 +174,7 @@ Gui.toolbar.create_button{
visible = function(player, element) visible = function(player, element)
return Roles.player_allowed(player, "gui/landfill") return Roles.player_allowed(player, "gui/landfill")
end end
}:on_click(function(def, event, element) }:on_click(function(def, player, element)
local player = Gui.get_player(event)
if player.cursor_stack and player.cursor_stack.valid_for_read then if player.cursor_stack and player.cursor_stack.valid_for_read then
if player.cursor_stack.type == "blueprint" and player.cursor_stack.is_blueprint_setup() then if player.cursor_stack.type == "blueprint" and player.cursor_stack.is_blueprint_setup() then
local modified = landfill_gui_add_landfill(player.cursor_stack) local modified = landfill_gui_add_landfill(player.cursor_stack)

View File

@@ -252,7 +252,7 @@ local button_apply = Gui.element("button_apply")
type = "button", type = "button",
caption = { "module.apply" }, caption = { "module.apply" },
style = "button", style = "button",
}:on_click(function(player) }:on_click(function(def, player, element)
if Selection.is_selecting(player, SelectionModuleArea) then if Selection.is_selecting(player, SelectionModuleArea) then
Selection.stop(player) Selection.stop(player)
else else
@@ -268,7 +268,7 @@ module_container = Gui.element("module_container")
}) })
local slots_per_row = config.module_slots_per_row + 1 local slots_per_row = config.module_slots_per_row + 1
local scroll_table = Gui.elements.scroll_table(container, (config.module_slots_per_row + 2) * 36, slots_per_row) local scroll_table = Gui.elements.scroll_table(container, (config.module_slots_per_row + 2) * 36, slots_per_row, "scroll")
for i = 1, config.default_module_row_count do for i = 1, config.default_module_row_count do
scroll_table.add{ scroll_table.add{

View File

@@ -36,8 +36,7 @@ local open_action_bar = Gui.element("open_action_bar")
width = 8, width = 8,
height = 14, height = 14,
} }
:on_click(function(def, event, element) :on_click(function(def, player, element)
local player = Gui.get_player(event)
local selected_player_name = element.parent.name local selected_player_name = element.parent.name
local old_selected_player_name = SelectedPlayer:get(player) local old_selected_player_name = SelectedPlayer:get(player)
if selected_player_name == old_selected_player_name then if selected_player_name == old_selected_player_name then
@@ -62,8 +61,7 @@ local close_action_bar = Gui.element("close_action_bar")
top_margin = -1, top_margin = -1,
right_margin = -1, right_margin = -1,
}) })
:on_click(function(def, event, element) :on_click(function(def, player, element)
local player = Gui.get_player(event)
SelectedPlayer:remove(player) SelectedPlayer:remove(player)
SelectedAction:remove(player) SelectedAction:remove(player)
end) end)
@@ -83,8 +81,7 @@ local reason_confirm = Gui.element("reason_confirm")
left_margin = -2, left_margin = -2,
right_margin = -1, right_margin = -1,
}) })
:on_click(function(def, event, element) :on_click(function(def, player, element)
local player = Gui.get_player(event)
local reason = element.parent.entry.text local reason = element.parent.entry.text
local action_name = SelectedAction:get(player) local action_name = SelectedAction:get(player)
local reason_callback = config.buttons[action_name].reason_callback local reason_callback = config.buttons[action_name].reason_callback
@@ -125,8 +122,7 @@ local add_player_base = Gui.element("add_player_base")
return player_name return player_name
end) end)
:on_click(function(def, event, element) :on_click(function(def, player, element, event)
local player = Gui.get_player(event)
local selected_player_name = element.caption local selected_player_name = element.caption
local selected_player = game.players[selected_player_name] local selected_player = game.players[selected_player_name]
if event.button == defines.mouse_button_type.left then if event.button == defines.mouse_button_type.left then

View File

@@ -140,7 +140,7 @@ local pd_username_player = Gui.element("pd_username_player")
end) end)
:style{ :style{
horizontally_stretchable = true, horizontally_stretchable = true,
}:on_selection_state_changed(function(def, event, element) }:on_selection_state_changed(function(def, player, element)
local player_name = game.connected_players[element.selected_index] local player_name = game.connected_players[element.selected_index]
local table = element.parent.parent.parent.parent["pd_st_2"].disp.table local table = element.parent.parent.parent.parent["pd_st_2"].disp.table
pd_update(table, player_name) pd_update(table, player_name)
@@ -153,7 +153,7 @@ local pd_username_update = Gui.element("pd_username_update")
caption = "update", caption = "update",
}:style{ }:style{
width = 128, width = 128,
}:on_click(function(def, event, element) }:on_click(function(def, player, element)
local player_index = element.parent[pd_username_player.name].selected_index local player_index = element.parent[pd_username_player.name].selected_index
if player_index > 0 then if player_index > 0 then

View File

@@ -103,9 +103,8 @@ local join_server = Gui.element("readme_join_server")
size = 20, size = 20,
padding = -1, padding = -1,
} }
:on_click(function(def, event) :on_click(function(def, player, element)
local player = Gui.get_player(event) local server_id = element.parent.name
local server_id = event.element.parent.name
External.request_connection(player, server_id, true) External.request_connection(player, server_id, true)
end) end)
@@ -436,12 +435,10 @@ local readme = Gui.element("readme")
return container return container
end) end)
:on_opened(function(def, event) :on_opened(function(def, player, element)
local player = Gui.get_player(event)
Gui.toolbar.set_button_toggled_state(readme_toggle, player, true) Gui.toolbar.set_button_toggled_state(readme_toggle, player, true)
end) end)
:on_closed(function(def, event, element) :on_closed(function(def, player, element)
local player = Gui.get_player(event)
Gui.toolbar.set_button_toggled_state(readme_toggle, player, false) Gui.toolbar.set_button_toggled_state(readme_toggle, player, false)
Gui.destroy_if_valid(element) Gui.destroy_if_valid(element)
end) end)
@@ -457,8 +454,7 @@ readme_toggle =
return Roles.player_allowed(player, "gui/readme") return Roles.player_allowed(player, "gui/readme")
end end
} }
:on_click(function(def, event) :on_click(function(def, player, element)
local player = Gui.get_player(event)
local center = player.gui.center local center = player.gui.center
if center[readme.name] then if center[readme.name] then
player.opened = nil player.opened = nil

View File

@@ -49,7 +49,7 @@ local toggle_launch = Gui.element("toggle_launch")
:style(Gui.styles.sprite{ :style(Gui.styles.sprite{
size = 16, size = 16,
}) })
:on_click(function(def, event, element) :on_click(function(def, player, element)
local rocket_silo_name = element.parent.name:sub(8) local rocket_silo_name = element.parent.name:sub(8)
local rocket_silo = Rockets.get_silo_entity(rocket_silo_name) local rocket_silo = Rockets.get_silo_entity(rocket_silo_name)
if rocket_silo.auto_launch then if rocket_silo.auto_launch then
@@ -106,8 +106,7 @@ local silo_cords = Gui.element("silo_cords")
definition:link_element(label_y) definition:link_element(label_y)
end end
end) end)
:on_click(function(def, event, element) :on_click(function(def, player, element)
local player = Gui.get_player(event)
local rocket_silo_name = element.parent.caption local rocket_silo_name = element.parent.caption
local rocket_silo = Rockets.get_silo_entity(rocket_silo_name) local rocket_silo = Rockets.get_silo_entity(rocket_silo_name)
player.set_controller{ type = defines.controllers.remote, position = rocket_silo.position, surface = rocket_silo.surface } player.set_controller{ type = defines.controllers.remote, position = rocket_silo.position, surface = rocket_silo.surface }
@@ -405,7 +404,7 @@ local toggle_section = Gui.element("rocket_info_toggle_section")
:style(Gui.styles.sprite{ :style(Gui.styles.sprite{
size = 20, size = 20,
}) })
:on_click(function(def, event, element) :on_click(function(def, player, element)
local header_flow = assert(element.parent) local header_flow = assert(element.parent)
local flow_name = header_flow.caption local flow_name = header_flow.caption
local flow = header_flow.parent.parent[flow_name] local flow = header_flow.parent.parent[flow_name]
@@ -443,7 +442,7 @@ local section = Gui.element("rocket_info_section")
-- Return the flow table -- Return the flow table
return definition:unlink_element(scroll_table) return definition:unlink_element(scroll_table)
end) end)
:on_click(function(def, event, element) :on_click(function(def, player, element, event)
event.element = element.parent.alignment[toggle_section.name] event.element = element.parent.alignment[toggle_section.name]
toggle_section:raise_event(event) toggle_section:raise_event(event)
end) end)

View File

@@ -25,7 +25,7 @@ local cctv_status = Gui.element("cctv_status")
selected_index = 2, selected_index = 2,
}:style{ }:style{
width = 96, width = 96,
}:on_selection_state_changed(function(def, event, element) }:on_selection_state_changed(function(def, player, element)
if element.selected_index == 1 then if element.selected_index == 1 then
element.parent.parent.parent.cctv_display.visible = true element.parent.parent.parent.cctv_display.visible = true
else else
@@ -50,8 +50,7 @@ local cctv_location = Gui.element("cctv_location")
caption = { "surveillance.func-set" }, caption = { "surveillance.func-set" },
}:style{ }:style{
width = 48, width = 48,
}:on_click(function(def, event, element) }:on_click(function(def, player, element)
local player = Gui.get_player(event)
element.parent.parent.parent.cctv_display.position = player.physical_position element.parent.parent.parent.cctv_display.position = player.physical_position
end) end)
@@ -62,7 +61,7 @@ local zoom_in = Gui.element("zoom_in")
caption = "+", caption = "+",
}:style{ }:style{
width = 32, width = 32,
}:on_click(function(def, event, element) }:on_click(function(def, player, element)
local display = element.parent.parent.parent.cctv_display local display = element.parent.parent.parent.cctv_display
if display.zoom < 2.0 then if display.zoom < 2.0 then
display.zoom = display.zoom + 0.05 display.zoom = display.zoom + 0.05
@@ -76,7 +75,7 @@ local zoom_out = Gui.element("zoom_out")
caption = "-", caption = "-",
}:style{ }:style{
width = 32, width = 32,
}:on_click(function(def, event, element) }:on_click(function(def, player, element)
local display = element.parent.parent.parent.cctv_display local display = element.parent.parent.parent.cctv_display
if display.zoom > 0.2 then if display.zoom > 0.2 then
display.zoom = display.zoom - 0.05 display.zoom = display.zoom - 0.05

View File

@@ -93,8 +93,7 @@ local add_new_task = Gui.element("add_new_task")
} }
:style(Styles.sprite22) :style(Styles.sprite22)
:on_click( :on_click(
function(def, event, element) function(def, player, element)
local player = Gui.get_player(event)
-- Disable editing -- Disable editing
PlayerIsEditing:set(player, false) PlayerIsEditing:set(player, false)
-- Clear selected -- Clear selected
@@ -198,8 +197,7 @@ local task_list_item = Gui.element("task_list_item")
end end
) )
:on_click( :on_click(
function(def, event, element) function(def, player, element)
local player = Gui.get_player(event)
local task_id = element.parent.caption local task_id = element.parent.caption
PlayerSelected:set(player, task_id) PlayerSelected:set(player, task_id)
end end
@@ -266,8 +264,7 @@ local task_view_close_button = Gui.element("task_view_close_button")
} }
:style(Styles.sprite22) :style(Styles.sprite22)
:on_click( :on_click(
function(def, event, element) function(def, player, element)
local player = Gui.get_player(event)
PlayerSelected:set(player, nil) PlayerSelected:set(player, nil)
end end
) )
@@ -284,8 +281,7 @@ local task_view_delete_button = Gui.element("task_view_delete_button")
} }
:style(Styles.footer_button) :style(Styles.footer_button)
:on_click( :on_click(
function(def, event, element) function(def, player, element)
local player = Gui.get_player(event)
local selected = PlayerSelected:get(player) local selected = PlayerSelected:get(player)
PlayerSelected:set(player, nil) PlayerSelected:set(player, nil)
Tasks.remove_task(selected) Tasks.remove_task(selected)
@@ -361,8 +357,7 @@ local task_message_textfield = Gui.element("task_message_textfield")
horizontally_stretchable = true, horizontally_stretchable = true,
} }
:on_text_changed( :on_text_changed(
function(def, event, element) function(def, player, element)
local player = Gui.get_player(event)
local is_editing = PlayerIsEditing:get(player) local is_editing = PlayerIsEditing:get(player)
local is_creating = PlayerIsCreating:get(player) local is_creating = PlayerIsCreating:get(player)
@@ -388,8 +383,7 @@ task_edit_confirm_button = Gui.element("task_edit_confirm_button")
} }
:style(Styles.footer_button) :style(Styles.footer_button)
:on_click( :on_click(
function(def, event, element) function(def, player, element)
local player = Gui.get_player(event)
local selected = PlayerSelected:get(player) local selected = PlayerSelected:get(player)
PlayerIsEditing:set(player, false) PlayerIsEditing:set(player, false)
local new_message = element.parent.parent[task_message_textfield.name].text local new_message = element.parent.parent[task_message_textfield.name].text
@@ -410,8 +404,7 @@ local edit_task_discard_button = Gui.element("edit_task_discard_button")
} }
:style(Styles.footer_button) :style(Styles.footer_button)
:on_click( :on_click(
function(def, event, element) function(def, player, element)
local player = Gui.get_player(event)
local selected = PlayerSelected:get(player) local selected = PlayerSelected:get(player)
Tasks.set_editing(selected, player.name, nil) Tasks.set_editing(selected, player.name, nil)
PlayerIsEditing:set(player, false) PlayerIsEditing:set(player, false)
@@ -450,8 +443,7 @@ task_create_confirm_button = Gui.element("task_create_confirm_button")
} }
:style(Styles.footer_button) :style(Styles.footer_button)
:on_click( :on_click(
function(def, event, element) function(def, player, element)
local player = Gui.get_player(event)
local message = element.parent.parent[task_message_textfield.name].text local message = element.parent.parent[task_message_textfield.name].text
PlayerIsCreating:set(player, false) PlayerIsCreating:set(player, false)
local parsed = parse_message(message) local parsed = parse_message(message)
@@ -471,8 +463,7 @@ local task_create_discard_button = Gui.element("task_create_discard_button")
} }
:style(Styles.footer_button) :style(Styles.footer_button)
:on_click( :on_click(
function(def, event, element) function(def, player, element)
local player = Gui.get_player(event)
PlayerIsCreating:set(player, false) PlayerIsCreating:set(player, false)
end end
) )

View File

@@ -47,8 +47,7 @@ local tool_gui_arty_b = Gui.element("tool_gui_arty_b")
caption = { "tool.apply" } caption = { "tool.apply" }
}:style( }:style(
style.button style.button
):on_click(function(def, event, element) ):on_click(function(def, player, element)
local player = Gui.get_player(event)
if Selection.is_selecting(player, SelectionArtyArea) then if Selection.is_selecting(player, SelectionArtyArea) then
Selection.stop(player) Selection.stop(player)
@@ -80,8 +79,7 @@ local tool_gui_waterfill_b = Gui.element("tool_gui_waterfill_b")
caption = { "tool.apply" } caption = { "tool.apply" }
}:style( }:style(
style.button style.button
):on_click(function(def, event, element) ):on_click(function(def, player, element)
local player = Gui.get_player(event)
if Selection.is_selecting(player, SelectionWaterfillArea) then if Selection.is_selecting(player, SelectionWaterfillArea) then
Selection.stop(player) Selection.stop(player)
return player.print{ "exp-commands_waterfill.exit" } return player.print{ "exp-commands_waterfill.exit" }
@@ -115,8 +113,7 @@ local tool_gui_train_b = Gui.element("tool_gui_train_b")
caption = { "tool.apply" } caption = { "tool.apply" }
}:style( }:style(
style.button style.button
):on_click(function(def, event, element) ):on_click(function(def, player, element)
local player = Gui.get_player(event)
addon_train.manual(player) addon_train.manual(player)
end) end)
@@ -142,8 +139,7 @@ local tool_gui_research_b = Gui.element("tool_gui_research_b")
caption = { "tool.apply" } caption = { "tool.apply" }
}:style( }:style(
style.button style.button
):on_click(function(def, event, element) ):on_click(function(def, player, element)
local player = Gui.get_player(event)
local enabled = addon_research.set_auto_research() local enabled = addon_research.set_auto_research()
if enabled then if enabled then
@@ -176,8 +172,7 @@ local tool_gui_spawn_b = Gui.element("tool_gui_spawn_b")
caption = { "tool.apply" } caption = { "tool.apply" }
}:style( }:style(
style.button style.button
):on_click(function(def, event, element) ):on_click(function(def, player, element)
local player = Gui.get_player(event)
if not player.character if not player.character
or player.character.health <= 0 or player.character.health <= 0
or not ExpUtil.teleport_player(player, game.surfaces.nauvis, { 0, 0 }, "dismount") then or not ExpUtil.teleport_player(player, game.surfaces.nauvis, { 0, 0 }, "dismount") then

View File

@@ -334,8 +334,8 @@ vlayer_gui_control_type = Gui.element("vlayer_gui_control_type")
selected_index = 1, selected_index = 1,
}:style{ }:style{
width = 200, width = 200,
}:on_selection_state_changed(function(def, event, element) }:on_selection_state_changed(function(def, player, element)
vlayer_gui_list_refresh(Gui.get_player(event)) vlayer_gui_list_refresh(player)
end) end)
--- A drop down list to see the exact item to remove --- A drop down list to see the exact item to remove
@@ -357,8 +357,8 @@ local vlayer_gui_control_refresh = Gui.element("vlayer_gui_control_refresh")
caption = { "vlayer.control-refresh" }, caption = { "vlayer.control-refresh" },
}:style{ }:style{
width = 200, width = 200,
}:on_click(function(def, event, element) }:on_click(function(def, player, element)
vlayer_gui_list_refresh(Gui.get_player(event)) vlayer_gui_list_refresh(player)
end) end)
--- A button to check if the item is the one wanted to remove --- A button to check if the item is the one wanted to remove
@@ -370,7 +370,7 @@ local vlayer_gui_control_see = Gui.element("vlayer_gui_control_see")
caption = { "vlayer.control-see" }, caption = { "vlayer.control-see" },
}:style{ }:style{
width = 200, width = 200,
}:on_click(function(def, event, element) }:on_click(function(def, player, element, event)
local target = element.parent[vlayer_gui_control_type.name].selected_index local target = element.parent[vlayer_gui_control_type.name].selected_index
local n = element.parent[vlayer_gui_control_list.name].selected_index local n = element.parent[vlayer_gui_control_list.name].selected_index
@@ -394,8 +394,7 @@ local vlayer_gui_control_build = Gui.element("vlayer_gui_control_build")
caption = { "vlayer.control-build" }, caption = { "vlayer.control-build" },
}:style{ }:style{
width = 200, width = 200,
}:on_click(function(def, event, element) }:on_click(function(def, player, element)
local player = Gui.get_player(event)
if Selection.is_selecting(player, SelectionConvertArea) then if Selection.is_selecting(player, SelectionConvertArea) then
Selection.stop(player) Selection.stop(player)
player.print{ "vlayer.exit" } player.print{ "vlayer.exit" }
@@ -416,8 +415,7 @@ local vlayer_gui_control_remove = Gui.element("vlayer_gui_control_remove")
caption = { "vlayer.control-remove" }, caption = { "vlayer.control-remove" },
}:style{ }:style{
width = 200, width = 200,
}:on_click(function(def, event, element) }:on_click(function(def, player, element)
local player = Gui.get_player(event)
local target = element.parent[vlayer_gui_control_type.name].selected_index local target = element.parent[vlayer_gui_control_type.name].selected_index
local n = element.parent[vlayer_gui_control_list.name].selected_index local n = element.parent[vlayer_gui_control_list.name].selected_index

View File

@@ -87,8 +87,7 @@ local add_new_warp = Gui.element("add_new_warp")
name = Gui.property_from_name, name = Gui.property_from_name,
} }
:style(Styles.sprite22) :style(Styles.sprite22)
:on_click(function(def, event, element) :on_click(function(def, player, element)
local player = Gui.get_player(event)
if player.controller_type ~= defines.controllers.character then return end if player.controller_type ~= defines.controllers.character then return end
-- Add the new warp -- Add the new warp
local force_name = player.force.name local force_name = player.force.name
@@ -179,9 +178,8 @@ local warp_icon_button = Gui.element("warp_icon_button")
} }
end) end)
:style(Styles.sprite32) :style(Styles.sprite32)
:on_click(function(def, event, element) :on_click(function(def, player, element)
if element.type == "choose-elem-button" then return end if element.type == "choose-elem-button" then return end
local player = Gui.get_player(event)
local warp_id = element.parent.caption local warp_id = element.parent.caption
Warps.teleport_player(warp_id, player) Warps.teleport_player(warp_id, player)
@@ -227,8 +225,7 @@ local warp_label = Gui.element("warp_label")
right_padding = 2, right_padding = 2,
horizontally_stretchable = true, horizontally_stretchable = true,
} }
:on_click(function(def, event, element) :on_click(function(def, player, element)
local player = Gui.get_player(event)
local warp_id = element.parent.caption local warp_id = element.parent.caption
local warp = Warps.get_warp(warp_id) local warp = Warps.get_warp(warp_id)
player.set_controller{ type = defines.controllers.remote, position = warp.position, surface = warp.surface } player.set_controller{ type = defines.controllers.remote, position = warp.position, surface = warp.surface }
@@ -273,8 +270,7 @@ local warp_textfield = Gui.element("warp_textfield")
left_margin = 2, left_margin = 2,
right_margin = 2, right_margin = 2,
} }
:on_confirmed(function(def, event, element) :on_confirmed(function(def, player, element)
local player = Gui.get_player(event)
local warp_id = element.parent.caption local warp_id = element.parent.caption
local warp_name = element.text local warp_name = element.text
local warp_icon = element.parent.parent["icon-" .. warp_id][warp_icon_editing.name].elem_value --[[ @as SignalID ]] local warp_icon = element.parent.parent["icon-" .. warp_id][warp_icon_editing.name].elem_value --[[ @as SignalID ]]
@@ -294,8 +290,7 @@ local confirm_edit_button = Gui.element("confirm_edit_button")
name = Gui.property_from_name, name = Gui.property_from_name,
} }
:style(Styles.sprite22) :style(Styles.sprite22)
:on_click(function(def, event, element) :on_click(function(def, player, element)
local player = Gui.get_player(event)
local warp_id = element.parent.caption local warp_id = element.parent.caption
local warp_name = element.parent.parent["name-" .. warp_id][warp_textfield.name].text local warp_name = element.parent.parent["name-" .. warp_id][warp_textfield.name].text
local warp_icon = element.parent.parent["icon-" .. warp_id][warp_icon_editing.name].elem_value --[[ @as SignalID ]] local warp_icon = element.parent.parent["icon-" .. warp_id][warp_icon_editing.name].elem_value --[[ @as SignalID ]]
@@ -315,8 +310,7 @@ local cancel_edit_button = Gui.element("cancel_edit_button")
name = Gui.property_from_name, name = Gui.property_from_name,
} }
:style(Styles.sprite22) :style(Styles.sprite22)
:on_click(function(def, event, element) :on_click(function(def, player, element)
local player = Gui.get_player(event)
local warp_id = element.parent.caption local warp_id = element.parent.caption
-- Check if this is the first edit, if so remove the warp. -- Check if this is the first edit, if so remove the warp.
local warp = Warps.get_warp(warp_id) local warp = Warps.get_warp(warp_id)
@@ -338,7 +332,7 @@ local remove_warp_button = Gui.element("remove_warp_button")
name = Gui.property_from_name, name = Gui.property_from_name,
} }
:style(Styles.sprite22) :style(Styles.sprite22)
:on_click(function(def, event, element) :on_click(function(def, player, element)
local warp_id = element.parent.caption local warp_id = element.parent.caption
Warps.remove_warp(warp_id) Warps.remove_warp(warp_id)
end) end)
@@ -354,8 +348,7 @@ local edit_warp_button = Gui.element("edit_warp_button")
name = Gui.property_from_name, name = Gui.property_from_name,
} }
:style(Styles.sprite22) :style(Styles.sprite22)
:on_click(function(def, event, element) :on_click(function(def, player, element)
local player = Gui.get_player(event)
local warp_id = element.parent.caption local warp_id = element.parent.caption
Warps.set_editing(warp_id, player.name, true) Warps.set_editing(warp_id, player.name, true)
end) end)
@@ -711,9 +704,8 @@ Gui.toolbar.create_button{
visible = function(player, element) visible = function(player, element)
return Roles.player_allowed(player, "gui/warp-list") return Roles.player_allowed(player, "gui/warp-list")
end end
}:on_click(function(def, event, element) }:on_click(function(def, player, element)
-- Set gui keep open state for player that clicked the button: true if visible, false if invisible -- Set gui keep open state for player that clicked the button: true if visible, false if invisible
local player = Gui.get_player(event)
keep_gui_open[player.name] = Gui.toolbar.get_button_toggled_state(def, player) keep_gui_open[player.name] = Gui.toolbar.get_button_toggled_state(def, player)
end) end)