UNPKG

binmat

Version:
31 lines (30 loc) 1.31 kB
import { StatusCode, Role, CardModifier } from "./shared.js" function doMovePlay(state, card, lane) { if (state.turn >= state.turns) return { status: StatusCode.MadeMoveOnFinishedGame } let cardPlayed if ((state.turn % 2) + 1 == Role.Defender) { if (state.defenderStacks[lane].isFaceUp) return { status: StatusCode.PlayedCardFacedWrongWay } if (card[0] == CardModifier.Break && !state.defenderStacks[lane].cards.length) return { status: StatusCode.PlayedBreakToEmptyStack } const index = 2 == card.length ? state.defenderHand.indexOf(card) : state.defenderHand.findIndex(([value]) => value == card) if (-1 == index) return { status: StatusCode.PlayedUnownedCard } ;(cardPlayed = state.defenderHand.splice(index, 1)[0]), state.defenderStacks[lane].cards.push(cardPlayed) } else { const index = 2 == card.length ? state.attackerHand.indexOf(card) : state.attackerHand.findIndex(([value]) => value == card) if (-1 == index) return { status: StatusCode.PlayedUnownedCard } ;(cardPlayed = state.attackerHand.splice(index, 1)[0]), state.attackerStacks[lane].push(cardPlayed) } return ( state.turn++, state.turn == state.turns ? { status: StatusCode.DefenderWin, cardPlayed: cardPlayed } : { status: StatusCode.Ok, cardPlayed: cardPlayed } ) } export { doMovePlay }