diff --git a/NOTES.md b/NOTES.md index eea3a5f..bcdb903 100644 --- a/NOTES.md +++ b/NOTES.md @@ -2043,3 +2043,21 @@ verbrachte viel Zeit am Haus. Trotzdem ergiebig: rechts: ARE-Typen 17/18/31 ab x~1700). TODO naechste Aufnahme: bessere Sprung-Timeline (Saeulen-Gaps schaffen), um bis zu den Gegner-Spawns und zum Levelende zu kommen. + +## 26.07.2026 (31) -- Karten-Fortschrittsanzeige + Level-Zusammenfassung (Stefans Durchspiel-Referenzen) + +Stefan hat Level 1 im Original durchgespielt. Zwei Referenz-Screenshots: + +1. LEVEL-ZUSAMMENFASSUNG (nach Levelende): Tafel mit SCORE, "MAXIMUM n / + GESAMMELT n" (Cerealien), "VITAMINE n", gruene Buchstaben-Kaestchen + (=> die A-O.BOBs sind VITAMIN-BUCHSTABEN! A, B1, C ... -- passt zu + VITAMIN.SRB und ARE-Typ 12?), "n x [Kopf]" (Bonusleben?), links/rechts + Gruppenbilder der 4 Charaktere. TODO: Screen nachbauen, sobald es + Levelende + Sammel-Zaehler gibt. +2. KARTE nach Durchspielen: erledigte Punkte werden BLAU (KARTE2), der + gelaufene Weg zwischen zwei Leveln = Spur kleiner ORANGER Punkte + (KARTE1) entlang der Original-Wegpunkte, noch nicht erreichte Level + bleiben UNSICHTBAR. UMGESETZT in worldmap.draw(): i < current = blau, + Pfade 1..current = Punktspur (Wegpunkte um Label-Offset -5,-16 + versetzt), Rest unsichtbar. Interim: "erledigt" = links vom Cursor + (echtes Abschluss-Tracking kommt mit dem Levelende-Feature). diff --git a/game/worldmap.py b/game/worldmap.py index 9a4f93b..f9e3031 100644 --- a/game/worldmap.py +++ b/game/worldmap.py @@ -120,6 +120,7 @@ class WorldMap: self.dot_big_on = intro.make_border_bg_transparent(assets.pcc_surface('KARTE0')) self.dot_big_off = intro.make_border_bg_transparent(assets.pcc_surface('KARTE2')) self.dot_small = intro.make_border_bg_transparent(assets.pcc_surface('KARTE3')) + self.dot_trail = intro.make_border_bg_transparent(assets.pcc_surface('KARTE1')) self.heads = {c: intro.make_border_bg_transparent(assets.pcc_surface(n)) for c, n in HEAD_SPRITE.items()} self.current = 0 # Segment 0 = W1L1 (DOSBox-Messung: Startpunkt (53,56)) @@ -128,6 +129,11 @@ class WorldMap: canvas.blit(self.karte, (0, 0)) head = self.heads.get(char, self.heads['TONY']) head_phase = int(t / BLINK_SECONDS) % 2 == 0 + # Original-Anzeigeregeln (Stefans Screenshot nach Durchspielen von + # Level 1): bereiste Wege = Spur kleiner ORANGER Punkte (KARTE1) + # entlang der Wegpunkte, erledigte/besuchte Level = BLAUER Punkt + # (KARTE2), aktueller Punkt = orange + blinkender Kopf, alles + # noch nicht Erreichte bleibt UNSICHTBAR. for i, seg in enumerate(self.segments): if seg['label'] is None: continue @@ -138,8 +144,15 @@ class WorldMap: canvas.blit(self.dot_big_on, (bx + DOT_OFF[0], by + DOT_OFF[1])) if head_phase: canvas.blit(head, (bx + HEAD_OFF[0], by + HEAD_OFF[1])) - else: - canvas.blit(self.dot_small, (bx + SMALL_OFF[0], by + SMALL_OFF[1])) + elif i < self.current: + canvas.blit(self.dot_big_off, (bx + DOT_OFF[0], by + DOT_OFF[1])) + # Punktspur auf den bereisten Pfaden (Segmente bis zum aktuellen). + # Wegpunkte liegen auf der Stand-Linie; die Punktgrafik sitzt wie + # die Levelpunkte um (-5,-16) versetzt (Label-Offset des Binaries). + for i in range(1, self.current + 1): + for wx, wy in self.segments[i]['waypoints'][1:-1]: + canvas.blit(self.dot_trail, + (wx - 5 + SMALL_OFF[0], wy - 16 + SMALL_OFF[1])) # waehrend des Laufens: Kopf entlang des Pfads if walk_pos is not None: px, py = walk_pos