Refactor server.js to simplify spirit spawning logic and add time information in payload

This commit is contained in:
2025-05-28 06:25:25 +02:00
parent 97661d9705
commit 21ce45fcea

View File

@@ -33,7 +33,7 @@ let spiritPos = 0;
const SPIRIT_INTERVAL_MS = 20000; // 20 Sekunden
let lastSpiritSpawn = Date.now();
// --- Helper für die Rotation ---
// --- Helper ---
function nextSpirit() {
spiritPos++;
if (spiritPos >= spirits.length) {
@@ -43,17 +43,15 @@ function nextSpirit() {
lastSpiritSpawn = Date.now();
}
// --- WebSocket Logik mit Timer-Steuerung ---
let spiritTimer = null;
// *** NEU: Timer-Spawn ohne Offset ***
// --- WebSocket Logik ---
function pushSpiritToAllClients() {
const spirit = spirits[spiritPos];
lastSpiritSpawn = Date.now();
const payload = JSON.stringify({
type: 'spirit',
data: spirit
// KEIN Offset, kein Interval notwendig
data: spirit,
timeSinceSpawnMs: 0,
spiritIntervalMs: SPIRIT_INTERVAL_MS
});
wss.clients.forEach(client => {
if (client.readyState === ws.OPEN) {
@@ -61,15 +59,16 @@ function pushSpiritToAllClients() {
}
});
console.log(`[Server] Spirit "${spirit.Name}" gesendet (${spiritPos + 1}/${spirits.length})`);
//nextSpirit();
// nextSpirit(); <-- NICHT HIER
}
// Timer starten, falls noch nicht läuft
// --- Timer ---
function startSpiritTimer() {
if (!spiritTimer) {
spiritTimer = setInterval(() => {
pushSpiritToAllClients();
// Vorher weiterzählen, DANN pushen!
nextSpirit();
pushSpiritToAllClients();
}, SPIRIT_INTERVAL_MS);
console.log('[Server] Spirit-Timer gestartet');
}