/* -------------------------------------------- */ const NB_POKER_CARD = 54; const IDX2CARDFAMILY = ['c', 'd', 'h', 's']; /* -------------------------------------------- */ export class SoSCardDeck { /* -------------------------------------------- */ initCardDeck(actor, savedDeck = undefined ) { this.data = {}; this.data.deck = []; this.data.discard = []; this.data.cardState = []; this.data.cardEdge = []; if ( savedDeck.deck && savedDeck.deck.length > 0 ) {} this.data.deck = duplicate(savedDeck.deck); if ( savedDeck.discard && savedDeck.discard.length > 0 ) {} this.data.discard = duplicate(savedDeck.discard); if ( savedDeck.cardEdge && savedDeck.cardEdge.length > 0 ) {} this.data.cardEdge = duplicate(savedDeck.cardEdge); this.data.actor = actor; if ( this.data.deck.length == 0 && this.data.discard.length == 0) { this.shuffleDeck(); } } /* -------------------------------------------- */ shuffleDeck() { this.cleanCardList(); // Randomize deck while (this.data.deck.length != NB_POKER_CARD) { let idx = new Roll("1d54").roll().total; if (!this.data.cardState[idx - 1]) { if (idx == 53) { // Red Joker this.data.deck.push( { cardName: 'jr' } ); } else if (idx == 54) { // Black Joker this.data.deck.push({ cardName: 'jb' }); } else { let familyIdx = idx % 4; let cardIdx = String( (idx % 13) + 1); cardIdx = (cardIdx.length < 2) ? "0"+cardIdx: cardIdx; let cardName = IDX2CARDFAMILY[familyIdx] + cardIdx; this.data.deck.push( { cardName: cardName } ); } this.data.cardState[idx - 1] = true; } } } /* -------------------------------------------- */ drawEdge() { this.data.cardEdge.push( this.data.deck.pop() ); this.data.cardEdge.push( this.data.deck.pop() ); console.log("DRAW EDGE", this.data.cardEdge); } /* -------------------------------------------- */ cleanCardList() { this.data.discard = []; // Reinit discard pile this.data.deck = []; for (let i = 0; i < NB_POKER_CARD; i++) { this.data.cardState[i] = false; } } /* -------------------------------------------- */ doFlipStat( statData ) { let card = this.data.deck.pop(); this.data.discard.push( card ); console.log("CARD IS : ", card, this.data.deck.length ); } }