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 VESSEL_DEFINITIONS = preload("res://vessels/VesselDefinitions.gd") 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. # From the DEFINITION, for the reason Transporter.gd records: #216 made # these fly out as ordinary deliveries, and a delivery draws the # definition's hull. Two copies meant two shapes for one vessel. 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) func _hull() -> PackedVector2Array: var definition: Resource = VESSEL_DEFINITIONS.get_definition(GameState.REPAIR_DRONE) return PackedVector2Array() if definition == null else definition.hull_points