diff --git a/exp_scenario/module/commands/lawnmower.lua b/exp_scenario/module/commands/lawnmower.lua index f75f2fdc..b74c39cb 100644 --- a/exp_scenario/module/commands/lawnmower.lua +++ b/exp_scenario/module/commands/lawnmower.lua @@ -28,8 +28,8 @@ commands.lawnmower = Commands.new("lawnmower", { "exp-commands_lawnmower.descrip SelectArea:on_selection(function(event) local player = assert(game.get_player(event.player_index)) local area = AABB.expand(event.area) + local area_size = AABB.size(area) local surface = event.surface - local area_size = (area.right_bottom.x - area.left_top.x) * (area.right_bottom.y - area.left_top.y) if area_size > 1000 then player.print({ "exp-commands_lawnmower.area-too-large", 1000, area_size }, Commands.print_settings.error) diff --git a/exp_scenario/module/commands/surface.lua b/exp_scenario/module/commands/surface.lua index 1d98e96a..afe630f7 100644 --- a/exp_scenario/module/commands/surface.lua +++ b/exp_scenario/module/commands/surface.lua @@ -75,8 +75,8 @@ commands.clear_blueprints = Commands.new("clear-blueprints", { "exp-commands_sur SelectArea:on_selection(function(event) local player = assert(game.get_player(event.player_index)) local area = AABB.expand(event.area) + local area_size = AABB.size(area) local surface = event.surface - local area_size = (area.right_bottom.x - area.left_top.x) * (area.right_bottom.y - area.left_top.y) if area_size > 1000 then player.print({ "exp-commands_surface.area-too-large", 1000, area_size }, Commands.print_settings.error) diff --git a/exp_scenario/module/commands/waterfill.lua b/exp_scenario/module/commands/waterfill.lua index 4ca95ec9..6e1a8e24 100644 --- a/exp_scenario/module/commands/waterfill.lua +++ b/exp_scenario/module/commands/waterfill.lua @@ -41,6 +41,7 @@ commands.waterfill = Commands.new("waterfill", { "exp-commands_waterfill.descrip --- When an area is selected to be converted to water SelectArea:on_selection(function(event) local area = AABB.expand(event.area) + local area_size = AABB.size(area) local player = game.players[event.player_index] local surface = event.surface @@ -51,8 +52,6 @@ SelectArea:on_selection(function(event) end ]] - local area_size = (area.right_bottom.x - area.left_top.x) * (area.right_bottom.y - area.left_top.y) - if area_size > 1000 then player.print({ "exp-commands_waterfill.area-too-large", 1000, area_size }, Commands.print_settings.error) return diff --git a/exp_util/module/aabb.lua b/exp_util/module/aabb.lua index dda22d75..64c5719d 100644 --- a/exp_util/module/aabb.lua +++ b/exp_util/module/aabb.lua @@ -17,6 +17,13 @@ function AABB.valid(aabb) return aabb.left_top.x < aabb.right_bottom.x and aabb.left_top.y < aabb.right_bottom.y end +--- Returns the size of the area contained within an AABB +--- @param aabb BoundingBox +--- @return number +function AABB.size(aabb) + return (aabb.right_bottom.x - aabb.left_top.x) * (aabb.right_bottom.y - aabb.left_top.y) +end + --- Clone an area, allows for safe mutation of an input value --- @param aabb BoundingBox --- @return BoundingBox