MVP Stations and Inventory tabs

This commit is contained in:
Will Berry
2023-03-06 12:47:09 -05:00
parent 7e745232bc
commit af5f606cbb
3 changed files with 49 additions and 32 deletions

View File

@@ -1,5 +1,6 @@
local gui = require("__flib__.gui-lite")
local util = require("scripts.gui.util")
local templates = require("scripts.gui.templates")
local misc = require("__flib__.misc")
@@ -46,6 +47,8 @@ function inventory_tab.build(map_data, player_data)
local stations_sorted = {}
for id, station in pairs(map_data.stations) do
local entity = station.entity_stop
if not entity.valid then
@@ -131,6 +134,7 @@ function inventory_tab.build(map_data, player_data)
if count > 0 then
if inventory_in_transit[item] == nil then
inventory_in_transit[item] = 0
inventory_in_transit[item] = inventory_in_transit[item] + count
else
inventory_in_transit[item] = inventory_in_transit[item] + count
end
@@ -139,17 +143,13 @@ function inventory_tab.build(map_data, player_data)
end
end
local inventory_provided_table = refs.inventory_provided_table
local provided_children = {}
local i = 0
for item, count in pairs(inventory_provided) do
i = i + 1
local sprite = ""
if game.is_valid_sprite_path("item/" .. item) then
sprite = "item/" .. item
elseif game.is_valid_sprite_path("fluid/" .. item) then
sprite = "fluid/" .. item
end
local sprite = util.build_sprite_path(item)
if game.is_valid_sprite_path(sprite) then
provided_children[#provided_children+1] = {
type = "sprite-button",
@@ -162,22 +162,17 @@ function inventory_tab.build(map_data, player_data)
.. "] [font=default-semibold]"
.. item
.. "[/font]\n"
.. misc.delineate_number(count)
}
.. misc.delineate_number(count)}
end
end
local inventory_requested_table = refs.inventory_requested_table
local requested_children = {}
local i = 0
for item, count in pairs(inventory_requested) do
i = i + 1
local sprite = ""
if game.is_valid_sprite_path("item/" .. item) then
sprite = "item/" .. item
elseif game.is_valid_sprite_path("fluid/" .. item) then
sprite = "fluid/" .. item
end
local sprite = util.build_sprite_path(item)
if game.is_valid_sprite_path(sprite) then
requested_children[#requested_children+1] = {
type = "sprite-button",
@@ -190,22 +185,17 @@ function inventory_tab.build(map_data, player_data)
.. "] [font=default-semibold]"
.. item
.. "[/font]\n"
.. misc.delineate_number(count)
}
.. misc.delineate_number(count)}
end
end
local inventory_in_transit_table = refs.inventory_in_transit_table
local in_transit_children = {}
local i = 0
for item, count in pairs(inventory_in_transit) do
i = i + 1
local sprite = ""
if game.is_valid_sprite_path("item/" .. item) then
sprite = "item/" .. item
elseif game.is_valid_sprite_path("fluid/" .. item) then
sprite = "fluid/" .. item
end
local sprite = util.build_sprite_path(item)
if game.is_valid_sprite_path(sprite) then
in_transit_children[#in_transit_children+1] = {
type = "sprite-button",
@@ -218,11 +208,19 @@ function inventory_tab.build(map_data, player_data)
.. "] [font=default-semibold]"
.. item
.. "[/font]\n"
.. misc.delineate_number(count)
}
.. misc.delineate_number(count)}
end
end
end
if next(inventory_provided_table.children) ~= nil then
refs.inventory_provided_table.clear()
end
if next(inventory_requested_table.children) ~= nil then
refs.inventory_requested_table.clear()
end
if next(inventory_in_transit_table.children) ~=nil then
refs.inventory_in_transit_table.clear()
end
gui.add(refs.inventory_provided_table, provided_children)
gui.add(refs.inventory_requested_table, requested_children)
gui.add(refs.inventory_in_transit_table, in_transit_children)

View File

@@ -186,7 +186,9 @@ function stations_tab.build(map_data, player_data)
end)
local scroll_pane = refs.manager_stations_tab_scroll_pane
if next(scroll_pane.children) ~= nil then
refs.manager_stations_tab_scroll_pane.clear()
end
for i, station_id in pairs(stations_sorted) do
local station = map_data.stations[station_id]
@@ -203,16 +205,16 @@ function stations_tab.build(map_data, player_data)
caption = station.entity_stop.backer_name,
},
--templates.status_indicator(widths.stations.status, true), --repurposing status column for network name
{ type = "label", style_mods = { width = widths.stations.network_id, }, caption = station.network_name },
{ type = "sprite-button", style = "ltnm_small_slot_button_default", enabled = false, sprite = "virtual-signal/" .. station.network_name, },
{ type = "label", style_mods = { width = widths.stations.network_id, horizontal_align = "center" }, caption = station.network_flag },
templates.small_slot_table(widths.stations, color, "provided_requested"),
templates.small_slot_table(widths.stations, color, "shipments"),
templates.small_slot_table(widths.stations, color, "control_signals"),
}, refs)
gui.add(refs.provided_requested_table, util.slot_table_build_from_station(station), refs)
gui.add(refs.shipments_table, util.slot_table_build_from_deliveries(station), refs)
gui.add(refs.control_signals_table, util.slot_table_build_from_control_signals(station), refs)
gui.add(refs.provided_requested_table, util.slot_table_build_from_station(station))
gui.add(refs.shipments_table, util.slot_table_build_from_deliveries(station))
gui.add(refs.control_signals_table, util.slot_table_build_from_control_signals(station))
end

View File

@@ -33,6 +33,20 @@ function util.gui_list(parent, iterator, test, build, update, ...)
end
end
--- Builds a valid sprite path or returns nil
--- @param item string
--- @return string
function util.build_sprite_path(item)
local sprite = nil
if game.is_valid_sprite_path("item/" .. item) then
sprite = "item/" .. item
elseif game.is_valid_sprite_path("fluid/" .. item) then
sprite = "fluid/" .. item
end
return sprite
end
--- Updates a slot table based on the passed criteria.
--- @param manifest Manifest
--- @param color string
@@ -163,9 +177,11 @@ function util.slot_table_build_from_control_signals(station)
local name = item.name
local sprite = ""
local color = "default"
if item.type == "virtual" then
if item.type ~= "virtual" then
goto continue
else
-- don't know how to get the sprite path for signals like cybersyn-priority, so this fizzles
sprite = item.type .. "/" .. name
sprite = "virtual-signal" .. "/" .. name
end
if game.is_valid_sprite_path(sprite) then
children[#children + 1] = {
@@ -182,6 +198,7 @@ function util.slot_table_build_from_control_signals(station)
number = count
}
end
::continue::
end
end
return children