You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
126 lines
4.1 KiB
126 lines
4.1 KiB
local EntityMove = {}
|
|
|
|
-- whitelist is MUCH easier
|
|
EntityMove.whitelist_exact = {
|
|
"se-linked-container",
|
|
"se-pylon",
|
|
"se-pylon-substation",
|
|
"se-space-curved-rail",
|
|
"se-space-stright-rail",
|
|
"se-supercharger",
|
|
"se-delivery-cannon-chest",
|
|
"se-space-probe-rocket-silo",
|
|
"se-fluid-burner-generator",
|
|
|
|
}
|
|
EntityMove.whitelist_find = { -- include grunded/spaced version, colour variants, etc
|
|
"se-linked-container",
|
|
"se-space-pipe",
|
|
"se-deep-space-transport-belt",
|
|
"se-deep-space-underground-belt",
|
|
"se-deep-space-splitter",
|
|
"se-addon-power-pole",
|
|
"se-naquium-heat-pipe",
|
|
"se-space-thermodynamics-laboratory",
|
|
"se-recycling-facility",
|
|
"se-space-mechanical-laboratory",
|
|
"se-pulveriser",
|
|
"se-space-assembling-machine",
|
|
"se-space-manufactory",
|
|
"se-lifesupport-facility",
|
|
"se-space-biochemical-laboratory",
|
|
"se-space-decontamination-facility",
|
|
"se-space-genetics-laboratory",
|
|
"se-space-growth-facility",
|
|
"se-fuel-refinery",
|
|
"se-space-radiation-laboratory",
|
|
"se-space-electromagnetics-laboratory",
|
|
"se-space-laser-laboratory",
|
|
"se-space-material-fabricator",
|
|
"se-space-laser-laboratory",
|
|
"se-space-particle-accelerator",
|
|
"se-space-particle-collider",
|
|
"se-space-plasma-generator",
|
|
"se-space-hypercooler",
|
|
"se-space-radiator",
|
|
"se-space-astrometrics-laboratory",
|
|
"se-space-gravimetrics-laboratory",
|
|
"se-space-supercomputer",
|
|
"se-space-laser-laboratory",
|
|
"se-space-telescope",
|
|
"se-space-science-lab",
|
|
"se-cargo-rocket-cargo-pod",
|
|
"se-space-laser-laboratory",
|
|
"se-big-heat-exchanger",
|
|
"se-antimatter-reactor",
|
|
"se-electric-boiler",
|
|
"se-space-solar-panel",
|
|
"se-space-accumulator",
|
|
"se-wide-beacon",
|
|
}
|
|
|
|
function EntityMove.on_dolly_moved(event)
|
|
if event.moved_entity and event.moved_entity.valid then
|
|
local entity = event.moved_entity
|
|
if event.moved_entity.type == "beacon" then
|
|
local prototype = entity.prototype
|
|
local area = util.area_extend(entity.bounding_box, prototype.supply_area_distance)
|
|
local structures = entity.surface.find_entities_filtered{type = Beacon.affected_types, area = area}
|
|
for _, structure in pairs(structures) do
|
|
Beacon.validate_entity(structure, 0)
|
|
end
|
|
local start_area = Util.area_add_position(area, Util.vectors_delta(entity.position, event.start_pos))
|
|
structures = entity.surface.find_entities_filtered{type = Beacon.affected_types, area = start_area}
|
|
for _, structure in pairs(structures) do
|
|
Beacon.validate_entity(structure, 0)
|
|
end
|
|
else
|
|
Beacon.validate_entity(entity, 0)
|
|
end
|
|
end
|
|
end
|
|
|
|
function EntityMove.allow_move()
|
|
if remote.interfaces["PickerDollies"] and remote.interfaces["PickerDollies"]["add_blacklist_name"] then
|
|
for prototype_name, prototype in pairs(game.entity_prototypes) do
|
|
if string.starts(prototype_name, mod_prefix) then
|
|
local allowed = false
|
|
for _, name in pairs(EntityMove.whitelist_find) do
|
|
if string.find(prototype_name, name, 1, true) then
|
|
allowed = true
|
|
end
|
|
end
|
|
for _, name in pairs(EntityMove.whitelist_exact) do
|
|
if prototype_name == name then
|
|
allowed = true
|
|
end
|
|
end
|
|
if not allowed then
|
|
remote.call("PickerDollies", "add_blacklist_name", prototype_name)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function EntityMove.on_load()
|
|
if remote.interfaces["PickerDollies"] and remote.interfaces["PickerDollies"]["dolly_moved_entity_id"] then
|
|
script.on_event(remote.call("PickerDollies", "dolly_moved_entity_id"), EntityMove.on_dolly_moved)
|
|
end
|
|
end
|
|
Event.addListener("on_load", EntityMove.on_load, true)
|
|
|
|
function EntityMove.on_init()
|
|
if remote.interfaces["PickerDollies"] and remote.interfaces["PickerDollies"]["dolly_moved_entity_id"] then
|
|
script.on_event(remote.call("PickerDollies", "dolly_moved_entity_id"), EntityMove.on_dolly_moved)
|
|
end
|
|
EntityMove.allow_move()
|
|
end
|
|
Event.addListener("on_init", EntityMove.on_init, true)
|
|
|
|
function EntityMove.on_configuration_changed()
|
|
EntityMove.allow_move()
|
|
end
|
|
Event.addListener("on_configuration_changed", EntityMove.on_configuration_changed, true)
|
|
|
|
return EntityMove
|
|
|