const allBacks = "/v4=";
const allNone = "//8=";
const allBacksClasses = ["cards back", "cards back"];
const allNoneClasses = ["cards back", "cards back"];
// tslint:disable-next-line:no-unused-variable
function exposeCardsConstants() {
// tslint:disable-next-line:no-string-literal
window["allBacks"] = allBacks;
// tslint:disable-next-line:no-string-literal
window["allNone"] = allNone;
// tslint:disable-next-line:no-string-literal
window["allBacksClasses"] = allBacksClasses;
// tslint:disable-next-line:no-string-literal
window["allNoneClasses"] = allNoneClasses;
}
function cardValue(card: number) {
///
/// Get card string
/// A byte value of the card.
///
if (card === 254) {
return "cards back";
// return "";
}
if (card === 255) {
return "cards none";
}
const suitId = Math.floor(card / 13);
const valueId = card % 13;
let value: string;
switch (valueId) {
case 0:
value = "2";
break;
case 1:
value = "3";
break;
case 2:
value = "4";
break;
case 3:
value = "5";
break;
case 4:
value = "6";
break;
case 5:
value = "7";
break;
case 6:
value = "8";
break;
case 7:
value = "9";
break;
case 8:
value = "10";
break;
case 9:
value = "J";
break;
case 10:
value = "Q";
break;
case 11:
value = "K";
break;
case 12:
value = "A";
break;
default:
break;
}
let suit: string;
let color: string;
switch (suitId) {
case 0:
color = "blue";
suit = "\u2663";
suit = "clubs";
break;
case 1:
color = "green";
suit = "\u2666";
suit = "diamonds";
break;
case 2:
color = "red";
suit = "\u2665";
suit = "hearts";
break;
case 3:
color = "black";
suit = "\u2660";
suit = "spades";
break;
default:
color = "grey";
suit = "unk suit";
break;
}
return "cards " + suit + " c" + value;
// return "";
}
/**
* Decode cards array from the base64 representation.
* @param cardsData Cards data encoded as string.
*/
// tslint:disable-next-line:no-unused-variable
function decodeCardsArray(cardsData: string): number[] {
if (cardsData === null || cardsData === null) {
return null;
}
if (typeof cardsData === "object") {
// tslint:disable:no-console
console.log(cardsData[0]);
console.log(cardsData[1]);
// tslint:enable:no-console
cardsData = "//8=";
}
if (cardsData === allBacks) {
return [254, 254];
}
if (cardsData === "//8=") {
return [255, 255];
}
const cardsString = window.atob(cardsData);
const cards: number[] = [];
for (let i = 0; i < cardsString.length; i++) {
cards.push(cardsString.charCodeAt(i));
}
return cards;
}
// tslint:disable-next-line:no-unused-variable
function convertToCards(data: number[]): string[] {
if (data == null) {
return null;
}
return data.map(function(n) {
return cardValue(n);
});
}
// tslint:disable-next-line:no-unused-variable
function cardsArray(cardsData: string): string[] {
///
/// Get card string
/// Array of the cards.
///
if (cardsData === null) {
return ["cards none", "cards none"];
}
if (typeof cardsData === "object") {
// tslint:disable:no-console
console.log(cardsData[0]);
console.log(cardsData[1]);
// tslint:enable:no-console
cardsData = "//8=";
}
if (cardsData === allBacks) {
return ["cards back", "cards back"];
}
if (cardsData === allNone) {
return ["cards none", "cards none"];
}
const cardsString = window.atob(cardsData);
const cards = new Array();
for (let i = 0; i < cardsString.length; i++) {
cards.push(cardValue(cardsString.charCodeAt(i)));
}
return cards;
}