85 lines
3.6 KiB
GDScript
85 lines
3.6 KiB
GDScript
extends Node
|
|
const NETWORK := preload("res://scripts/planets/mining_network.gd")
|
|
const PROFILES := preload("res://scripts/planets/planet_profiles.gd")
|
|
|
|
func settle() -> void:
|
|
for frame in 20: await get_tree().process_frame
|
|
|
|
func stop_game(game: Node) -> void:
|
|
game.set_physics_process(false)
|
|
game.player.set_physics_process(false)
|
|
game.player.get_node("WeaponController").set_physics_process(false)
|
|
for enemy in get_tree().get_nodes_in_group("enemies"): enemy.set_physics_process(false)
|
|
|
|
func _ready() -> void:
|
|
GameState.start_new_run()
|
|
GameState.set_process(false)
|
|
GameState.system_seed = 12345
|
|
GameState.remember_system()
|
|
GameState.system_level = 3
|
|
GameState.system_seed = 54321
|
|
GameState.remember_system()
|
|
GameState.system_level = 1
|
|
GameState.system_seed = 12345
|
|
GameState.cleared_systems[1] = true
|
|
var captain: Resource = GameState.captain
|
|
var profile: Dictionary
|
|
for index in 100:
|
|
var candidate := PROFILES.generate(12345, index, "Placówka testowa")
|
|
if NETWORK.has_recruit(candidate) and NETWORK.has_deep_deposit(candidate):
|
|
profile = candidate
|
|
break
|
|
captain.expedition.freighter_rooms.cabin_1 = "crew_cabin"
|
|
captain.parts = 200
|
|
assert(NETWORK.hire(captain.expedition, profile))
|
|
assert(NETWORK.build(captain.expedition, captain, profile, 1))
|
|
var member: Dictionary = NETWORK.cabin_crew(captain.expedition, "cabin_1")
|
|
NETWORK.assign(captain.expedition, profile.id, member.id)
|
|
NETWORK.advance(captain.expedition, 60)
|
|
var stock: float = captain.expedition.deuter
|
|
get_tree().current_scene = null
|
|
var game := preload("res://scenes/game/game.tscn").instantiate()
|
|
get_tree().root.add_child.call_deferred(game)
|
|
await settle()
|
|
get_tree().current_scene = game
|
|
stop_game(game)
|
|
assert(game.system_cleared and game.get_remaining_enemies() == 0)
|
|
var layout: Dictionary = game.system_data
|
|
var inventory = game.player.get_node("ShipInventory")
|
|
inventory.ammunition = 321
|
|
var manager = game.get_node("PlanetExpeditions")
|
|
manager.open_freighter()
|
|
manager.screen._select_section("command")
|
|
assert(manager.screen._content.find_child("SystemDestination", true, false).item_count == 3)
|
|
assert(not manager.request_system_travel(4))
|
|
assert(is_instance_valid(manager.screen))
|
|
var destination: OptionButton = manager.screen._content.find_child("SystemDestination", true, false)
|
|
destination.select(2)
|
|
destination.item_selected.emit(2)
|
|
var travel: Button = manager.screen._content.find_child("TravelToSystem", true, false)
|
|
assert(not travel.disabled)
|
|
travel.pressed.emit()
|
|
await settle()
|
|
game = get_tree().current_scene
|
|
stop_game(game)
|
|
assert(GameState.system_level == 3 and GameState.system_seed == 54321 and GameState.highest_system == 3)
|
|
assert(GameState.captain == captain and captain.expedition.deuter == stock)
|
|
assert(game.player.get_node("ShipInventory").ammunition == 321)
|
|
assert(captain.expedition.mining_stations[profile.id].crew_id == member.id)
|
|
manager = game.get_node("PlanetExpeditions")
|
|
manager.open_freighter()
|
|
assert(manager.request_system_travel(1))
|
|
await settle()
|
|
game = get_tree().current_scene
|
|
stop_game(game)
|
|
assert(GameState.system_level == 1 and GameState.system_seed == 12345)
|
|
assert(game.system_cleared and game.get_remaining_enemies() == 0)
|
|
assert(game.system_data.star_name == layout.star_name)
|
|
assert(game.system_data.planets[0].profile == layout.planets[0].profile)
|
|
assert(captain.expedition.deuter == stock and captain.expedition.crew.size() == 1)
|
|
assert(not game.travel_to_system(4))
|
|
get_tree().current_scene = self
|
|
game.free()
|
|
print("FREIGHTER_NAVIGATION_TEST_OK: real scene reload 1 -> 3 -> 1, unlocked cap, original seeds and planet identities, cleared systems, inventory, crew, stations and deuter retained")
|
|
get_tree().quit()
|