----------------------------------- -- ___ _ _ _ -- / __| |_ __ _| |_ ___ _ _(_)___ -- \__ \ _/ _` | _/ _ \ '_| / _ \ -- |___/\__\__,_|\__\___/_| |_\___/ -- -- -------------------------------- -- Collect statistics from Factorio -- game APIs and write them to disk -- in JSON for consumption in other -- dashboard software or something. -- -- This is the runtime script which -- is executed during gameplay. ----------------------------------- -- load dependencies -- general utility functions require "script.utilities" -- mod settings cache Settings = require("script.settings") -- initialize mod, set event handlers -- this triggers OnNthTick() below require "script.init" -- console command definitions require "script.commands" -- used to write or broadcast metrics Publisher = require("script.publisher") -- keeps a list of metrics to watch, fetches -- them when requested from the game api Fetcher = require("script.fetcher") -- main loop OnNthTick = function() -- iterate through requested metrics for index, name in pairs(global.statorio.metrics) do -- fetch metric if not Fetcher.traverseApiForValues(name, function(name, val) -- cache value for publication Publisher.addMetric(name, data) end) then -- failed log("Failed to fetch metric "..name) end end -- publish all cached metrics Publisher.publish() end