button position
This commit is contained in:
parent
bf3f3a2879
commit
f50c5f7bf2
1 changed files with 77 additions and 10 deletions
|
|
@ -298,9 +298,9 @@
|
|||
}
|
||||
|
||||
#call-panel {
|
||||
position: fixed;
|
||||
bottom: 20px;
|
||||
left: 50%;
|
||||
position: absolute;
|
||||
bottom: -57%;
|
||||
left: 61%;
|
||||
transform: translateX(-50%);
|
||||
display: none;
|
||||
gap: 10px;
|
||||
|
|
@ -420,6 +420,7 @@
|
|||
let game;
|
||||
let isDistributing = false;
|
||||
let canPlayerAct = false;
|
||||
let lastDiscarder = -1;
|
||||
// Charger le menu
|
||||
fetch('/components/menu.html')
|
||||
.then(r => r.text())
|
||||
|
|
@ -623,6 +624,7 @@
|
|||
|
||||
// Défausser la tuile piochée (index === tiles.length)
|
||||
canPlayerAct = false;
|
||||
lastDiscarder = 0;
|
||||
game.discard(0, game.hands[0].tiles.length);
|
||||
game.nextTurn();
|
||||
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() {
|
||||
// Le joueur ne peut plus agir pendant que les bots jouent
|
||||
canPlayerAct = false;
|
||||
|
|
@ -682,18 +721,30 @@
|
|||
// 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();
|
||||
renderDiscards();
|
||||
}
|
||||
|
||||
// C'est au tour du joueur - il pioche d'abord
|
||||
await new Promise(resolve => setTimeout(resolve, 500));
|
||||
game.draw(0);
|
||||
renderHands();
|
||||
canPlayerAct = true;
|
||||
showCallPanel();
|
||||
}
|
||||
|
||||
function updateTurnIndicator() {
|
||||
|
|
@ -711,11 +762,24 @@
|
|||
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() {
|
||||
const callPanel = document.getElementById('call-panel');
|
||||
|
||||
// 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';
|
||||
return;
|
||||
}
|
||||
|
|
@ -756,18 +820,21 @@
|
|||
updateTurnIndicator();
|
||||
renderHands();
|
||||
renderDiscards();
|
||||
playBotsSequentially();
|
||||
continueBotPlay();
|
||||
});
|
||||
|
||||
document.getElementById('skip-button').addEventListener('click', () => {
|
||||
if (!canPlayerAct) return;
|
||||
canPlayerAct = false;
|
||||
hideCallPanel();
|
||||
playBotsSequentially();
|
||||
continueBotPlay();
|
||||
});
|
||||
|
||||
// Ne pas rendre les mains si le jeu n'a pas commencé
|
||||
if (game) {
|
||||
renderHands();
|
||||
updateTurnIndicator();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
|
|
|||
Loading…
Reference in a new issue