/* -------------------------------------------- */ 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( edgeNumber ) { for (let i=0; i"; } /* -------------------------------------------- */ getEdgeHTML( ) { let html = ""; for (let edge of this.data.cardEdge) { html += `` } return html; } /* -------------------------------------------- */ getDiscardTopHTML( ) { let html = ""; console.log( "DISCARD: ", this.data.discard ); if ( this.data.discard.length > 0) { let card = this.data.discard[this.data.discard.length-1]; html = ``; } return html; } }