z_mirror/Krastorio2

git clone https://git.raiguard.me/z_mirror/Krastorio2

Caleb HeuerSimplify equipment categories98b0ec80

discrete-steel-pipes
1.3 KiB44 linesraw
1local flib_table = require("__flib__.table")
2
3--- Equipment category name -> entities
4--- @type table<string, string[]>
5local category_to_owners = {}
6for entity_name, entity in pairs(prototypes.entity) do
7  local grid = entity.grid_prototype
8  if grid then
9    for _, category_name in pairs(grid.equipment_categories) do
10      table.insert(flib_table.get_or_insert(category_to_owners, category_name, {}), "entity/" .. entity_name)
11    end
12  end
13end
14for item_name, item in pairs(prototypes.item) do
15  local grid = item.equipment_grid
16  if grid then
17    for _, category_name in pairs(grid.equipment_categories) do
18      table.insert(flib_table.get_or_insert(category_to_owners, category_name, {}), "item/" .. item_name)
19    end
20  end
21end
22
23--- @type table<string, string[]>
24local equipment_to_owners = {}
25for equipment_name, equipment in pairs(prototypes.equipment) do
26  local owners = {}
27  for _, category_name in pairs(equipment.equipment_categories) do
28    local category_owners = category_to_owners[category_name]
29    if category_owners then
30      for _, owner in pairs(category_owners) do
31        table.insert(owners, owner)
32      end
33    else
34      log("NO owners for " .. category_name)
35    end
36  end
37  equipment_to_owners[equipment_name] = owners
38end
39
40for _, owners in pairs(equipment_to_owners) do
41  table.sort(owners)
42end
43
44log(serpent.block(equipment_to_owners))