133 lines
6.4 KiB
Lua
133 lines
6.4 KiB
Lua
-------------------------------------------------------------------------------
|
|
---Class to build summary dialog
|
|
---@class SummaryPanel
|
|
SummaryPanel = newclass(FormModel)
|
|
|
|
-------------------------------------------------------------------------------
|
|
---On initialization
|
|
function SummaryPanel:onInit()
|
|
self.panelCaption = ({"helmod_result-panel.tab-title-summary"})
|
|
self.otherClose = false
|
|
end
|
|
|
|
-------------------------------------------------------------------------------
|
|
---On Style
|
|
---@param styles table
|
|
---@param width_main number
|
|
---@param height_main number
|
|
function SummaryPanel:onStyle(styles, width_main, height_main)
|
|
styles.flow_panel = {
|
|
minimal_width = 100,
|
|
maximal_width = 800,
|
|
minimal_height = 0,
|
|
maximal_height = height_main
|
|
}
|
|
end
|
|
|
|
-------------------------------------------------------------------------------
|
|
---On Bind Dispatcher
|
|
function SummaryPanel:onBind()
|
|
Dispatcher:bind("on_gui_refresh", self, self.update)
|
|
end
|
|
|
|
-------------------------------------------------------------------------------
|
|
---On update
|
|
---@param event LuaEvent
|
|
function SummaryPanel:onUpdate(event)
|
|
local model, block, recipe = self:getParameterObjects()
|
|
if block ~= nil then
|
|
self:updateSummary(block.summary)
|
|
else
|
|
self:updateData(model)
|
|
self:updateSummary(model.summary)
|
|
end
|
|
end
|
|
|
|
-------------------------------------------------------------------------------
|
|
---Update data
|
|
---@param model table
|
|
function SummaryPanel:updateData(model)
|
|
local data_panel = self:getScrollFramePanel("data-panel")
|
|
data_panel.clear()
|
|
|
|
if model ~= nil then
|
|
local resourcesPanel = GuiElement.add(data_panel, GuiFlowV("resources"))
|
|
GuiElement.add(resourcesPanel, GuiLabel("label"):caption({"helmod_common.resources"}):style("helmod_label_title_frame"))
|
|
|
|
local resourcesTable = GuiElement.add(resourcesPanel, GuiTable("table-resources"):column(4))
|
|
GuiElement.add(resourcesTable, GuiLabel("header-ingredient"):caption({"helmod_result-panel.col-header-ingredient"}))
|
|
GuiElement.add(resourcesTable, GuiLabel("header-cargo-wagon"):caption({"helmod_result-panel.col-header-wagon"}))
|
|
GuiElement.add(resourcesTable, GuiLabel("header-chest"):caption({"helmod_result-panel.col-header-storage"}))
|
|
|
|
for _, resource in pairs(model.resources) do
|
|
---ingredient
|
|
local guiIngredient = GuiElement.add(resourcesTable, GuiFrameH("ingredient", resource.name):style(helmod_frame_style.hidden))
|
|
GuiElement.add(guiIngredient, GuiLabel("count"):caption(Format.formatNumberElement(resource.count)):style("helmod_label_right_60"))
|
|
GuiElement.add(guiIngredient, GuiButtonSprite("HMIngredient", "OPEN"):sprite(Player.getItemIconType(resource), resource.name):tooltip(Player.getLocalisedName(resource)))
|
|
|
|
---col wagon
|
|
local wagon = resource.wagon
|
|
local guiWagon = GuiElement.add(resourcesTable, GuiFrameH("wagon", resource.name):style(helmod_frame_style.hidden))
|
|
if wagon ~= nil then
|
|
GuiElement.add(guiWagon, GuiLabel("count"):caption(Format.formatNumberElement(wagon.limit_count).."/"..Format.formatNumberElement(wagon.count)):style("helmod_label_right_70"))
|
|
GuiElement.add(guiWagon, GuiButtonSprite("HMWagon", "OPEN"):sprite(wagon.type, wagon.name):style(Player.getLocalisedName(wagon)))
|
|
end
|
|
|
|
---col storage
|
|
local storage = resource.storage
|
|
local guiStorage = GuiElement.add(resourcesTable, GuiFrameH("storage", resource.name):style(helmod_frame_style.hidden))
|
|
if storage ~= nil then
|
|
GuiElement.add(guiStorage, GuiLabel("count"):caption(Format.formatNumberElement(storage.limit_count).."/"..Format.formatNumberElement(storage.count)):style("helmod_label_right_70"))
|
|
GuiElement.add(guiStorage, GuiButtonSprite("HMStorage", "OPEN"):sprite(storage.type, storage.name):tooltip(Player.getLocalisedName(storage)))
|
|
end
|
|
end
|
|
---generators
|
|
local energyPanel = GuiElement.add(data_panel, GuiFlowV("energy"))
|
|
GuiElement.add(energyPanel, GuiLineH("line"))
|
|
GuiElement.add(energyPanel, GuiLabel("label"):caption({"helmod_common.generators"}):style("helmod_label_title_frame"))
|
|
|
|
local resultTable = GuiElement.add(energyPanel, GuiTable("table-energy"):column(2))
|
|
|
|
if model.generators ~= nil then
|
|
for _, item in pairs(model.generators) do
|
|
local guiCell = GuiElement.add(resultTable, GuiFrameH("cell", item.name):style(helmod_frame_style.hidden))
|
|
GuiElement.add(guiCell, GuiLabel(item.name):caption(Format.formatNumberKilo(item.count)):style("helmod_label_right_50"))
|
|
GuiElement.add(guiCell, GuiButtonSprite("HMGenerator", "OPEN"):sprite("item", item.name):tooltip(Player.getLocalisedName(item)))
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
-------------------------------------------------------------------------------
|
|
---Update Summary
|
|
---@param summary table
|
|
function SummaryPanel:updateSummary(summary)
|
|
local info_panel = self:getScrollFramePanel("summary-panel")
|
|
info_panel.clear()
|
|
|
|
if summary ~= nil then
|
|
---factories
|
|
GuiElement.add(info_panel, GuiLabel("factories_label"):caption({"helmod_common.factories"}):style("helmod_label_title_frame"))
|
|
local result_table = GuiElement.add(info_panel, GuiTable("table-factory"):column(4))
|
|
result_table.style.horizontally_stretchable = false
|
|
for _, element in pairs(summary.factories) do
|
|
GuiElement.add(result_table, GuiCellElementM("HMFactories=OPEN"):element(element):color(GuiElement.color_button_default):tooltip("tooltip.info-factory"))
|
|
end
|
|
|
|
---beacons
|
|
GuiElement.add(info_panel, GuiLabel("beacons_label"):caption({"helmod_common.beacons"}):style("helmod_label_title_frame"))
|
|
local result_table = GuiElement.add(info_panel, GuiTable("table-beacon"):column(4))
|
|
result_table.style.horizontally_stretchable = false
|
|
for _, element in pairs(summary.beacons) do
|
|
GuiElement.add(result_table, GuiCellElementM("HMBeacons=OPEN"):element(element):color(GuiElement.color_button_default):tooltip("tooltip.info-factory"))
|
|
end
|
|
|
|
---modules
|
|
GuiElement.add(info_panel, GuiLabel("modules_label"):caption({"helmod_common.modules"}):style("helmod_label_title_frame"))
|
|
local result_table = GuiElement.add(info_panel, GuiTable("table-modules"):column(4))
|
|
result_table.style.horizontally_stretchable = false
|
|
for _, element in pairs(summary.modules) do
|
|
GuiElement.add(result_table, GuiCellElementM("HMModules=OPEN"):element(element):color(GuiElement.color_button_default):tooltip("tooltip.info-factory"))
|
|
end
|
|
end
|
|
end |