netfishing/tests/gathering_showcase_validation.gd

89 lines
2.9 KiB
GDScript

extends SceneTree
const MainScene: PackedScene = preload("res://main/main.tscn")
const TEST_PORT: int = 18142
func _initialize() -> void:
call_deferred("_run")
func _run() -> void:
root.size = Vector2i(1280, 720)
var main: Node = MainScene.instantiate()
root.add_child(main)
for _frame: int in 4:
await process_frame
if not bool(main.get("_application_initialized")):
main.call("_activate_selected_data_path", "", true)
for _frame: int in 8:
await process_frame
assert(bool(main.get("_application_initialized")))
var session := main.get_node("%NetworkSession") as NetworkSession
assert(session.start_private_host(TEST_PORT))
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
var player := main.get("_player") as Player
var fishing_spot := main.get_node("%FishingSpot") as FishingSpot
var catalog := main.get("fish_catalog") as FishPool
assert(player != null and fishing_spot != null and catalog != null)
assert(player.bag.add_item(&"crab_net"))
assert(player.hotbar.assign_item(0, &"crab_net"))
assert(player.hotbar.select_slot(0))
await process_frame
assert(player.hotbar.get_selected_item_id() == &"crab_net")
assert(bool(player.get("_active_item_is_net")))
var crab: FishData = catalog.get_fish_by_id(&"crab_brown")
assert(crab != null and crab.is_selectable())
var crab_catch := FishCatch.new()
crab_catch.fish = crab
crab_catch.fish_id = crab.id
crab_catch.weight_lb = crab.get_minimum_weight()
crab_catch.display_scale = crab.get_display_scale_for_weight(
crab_catch.weight_lb
)
crab_catch.sale_value = crab.get_sale_value_for_weight(
crab_catch.weight_lb
)
crab_catch.ensure_identity()
player.inventory.add_catch(crab_catch)
player.collection_log.mark_discovered(crab.id)
assert(fishing_spot.present_external_catch(crab_catch))
assert(fishing_spot.state == FishingSpot.FishingState.SHOWING_CATCH)
assert(not player.is_movement_enabled())
Input.action_release("fish_primary")
await process_frame
assert(bool(fishing_spot.get("_put_away_press_armed")))
var pocket_event := InputEventAction.new()
pocket_event.action = &"fish_primary"
pocket_event.pressed = true
Input.parse_input_event(pocket_event)
await process_frame
assert(fishing_spot.get("_pending_catch") == null)
var pocket_deadline: int = Time.get_ticks_msec() + 6000
while (
Time.get_ticks_msec() < pocket_deadline
and fishing_spot.state != FishingSpot.FishingState.READY
):
await process_frame
assert(fishing_spot.state == FishingSpot.FishingState.READY)
assert(player.is_movement_enabled())
assert(player.inventory.contains_catch_id(crab_catch.catch_id))
assert(bool(player.get("_active_item_is_net")))
print("Gathering showcase validation: PASS")
session.disconnect_session("")
main.queue_free()
for _frame: int in 4:
await process_frame
await create_timer(0.1).timeout
quit()