show-buildable/data-updates.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
child 19
adbc5c74f279
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 require("sb-util")
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 ---@param fluid_box data.FluidBox?
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
4 local function mangle_fluid_box(fluid_box)
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
5 if fluid_box
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
6 then
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
7 for _, pipe_connection in pairs (fluid_box.pipe_connections)
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
8 do
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
9 pipe_connection.position = {0, 0}
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
10 end
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
11 end
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
12 end
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
13
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
14 local function supported(entity_type)
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
15 if (entity_type == "rail-support" or entity_type == "rail-ramp")
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
16 and not feature_flags.rail_bridges
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
17 then
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
18 return false
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
19 else
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
20 return true
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
21 end
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
22 end
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
23
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
24 -- Make a bunch of dummy entities for collision testing purposes
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
25 local new_entities = {}
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
26 for _, entity_type in pairs (entity_categories)
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
27 do
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
28 for _, base_entity in pairs (supported(entity_type) and data.raw[entity_type] or {})
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
29 do
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
30 if has_flag(base_entity, "player-creation")
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
31 then
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
32 local new_entity = table.deepcopy (base_entity)
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
33 new_entity.name = "collision-tester-"..base_entity.name
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
34 new_entity.circuit_connector = nil
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
35 new_entity.next_upgrade = nil
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
36 new_entity.fast_replaceable_group = nil
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
37 mangle_fluid_box(new_entity.fluid_box)
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
38 for _, fluid_box in pairs (new_entity.fluid_boxes or {})
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
39 do
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
40 mangle_fluid_box(fluid_box)
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
41 end
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
42 mangle_fluid_box(new_entity.input_fluid_box)
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
43 mangle_fluid_box(new_entity.output_fluid_box)
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
44 mangle_fluid_box(new_entity.fuel_fluid_box)
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
45 mangle_fluid_box(new_entity.oxidizer_fluid_box)
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
46 if new_entity.type == "mining-drill"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
47 or new_entity.type == "assembling-machine"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
48 or new_entity.type == "fusion-generator"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
49 or new_entity.type == "fusion-reactor"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
50 or new_entity.type == "inserter"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
51 or new_entity.type == "thruster"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
52 or new_entity.type == "cargo-bay"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
53 or new_entity.type == "cargo-landing-pad"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
54 or new_entity.type == "transport-belt"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
55 or new_entity.type == "splitter"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
56 or new_entity.type == "container"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
57 or new_entity.type == "loader"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
58 or new_entity.type == "pump"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
59 or new_entity.type == "rocket-silo"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
60 or new_entity.type == "solar-panel"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
61 then
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
62 -- I'd use simple entities here, but they need to be rotatable
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
63 new_entity.type = "assembling-machine"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
64 new_entity.input_fluid_box = nil
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
65 new_entity.output_fluid_box = nil
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
66 new_entity.fluid_boxes = {}
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
67 new_entity.energy_usage = "1W"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
68 new_entity.energy_source = {type="void"}
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
69 new_entity.crafting_speed = 1
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
70 new_entity.crafting_categories = {"crafting"}
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
71 new_entity.fixed_recipe = nil
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
72 new_entity.module_slots = 0
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
73 end
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
74 if (new_entity.type == "cargo-landing-pad" or new_entity.type == "cargo-bay")
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
75 and new_entity.graphics_set
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
76 then
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
77 new_entity.graphics_set.connections = nil
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
78 end
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
79 if (new_entity.type == "cargo-bay")
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
80 and new_entity.platform_graphics_set
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
81 then
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
82 new_entity.platform_graphics_set.connections = nil
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
83 end
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
84 table.insert (new_entities, new_entity)
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
85 end
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
86 end
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
87 end
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
88
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
89 data:extend (new_entities)

mercurial