Busfahrt: nur EIN Onboarding (Welcome-Overlay abgeloest)
Ursache 2x: Busfahrt zeigte sein eigenes #welcome-overlay UND das GgsQuickIntro-Onboarding. Jetzt ist GgsQuickIntro das einzige Start-Gate: - ggs-quick-intro: onStart-Callback (feuert einmal beim Schliessen bzw. sofort wenn schon gesehen), isSeen exportiert. - Busfahrt: welcome-overlay wird nicht mehr gezeigt; onStart -> startGame; startGame wartet per Retry auf boot() (kein Timing-Problem). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -86,6 +86,17 @@
|
||||
var _config = null;
|
||||
var _back = null;
|
||||
var _page = 1;
|
||||
var _startFired = false;
|
||||
|
||||
// onStart wird EINMAL ausgelöst — wenn das Onboarding geschlossen wird
|
||||
// (oder sofort, falls schon gesehen). Sims können daran den Spielstart hängen.
|
||||
function fireStart() {
|
||||
if (_startFired) return;
|
||||
if (_config && typeof _config.onStart === 'function') {
|
||||
_startFired = true;
|
||||
try { _config.onStart(); } catch (_) {}
|
||||
}
|
||||
}
|
||||
|
||||
function lsKey() { return _config && _config.simId ? 'ggs.intro.' + _config.simId : null; }
|
||||
function markSeen() { try { var k = lsKey(); if (k) localStorage.setItem(k, '1'); } catch (_) {} }
|
||||
@@ -97,14 +108,14 @@
|
||||
_back = null;
|
||||
document.removeEventListener('keydown', onKey);
|
||||
}
|
||||
function onKey(e) { if (e.key === 'Escape') close(); }
|
||||
function onKey(e) { if (e.key === 'Escape') { markSeen(); close(); fireStart(); } }
|
||||
|
||||
function onBackClick(e) {
|
||||
if (e.target === _back) { markSeen(); close(); return; }
|
||||
if (e.target === _back) { markSeen(); close(); fireStart(); return; }
|
||||
var a = e.target && e.target.dataset && e.target.dataset.action;
|
||||
if (a === 'next') { _page = 2; render(); }
|
||||
else if (a === 'back') { _page = 1; render(); }
|
||||
else if (a === 'start') { markSeen(); close(); }
|
||||
else if (a === 'start') { markSeen(); close(); fireStart(); }
|
||||
}
|
||||
|
||||
function render() {
|
||||
@@ -180,9 +191,13 @@
|
||||
if (!isSeen()) {
|
||||
// Kleiner Delay, damit Sim-Boot zuerst sein DOM aufbauen kann.
|
||||
setTimeout(open, 400);
|
||||
} else {
|
||||
// Schon gesehen: kein Onboarding, aber die Sim darf trotzdem starten.
|
||||
fireStart();
|
||||
}
|
||||
},
|
||||
open: open,
|
||||
close: close,
|
||||
isSeen: isSeen,
|
||||
};
|
||||
})();
|
||||
|
||||
Reference in New Issue
Block a user