47 lines
2.0 KiB
GDScript
47 lines
2.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
|
|
ship.name = "PlayerShip"
|
|
add_child(ship)
|
|
ship.set_physics_process(false)
|
|
ship.get_node("WeaponController").set_physics_process(false)
|
|
var inventory := ship.get_node("ShipInventory") as ShipInventory
|
|
var scanner := GENERATOR.generate_for_definition(preload("res://resources/items/scanner.tres"), 5)
|
|
assert(scanner.get_addon_count() > 0)
|
|
assert(inventory.add_item(scanner))
|
|
assert(inventory.move_item("cargo", inventory.cargo.find(scanner), "module", 0))
|
|
var enemy := preload("res://scenes/game/enemy_ship.tscn").instantiate() as CharacterBody2D
|
|
enemy.position = Vector2(900, 0)
|
|
add_child(enemy)
|
|
enemy.set_physics_process(false)
|
|
for kind in ["asteroid", "wreck", "ruin"]:
|
|
var poi := StaticBody2D.new()
|
|
poi.set_script(preload("res://scripts/levels/exploration_poi.gd"))
|
|
poi.set("kind", kind)
|
|
poi.set("player", ship)
|
|
poi.position = Vector2(1500, 100)
|
|
add_child(poi)
|
|
poi.set_physics_process(false)
|
|
var maximum := float(ship.get("max_energy"))
|
|
ship.set("energy", maximum * 0.49)
|
|
assert(not ship.activate_ability(0))
|
|
ship.set("energy", maximum * 0.8)
|
|
assert(ship.activate_ability(0))
|
|
assert(is_equal_approx(ship.get("energy"), maximum * 0.3))
|
|
var layer := ship.get_node("ScannerOverlay") as CanvasLayer
|
|
var overlay := layer.get_child(0) as Control
|
|
assert(overlay.get("targets").size() == 4)
|
|
assert(overlay.mouse_filter == Control.MOUSE_FILTER_IGNORE)
|
|
assert(not ship.activate_ability(0))
|
|
await get_tree().process_frame
|
|
overlay.call("_process", 8.1)
|
|
await get_tree().process_frame
|
|
assert(not ship.has_node("ScannerOverlay"))
|
|
ship.set("energy", maximum * 0.5)
|
|
assert(ship.activate_ability(0))
|
|
assert(is_zero_approx(ship.get("energy")))
|
|
print("SCANNER_TEST: PASS loot addons, module activation, 50% max energy cost, four target types, repeat prevention, 8s expiry, reactivation")
|
|
get_tree().quit()
|