56 lines
3.0 KiB
GDScript
56 lines
3.0 KiB
GDScript
extends Node2D
|
|
const GENERATOR := preload("res://scripts/items/item_generator.gd")
|
|
func _ready() -> void:
|
|
GameState.start_new_run()
|
|
var ship := preload("res://scenes/game/player_ship.tscn").instantiate() as CharacterBody2D
|
|
add_child(ship)
|
|
ship.set_physics_process(false)
|
|
var weapons := ship.get_node("WeaponController")
|
|
weapons.set_physics_process(false)
|
|
var inventory := ship.get_node("ShipInventory") as ShipInventory
|
|
assert(inventory.module_slots.size() == 5 and inventory.extension_slots.size() == 5)
|
|
var overlay := ship.get_node("ScannerOverlay").get_child(0)
|
|
var base_range: float = overlay.call("get_scan_range")
|
|
var energy_before: float = ship.get("energy")
|
|
var target := Node2D.new()
|
|
target.position = Vector2(base_range + 100.0, 0)
|
|
add_child(target)
|
|
target.add_to_group("exploration_pois")
|
|
assert(not overlay.call("is_target_in_range", target))
|
|
var computer := GENERATOR.generate_for_definition(preload("res://resources/items/ship_computer.tres"), 5)
|
|
assert(computer.get_addon_count() > 0)
|
|
assert(inventory.add_item(computer))
|
|
for index in 4:
|
|
assert(not inventory.can_move_item("cargo", inventory.cargo.find(computer), "module", index))
|
|
assert(not inventory.can_move_item("cargo", inventory.cargo.find(computer), "extension", 0))
|
|
assert(inventory.move_item("cargo", inventory.cargo.find(computer), "module", 4))
|
|
assert(overlay.call("is_target_in_range", target))
|
|
overlay.call("_process", 20.0)
|
|
assert(overlay.get("targets").has(target) and ship.get("energy") == energy_before)
|
|
for definition in GENERATOR.DEFINITIONS:
|
|
if definition.category == ItemDefinition.Category.ACTIVE_EXTENSION:
|
|
var extension := GENERATOR.generate_for_definition(definition, 1000, 2)
|
|
assert(extension.additional_modifiers.is_empty())
|
|
assert(inventory.add_item(extension))
|
|
assert(not inventory.can_move_item("cargo", inventory.cargo.find(extension), "module", 0))
|
|
assert(inventory.move_item("cargo", inventory.cargo.find(extension), "extension", 0))
|
|
var launcher := ItemInstance.new()
|
|
launcher.definition = ShipInventory.MISSILE_DEFINITIONS[0]
|
|
assert(inventory.add_item(launcher))
|
|
for index in 3:
|
|
assert(inventory.move_item("cargo", inventory.cargo.find(launcher), "weapon", index))
|
|
weapons.set("missile_cooldown_remaining", 0.0)
|
|
inventory.missile_ammunition = 1
|
|
assert(weapons.call("try_fire_missile", index))
|
|
assert(inventory.move_item("weapon", index, "cargo", inventory.cargo.find(null)))
|
|
assert(inventory.move_item("module", 4, "cargo", inventory.cargo.find(null)))
|
|
assert(is_equal_approx(overlay.call("get_scan_range"), base_range))
|
|
assert(not overlay.call("is_target_in_range", target))
|
|
inventory.preserve_for_restart()
|
|
var restored := preload("res://scenes/game/player_ship.tscn").instantiate()
|
|
add_child(restored)
|
|
restored.set_physics_process(false)
|
|
assert(restored.get_node("ShipInventory").extension_slots[0] == inventory.extension_slots[0])
|
|
print("SCANNER_TEST: PASS categories, extensions without addons, passive range, computer removal, all weapon slots, restart")
|
|
get_tree().quit()
|