extends Node2D # Purely visual: a transport vessel running a hub -> mothership -> building # supply route. Carries no state of its own; GameState owns the simulation # and TransporterField creates, positions and frees this to match. const VESSEL_DEFINITIONS = preload("res://vessels/VesselDefinitions.gd") const HULL_COLOR: Color = Color(0.95, 0.55, 0.85) var laden: bool = false func _ready() -> void: add_to_group("transporters") z_index = -1 queue_redraw() func set_laden(value: bool) -> void: if laden == value: return laden = value queue_redraw() func _draw() -> void: # Squat and boxy, in the transport hub's own magenta, so it reads as # "belongs to the hub" and not as an extractor hauler (green) or a fleet # vessel (sharp cyan triangle). # # Taken from the DEFINITION rather than written out here. #216 made these # fly out from the mothership as ordinary deliveries, and a delivery draws # the definition's hull - so a second copy of the shape here meant a # transporter changed shape the moment it was assigned. One shape, one # place, whichever node is drawing it. NeonDraw.draw_glowing_polygon(self, _hull(), HULL_COLOR, 1.0) if laden: # A visible payload, so a loaded run is distinguishable from a # deadhead back to the hub at a glance. NeonDraw.draw_glowing_polygon(self, PackedVector2Array([ Vector2(-5, 0), Vector2(5, 0), Vector2(5, 9), Vector2(-5, 9), ]), HULL_COLOR, 0.85) func _hull() -> PackedVector2Array: var definition: Resource = VESSEL_DEFINITIONS.get_definition(GameState.VESSEL_TRANSPORTER) return PackedVector2Array() if definition == null else definition.hull_points