extends Node2D # #116: purely visual - a repair drone on its way out to a damaged structure # or back to its workshop. Carries no state of its own; GameState owns the # simulation and RepairDroneField creates, positions and frees this to match. const HULL_COLOR: Color = Color(0.5, 0.95, 0.8) var laden: bool = false func _ready() -> void: add_to_group("repair_drones") # #91: behind the fleet, like every other piece of ground furniture. z_index = -1 queue_redraw() func set_laden(value: bool) -> void: if laden == value: return laden = value queue_redraw() func _draw() -> void: # Small and blunt, with a tool arm out front, in the workshop's own # green-teal: it should read as a tender belonging to a building rather # than as a fleet vessel or a hub's magenta hauler. var hull: PackedVector2Array = PackedVector2Array([ Vector2(0, -11), Vector2(8, -3), Vector2(6, 10), Vector2(-6, 10), Vector2(-8, -3), ]) NeonDraw.draw_glowing_polygon(self, hull, HULL_COLOR, 1.0) NeonDraw.draw_glowing_line(self, Vector2(0, -11), Vector2(0, -18), HULL_COLOR, 0.9, 0.35) NeonDraw.draw_glowing_line(self, Vector2(-5, -18), Vector2(5, -18), HULL_COLOR, 0.9, 0.35) if laden: # The load it is carrying out, in ore's own colour so it reads as # material rather than as a light on the hull. NeonDraw.draw_glowing_circle(self, Vector2(0, 3), 5.0, GameState.resource_color(GameState.RESOURCE_ORE), 1.0)