Add query limit per-player setting to limit results in Stations/Trains GUI tabs

This commit is contained in:
Will Berry
2023-03-10 12:39:39 -05:00
parent 9343d06620
commit 458ef89f58
6 changed files with 29 additions and 6 deletions

View File

@@ -157,7 +157,8 @@ function manager_gui.tick(global)
if manager_data then
for i, v in pairs(manager_data.players) do
if v.is_manager_open then
manager.update(global, v)
local query_limit = settings.get_player_settings(i)["cybersyn-manager-result-limit"].value
manager.update(global, v, query_limit)
end
end
end

View File

@@ -159,12 +159,12 @@ end
--- @param map_data MapData
--- @param player_data PlayerData
function manager.update(map_data, player_data)
function manager.update(map_data, player_data, query_limit)
if player_data.selected_tab ~= nil then
manager.build(player_data)
end
if player_data.selected_tab == "stations_tab" then
stations_tab.build(map_data, player_data)
stations_tab.build(map_data, player_data, query_limit)
elseif player_data.selected_tab == "inventory_tab" then
inventory_tab.build(map_data, player_data)
end

View File

@@ -57,7 +57,7 @@ end
--- @param map_data MapData
--- @param player_data PlayerData
--- @return GuiElemDef
function stations_tab.build(map_data, player_data)
function stations_tab.build(map_data, player_data, query_limit)
local widths = constants.gui["en"]
local refs = player_data.refs
@@ -72,6 +72,8 @@ function stations_tab.build(map_data, player_data)
local stations_sorted = {}
local to_sorted_manifest = {}
local i = 0
for id, station in pairs(stations) do
local entity = station.entity_stop
if not entity.valid then
@@ -139,6 +141,10 @@ function stations_tab.build(map_data, player_data)
end
stations_sorted[#stations_sorted + 1] = id
i = i + 1
if query_limit ~= -1 and i >= query_limit then
break
end
::continue::
end

View File

@@ -12,7 +12,7 @@ local trains_tab = {}
--- @param map_data MapData
--- @param player_data PlayerData
--- @return GuiElemDef
function trains_tab.build(map_data, player_data)
function trains_tab.build(map_data, player_data, query_limit)
local widths = constants.gui["en"]
local search_item = player_data.search_item
@@ -22,6 +22,8 @@ function trains_tab.build(map_data, player_data)
local trains_sorted = {}
local i = 0
for id, train in pairs(map_data.trains) do
if search_network_name then
if search_network_name ~= train.network_name then
@@ -70,6 +72,10 @@ function trains_tab.build(map_data, player_data)
end
trains_sorted[#trains_sorted + 1] = id
i = i + 1
if query_limit ~= -1 and i >= query_limit then
break
end
::continue::
end