d2a7973022
Karte, Figuren und Zielmarke zeichnet jetzt Art. Die Karte zeichnet in Blöcken von 16 mal 16 Kacheln und nach einem Treffer nur die Blöcke um die Kachel neu; jede Kachel kennt ihre Nachbarn. Figuren stehen aufrecht in ihrer Kachel, schreiten und schauen in die Richtung, in die sie gehen. Der eigene Schlag zeigt seine Splitter sofort, auch als Gast, und die Namen über fremden Figuren werden in Bildschirmgröße gezeichnet und bleiben scharf. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
45 lines
1.5 KiB
GDScript
45 lines
1.5 KiB
GDScript
extends TestCase
|
|
|
|
|
|
func test_a_figure_appears_where_it_is_first_placed() -> void:
|
|
var figures := Figures.new()
|
|
check_eq(figures.shown_at(2), Vector2.INF, "nobody is shown at first")
|
|
figures.place(2, Vector2(10.0, 20.0))
|
|
check_eq(figures.shown_at(2), Vector2(10.0, 20.0), "at once at its first position")
|
|
figures.free()
|
|
|
|
|
|
func test_a_figure_glides_toward_its_latest_position() -> void:
|
|
var figures := Figures.new()
|
|
figures.place(1, Vector2.ZERO)
|
|
figures.place(1, Vector2(100.0, 0.0))
|
|
figures._process(0.02)
|
|
var halfway := figures.shown_at(1).x
|
|
check(halfway > 0.0 and halfway < 100.0, "part of the way after a frame: %s" % halfway)
|
|
for frame in 60:
|
|
figures._process(0.02)
|
|
check(figures.shown_at(1).distance_to(Vector2(100.0, 0.0)) < 0.01, "there after a second")
|
|
figures.free()
|
|
|
|
|
|
func test_figures_can_be_forgotten() -> void:
|
|
var figures := Figures.new()
|
|
figures.place(1, Vector2.ZERO)
|
|
figures.place(3, Vector2.ONE)
|
|
figures.forget(1)
|
|
check_eq(figures.shown_at(1), Vector2.INF, "one is gone")
|
|
check_eq(figures.shown_at(3), Vector2.ONE, "the other stays")
|
|
figures.clear()
|
|
check_eq(figures.shown_at(3), Vector2.INF, "all are gone")
|
|
figures.free()
|
|
|
|
|
|
func test_a_figure_faces_the_way_it_glides() -> void:
|
|
var figures := Figures.new()
|
|
figures.place(1, Vector2(100.0, 0.0))
|
|
check_eq(figures.facing_of(1), 1.0, "facing right at first")
|
|
figures.place(1, Vector2.ZERO)
|
|
figures._process(0.02)
|
|
check_eq(figures.facing_of(1), -1.0, "facing left while it glides to the left")
|
|
figures.free()
|