v1.3: Ablauf gefixt. Tutorial und Startsequenz waren in einer Klasse - jetzt getrennt. Reihenfolge immer: Anleitung -> Moduswahl -> Startsequenz -> Spiel -> Abschluss (10s) -> Anleitung. 57 Tests.
This commit is contained in:
1 parent
e3a0c5a57d
commit
441bdb440c
5 files changed
+136
-90
No files matched your search
+22
-9
@@ -19,6 +19,7 @@ from loader_game.case import Case
|
||||
from loader_game.difficulty import DEFAULT_DIFFICULTY, DIFFICULTIES, by_key
|
||||
from loader_game.game import Game, HandleResult, State
|
||||
from loader_game.input_map import Action
|
||||
from loader_game.intro import StartSequence, Tutorial
|
||||
from loader_game.menu import DifficultyMenu
|
||||
from loader_game.sayings import saying_for
|
||||
from loader_game.sequences import CaseSpec, load_sequences, parse_sequences
|
||||
@@ -485,7 +486,7 @@ class SequenceChoiceTests(unittest.TestCase):
|
||||
|
||||
|
||||
class RenderTests(unittest.TestCase):
|
||||
"""Rendert je ein Bild von Intro, Menü und Spiel (ohne Fenster).
|
||||
"""Rendert je ein Bild von Anleitung, Startsequenz, Menü und Spiel (ohne Fenster).
|
||||
|
||||
Fängt fehlende config-Konstanten und Zeichenfehler ab, die reine
|
||||
Logiktests nicht bemerken.
|
||||
@@ -519,15 +520,27 @@ class RenderTests(unittest.TestCase):
|
||||
rng=random.Random(3),
|
||||
)
|
||||
|
||||
def test_intro_renders(self) -> None:
|
||||
from loader_game.intro import Intro
|
||||
def test_tutorial_renders_and_waits(self) -> None:
|
||||
tutorial = Tutorial(self.assets)
|
||||
tutorial.draw(self.surface)
|
||||
# Das Tutorial zeigt nur das Bild und wartet - keine Startsequenz.
|
||||
self.assertFalse(tutorial.update(1 / 60))
|
||||
self.assertFalse(tutorial.update(1 / 60))
|
||||
tutorial.handle(Action.PRIMARY)
|
||||
self.assertTrue(tutorial.update(1 / 60))
|
||||
|
||||
intro = Intro(self.assets, show_instruction=True)
|
||||
intro.draw(self.surface)
|
||||
intro.handle(Action.PRIMARY)
|
||||
for _ in range(200):
|
||||
intro.update(1 / 60)
|
||||
intro.draw(self.surface)
|
||||
def test_start_sequence_renders_and_finishes(self) -> None:
|
||||
start = StartSequence(self.assets)
|
||||
start.draw(self.surface)
|
||||
elapsed = 0.0
|
||||
while not start.update(0.05) and elapsed < 10:
|
||||
elapsed += 0.05
|
||||
expected = (
|
||||
len(config.INTRO_DOT_COLORS) * config.INTRO_DOT_DELAY
|
||||
+ config.INTRO_ZIP_DURATION
|
||||
)
|
||||
self.assertAlmostEqual(elapsed, expected, delta=0.3)
|
||||
start.draw(self.surface)
|
||||
|
||||
def test_menu_renders(self) -> None:
|
||||
menu = DifficultyMenu(self.assets, selected=DIFFICULTIES[0])
|
||||
|
||||
Reference in new issue
Block a user