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()