extends Node const GEAR := preload("res://scripts/planets/captain_equipment.gd") const SKILLS := preload("res://scripts/captain/captain_skills.gd") func settle() -> void: for frame in 5: await get_tree().process_frame await RenderingServer.frame_post_draw func _ready() -> void: GameState.start_new_run() var captain := GameState.captain captain.parts = 500 for key in ["silicon","copper","nickel","iron","tungsten","titanium"]: captain.minerals[key] = 500 for id in SKILLS.IDS: captain.skills[id] = 1 var icon := SKILLS.icon(id) assert(icon == SKILLS.icon(id)) assert(icon.get_size() == Vector2(384,384) and icon.get_image().has_mipmaps()) var game := preload("res://scenes/game/game.tscn").instantiate() add_child(game) await settle() game.player.set_physics_process(false) var hud := game.get_node("HUD/HUDRoot") var panel := hud.get_node("CaptainPanel") var gear := hud.get_node("CaptainEquipment") assert(not gear.visible and not gear._wardrobe.visible) assert(hud.get_node("MissionObjectives").position.y >= panel.position.y+panel.size.y) for kind in GEAR.KINDS: assert(not GEAR.craft(captain,kind).is_empty()) var click := InputEventMouseButton.new() click.button_index = MOUSE_BUTTON_LEFT click.position = panel.get_global_rect().get_center() click.pressed = true Input.parse_input_event(click) await settle() click.pressed = false Input.parse_input_event(click) assert(gear._wardrobe.visible,"Clicking the captain must open equipment") assert(not get_tree().paused) assert(gear._wardrobe.size.x <= 244) assert(gear._wardrobe.size.y <= 330) assert(gear._wardrobe.position.x == panel.position.x) assert(gear._wardrobe.position.y >= panel.position.y+panel.size.y) assert(gear._wardrobe.find_child("ReturnEquipment",true,false) == null) assert(gear._wardrobe.find_children("*","GridContainer",true,false).is_empty()) var breathing: Control = gear._wardrobe.find_child("BreathingSlot",true,false) var suit: Control = gear._wardrobe.find_child("SuitSlot",true,false) var uid := -1 for item in captain.gear_items: if item.kind == "breathing" and item.level == 2: uid = item.uid assert(breathing._can_drop_data(Vector2.ZERO,{"captain_gear":uid})) assert(not suit._can_drop_data(Vector2.ZERO,{"captain_gear":uid})) breathing._drop_data(Vector2.ZERO,{"captain_gear":uid}) assert(GEAR.level(captain,"breathing") == 2) assert(breathing._label.text.is_empty()) assert(breathing.tooltip_text.contains("Poziom 2")) assert(captain.gear_items.size() == 6) assert(gear._protection.text.contains("Tlen 4")) assert(gear._wardrobe.find_child("PaperDoll",true,false)._reductions.breathing.text == "−4%") await settle() assert(gear._wardrobe.get_global_rect().end.x <= get_viewport().get_visible_rect().size.x) assert(gear._wardrobe.get_global_rect().end.y <= get_viewport().get_visible_rect().size.y) assert(get_viewport().get_texture().get_image().save_png("res://artifacts/captain_equipment_redesign.png") == OK) var escape := InputEventKey.new() escape.pressed = true escape.keycode = KEY_ESCAPE Input.parse_input_event(escape) await settle() assert(not gear._wardrobe.visible) game.get_node("HUD/CaptainSkills").open_management() await settle() assert(get_viewport().get_texture().get_image().save_png("res://artifacts/captain_unified_skills.png") == OK) print("CAPTAIN EQUIPMENT PASS: 244px width, below captain, no backpack, slots, preserved gear, protection, panel click and ESC") get_tree().quit()