Randoloot/tests/ships/ship_selection_test.gd

43 lines
2.2 KiB
GDScript

extends Node
const CATALOG := preload("res://scripts/game/ship_catalog.gd")
const SELECTION := preload("res://scenes/ui/ship_selection.tscn")
const PLAYER := preload("res://scenes/game/player_ship.tscn")
func _ready() -> void:
GameState.selected_ship_path = "res://assets/Ships/Spaceship_9.png"
var selection := SELECTION.instantiate()
add_child(selection)
var grid: GridContainer = selection.get_node("Layout/ShipScroll/ShipGrid")
assert(grid.get_child_count() == 4)
assert(GameState.selected_ship_path == CATALOG.texture_path(CATALOG.SHIPS[0]))
for chassis in CATALOG.SHIPS:
grid.get_node("Ship%d" % chassis["number"]).emit_signal("pressed")
assert(GameState.selected_ship_path == CATALOG.texture_path(chassis))
GameState.start_new_run()
var ship := PLAYER.instantiate() as CharacterBody2D
add_child(ship)
assert(ship.get("max_hull") == chassis["hull"] and ship.get("hull") == chassis["hull"])
assert(ship.get("max_shields") == chassis["shields"] and ship.get("shields") == chassis["shields"])
assert(ship.get("max_energy") == chassis["energy"] and ship.get("energy") == chassis["energy"])
assert(ship.get("max_speed") == chassis["speed"] and ship.get("energy_regeneration") == 5.0)
assert(ship.get_node("Sprite2D").texture.resource_path == CATALOG.texture_path(chassis))
var inventory: ShipInventory = ship.get_node("ShipInventory")
var shield := ItemInstance.new()
shield.definition = preload("res://resources/items/reinforced_shield.tres")
assert(inventory.add_item(shield))
assert(inventory.move_item("cargo", inventory.cargo.find(shield), "module", 0))
var equipped := inventory.get_item("module", 0)
assert(ship.get("max_shields") == chassis["shields"] + equipped.get_stat_total("max_shields"))
inventory.preserve_for_restart()
ship.queue_free()
await get_tree().process_frame
var restored := PLAYER.instantiate() as CharacterBody2D
add_child(restored)
assert(restored.get("base_max_shields") == chassis["shields"])
assert(restored.get("shields") == restored.get("max_shields"))
assert(restored.get_node("ShipInventory").get_item("module", 0) == equipped)
restored.queue_free()
await get_tree().process_frame
print("SHIP_SELECTION_TEST: PASS — four choices, fallback, base stats, full resources, equipment and restart")