show-buildable/data-updates.lua

Wed, 27 Aug 2025 10:26:12 +0300

author
Teemu Piippo <teemu.s.piippo@gmail.com>
date
Wed, 27 Aug 2025 10:26:12 +0300
changeset 19
adbc5c74f279
parent 14
c26d4dd2af9b
permissions
-rw-r--r--

Lots of stuff

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
19
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 14
diff changeset
37 new_entity.hidden = true
14
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
38 mangle_fluid_box(new_entity.fluid_box)
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
39 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
40 do
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
41 mangle_fluid_box(fluid_box)
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
42 end
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
43 mangle_fluid_box(new_entity.input_fluid_box)
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
44 mangle_fluid_box(new_entity.output_fluid_box)
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
45 mangle_fluid_box(new_entity.fuel_fluid_box)
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
46 mangle_fluid_box(new_entity.oxidizer_fluid_box)
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
47 if new_entity.type == "mining-drill"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
48 or new_entity.type == "assembling-machine"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
49 or new_entity.type == "fusion-generator"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
50 or new_entity.type == "fusion-reactor"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
51 or new_entity.type == "inserter"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
52 or new_entity.type == "thruster"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
53 or new_entity.type == "cargo-bay"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
54 or new_entity.type == "cargo-landing-pad"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
55 or new_entity.type == "transport-belt"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
56 or new_entity.type == "splitter"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
57 or new_entity.type == "container"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
58 or new_entity.type == "loader"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
59 or new_entity.type == "pump"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
60 or new_entity.type == "rocket-silo"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
61 or new_entity.type == "solar-panel"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
62 then
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
63 -- 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
64 new_entity.type = "assembling-machine"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
65 new_entity.input_fluid_box = nil
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
66 new_entity.output_fluid_box = nil
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
67 new_entity.fluid_boxes = {}
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
68 new_entity.energy_usage = "1W"
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
69 new_entity.energy_source = {type="void"}
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
70 new_entity.crafting_speed = 1
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
71 new_entity.crafting_categories = {"crafting"}
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
72 new_entity.fixed_recipe = nil
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
73 new_entity.module_slots = 0
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
74 end
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
75 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
76 and new_entity.graphics_set
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
77 then
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
78 new_entity.graphics_set.connections = nil
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
79 end
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
80 if (new_entity.type == "cargo-bay")
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
81 and new_entity.platform_graphics_set
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
82 then
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
83 new_entity.platform_graphics_set.connections = nil
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
84 end
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
85 table.insert (new_entities, new_entity)
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 end
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
89
c26d4dd2af9b Add show-buildable mod
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
90 data:extend (new_entities)

mercurial