Add categorized Logbook foundation
This commit is contained in:
parent
b3880c9e2b
commit
969ed8f10f
13 changed files with 1001 additions and 68 deletions
98
tests/logbook_runtime_validation.gd
Normal file
98
tests/logbook_runtime_validation.gd
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
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)
|
||||
Loading…
Add table
Add a link
Reference in a new issue