Randoloot/tests/previews/captain_equipment_preview.gd
2026-10-27 22:20:01 +01:00

73 lines
3.4 KiB
GDScript

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("Dopasuj poziom"))
assert(gear._wardrobe.find_child("PaperDoll",true,false)._reductions.breathing.text == "Poz. 2")
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()