feature/api-admin-policies #78

Merged
KZix merged 23 commits from feature/api-admin-policies into develop 2025-12-29 17:11:15 +00:00
Showing only changes of commit 5924d08f73 - Show all commits
+84
View File
@@ -63,9 +63,80 @@ export const useBiscaStore = defineStore('bisca', () => {
await dealInitialCards() await dealInitialCards()
if (currentTurn.value === 'opponent') {
setTimeout(botPlayCard, 1000)
}
isDealing.value = false isDealing.value = false
} }
const playerPlayCard = (card) => {
if (!isGameRunning.value || currentTurn.value !== 'player') return
if (table.value.playerCard) return
playerHand.value = playerHand.value.filter((c) => c.id !== card.id)
table.value.playerCard = card
if (!table.value.firstToPlay) table.value.firstToPlay = 'player'
checkEndOfTrick()
}
const botPlayCard = () => {
if (!isGameRunning.value) return
if (opponentHand.value.length === 0) return
let cardToPlay = null
if (table.value.playerCard) {
const pCard = table.value.playerCard
const trump = trumpCard.value.suit
const winningCards = opponentHand.value.filter((botCard) =>
doesCardWin(botCard, pCard, trump),
)
if (winningCards.length > 0) {
winningCards.sort((a, b) => a.strength - b.strength)
cardToPlay = winningCards[0]
} else {
const sortedHand = [...opponentHand.value].sort((a, b) => {
if (a.points === b.points) return a.strength - b.strength
return a.points - b.points
})
cardToPlay = sortedHand[0]
}
} else {
const sortedHand = [...opponentHand.value].sort((a, b) => {
if (a.suit === trumpCard.value.suit && b.suit !== trumpCard.value.suit) return 1
if (a.suit !== trumpCard.value.suit && b.suit === trumpCard.value.suit) return -1
return a.strength - b.strength
})
cardToPlay = sortedHand[0]
table.value.firstToPlay = 'opponent'
}
opponentHand.value = opponentHand.value.filter((c) => c.id !== cardToPlay.id)
table.value.opponentCard = cardToPlay
checkEndOfTrick()
}
const checkEndOfTrick = () => {
if (table.value.playerCard && table.value.opponentCard) {
currentTurn.value = 'resolving'
setTimeout(resolveTrick, 1500)
} else {
if (table.value.playerCard) {
currentTurn.value = 'opponent'
setTimeout(botPlayCard, 1000)
} else {
currentTurn.value = 'player'
}
}
}
const resolveTrick = () => { const resolveTrick = () => {
const pCard = table.value.playerCard const pCard = table.value.playerCard
const oCard = table.value.opponentCard const oCard = table.value.opponentCard
@@ -117,6 +188,18 @@ export const useBiscaStore = defineStore('bisca', () => {
} }
} }
const doesCardWin = (attacker, defender, trumpSuit) => {
if (attacker.suit === trumpSuit && defender.suit !== trumpSuit) return true
if (defender.suit === trumpSuit && attacker.suit !== trumpSuit) return false
if (attacker.suit === defender.suit) {
return attacker.strength > defender.strength
}
return false
}
const endGame = () => { const endGame = () => {
isGameRunning.value = false isGameRunning.value = false
isGameOver.value = true isGameOver.value = true
@@ -211,5 +294,6 @@ export const useBiscaStore = defineStore('bisca', () => {
startGame, startGame,
quitGame, quitGame,
resolveTrick, resolveTrick,
playerPlayCard,
} }
}) })