Energiemanager: Blackouts fuer Lehrer sichtbar machen
- game.html: bei Blackout sofort action:'blackout' an /progress feuern (setId/Tag/Block/Frequenz/Ursache, score:0) — Fehlversuch bleibt auch bei Set-Abbruch sichtbar, kein player_progress/Sterne. - progress.php: neuer action:'blackout' -> eigene assessments-Zeile, KEIN XP/plays/best_stars. - live.php: Blackout-Flag (event:'blackout') durch die Tag-Summary reichen (blackout/blackoutCount pro Session). - teacher.html: needsHelp energiemanager (>=2 Blackouts oder Tag <4/8); Blackout-Spalte + '🔌 neu planen'-Status in Aktuell; Tag-Balken als 🔌 Blackout kennzeichnen; Run-Karte: eigenes Blackout-Kaertchen + '🔌 N Blackouts'-Badge im fertigen Set. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1817,6 +1817,9 @@
|
||||
setRun.blackouts = (setRun.blackouts || 0) + 1;
|
||||
|
||||
var tooLow = effFreq < FREQ_LOW;
|
||||
// Blackout sofort ans Lehrer-Backend melden — auch wenn das Set danach
|
||||
// abgebrochen wird, bleibt der Fehlversuch sichtbar (kein Set-Abschluss nötig).
|
||||
submitBlackoutToBackend(blockIdx, effFreq, tooLow);
|
||||
var freqTxt = effFreq.toFixed(2).replace('.', ',');
|
||||
var cause = tooLow
|
||||
? ('Die Netzfrequenz ist auf <b>' + freqTxt + ' Hz</b> gefallen — es wurde <b>zu wenig</b> Strom erzeugt. '
|
||||
@@ -2034,6 +2037,42 @@
|
||||
renderSetSummaryUI(summary);
|
||||
}
|
||||
|
||||
// Ein Blackout ist der echte Verlierzustand → sofort als eigenes Fehl-Event
|
||||
// melden. score:0 färbt den Tag-Balken rot; kein player_progress-Update
|
||||
// (Blackout gibt keine Sterne/XP). Ursache/Frequenz/Block für die Lehrer-Sicht.
|
||||
function submitBlackoutToBackend(blockIdx, effFreq, tooLow) {
|
||||
if (!window.EM_SESSION_ID) return; // Free-Mode: kein Submit
|
||||
var apiBase = window.EM_API_BASE || '/geograsim/App/api';
|
||||
var setMeta = SETS[currentSetIdx];
|
||||
try {
|
||||
fetch(apiBase + '/progress', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
credentials: 'same-origin',
|
||||
body: JSON.stringify({
|
||||
action: 'blackout',
|
||||
simId: 'energiemanager',
|
||||
durationMs: Math.max(0, Date.now() - setRun.startedAt),
|
||||
data: {
|
||||
event: 'blackout',
|
||||
score: 0,
|
||||
setId: setMeta.id,
|
||||
setTitle: setMeta.title,
|
||||
setIcon: setMeta.icon,
|
||||
day: currentDayIdx + 1,
|
||||
dayTotal: setMeta.days.length,
|
||||
dayTitle: DAY.title,
|
||||
block: blockIdx + 1,
|
||||
blockTotal: DAY.blocks.length,
|
||||
freq: Math.round(effFreq * 100) / 100,
|
||||
cause: tooLow ? 'unterfrequenz' : 'ueberfrequenz',
|
||||
blackoutSeq: setRun.blackouts || 0
|
||||
}
|
||||
})
|
||||
}).catch(function(e){ console.log('[energiemanager] blackout-submit fehlgeschlagen', e && e.message); });
|
||||
} catch (_) {}
|
||||
}
|
||||
|
||||
function submitSetToBackend(summary) {
|
||||
if (!window.EM_SESSION_ID) return; // Free-Mode: kein Submit
|
||||
var apiBase = window.EM_API_BASE || '/geograsim/App/api';
|
||||
|
||||
Reference in New Issue
Block a user