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
+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_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