40 lines
2.1 KiB
GDScript
40 lines
2.1 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")
|
|
assert(inventory.move_item("cargo", 2, "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")
|