extends SceneTree const MainScene = preload("res://main/main.tscn") func _initialize() -> void: call_deferred("_run") func _run() -> void: var main := MainScene.instantiate() root.add_child(main) for _frame: int in 6: await process_frame assert(bool(main.get("_application_initialized"))) var save_manager := main.get("_save_manager") as PlayerSaveManager assert(save_manager.initialize_new_game()) main.call("_enter_gameplay") for _frame: int in 8: await process_frame assert(bool(main.get("_gameplay_started"))) var game_ui := main.get_node("%GameUI") as GameUI var player_menu := game_ui.get_node("%PlayerMenu") as PlayerMenu var logbook := player_menu.get_node("%CatalogLogbook") as LogbookPage var backdrop := main.get_node("%PlayerMenuBackdrop") as ColorRect var hotbar := game_ui.get_node("%Hotbar") as Control var shortcut := InputEventKey.new() shortcut.pressed = true shortcut.physical_keycode = KEY_L assert(bool(player_menu.call("_handle_direct_page_shortcut", shortcut))) await create_timer(2.2).timeout assert(player_menu.visible) assert(logbook.visible) assert(backdrop.visible) assert(not bool(game_ui.get("_player_menu_hotbar_visible"))) assert(not hotbar.visible) var entry_buttons: Dictionary = logbook.get("_entry_buttons") assert(entry_buttons.size() == 4) await _capture_if_requested("-unknown") logbook.call( "_select_category", LogbookCatalog.Category.FRESH_WATER ) await create_timer(0.25).timeout assert((logbook.get("_entry_buttons") as Dictionary).is_empty()) await _capture_if_requested("-fresh") logbook.call("_select_category", LogbookCatalog.Category.SALT_WATER) await create_timer(0.25).timeout assert((logbook.get("_entry_buttons") as Dictionary).is_empty()) logbook.call("_select_category", LogbookCatalog.Category.OTHER) await create_timer(0.25).timeout assert((logbook.get("_entry_buttons") as Dictionary).size() == 4) var player := main.get("_player") as Player player.collection_log.mark_discovered(&"bluegill") await process_frame logbook.call("_select_entry", &"bluegill", &"bluegill") await create_timer(0.2).timeout await _capture_if_requested("-known") assert(bool(player_menu.call("_handle_direct_page_shortcut", shortcut))) await create_timer(2.2).timeout assert(not player_menu.visible) assert(bool(player_menu.call("_handle_direct_page_shortcut", shortcut))) await create_timer(2.2).timeout player_menu.call( "_show_section_immediate", PlayerMenu.Section.PROFILE ) await process_frame assert(not bool( player_menu.call("_handle_direct_page_shortcut", shortcut) )) assert(player_menu.visible) player_menu.close_menu(PlayerMenu.CloseReason.TEARDOWN, false) print( "Logbook runtime validation: PASS at %dx%d" % [root.size.x, root.size.y] ) main.queue_free() await process_frame quit() func _capture_if_requested(suffix: String) -> void: if not OS.has_environment("NETFISHING_LOGBOOK_CAPTURE"): return await process_frame await process_frame var image: Image = root.get_texture().get_image() var path: String = ( OS.get_environment("NETFISHING_LOGBOOK_CAPTURE") + suffix + ".png" ) assert(image.save_png(path) == OK)