extends Node const GAME := preload("res://scenes/game/game.tscn") func _ready() -> void: get_tree().create_timer(10.0).timeout.connect(func() -> void: push_error("CAPTAIN_SHIP_DRAWER_TEST: timed out") get_tree().quit(1) ) GameState.start_new_run() var game := GAME.instantiate() as Node2D add_child(game) await get_tree().process_frame for enemy in get_tree().get_nodes_in_group("enemies"): enemy.set_physics_process(false) var ship := game.get_node("PlayerShip") as CharacterBody2D ship.set_physics_process(false) ship.get_node("WeaponController").set_physics_process(false) var hud := game.get_node("HUD") var root := hud.get_node("HUDRoot") as Control var drawer := root.get_node("CaptainShipDrawer") as Control var toggle := root.get_node("CaptainShipToggle") as Button var captain := drawer.get_node("Scroll/Contents/CaptainPanel") var equipment := drawer.get_node("Scroll/Contents/ShipEquipmentPanel") assert(captain.get_parent() == equipment.get_parent()) assert(not drawer.visible) toggle.pressed.emit() await get_tree().create_timer(0.3).timeout assert(drawer.visible and is_equal_approx(drawer.position.x + drawer.size.x, root.size.x - 8.0)) GameState.captain.learning_points = 1 GameState.captain.emit_changed() captain.get_node("Contents/Skills/gunner/Train_gunner").pressed.emit() assert(GameState.captain.get_skill_rank("gunner") == 1) equipment.get_node("Contents/InventoryButton").pressed.emit() await get_tree().create_timer(0.3).timeout var inventory_panel: Control = hud.get("inventory_panel") assert(inventory_panel.visible and inventory_panel.get("_drawer_open")) var inventory := ship.get_node("ShipInventory") as ShipInventory var item := ItemInstance.new() item.definition = preload("res://resources/items/engine_extension.tres") assert(inventory.add_item(item)) assert(inventory.move_item("cargo", inventory.cargo.find(item), "module", 0)) assert(ship.get("max_speed") > ship.get("base_max_speed")) toggle.pressed.emit() await get_tree().create_timer(0.3).timeout assert(not drawer.visible and not inventory_panel.visible) toggle.pressed.emit() await get_tree().create_timer(0.3).timeout assert(drawer.visible and not inventory_panel.visible) var original_size := root.size root.size = Vector2(root.size.x, 480) hud.call("_layout_sidebar") await get_tree().process_frame await get_tree().process_frame var scroll := drawer.get_node("Scroll") as ScrollContainer assert(scroll.get_v_scroll_bar().visible) root.size = original_size hud.call("_layout_sidebar") print("CAPTAIN_SHIP_DRAWER_TEST: PASS (merged panel, slide, close/reopen, skills, inventory, equipment stats)") get_tree().quit()