-
Notifications
You must be signed in to change notification settings - Fork 33
Expand file tree
/
Copy pathdata-final-fixes.lua
More file actions
108 lines (90 loc) · 3.23 KB
/
data-final-fixes.lua
File metadata and controls
108 lines (90 loc) · 3.23 KB
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
local shared = require("shared")
local collision_mask_util = require("collision-mask-util")
local road_collision_layer = collision_mask_util.get_first_unused_layer()
local tiles = data.raw.tile
local road_list = {}
local road_tile_list =
{
type = "selection-tool",
name = "road-tile-list",
flags = {"hidden"},
icon = "__Transport_Drones__/data/tf_util/empty-sprite.png",
icon_size = 1,
tile_filters = road_list,
stack_size = 1,
selection_color = {},
alt_selection_color = {},
selection_mode = {"any-tile"},
alt_selection_mode = {"any-tile"},
selection_cursor_box_type = "entity",
alt_selection_cursor_box_type = "entity"
}
data:extend{road_tile_list}
local place_as_tile_condition = {"water-tile"}
if mods["space-exploration"] then
table.insert(place_as_tile_condition, spaceship_collision_layer)
table.insert(place_as_tile_condition, empty_space_collision_layer)
end
local process_road_item = function(item)
local tile = tiles[item.place_as_tile.result]
if not tile then return end
local seen = {}
while true do
tile.collision_mask = {road_collision_layer}
table.insert(road_list, tile.name)
seen[tile.name] = true
tile = tiles[tile.next_direction or ""]
if not tile then break end
if seen[tile.name] then break end
end
item.place_as_tile.condition = place_as_tile_condition
end
local process_non_road_item = function(item)
local condition = item.place_as_tile.condition
collision_mask_util.add_layer(condition, road_collision_layer)
end
for k, item in pairs (data.raw.item) do
if item.place_as_tile then
if item.is_road_tile then
process_road_item(item)
else
process_non_road_item(item)
end
end
end
local all_used_tile_collision_masks = {}
for k, tile in pairs (tiles) do
tile.check_collision_with_entities = true
for k, layer in pairs (tile.collision_mask or {}) do
all_used_tile_collision_masks[layer] = true
end
end
shared.drone_collision_mask = all_used_tile_collision_masks
shared.drone_collision_mask[road_collision_layer] = nil
shared.drone_collision_mask["colliding-with-tiles-only"] = true
shared.drone_collision_mask["consider-tile-transitions"] = true
for k, prototype in pairs (collision_mask_util.collect_prototypes_with_layer("player-layer")) do
if prototype.type ~= "gate" and prototype.type ~= "tile" then
local mask = collision_mask_util.get_mask(prototype)
if collision_mask_util.mask_contains_layer(mask, "item-layer") then
collision_mask_util.add_layer(mask, road_collision_layer)
end
prototype.collision_mask = mask
end
end
if data.raw["assembling-machine"]["mining-depot"] then
collision_mask_util.add_layer(data.raw["assembling-machine"]["mining-depot"].collision_mask, road_collision_layer)
end
--Disable belts on roads
--[[
for k, prototype in pairs (collision_mask_util.collect_prototypes_with_layer("transport-belt-layer")) do
local mask = collision_mask_util.get_mask(prototype)
collision_mask_util.add_layer(mask, road_collision_layer)
prototype.collision_mask = mask
end
]]
--error(serpent.block(road_list))
--So you don't place any tiles over road.
local util = require "__Transport_Drones__/data/tf_util/tf_util"
require("data/entities/transport_drone/transport_drone")
require("data/make_request_recipes")