mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2025-12-30 20:41:41 +09:00
Added custom event on_visibility_changed_by_click
Fixed warp flow issue because of this
This commit is contained in:
@@ -52,7 +52,7 @@ end)
|
|||||||
|
|
||||||
]]
|
]]
|
||||||
function Gui.left_toolbar_button(sprite,tooltip,element_define,authenticator)
|
function Gui.left_toolbar_button(sprite,tooltip,element_define,authenticator)
|
||||||
return Gui.element{
|
local button = Gui.element{
|
||||||
type = 'sprite-button',
|
type = 'sprite-button',
|
||||||
sprite = sprite,
|
sprite = sprite,
|
||||||
tooltip = tooltip,
|
tooltip = tooltip,
|
||||||
@@ -62,9 +62,26 @@ function Gui.left_toolbar_button(sprite,tooltip,element_define,authenticator)
|
|||||||
padding = -2
|
padding = -2
|
||||||
}
|
}
|
||||||
:add_to_top_flow(authenticator)
|
:add_to_top_flow(authenticator)
|
||||||
:on_click(function(player,_,_)
|
|
||||||
Gui.toggle_left_element(player, element_define)
|
-- Add on_click handler to handle click events comming from the player
|
||||||
|
button:on_click(function(player,_,_)
|
||||||
|
local top_flow = Gui.get_top_flow(player)
|
||||||
|
local element = top_flow[button.name]
|
||||||
|
local visibility_state = Gui.toggle_left_element(player, element_define)
|
||||||
|
|
||||||
|
-- Raise custom event that tells listening elements if the element has changed visibility by a player clicking
|
||||||
|
-- Used in warp gui to handle the keep open logic
|
||||||
|
button:raise_custom_event{
|
||||||
|
name = Gui.events.on_visibility_changed_by_click,
|
||||||
|
element = element,
|
||||||
|
state = visibility_state
|
||||||
|
}
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
-- Add property to the left flow element with the name of the button
|
||||||
|
-- This is for the ability to reverse lookup the button from the left flow element
|
||||||
|
element_define.toolbar_button = button.name
|
||||||
|
return button
|
||||||
end
|
end
|
||||||
|
|
||||||
--[[-- Draw all the left elements onto the left flow, internal use only
|
--[[-- Draw all the left elements onto the left flow, internal use only
|
||||||
@@ -137,6 +154,34 @@ function Gui.hide_left_flow(player)
|
|||||||
hide_button.visible = false
|
hide_button.visible = false
|
||||||
for name,_ in pairs(Gui.left_elements) do
|
for name,_ in pairs(Gui.left_elements) do
|
||||||
left_flow[name].visible = false
|
left_flow[name].visible = false
|
||||||
|
|
||||||
|
-- Get the assosiated element define
|
||||||
|
local element_define = Gui.defines[name]
|
||||||
|
local top_flow = Gui.get_top_flow(player)
|
||||||
|
|
||||||
|
-- Check if the the element has a button attached
|
||||||
|
if not element_define.toolbar_button then
|
||||||
|
goto hide_left_flow_end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Check if the topflow contains the button
|
||||||
|
local button = top_flow[element_define.toolbar_button]
|
||||||
|
if not button then
|
||||||
|
goto hide_left_flow_end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Get the button define from the reverse lookup on the element
|
||||||
|
local button_define = Gui.defines[element_define.toolbar_button]
|
||||||
|
|
||||||
|
-- Raise the custom event if all of the top checks have passed
|
||||||
|
button_define:raise_custom_event{
|
||||||
|
name = Gui.events.on_visibility_changed_by_click,
|
||||||
|
element = button,
|
||||||
|
state = false
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Label for the end of the loop
|
||||||
|
::hide_left_flow_end::
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -350,5 +350,12 @@ Gui._prototype_element.on_text_changed = event_handler_factory(defines.events.on
|
|||||||
-- @tparam function handler the event handler which will be called
|
-- @tparam function handler the event handler which will be called
|
||||||
Gui._prototype_element.on_value_changed = event_handler_factory(defines.events.on_gui_value_changed)
|
Gui._prototype_element.on_value_changed = event_handler_factory(defines.events.on_gui_value_changed)
|
||||||
|
|
||||||
|
--- Element Events.
|
||||||
|
-- @section customEvents
|
||||||
|
Gui.events = {
|
||||||
|
-- Triggered when a user changed the visibility of a left flow element by clicking a button
|
||||||
|
on_visibility_changed_by_click = 'on_visibility_changed_by_click'
|
||||||
|
}
|
||||||
|
|
||||||
-- Module return
|
-- Module return
|
||||||
return Gui
|
return Gui
|
||||||
@@ -439,9 +439,10 @@ end)
|
|||||||
Gui.left_toolbar_button('item/'..config.default_icon,{'warp-list.main-tooltip',config.standard_proximity_radius},warp_list_container, function(player)
|
Gui.left_toolbar_button('item/'..config.default_icon,{'warp-list.main-tooltip',config.standard_proximity_radius},warp_list_container, function(player)
|
||||||
return Roles.player_allowed(player,'gui/warp-list')
|
return Roles.player_allowed(player,'gui/warp-list')
|
||||||
end)
|
end)
|
||||||
:on_click(function(player,_,_)
|
:on_custom_event(Gui.events.on_visibility_changed_by_click, function(player,_,event)
|
||||||
local visible_state = Gui.toggle_left_element(player, warp_list_container)
|
local state = event.state -- true if visible, false if invisible
|
||||||
keep_gui_open[player.name] = visible_state
|
-- Set gui keep open state for player that clicked the button
|
||||||
|
keep_gui_open[player.name] = state
|
||||||
end)
|
end)
|
||||||
|
|
||||||
--- When the name of a warp is updated this is triggered
|
--- When the name of a warp is updated this is triggered
|
||||||
|
|||||||
Reference in New Issue
Block a user