CSTV: Verzögerung wirkt wieder, Server läuft am Serienende bis zum Ende der Übertragung

- Das Image schrieb TV_DELAY (Standard 0) bei jedem Containerstart in alle gamemode_*.cfg, die bei
  jedem Laden einer Map laufen: tv_delay stand danach immer auf 0. Die App gibt TV_DELAY jetzt mit
  und setzt tv_delay zusätzlich nach dem Laden der Map per RCON.
- Am Serienende (automatisch oder von Hand abgeschlossen) bleibt der Server die CSTV-Verzögerung
  plus 15 s an, damit der Stream das Ende zeigt. Abgebrochene Matches stoppen sofort.
- Ingame-Chat: Hinweis, dass der Server für CSTV noch online bleibt und sich dann abschaltet;
  beim Mapwechsel die echte Wartezeit nach der CSTV-Übertragung (tv_delaymapchange).
This commit is contained in:
mregosar committed 2026-11-01 22:07:39 +01:00
1 parent 123c2f11d7
commit e8e070dfe6
9 files changed
+101 -7

No files matched your search

+10
View File
@@ -177,7 +177,11 @@ test('kompletter Ablauf: Lobby, Berechtigungen, Veto, Server-Konfiguration', asy
return s.status === 'live' && s.currentMapNumber === 2;
}, { label: 'Map 2' });
// Abschließen von Hand: der Server wartet auf das Ende der CSTV-Übertragung (hier kurz gehalten)
app.manager.config.match.tvDelaySeconds = 1;
app.manager.cstvGraceMs = 200;
assert.equal((await call('POST', `/matches/${id}/finish`, { token: org })).status, 200);
assert.notEqual(app.service.serverRow(id).status, 'stopped', 'läuft für CSTV noch');
await waitFor(() => app.service.serverRow(id).status === 'stopped', { label: 'Server gestoppt' });
const list = (await call('GET', '/matches')).body.matches;
assert.equal(list.find((m) => m.id === id).group, 'closed');
@@ -339,9 +343,15 @@ test('Nach Map-Ende lädt die nächste Map automatisch, entschiedene Serie wird
await waitFor(() => app.service.getMatch(id).current_map_number === 2 && app.service.serverRow(id).status === 'configured', { label: 'Map 2 automatisch' });
assert.equal(app.service.getMatch(id).status, 'live');
// CSTV-Verzögerung kurz halten: der Server soll erst danach gestoppt werden
app.manager.config.match.tvDelaySeconds = 1;
app.manager.cstvGraceMs = 300;
await winMapForAlpha(app.service.seriesMaps(id)[1].map);
// 2:0 im Best of 3 -> Match wird automatisch abgeschlossen, Map 3 nicht gespielt
await waitFor(() => app.service.getMatch(id).status === 'finished', { label: 'Serie abgeschlossen' });
assert.equal(app.service.serverRow(id).status, 'configured', 'Server läuft für CSTV noch weiter');
await app.manager.reap();
assert.equal(app.service.serverRow(id).status, 'configured', 'auch der Aufräum-Lauf wartet auf CSTV');
await waitFor(() => app.service.serverRow(id).status === 'stopped', { label: 'Server freigegeben' });
const snap = (await call('GET', `/matches/${id}`, { token: org })).body;
assert.deepEqual(snap.seriesScore, { A: 2, B: 0 });