66 lines
2.7 KiB
GDScript
66 lines
2.7 KiB
GDScript
extends Node2D
|
|
|
|
const PLAYER := preload("res://scenes/game/player_ship.tscn")
|
|
const BANK := preload("res://resources/items/energy_bank.tres")
|
|
|
|
func _ready() -> void:
|
|
GameState.start_new_run()
|
|
var ship := PLAYER.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
|
|
inventory.cargo.fill(null)
|
|
var item := ItemInstance.new()
|
|
item.definition = BANK
|
|
var pickup := Node2D.new()
|
|
pickup.set_script(preload("res://scripts/items/loot_pickup.gd"))
|
|
pickup.set("item", item)
|
|
add_child(pickup)
|
|
pickup.set_physics_process(false)
|
|
var equipment := ItemInstance.new()
|
|
equipment.definition = preload("res://resources/items/plasma_cannon.tres")
|
|
inventory.cargo.fill(equipment)
|
|
pickup.call("_physics_process", 0.1)
|
|
assert(pickup.is_queued_for_deletion())
|
|
assert(inventory.get_cargo_used() == ShipInventory.CARGO_SIZE)
|
|
assert(inventory.get_energy_bank_count() == 1)
|
|
assert(not inventory.use_energy_bank())
|
|
assert(inventory.get_energy_bank_count() == 1)
|
|
ship.set("max_energy", 250.0)
|
|
ship.set("energy", 100.0)
|
|
assert(inventory.use_energy_bank())
|
|
assert(is_equal_approx(float(ship.get("energy")), 125.0))
|
|
assert(inventory.get_energy_bank_count() == 0)
|
|
assert(not inventory.use_energy_bank())
|
|
assert(inventory.add_item(item))
|
|
ship.set("energy", 240.0)
|
|
ship.set("is_docked", true)
|
|
assert(not inventory.use_energy_bank())
|
|
ship.set("is_docked", false)
|
|
var press := InputEventAction.new()
|
|
press.action = "use_energy_bank"
|
|
press.pressed = true
|
|
ship.call("_unhandled_key_input", press)
|
|
assert(is_equal_approx(float(ship.get("energy")), 250.0))
|
|
assert(inventory.get_energy_bank_count() == 0)
|
|
assert(inventory.add_item(item))
|
|
inventory.preserve_for_restart()
|
|
assert(GameState.restart_inventory["energy_banks"] == 1)
|
|
assert(GameState.restart_inventory["cargo"][0].definition != BANK)
|
|
# Old slot-based banks are converted once when restoring a ship.
|
|
GameState.restart_inventory["cargo"][0] = item
|
|
var restored := PLAYER.instantiate() as CharacterBody2D
|
|
restored.name = "RestoredShip"
|
|
add_child(restored)
|
|
restored.set_physics_process(false)
|
|
restored.get_node("WeaponController").set_physics_process(false)
|
|
var restored_inventory := restored.get_node("ShipInventory") as ShipInventory
|
|
assert(restored_inventory.get_energy_bank_count() == 2)
|
|
assert(restored_inventory.cargo[0] == null)
|
|
assert(restored_inventory.get_cargo_used() == ShipInventory.CARGO_SIZE - 1)
|
|
assert(is_equal_approx(preload("res://resources/items/gamma_cannon.tres").weapon_range, 400.0))
|
|
print("ENERGY_BANK_TEST: PASS (pickup, full cargo, 10% maximum, cap, full energy, empty cargo, docked, R, persistence, gamma range)")
|
|
get_tree().quit()
|