93 lines
3.2 KiB
GDScript
93 lines
3.2 KiB
GDScript
extends SceneTree
|
|
|
|
|
|
const PlayerScene: PackedScene = preload("res://player/player.tscn")
|
|
const CrabBrown: FishData = preload(
|
|
"res://fish/species/crab_brown/crab_brown.tres"
|
|
)
|
|
|
|
|
|
func _initialize() -> void:
|
|
call_deferred("_run")
|
|
|
|
|
|
func _run() -> void:
|
|
var player := PlayerScene.instantiate() as Player
|
|
root.add_child(player)
|
|
await process_frame
|
|
player.set_process(false)
|
|
player.set_physics_process(false)
|
|
var animation_player := player.get_node(
|
|
"Visuals/CharacterRig/AnimationPlayer"
|
|
) as AnimationPlayer
|
|
assert(animation_player != null)
|
|
for required_animation: StringName in [
|
|
&"draw",
|
|
&"idle_sneak",
|
|
&"sneaking",
|
|
&"strike",
|
|
]:
|
|
assert(animation_player.has_animation(required_animation))
|
|
|
|
Input.action_press(&"sneak")
|
|
player.velocity = Vector3.ZERO
|
|
player.call("_update_character_animation")
|
|
assert(animation_player.current_animation == &"idle_sneak")
|
|
|
|
player.velocity = Vector3(player.sneak_speed, 0.0, 0.0)
|
|
player.call("_update_character_animation")
|
|
assert(animation_player.current_animation == &"sneaking")
|
|
|
|
player.velocity = Vector3.ZERO
|
|
assert(player.begin_net_draw_visual())
|
|
assert(animation_player.current_animation == &"draw")
|
|
player.call("_on_character_animation_finished", &"draw")
|
|
assert(StringName(player.get("_animation_action_id")) == &"draw")
|
|
assert(animation_player.current_animation == &"draw")
|
|
|
|
assert(player.play_net_strike_visual())
|
|
assert(animation_player.current_animation == &"strike")
|
|
player.call("_on_character_animation_finished", &"strike")
|
|
assert(StringName(player.get("_animation_action_id")) == &"strike")
|
|
assert(bool(player.get("_animation_action_paused")))
|
|
assert(player.is_net_strike_held())
|
|
assert(player.release_net_strike_hold())
|
|
assert(StringName(player.get("_animation_action_id")).is_empty())
|
|
assert(animation_player.current_animation == &"idle_sneak")
|
|
|
|
Input.action_release(&"sneak")
|
|
assert(player.begin_net_draw_visual())
|
|
assert(animation_player.current_animation == &"casting")
|
|
player.cancel_net_action_visual()
|
|
assert(StringName(player.get("_animation_action_id")).is_empty())
|
|
assert(animation_player.current_animation == &"idle")
|
|
Input.action_press(&"sneak")
|
|
|
|
assert(player.play_net_strike_visual())
|
|
player.resolve_net_strike_visual(true)
|
|
var crab_catch := FishCatch.new()
|
|
crab_catch.fish = CrabBrown
|
|
crab_catch.fish_id = CrabBrown.id
|
|
crab_catch.weight_lb = CrabBrown.get_minimum_weight()
|
|
crab_catch.display_scale = CrabBrown.get_display_scale_for_weight(
|
|
crab_catch.weight_lb
|
|
)
|
|
crab_catch.sale_value = CrabBrown.get_sale_value_for_weight(
|
|
crab_catch.weight_lb
|
|
)
|
|
crab_catch.ensure_identity()
|
|
player.begin_catch_showcase(crab_catch)
|
|
assert(not bool(player.get("_showcase_animation_active")))
|
|
assert(player.get("_pending_net_showcase_catch") == crab_catch)
|
|
player.call("_on_character_animation_finished", &"strike")
|
|
assert(StringName(player.get("_animation_action_id")).is_empty())
|
|
assert(bool(player.get("_showcase_animation_active")))
|
|
var catch_display := player.get("_catch_display") as Node3D
|
|
assert(catch_display != null and catch_display.visible)
|
|
player.end_catch_showcase(Callable(), true)
|
|
|
|
Input.action_release(&"sneak")
|
|
player.queue_free()
|
|
await process_frame
|
|
print("Player gathering animation validation: PASS")
|
|
quit()
|