Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix autodecon module mapped entities on config changed #1457

Merged
merged 1 commit into from
Nov 26, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 52 additions & 35 deletions features/autodeconstruct.lua
Original file line number Diff line number Diff line change
Expand Up @@ -4,65 +4,82 @@ local Event = require 'utils.event'
local Token = require 'utils.token'
local Task = require 'utils.task'
local Global = require 'utils.global'
local table = require 'utils.table'

local drill_radius_map = {}
local max_radius = 0
local require_fluid_ores = {}
local pumpjack_resources_map = {}
local drill_names = {}

Global.register_init(
{
drill_radius_map = drill_radius_map,
require_fluid_ores = require_fluid_ores,
pumpjack_resources_map = pumpjack_resources_map
},
function(tbl)
local map = tbl.drill_radius_map
local max = 0
local fluid_ores = tbl.require_fluid_ores
local pumpjack_map = tbl.pumpjack_resources_map
local function setup(tbl)
local map = tbl.drill_radius_map
local max = 0
local fluid_ores = tbl.require_fluid_ores
local pumpjack_map = tbl.pumpjack_resources_map
local names = tbl.drill_names

for name, entity in pairs(prototypes.entity) do
if entity.type == 'mining-drill' and entity.resource_categories['basic-solid'] then
local radius = entity.mining_drill_radius
for name, entity in pairs(prototypes.entity) do
if entity.type == 'mining-drill' and entity.resource_categories['basic-solid'] then
local radius = entity.mining_drill_radius

map[name] = radius
map[name] = radius

if radius > max then
max = radius
end
elseif entity.type == 'resource' then
local props = entity.mineable_properties
if radius > max then
max = radius
end
elseif entity.type == 'resource' then
local props = entity.mineable_properties

if props.required_fluid then
fluid_ores[name] = true
end
if props.required_fluid then
fluid_ores[name] = true
end

local products = props.products or {}
for i = 1, #products do
local product = products[i]
if product.type == 'fluid' then
pumpjack_map[name] = true
break
end
local products = props.products or {}
for i = 1, #products do
local product = products[i]
if product.type == 'fluid' then
pumpjack_map[name] = true
break
end
end
end
end

tbl.max_radius = max
for k, _ in pairs(names) do
names[k] = nil
end
for k, _ in pairs(map) do
names[#names + 1] = k
end
end

tbl.max_radius = max
end,
Global.register_init(
{
drill_radius_map = drill_radius_map,
require_fluid_ores = require_fluid_ores,
pumpjack_resources_map = pumpjack_resources_map,
drill_names = drill_names
},
setup,
function(tbl)
drill_radius_map = tbl.drill_radius_map
max_radius = tbl.max_radius
require_fluid_ores = tbl.require_fluid_ores
pumpjack_resources_map = tbl.pumpjack_resources_map

drill_names = table.keys(drill_radius_map)
drill_names = tbl.drill_names
end
)

Event.on_configuration_changed(function()
setup({
drill_radius_map = drill_radius_map,
require_fluid_ores = require_fluid_ores,
pumpjack_resources_map = pumpjack_resources_map,
drill_names = drill_names
})
end)

local function is_depleted(drill, entity)
local radius = drill_radius_map[drill.name]

Expand Down
Loading