Randoloot/tests/previews/captain_equipment_preview.gd
2026-10-18 18:47:18 +02:00

73 lines
3.4 KiB
GDScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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()