From e8f2c53fcadef667b2c2ae7a8b96105c862dee85 Mon Sep 17 00:00:00 2001 From: PHIDIAS Date: Mon, 2 Sep 2024 06:01:44 +0900 Subject: [PATCH] Automatic Lawnmower (#311) * Create lawnmower.lua * Update _file_loader.lua * Delete modules/commands/lawnmower.lua * Update lawnmower.lua * Create lawnmower.lua * Update lawnmower.lua * Update _file_loader.lua * Update lawnmower.lua --- config/_file_loader.lua | 2 +- config/lawnmower.lua | 6 +++++ modules/{commands => addons}/lawnmower.lua | 30 ++++++++++++++++++++-- 3 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 config/lawnmower.lua rename modules/{commands => addons}/lawnmower.lua (54%) diff --git a/config/_file_loader.lua b/config/_file_loader.lua index 00d2484b..cb4b9b58 100644 --- a/config/_file_loader.lua +++ b/config/_file_loader.lua @@ -39,7 +39,6 @@ return { 'modules.commands.pollution', 'modules.commands.train', 'modules.commands.friendly-fire', - 'modules.commands.lawnmower', 'modules.commands.research', 'modules.commands.vlayer', 'modules.commands.enemy', @@ -67,6 +66,7 @@ return { 'modules.addons.nukeprotect', 'modules.addons.inserter', 'modules.addons.miner', + 'modules.addons.lawnmower', 'modules.addons.logging', -- Control diff --git a/config/lawnmower.lua b/config/lawnmower.lua new file mode 100644 index 00000000..80506da0 --- /dev/null +++ b/config/lawnmower.lua @@ -0,0 +1,6 @@ +--- Settings for lawnmower +-- @config lawnmower + +return { + destroy_decoratives = false +} diff --git a/modules/commands/lawnmower.lua b/modules/addons/lawnmower.lua similarity index 54% rename from modules/commands/lawnmower.lua rename to modules/addons/lawnmower.lua index 04e7eb66..8391dc55 100644 --- a/modules/commands/lawnmower.lua +++ b/modules/addons/lawnmower.lua @@ -1,9 +1,11 @@ ---[[-- Commands Module - Lawnmower +--[[-- Addon Lawnmower - Adds a command that clean up biter corpse and nuclear hole - @commands Lawnmower + @addon Lawnmower ]] local Commands = require 'expcore.commands' --- @dep expcore.commands +local Event = require 'utils.event' --- @dep utils.event +local config = require 'config.lawnmower' --- @dep config.lawnmower require 'config.expcore.command_general_parse' Commands.new_command('lawnmower', 'Clean up biter corpse, decoratives and nuclear hole') @@ -31,3 +33,27 @@ Commands.new_command('lawnmower', 'Clean up biter corpse, decoratives and nuclea return Commands.success end) + +local function destroy_decoratives(entity) + if entity.type ~= 'entity-ghost' and entity.type ~= 'tile-ghost' and entity.prototype.selectable_in_game then + entity.surface.destroy_decoratives{area=entity.selection_box} + end +end + +if config.destroy_decoratives then + Event.add(defines.events.on_built_entity, function(event) + destroy_decoratives(event.created_entity) + end) + + Event.add(defines.events.on_robot_built_entity, function(event) + destroy_decoratives(event.created_entity) + end) + + Event.add(defines.events.script_raised_built, function(event) + destroy_decoratives(event.entity) + end) + + Event.add(defines.events.script_raised_revive, function(event) + destroy_decoratives(event.entity) + end) +end