UNPKG

ts-cards

Version:
79 lines (78 loc) 2.92 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var _this = this; Object.defineProperty(exports, "__esModule", { value: true }); exports.pinochleCardCompare = exports.pinochleRankValues = exports.PinochleDeck = void 0; var deck_1 = require("../deck"); var card_1 = require("../card"); var ranks_1 = require("../ranks"); var suits_1 = require("../suits"); /** * @class PinochelDeck * @extends Deck */ var PinochleDeck = /** @class */ (function (_super) { __extends(PinochleDeck, _super); function PinochleDeck() { return _super.call(this, generateDeck()) || this; } return PinochleDeck; }(deck_1.Deck)); exports.PinochleDeck = PinochleDeck; var suits = [suits_1.spades, suits_1.diamonds, suits_1.clubs, suits_1.hearts]; var ranks = [ranks_1.nine, ranks_1.jack, ranks_1.queen, ranks_1.king, ranks_1.ten, ranks_1.ace]; var generateDeck = function () { var cards = []; for (var _i = 0, suits_2 = suits; _i < suits_2.length; _i++) { var suit = suits_2[_i]; for (var _a = 0, ranks_2 = ranks; _a < ranks_2.length; _a++) { var rank = ranks_2[_a]; cards.push(new card_1.Card(suit, rank, _this)); cards.push(new card_1.Card(suit, rank, _this)); } } return cards; }; exports.pinochleRankValues = new Map(); exports.pinochleRankValues.set(ranks_1.nine, 9); exports.pinochleRankValues.set(ranks_1.jack, 10); exports.pinochleRankValues.set(ranks_1.queen, 11); exports.pinochleRankValues.set(ranks_1.king, 12); exports.pinochleRankValues.set(ranks_1.ten, 13); exports.pinochleRankValues.set(ranks_1.ace, 14); var pinochleCardCompare = function (a, b, leadSuit, trump) { var bRank = exports.pinochleRankValues.get(b.rank); var aRank = exports.pinochleRankValues.get(a.rank); if (a.suit === b.suit) { return (bRank ? bRank : 0) - (aRank ? aRank : 0); } else { if (b.suit === trump) { return 1; } else if (a.suit === trump) { return -1; } else if (b.suit === leadSuit) { return 1; } else { return -1; } } }; exports.pinochleCardCompare = pinochleCardCompare;