Karten-Fortschritt wie im Original: erledigte Punkte blau, bereister Weg als orange Punktspur, Unerreichtes unsichtbar (Stefans Durchspiel-Screenshots)

This commit is contained in:
2026-07-26 11:38:55 +02:00
parent 1cb0a12134
commit 7766692571
2 changed files with 33 additions and 2 deletions
+18
View File
@@ -2043,3 +2043,21 @@ verbrachte viel Zeit am Haus. Trotzdem ergiebig:
rechts: ARE-Typen 17/18/31 ab x~1700). rechts: ARE-Typen 17/18/31 ab x~1700).
TODO naechste Aufnahme: bessere Sprung-Timeline (Saeulen-Gaps schaffen), TODO naechste Aufnahme: bessere Sprung-Timeline (Saeulen-Gaps schaffen),
um bis zu den Gegner-Spawns und zum Levelende zu kommen. 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).
+15 -2
View File
@@ -120,6 +120,7 @@ class WorldMap:
self.dot_big_on = intro.make_border_bg_transparent(assets.pcc_surface('KARTE0')) 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_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_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)) self.heads = {c: intro.make_border_bg_transparent(assets.pcc_surface(n))
for c, n in HEAD_SPRITE.items()} for c, n in HEAD_SPRITE.items()}
self.current = 0 # Segment 0 = W1L1 (DOSBox-Messung: Startpunkt (53,56)) self.current = 0 # Segment 0 = W1L1 (DOSBox-Messung: Startpunkt (53,56))
@@ -128,6 +129,11 @@ class WorldMap:
canvas.blit(self.karte, (0, 0)) canvas.blit(self.karte, (0, 0))
head = self.heads.get(char, self.heads['TONY']) head = self.heads.get(char, self.heads['TONY'])
head_phase = int(t / BLINK_SECONDS) % 2 == 0 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): for i, seg in enumerate(self.segments):
if seg['label'] is None: if seg['label'] is None:
continue continue
@@ -138,8 +144,15 @@ class WorldMap:
canvas.blit(self.dot_big_on, (bx + DOT_OFF[0], by + DOT_OFF[1])) canvas.blit(self.dot_big_on, (bx + DOT_OFF[0], by + DOT_OFF[1]))
if head_phase: if head_phase:
canvas.blit(head, (bx + HEAD_OFF[0], by + HEAD_OFF[1])) canvas.blit(head, (bx + HEAD_OFF[0], by + HEAD_OFF[1]))
else: elif i < self.current:
canvas.blit(self.dot_small, (bx + SMALL_OFF[0], by + SMALL_OFF[1])) 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 # waehrend des Laufens: Kopf entlang des Pfads
if walk_pos is not None: if walk_pos is not None:
px, py = walk_pos px, py = walk_pos