Convert rocket info and autofill

This commit is contained in:
Cooldude2606
2025-01-26 00:19:34 +00:00
parent 6f9a062190
commit cc274595c7
8 changed files with 174 additions and 177 deletions

View File

@@ -138,7 +138,7 @@ local function ensure_elements(player, element_defines, elements, parent)
local done = {}
for define, visible in pairs(element_defines) do
local element = elements[define.name]
if not element then
if not element or not element.valid then
element = define(parent)
elements[define.name] = element
assert(element, "Element define did not return an element: " .. define.name)
@@ -200,7 +200,7 @@ local function on_gui_opened(event)
if visible then
event.element = element
--- @diagnostic disable-next-line invisible
define:_raise_event(event)
define:raise_event(event)
end
end

View File

@@ -13,12 +13,14 @@ elements.aligned_flow = ExpGui.element("aligned_flow")
}
:style(function(def, element, parent, opts)
opts = opts or {}
local vertical_align = opts.vertical_align or "center"
local horizontal_align = opts.horizontal_align or "right"
return {
padding = { 1, 2 },
vertical_align = opts.vertical_align or "center",
horizontal_align = opts.horizontal_align or "right",
vertically_stretchable = opts.vertical_align and opts.vertical_align ~= "center",
horizontally_stretchable = opts.horizontal_align and opts.horizontal_align ~= "center",
vertical_align = vertical_align,
horizontal_align = horizontal_align,
vertically_stretchable = vertical_align ~= "center",
horizontally_stretchable = horizontal_align ~= "center",
}
end)

View File

@@ -14,7 +14,7 @@ ExpElement.events = {}
--- @alias ExpElement.DrawCallback fun(def: ExpElement, parent: LuaGuiElement, ...): LuaGuiElement?, function?
--- @alias ExpElement.PostDrawCallback fun(def: ExpElement, element: LuaGuiElement?, parent: LuaGuiElement, ...): table?
--- @alias ExpElement.PostDrawCallbackAdder fun(self: ExpElement, definition: table | ExpElement.PostDrawCallback): ExpElement
--- @alias ExpElement.OnEventAdder<E> fun(self: ExpElement, handler: fun(def: ExpElement, event: E)): ExpElement
--- @alias ExpElement.OnEventAdder<E> fun(self: ExpElement, handler: fun(def: ExpElement, event: E, element: LuaGuiElement)): ExpElement
--- @class ExpElement._debug
--- @field defined_at string
@@ -343,7 +343,7 @@ function ExpElement._prototype:unlink_element(element)
assert(self._has_handlers, "Element has no event handlers")
local element_tags = element.tags
if not element_tags then
element_tags = {}
return element, ExpElement._prototype.unlink_element
end
local event_tags = element_tags["ExpGui"]
@@ -371,24 +371,24 @@ local function event_handler(event)
for _, define_name in ipairs(event_tags) do
local define = ExpElement._elements[define_name]
if define then
define:_raise_event(event)
define:raise_event(event)
end
end
end
--- Raise all handlers for an event on this definition
--- @param event EventData
function ExpElement._prototype:_raise_event(event)
--- @param event EventData | { element: LuaGuiElement }
function ExpElement._prototype:raise_event(event)
local handlers = self._events[event.name]
if not handlers then return end
for _, handler in ipairs(handlers) do
handler(self, event)
handler(self, event, event.element)
end
end
--- Add an event handler
--- @param event defines.events
--- @param handler fun(def: ExpElement, event: EventData)
--- @param handler fun(def: ExpElement, event: EventData, element: LuaGuiElement)
--- @return ExpElement
function ExpElement._prototype:on_event(event, handler)
ExpElement.events[event] = event_handler