extends Node const CATALOG := preload("res://scripts/game/ship_catalog.gd") const SELECTION := preload("res://scenes/ui/ship_selection.tscn") const PLAYER := preload("res://scenes/game/player_ship.tscn") func _ready() -> void: GameState.selected_ship_path = "res://assets/Ships/Spaceship_9.png" var selection := SELECTION.instantiate() add_child(selection) var grid: GridContainer = selection.get_node("Layout/ShipScroll/ShipGrid") assert(grid.get_child_count() == 4) assert(GameState.selected_ship_path == CATALOG.texture_path(CATALOG.SHIPS[0])) for chassis in CATALOG.SHIPS: grid.get_node("Ship%d" % chassis["number"]).emit_signal("pressed") assert(GameState.selected_ship_path == CATALOG.texture_path(chassis)) GameState.start_new_run() var ship := PLAYER.instantiate() as CharacterBody2D add_child(ship) assert(ship.get("max_hull") == chassis["hull"] and ship.get("hull") == chassis["hull"]) assert(ship.get("max_shields") == chassis["shields"] and ship.get("shields") == chassis["shields"]) assert(ship.get("max_energy") == chassis["energy"] and ship.get("energy") == chassis["energy"]) assert(ship.get("max_speed") == chassis["speed"] and ship.get("energy_regeneration") == 5.0) assert(ship.get_node("Sprite2D").texture.resource_path == CATALOG.texture_path(chassis)) var inventory: ShipInventory = ship.get_node("ShipInventory") var shield := ItemInstance.new() shield.definition = preload("res://resources/items/reinforced_shield.tres") assert(inventory.add_item(shield)) assert(inventory.move_item("cargo", inventory.cargo.find(shield), "module", 0)) var equipped := inventory.get_item("module", 0) assert(ship.get("max_shields") == chassis["shields"] + equipped.get_stat_total("max_shields")) inventory.preserve_for_restart() ship.queue_free() await get_tree().process_frame var restored := PLAYER.instantiate() as CharacterBody2D add_child(restored) assert(restored.get("base_max_shields") == chassis["shields"]) assert(restored.get("shields") == restored.get("max_shields")) assert(restored.get_node("ShipInventory").get_item("module", 0) == equipped) restored.queue_free() await get_tree().process_frame print("SHIP_SELECTION_TEST: PASS — four choices, fallback, base stats, full resources, equipment and restart")