forked from wxm/Fighting_Rthythm_game
Initial commit: Fighting_Rthythm_game project setup
This commit is contained in:
56
tests/test_player_scale.gd
Normal file
56
tests/test_player_scale.gd
Normal file
@@ -0,0 +1,56 @@
|
||||
extends SceneTree
|
||||
|
||||
var failures: Array[String] = []
|
||||
|
||||
|
||||
func _init() -> void:
|
||||
var scene: PackedScene = load("res://scenes/characters/player.tscn")
|
||||
if scene == null:
|
||||
push_error("Could not load player.tscn")
|
||||
quit(1)
|
||||
return
|
||||
|
||||
var player: Node = scene.instantiate()
|
||||
var sprite: Sprite2D = player.get_node("CharacterSprite") as Sprite2D
|
||||
var collision: CollisionShape2D = player.get_node("CollisionShape2D") as CollisionShape2D
|
||||
var camera: Camera2D = player.get_node("Camera2D") as Camera2D
|
||||
var animation_player: AnimationPlayer = player.get_node("AnimationPlayer") as AnimationPlayer
|
||||
|
||||
_expect_vector((player as Node2D).scale, Vector2(4, 4), "Player root scale")
|
||||
_expect_vector(sprite.scale, Vector2.ONE, "CharacterSprite local scale should keep anchor")
|
||||
_expect_vector(sprite.offset, Vector2(-24, -40), "CharacterSprite visible foot offset")
|
||||
_expect_vector(collision.scale, Vector2.ONE, "CollisionShape2D local scale should keep anchor")
|
||||
_expect_vector(collision.position, Vector2(0, -18), "CollisionShape2D local position should keep anchor")
|
||||
_expect_vector(camera.position, Vector2(0, -37.5), "Camera2D position should compensate player scale")
|
||||
_expect_vector(camera.scale, Vector2(0.25, 0.25), "Camera2D scale should compensate player scale")
|
||||
_expect_animation_offset(animation_player, "idle", Vector2(-24, -40))
|
||||
_expect_animation_offset(animation_player, "jump", Vector2(-24, -44))
|
||||
_expect_animation_offset(animation_player, "挥砍", Vector2(-40, -48))
|
||||
|
||||
player.free()
|
||||
|
||||
if failures.is_empty():
|
||||
print("PASS player scale")
|
||||
quit(0)
|
||||
else:
|
||||
for failure: String in failures:
|
||||
push_error(failure)
|
||||
quit(1)
|
||||
|
||||
|
||||
func _expect_vector(actual: Vector2, expected: Vector2, label: String) -> void:
|
||||
if not actual.is_equal_approx(expected):
|
||||
failures.append("%s: expected %s, got %s" % [label, expected, actual])
|
||||
|
||||
|
||||
func _expect_animation_offset(animation_player: AnimationPlayer, animation_name: String, expected: Vector2) -> void:
|
||||
var animation: Animation = animation_player.get_animation(animation_name)
|
||||
if animation == null:
|
||||
failures.append("Missing animation: %s" % animation_name)
|
||||
return
|
||||
for track_index: int in range(animation.get_track_count()):
|
||||
if animation.track_get_path(track_index) == NodePath("CharacterSprite:offset"):
|
||||
var actual: Vector2 = animation.track_get_key_value(track_index, 0)
|
||||
_expect_vector(actual, expected, "%s CharacterSprite offset" % animation_name)
|
||||
return
|
||||
failures.append("Missing CharacterSprite offset track: %s" % animation_name)
|
||||
Reference in New Issue
Block a user