All checks were successful
Dynamic Branch Deploy / build-and-deploy (push) Successful in 2m18s
79 lines
2.4 KiB
JavaScript
79 lines
2.4 KiB
JavaScript
// ==========================================
|
|
// GLOBALE STATUS VARIABLEN
|
|
// ==========================================
|
|
|
|
// --- Konfiguration & Flags ---
|
|
let gameConfig = null; // Wird von /api/config geladen
|
|
let isLoaded = false; // Sind Assets geladen?
|
|
let isGameRunning = false; // Läuft der Game Loop?
|
|
let isGameOver = false; // Ist der Spieler tot?
|
|
let sessionID = null; // UUID der aktuellen Session
|
|
|
|
// --- NETZWERK & STREAMING (NEU) ---
|
|
let socket = null; // Die WebSocket Verbindung
|
|
let obstacleBuffer = []; // Warteschlange für kommende Hindernisse
|
|
let platformBuffer = []; // Warteschlange für kommende Plattformen
|
|
|
|
// --- SPIELZUSTAND ---
|
|
let score = 0; // Aktueller Punktestand (vom Server diktiert)
|
|
let currentTick = 0; // Zeit-Einheit des Spiels
|
|
|
|
// --- POWERUPS (Client Visuals) ---
|
|
let godModeLives = 0;
|
|
let hasBat = false;
|
|
let bootTicks = 0;
|
|
|
|
// --- HINTERGRUND ---
|
|
let maxRawBgIndex = 0; // Welcher Hintergrund wird gezeigt?
|
|
|
|
// --- GAME LOOP TIMING ---
|
|
let lastTime = 0;
|
|
let accumulator = 0;
|
|
|
|
// --- GRAFIKEN ---
|
|
let sprites = {}; // Cache für Hindernis-Bilder
|
|
let playerSprite = new Image();
|
|
let bgSprites = []; // Array der Hintergrund-Bilder
|
|
|
|
// --- ENTITIES (Render-Listen) ---
|
|
let player = {
|
|
x: 50,
|
|
y: 300,
|
|
w: 30,
|
|
h: 50,
|
|
color: "red",
|
|
vy: 0,
|
|
grounded: false,
|
|
prevY: 300
|
|
};
|
|
let particles = [];
|
|
|
|
|
|
// Diese Listen werden von logic.js aus dem Buffer gefüllt und von render.js gezeichnet
|
|
let obstacles = [];
|
|
let platforms = [];
|
|
|
|
// Debug-Daten (optional, falls der Server Debug-Infos schickt)
|
|
let serverObstacles = [];
|
|
let serverPlatforms = [];
|
|
|
|
let currentLatencyMs = 0; // Aktuelle Latenz in Millisekunden
|
|
let pingInterval = null; // Timer für den Ping
|
|
|
|
// --- INPUT STATE ---
|
|
let isCrouching = false;
|
|
|
|
// ==========================================
|
|
// HTML ELEMENTE (Caching)
|
|
// ==========================================
|
|
const canvas = document.getElementById('gameCanvas');
|
|
const ctx = canvas.getContext('2d');
|
|
const container = document.getElementById('game-container');
|
|
|
|
// UI Elemente
|
|
const startScreen = document.getElementById('startScreen');
|
|
const startBtn = document.getElementById('startBtn');
|
|
const loadingText = document.getElementById('loadingText');
|
|
const gameOverScreen = document.getElementById('gameOverScreen');
|
|
const scoreDisplay = document.getElementById('score');
|
|
const highscoreDisplay = document.getElementById('localHighscore'); |