show-buildable/sb-util.lua

Sat, 05 Jul 2025 00:35:41 +0300

author
Teemu Piippo <teemu.s.piippo@gmail.com>
date
Sat, 05 Jul 2025 00:35:41 +0300
changeset 14
c26d4dd2af9b
permissions
-rw-r--r--

Add show-buildable mod

14
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
1 entity_categories =
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
2 {
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
3 "container",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
4 "storage-tank",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
5 "transport-belt",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
6 "underground-belt",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
7 "splitter",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
8 "loader",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
9 "inserter",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
10 "electric-pole",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
11 "pipe",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
12 "pipe-to-ground",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
13 "pump",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
14 "straight-rail",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
15 "half-diagonal-rail",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
16 "curved-rail-a",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
17 "curved-rail-b",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
18 "elevated-straight-rail",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
19 "elevated-half-diagonal-rail",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
20 "elevated-curved-rail-a",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
21 "elevated-curved-rail-b",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
22 "legacy-straight-rail",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
23 "legacy-curved-rail",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
24 "rail-ramp",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
25 "rail-support",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
26 "train-stop",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
27 "rail-signal",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
28 "rail-chain-signal",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
29 "logistic-container",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
30 "roboport",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
31 "lamp",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
32 "arithmetic-combinator",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
33 "decider-combinator",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
34 "selector-combinator",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
35 "constant-combinator",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
36 "power-switch",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
37 "programmable-speaker",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
38 "display-panel",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
39 "boiler",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
40 "generator",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
41 "fusion-reactor",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
42 "fusion-generator",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
43 "mining-drill",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
44 "offshore-pump",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
45 "furnace",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
46 "assembling-machine",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
47 "agricultural-tower",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
48 "lab",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
49 "lightning-attractor",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
50 "reactor",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
51 "beacon",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
52 "rocket-silo",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
53 "cargo-landing-pad",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
54 "cargo-bay",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
55 "asteroid-collector",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
56 "thruster",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
57 "wall",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
58 "gate",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
59 "radar",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
60 "land-mine",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
61 "ammo-turret",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
62 "electric-turret",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
63 "fluid-turret",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
64 "artillery-turret",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
65 "plant",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
66 "simple-entity-with-force",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
67 "simple-entity-with-owner",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
68 "electric-energy-interface",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
69 "linked-container",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
70 "proxy-container",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
71 "heat-interface",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
72 "heat-pipe",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
73 "lane-splitter",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
74 "linked-belt",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
75 "valve",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
76 "burner-generator",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
77 "cargo-pod",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
78 "temporary-container",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
79 "asteroid",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
80 "turret",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
81 "unit-spawner",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
82 "spider-unit",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
83 "character",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
84 "simple-entity",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
85 "corpse",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
86 "rail-remnants",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
87 "explosion",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
88 "particle-source",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
89 "fire",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
90 "sticker",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
91 "stream",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
92 "artillery-flare",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
93 "artillery-projectile",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
94 "projectile",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
95 "segment",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
96 "spider-leg",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
97 "beam",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
98 "character-corpse",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
99 "speech-bubble",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
100 "loader-1x1",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
101 "rocket-silo-rocket",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
102 "market",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
103 "solar-panel",
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
104 }
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
105
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
106 ---@param entity data.EntityPrototype|LuaEntityPrototype
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
107 ---@param needle_flag EntityPrototypeFlag
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
108 function has_flag(entity, needle_flag)
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
109 for _, flag in pairs(entity.flags or {})
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
110 do
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
111 if flag == needle_flag
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
112 then
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
113 return true
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
114 end
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
115 end
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
116 return false
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
117 end

mercurial