Newer
Older
navi-1 / templates / game.html
@Eugene Sukhodolskiy Eugene Sukhodolskiy on 25 Apr 3 KB ?
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Animals at War - Game</title>
    <link rel="stylesheet" href="/static/css/style.css">
    <script src="https://cdn.socket.io/4.7.2/socket.io.min.js"></script>
</head>
<body>
    <div id="game-container" class="container">
        <div id="status-bar">
            <div id="player-info">
                <span id="my-nickname"></span> | <span id="opponent-nickname">Connecting...</span>
            </div>
            <div id="turn-info">Waiting for players...</div>
        </div>

        <div id="game-board">
            <!-- Grid will be generated by JS -->
        </div>

        <div id="controls">
            <button id="btn-end-turn" class="btn btn-primary" disabled>End Turn</button>
        </div>

        <div id="error-msg" class="error"></div>
    </div>

    <script>
        const urlParams = new URLSearchParams(window.location.search);
        const room_id = "{{ room_id }}";
        const socket = io();

        const nicknameInput = document.getElementById('my-nickname');
        const opponentNickname = document.getElementById('opponent-nickname');
        const turnInfo = document.getElementById('turn-info');
        const errorMsg = document.getElementById('error-msg');
        const board = document.getElementById('game-board');

        // Reconnection logic
        const playerToken = localStorage.getItem('player_token');
        const savedNickname = prompt("Enter your nickname to join/reconnect:") || "Guest";
        localStorage.setItem('nickname', savedNickname);

        // Initialize connection
        socket.on('connect', () => {
            console.log("Connected to server");
            if (playerToken && room_id) {
                // Attempt to rejoin existing room
                socket.emit('join_game', {
                    room_id: room_id,
                    player_token: playerToken,
                    nickname: savedNickname
                });
            } else {
                // First time joining via link (if token not in localStorage)
                // In a real app, the link would contain the token
                // For this demo, we'll try to join as a new player if no token exists
                socket.emit('join_game', {
                    room_id: room_id, // Note: backend uses room_id
                    nickname: savedNickname
                });
            }
        });

        socket.on('game_joined', (data) => {
            console.log("Joined room:", data.room_id);
            // Initialize board...
        });

        socket.on('player_joined', (data) => {
            opponentNickname.innerText = data.nickname;
        });

        socket.on('error', (data) => {
            errorMsg.innerText = data.message;
        });

        // Placeholder for board generation
        for (let i = 0; i < 100; i++) {
            const cell = document.createElement('div');
            cell.className = 'cell';
            board.appendChild(cell);
        }
    </script>
</body>
</html>