73 lines
3.4 KiB
GDScript
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()
|