1
0
mirror of https://github.com/Refactorio/RedMew.git synced 2025-02-15 13:53:13 +02:00

Fix register_on_object_destroyed

This commit is contained in:
RedRafe 2024-10-26 22:10:30 +02:00
parent a9c4dd006b
commit 323aa62099
4 changed files with 21 additions and 28 deletions

View File

@ -6,7 +6,6 @@ local register_on_object_destroyed = script.register_on_object_destroyed
local Public = {}
local turrets_map = {}
local register_map = {}
local primitives = { index = nil }
local Artillery = {
enabled = true,
@ -47,13 +46,11 @@ local Artillery = {
Global.register(
{
turrets_map = turrets_map,
register_map = register_map,
primitives = primitives,
artillery = Artillery,
},
function(tbl)
turrets_map = tbl.turrets_map
register_map = tbl.register_map
primitives = tbl.primitives
Artillery = tbl.artillery
end)
@ -87,7 +84,7 @@ function Public.register(entity, refill_name)
return
end
local destroy_id = register_on_object_destroyed(entity)
register_on_object_destroyed(entity)
local unit_id = entity.unit_number
local data = {
@ -95,7 +92,6 @@ function Public.register(entity, refill_name)
refill = refill_name,
is_fluid = is_fluid,
is_artillery = is_artillery,
destroy_id = destroy_id
}
if data.is_artillery then
@ -113,25 +109,20 @@ function Public.register(entity, refill_name)
}
end
register_map[destroy_id] = unit_id
turrets_map[unit_id] = data
end
function Public.remove(entity)
local unit_id = entity.unit_number
local destroy_id = turrets_map[unit_id].destroy_id
register_map[destroy_id] = nil
turrets_map[unit_id] = nil
if not entity.unit_number then
return
end
turrets_map[entity.unit_number] = nil
end
function Public.reset()
for k, _ in pairs(turrets_map) do
turrets_map[k] = nil
end
for k, _ in pairs(register_map) do
register_map[k] = nil
end
end
local artillery_projectile_token = Token.register(function(data)
@ -194,11 +185,10 @@ local function simulate_automatic_artillery(data)
end
local function on_object_destroyed(event)
local destroy_id = event.registration_number
local unit_id = event.unit_number
register_map[destroy_id] = nil
turrets_map[unit_id] = nil
if not event.useful_id then
return
end
turrets_map[event.useful_id] = nil
end
Event.add(defines.events.on_object_destroyed, on_object_destroyed)

View File

@ -23,12 +23,15 @@ local function register_tank(entity)
if entity.name ~= 'tank' then
return
end
tank_entities[entity.unit_number] = entity
script.register_on_object_destroyed(entity)
tank_entities[entity.unit_number] = entity
end
Event.add(defines.events.on_object_destroyed, function(event)
tank_entities[event.unit_number] = nil
if not event.useful_id then
return
end
tank_entities[event.useful_id] = nil
end)
Event.add(defines.events.on_robot_built_entity, function(event)

View File

@ -9,7 +9,7 @@ Global.register({car_entities = car_entities}, function(tbl)
end)
Event.add(defines.events.on_object_destroyed, function(event)
car_entities[event.unit_number] = nil
car_entities[event.useful_id] = nil
end)
Event.add(defines.events.on_player_driving_changed_state, function(event)
@ -25,8 +25,8 @@ Event.add(defines.events.on_player_driving_changed_state, function(event)
if player ~= driver.player then -- if the player that got in the vehicle is not the driver then return
return
else
car_entities[entity.unit_number] = entity
script.register_on_object_destroyed(entity)
local _, useful_id = script.register_on_object_destroyed(entity)
car_entities[useful_id] = entity
end
end
end)

View File

@ -318,10 +318,10 @@ end
Event.add(defines.events.on_entity_damaged, on_entity_damaged)
local function on_object_destroyed(event)
local unit_number = event.unit_number
--local registration_number = event.registration_number
Enemy.stop_tracking({ unit_number = unit_number })
if not event.useful_id then
return
end
Enemy.stop_tracking({ unit_number = event.useful_id })
end
Event.add(defines.events.on_object_destroyed, on_object_destroyed)