-
Notifications
You must be signed in to change notification settings - Fork 0
/
control.lua
53 lines (41 loc) · 1.5 KB
/
control.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
function write_tick(json)
local filename = "graftoriomp_stats.json"
game.write_file(filename, json .. "\n")
end
--@type LuaFlowStatistics
function get_prod_cons(production_statistics, prototypes)
local production = {}
local consumption = {}
for name, prototype in pairs(prototypes) do
production[name] = production_statistics.get_input_count(name)
consumption[name] = production_statistics.get_output_count(name)
end
--for item, amount in pairs(production_statistics.input_counts) do
-- production[item] = amount
--end
--
--for item, amount in pairs(production_statistics.output_counts) do
-- consumption[item] = amount
--end
return production, consumption
end
--@type LuaForce
function get_force_data(force)
local item_production, item_consumption = get_prod_cons(force.item_production_statistics, game.item_prototypes)
local fluid_production, fluid_consumption = get_prod_cons(force.fluid_production_statistics, game.fluid_prototypes)
return {
["item_production"] = item_production,
["item_consumption"] = item_consumption,
["fluid_production"] = fluid_production,
["fluid_consumption"] = fluid_consumption,
}
end
--type@NthTickEventData
function tick_handler(tick_event)
local tick = tick_event.tick
local data = { ["player"] = get_force_data(game.forces["player"]) }
local json = game.table_to_json(data)
write_tick(json)
end
-- 60 tps * 15 s
script.on_nth_tick(60*15, tick_handler)