feat(inferium-gui): list available seeds and prepare initial countersMap

This commit is contained in:
Guillaume ARM 2024-05-24 02:07:21 +02:00
parent 8687ec057b
commit 9b9b312a2e

View File

@ -60,6 +60,20 @@ local function getCountersSelectorConfig(counterMax)
return config return config
end end
local function fetchAvailableSeeds(serverName)
local availableSeeds, errMessage = net.sendQuery(serverName, { type = 'list-seeds' })
if errMessage then
error('fetchAvailableSeeds error: ' .. errMessage, 0)
end
if not availableSeeds then
error('no available seeds', 0)
end
return availableSeeds
end
local function fetchAllHarvesters(serverName) local function fetchAllHarvesters(serverName)
local harvesters, listErrMessage = net.sendQuery(serverName, { type = 'list-harvesters' }) local harvesters, listErrMessage = net.sendQuery(serverName, { type = 'list-harvesters' })
@ -116,6 +130,31 @@ local function getCountersMapFromIndexed(countersMapIndexed)
return countersMap return countersMap
end end
local function mergeCountersMap(countersMapLeft, countersMapRight)
local indexed = {}
for _, counterPayload in pairs(countersMapLeft) do
indexed[counterPayload.name] = counterPayload.count
end
for _, counterPayload in pairs(countersMapRight) do
indexed[counterPayload.name] = counterPayload.count
end
return getCountersMapFromIndexed(indexed)
end
local function getInitialCountersMap(availableSeeds)
local result = {}
for k, seedName in pairs(availableSeeds) do
result[k] = {
name = parseSeedName(seedName),
count = 0
}
end
return result
end
local function createCountersMap(harvesters) local function createCountersMap(harvesters)
local countersMapIndexed = {} local countersMapIndexed = {}
@ -201,12 +240,17 @@ end
local function main(serverName) local function main(serverName)
net.openRednet() -- TODO: handle closeRednet properly net.openRednet() -- TODO: handle closeRednet properly
print('> fetching available seeds from ' .. serverName)
local availableSeeds = fetchAvailableSeeds(serverName)
print('> ' .. utils.sizeof(availableSeeds) .. ' available seeds fetched')
print('> fetching all configs from ' .. serverName) print('> fetching all configs from ' .. serverName)
local harvesters = fetchAllHarvesters(serverName) local harvesters = fetchAllHarvesters(serverName)
print('> ' .. utils.sizeof(harvesters) .. ' harvesters fetched') print('> ' .. utils.sizeof(harvesters) .. ' harvesters fetched')
local maxCounter = getMaxCounter(harvesters) local maxCounter = getMaxCounter(harvesters)
local countersMap = createCountersMap(harvesters) local countersMap = mergeCountersMap(getInitialCountersMap(availableSeeds), createCountersMap(harvesters))
local countersMapResult = CountersSelector(countersMap, getCountersSelectorConfig(maxCounter)) local countersMapResult = CountersSelector(countersMap, getCountersSelectorConfig(maxCounter))
if not countersMapResult then if not countersMapResult then