button position

This commit is contained in:
Didictateur 2026-03-14 13:35:39 +01:00
parent bf3f3a2879
commit f50c5f7bf2

View file

@ -298,9 +298,9 @@
} }
#call-panel { #call-panel {
position: fixed; position: absolute;
bottom: 20px; bottom: -57%;
left: 50%; left: 61%;
transform: translateX(-50%); transform: translateX(-50%);
display: none; display: none;
gap: 10px; gap: 10px;
@ -420,6 +420,7 @@
let game; let game;
let isDistributing = false; let isDistributing = false;
let canPlayerAct = false; let canPlayerAct = false;
let lastDiscarder = -1;
// Charger le menu // Charger le menu
fetch('/components/menu.html') fetch('/components/menu.html')
.then(r => r.text()) .then(r => r.text())
@ -623,6 +624,7 @@
// Défausser la tuile piochée (index === tiles.length) // Défausser la tuile piochée (index === tiles.length)
canPlayerAct = false; canPlayerAct = false;
lastDiscarder = 0;
game.discard(0, game.hands[0].tiles.length); game.discard(0, game.hands[0].tiles.length);
game.nextTurn(); game.nextTurn();
updateTurnIndicator(); updateTurnIndicator();
@ -670,6 +672,43 @@
} }
} }
async function continueBotPlay() {
// Continue la boucle des bots après une réponse du joueur
canPlayerAct = false;
while (game.turn !== 0) {
await new Promise(resolve => setTimeout(resolve, 500));
game.draw(game.turn);
renderHands();
// Pause aléatoire pour simuler la réflexion
const randomDelay = 1000 + Math.random() * 1000;
await new Promise(resolve => setTimeout(resolve, randomDelay));
// Défausser le bot
game.botPlay();
renderDiscards();
// Vérifier si le joueur peut faire un appel
if (game.canPon(0)) {
// Le joueur peut faire un pon, lui proposer
canPlayerAct = true;
showCallPanelForPon();
return; // Attendre la réponse du joueur
}
// Sinon, passer au joueur suivant
game.nextTurn();
updateTurnIndicator();
renderHands();
}
// C'est au tour du joueur - il pioche d'abord
await new Promise(resolve => setTimeout(resolve, 500));
game.draw(0);
renderHands();
canPlayerAct = true;
}
async function playBotsSequentially() { async function playBotsSequentially() {
// Le joueur ne peut plus agir pendant que les bots jouent // Le joueur ne peut plus agir pendant que les bots jouent
canPlayerAct = false; canPlayerAct = false;
@ -682,18 +721,30 @@
// Pause aléatoire pour simuler la réflexion // Pause aléatoire pour simuler la réflexion
const randomDelay = 1000 + Math.random() * 1000; const randomDelay = 1000 + Math.random() * 1000;
await new Promise(resolve => setTimeout(resolve, randomDelay)); await new Promise(resolve => setTimeout(resolve, randomDelay));
// Défausser le bot
game.botPlay(); game.botPlay();
renderDiscards();
// Vérifier si le joueur peut faire un appel
if (game.canPon(0)) {
// Le joueur peut faire un pon, lui proposer
canPlayerAct = true;
showCallPanelForPon();
return; // Attendre la réponse du joueur
}
// Sinon, passer au joueur suivant
game.nextTurn(); game.nextTurn();
updateTurnIndicator(); updateTurnIndicator();
renderHands(); renderHands();
renderDiscards();
} }
// C'est au tour du joueur - il pioche d'abord // C'est au tour du joueur - il pioche d'abord
await new Promise(resolve => setTimeout(resolve, 500)); await new Promise(resolve => setTimeout(resolve, 500));
game.draw(0); game.draw(0);
renderHands(); renderHands();
canPlayerAct = true; canPlayerAct = true;
showCallPanel();
} }
function updateTurnIndicator() { function updateTurnIndicator() {
@ -711,11 +762,24 @@
document.getElementById('call-panel').style.display = 'none'; document.getElementById('call-panel').style.display = 'none';
} }
function showCallPanelForPon() {
const callPanel = document.getElementById('call-panel');
// Afficher seulement Pon et Skip
document.getElementById('pon-button').style.display = 'block';
document.getElementById('chii-button').style.display = 'none';
document.getElementById('kan-button').style.display = 'none';
document.getElementById('tsumo-button').style.display = 'none';
document.getElementById('ron-button').style.display = 'none';
callPanel.style.display = 'flex';
}
function showCallPanel() { function showCallPanel() {
const callPanel = document.getElementById('call-panel'); const callPanel = document.getElementById('call-panel');
// Ne pas afficher les appels si c'est le joueur qui vient de défausser // Ne pas afficher les appels si c'est le joueur qui vient de défausser
if (game.turn === 0) { if (lastDiscarder === 0) {
callPanel.style.display = 'none'; callPanel.style.display = 'none';
return; return;
} }
@ -756,18 +820,21 @@
updateTurnIndicator(); updateTurnIndicator();
renderHands(); renderHands();
renderDiscards(); renderDiscards();
playBotsSequentially(); continueBotPlay();
}); });
document.getElementById('skip-button').addEventListener('click', () => { document.getElementById('skip-button').addEventListener('click', () => {
if (!canPlayerAct) return; if (!canPlayerAct) return;
canPlayerAct = false; canPlayerAct = false;
hideCallPanel(); hideCallPanel();
playBotsSequentially(); continueBotPlay();
}); });
renderHands(); // Ne pas rendre les mains si le jeu n'a pas commencé
updateTurnIndicator(); if (game) {
renderHands();
updateTurnIndicator();
}
}); });
</script> </script>
</body> </body>