document.getElementById('gameMode').addEventListener('change', function () { const gameMode = this.value; const teamSelect = document.getElementById('team'); if (gameMode === 'team') { teamSelect.style.display = 'block'; } else { teamSelect.style.display = 'none'; } }); document.getElementById('joinForm').addEventListener('submit', function (event) { event.preventDefault(); const username = document.getElementById('username').value; const gameMode = document.getElementById('gameMode').value; const team = gameMode === 'team' ? document.getElementById('team').value : ''; joinGame(username, gameMode, team); }); document.getElementById('submitMove').addEventListener('click', function () { const username = document.getElementById('username').value; const move = document.getElementById('submitMove').value; const target = document.getElementById('targetPlayer').value; submitMove(username, move, target); }); let pollInterval; function joinGame(username, gameMode, team) { fetch('battle.php', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: `action=join&username=${encodeURIComponent(username)}&gameMode=${encodeURIComponent(gameMode)}&team=${encodeURIComponent(team)}` }).then(response => response.json()) .then(data => { document.getElementById('joinForm').style.display = 'none'; document.getElementById('gameContainer').style.display = 'block'; updateGameState(data); pollInterval = setInterval(pollGameState, 1000); }); } function submitMove(username, move, target) { fetch('battle.php', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: `action=move&username=${encodeURIComponent(username)}&move=${encodeURIComponent(move)}&target=${encodeURIComponent(target)}` }).then(response => response.json()) .then(data => { if (data.error) { alert(data.error); } else { updateGameState(data); } }); } function updateGameState(gameState) { const gameStateDiv = document.getElementById('gameState'); gameStateDiv.innerHTML = ''; gameStateDiv.innerHTML += `

Players: ${gameState.fighters.map(f => `${f.name} ${f.team ? `(Team ${f.team})` : ''}`).join(', ')}

`; gameState.moves.forEach(move => { gameStateDiv.innerHTML += `

${move.fighter}: ${move.move} -> ${move.target}

`; }); const fightersDiv = document.getElementById('fighters'); fightersDiv.innerHTML = ''; gameState.fighters.forEach(fighter => { fightersDiv.innerHTML += `

${fighter.name} ${fighter.team ? `(Team ${fighter.team})` : ''} - HP: ${fighter.hp}, ATT: ${fighter.attack}

`; }); const username = document.getElementById('username').value; const submitButton = document.getElementById('submitMove'); const targetSelector = document.getElementById('targetPlayer'); const currentTarget = targetSelector.value; // Сохраняем текущий выбор цели if (gameState.battle_end) { const winnerDiv = document.createElement('div'); winnerDiv.innerHTML = `

Battle End! ${gameState.winner.team ? `Winning Team: ${gameState.winner.team}` : `Winner: ${gameState.winner.name}`}

`; document.body.appendChild(winnerDiv); submitButton.style.display = 'none'; targetSelector.style.display = 'none'; clearInterval(pollInterval); } else { const aliveFighters = gameState.fighters.filter(fighter => fighter.hp > 0); targetSelector.innerHTML = ''; if (aliveFighters.length > 2 && gameState.last_fighter !== username) { targetSelector.style.display = 'block'; aliveFighters.forEach(fighter => { if (fighter.name !== username) { const option = document.createElement('option'); option.value = fighter.name; option.textContent = fighter.name; targetSelector.appendChild(option); } }); // Восстанавливаем текущий выбор цели, если он существует в новом списке if (aliveFighters.some(fighter => fighter.name === currentTarget)) { targetSelector.value = currentTarget; } } else { targetSelector.style.display = 'none'; } const currentFighter = gameState.fighters.find(fighter => fighter.name === username); if (gameState.last_fighter === username || currentFighter.hp <= 0) { submitButton.style.display = 'none'; } else { submitButton.style.display = 'block'; } } } function pollGameState() { fetch('battle.php') .then(response => response.json()) .then(data => { updateGameState(data); }); }