64 lines
2.5 KiB
Lua
64 lines
2.5 KiB
Lua
local Event = require('__stdlib__/stdlib/event/event')
|
|
|
|
local function on_selected_area(event)
|
|
local alt = event.name == defines.events.on_player_alt_selected_area
|
|
local replace_straight, replace_curved
|
|
|
|
if event.item == 'picker-naked-rails-nakedify' then
|
|
replace_straight = not alt and 'picker-naked-straight-rail' or 'straight-rail'
|
|
replace_curved = not alt and 'picker-naked-curved-rail' or 'curved-rail'
|
|
elseif event.item == 'picker-naked-rails-stoneify' then
|
|
replace_straight = 'straight-rail'
|
|
replace_curved = 'curved-rail'
|
|
elseif event.item == 'picker-naked-rails-sleepify' then
|
|
replace_straight = not alt and 'picker-sleepy-straight-rail' or 'straight-rail'
|
|
replace_curved = not alt and 'picker-sleepy-curved-rail' or 'curved-rail'
|
|
elseif event.item == 'picker-naked-rails-remnantify' then
|
|
replace_straight = 'straight-rail-remnants'
|
|
replace_curved = 'curved-rail-remnants'
|
|
else
|
|
return
|
|
end
|
|
|
|
if alt and event.item == 'picker-naked-rails-remnantify' then
|
|
for k, entity in pairs(event.entities) do
|
|
if entity.type == 'rail-remnants' then
|
|
entity.destroy()
|
|
end
|
|
end
|
|
|
|
return
|
|
end
|
|
|
|
local surface = event.entities and event.entities[1] and event.entities[1].surface
|
|
|
|
for k, entity in pairs(event.entities) do
|
|
if entity.type == 'straight-rail' and entity.name ~= replace_straight or entity.type == 'curved-rail' and entity.name ~= replace_curved or entity.name == 'straight-rail-remnants' or entity.name == 'curved-rail-remnants' then
|
|
if entity.valid then
|
|
local n = entity.name
|
|
local d = entity.direction
|
|
local f = entity.force
|
|
local p = entity.position
|
|
local straight = entity.type == 'straight-rail' or entity.name:find('straight-rail')
|
|
|
|
if event.item == 'picker-naked-rails-remnantify' then
|
|
replace_straight = n .. '-remnants'
|
|
replace_curved = n .. '-remnants'
|
|
end
|
|
|
|
entity.destroy()
|
|
surface.create_entity {
|
|
name = straight and replace_straight or replace_curved,
|
|
position = p,
|
|
force = f,
|
|
direction = d
|
|
}
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
if settings.startup['picker-naked-rails'].value then
|
|
Event.register({defines.events.on_player_selected_area, defines.events.on_player_alt_selected_area}, on_selected_area)
|
|
end
|