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()