89 lines
2.9 KiB
GDScript
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()
|