51 lines
1.6 KiB
GDScript
51 lines
1.6 KiB
GDScript
extends SceneTree
|
|
const Model = preload("res://games/pacman/pacman_model.gd")
|
|
const Maze = preload("res://games/pacman/pacman_maze.gd")
|
|
|
|
func _initialize() -> void:
|
|
call_deferred("run")
|
|
|
|
func run() -> void:
|
|
var model = Model.new()
|
|
model.start()
|
|
model.update(4.3)
|
|
assert(model.state == "playing")
|
|
model.state = "playing"
|
|
model.ghosts[0].tile = model.player.tile
|
|
model.ghosts[0].next = model.player.tile
|
|
model.ghosts[0].progress = 0.0
|
|
model._check_collisions()
|
|
assert(model.state == "death_pause")
|
|
assert(is_equal_approx(model.phase_time, 1.5))
|
|
var paused_clock: float = model.clock
|
|
model.update(0.5)
|
|
assert(is_equal_approx(model.clock, paused_clock))
|
|
assert(model.state == "death_pause")
|
|
var sounds := []
|
|
model.sound_requested.connect(func(name: String): sounds.append(name))
|
|
model.update(1.51)
|
|
assert(model.state == "dying")
|
|
assert(sounds == ["death"])
|
|
assert(is_equal_approx(model.phase_time, 1.55))
|
|
model.update(1.56)
|
|
assert(model.state == "death_pop")
|
|
assert(is_equal_approx(model.phase_time, 0.24))
|
|
model.update(0.25)
|
|
assert(model.lives == 2)
|
|
assert(model.state == "ready")
|
|
assert(Maze.position(model.player) == Vector2(13, 23))
|
|
assert(Maze.position(model.ghosts[0]) == Vector2(13.5, 11))
|
|
model.state = "playing"
|
|
model._move_ghost(0, 0.0)
|
|
assert(Maze.position(model.ghosts[0]) == Vector2(13, 11))
|
|
var scene = load("res://games/pacman/Pacman.tscn").instantiate()
|
|
root.add_child(scene)
|
|
var preview = scene.get_node("EditorPreview")
|
|
await process_frame
|
|
if Engine.is_editor_hint():
|
|
assert(preview.model.dots.size() == 244)
|
|
assert(preview.model.state == "ready")
|
|
scene.free()
|
|
print("START/DEATH TUNING PASS")
|
|
quit()
|