Private
Public Access
1
0
Files
lua-prometheus-exporter/production-stats.lua
2026-01-10 18:24:52 +01:00

120 lines
4.2 KiB
Lua

protos = {}
--Experimental function, not in use right now
function GetProductionWithQuality(surface)
log("StartQualProd"..surface.name)
local prodWithQualityParts = {}
local prodstat = game.forces["player"].get_item_production_statistics(surface)
for key, _ in pairs(prodstat.input_counts) do
for quality,_ in pairs(prototypes.quality) do
local count = prodstat.get_input_count({name=key,quality=quality})
if count > 0 then
prodWithQualityParts[#prodWithQualityParts+1] =
surface.name..":"..
key..":"..
quality..":"..
count
end
end
end
log("EndQualProd"..surface.name)
return table.concat(prodWithQualityParts,"\n")
end
function SendProductionStats()
if options.enableProduction then
local productionParts = {}
productionParts[#productionParts+1] = "---production-stats---"
for _,surface in pairs(game.surfaces) do
local surfaceName = surface.name
--TODO
--local test = GetProductionWithQuality(surface)
local inputStats = game.forces["player"].get_item_production_statistics(surfaceName).input_counts
local outputStats = game.forces["player"].get_item_production_statistics(surfaceName).output_counts
if(surface.platform ~= nil) then
--surface is a space platform and has a seperate name we can use
surfaceName = surface.platform.name
end
for itemName, itemCount in pairs(inputStats) do
productionParts[#productionParts+1] = ("%s:in:%s:%d"):format(surfaceName, itemName, itemCount)
end
for itemName, itemCount in pairs(outputStats) do
productionParts[#productionParts+1] = ("%s:out:%s:%d"):format(surfaceName, itemName, itemCount)
end
end
SendChunked(table.concat(productionParts, "\n"))
end
end
function SendFluidProductionStats()
if options.enableFluid then
local productionParts = {}
productionParts[#productionParts+1] = "---fluid-production-stats---"
for _,surface in pairs(game.surfaces) do
local surfaceName = surface.name
local inputStats = game.forces["player"].get_fluid_production_statistics(surfaceName).input_counts
local outputStats = game.forces["player"].get_fluid_production_statistics(surfaceName).output_counts
if(surface.platform ~= nil) then
--surface is a space platform and has a seperate name we can use
surfaceName = surface.platform.name
end
for itemName, itemCount in pairs(inputStats) do
productionParts[#productionParts+1] = ("%s:in:%s:%d"):format(surfaceName, itemName, itemCount)
end
for itemName, itemCount in pairs(outputStats) do
productionParts[#productionParts+1] = ("%s:out:%s:%d"):format(surfaceName, itemName, itemCount)
end
end
SendChunked(table.concat(productionParts, "\n"))
end
end
function SendBuildStats()
if options.enableProduction then
local buildParts = {}
buildParts[#buildParts+1] = "---build-stats---"
for _,surface in pairs(game.surfaces) do
local surfaceName = surface.name
local inputStats = game.forces["player"].get_entity_build_count_statistics(surfaceName).input_counts
local outputStats = game.forces["player"].get_entity_build_count_statistics(surfaceName).output_counts
if(surface.platform ~= nil) then
--surface is a space platform and has a seperate name we can use
surfaceName = surface.platform.name
end
for itemName, itemCount in pairs(inputStats) do
buildParts[#buildParts+1] = ("%s:in:%s:%d"):format(surfaceName, itemName, itemCount)
end
for itemName, itemCount in pairs(outputStats) do
buildParts[#buildParts+1] = ("%s:out:%s:%d"):format(surfaceName, itemName, itemCount)
end
end
SendChunked(table.concat(buildParts, "\n"))
end
end
function GetAllPrototypes()
for ID, _ in pairs(prototypes.item) do
for quality,_ in pairs(prototypes.quality) do
protos[#protos+1] = {name=ID,quality=quality}
end
end
end