/* -------------------------------------------- */
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;
}
}