texas-poker-core 1.4.21 → 1.4.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -591,4 +591,6 @@ fix: 修复结算金额分配异常
591
591
  修复 player reset 字段遗漏
592
592
 
593
593
  ## 1.4.21
594
- 引入领域事件&增加回放功能
594
+ 引入领域事件&增加回放功能
595
+ ## 1.4.22
596
+ 增加外部设置玩家手牌&结算信息的方法
@@ -52,6 +52,11 @@ var HandSettlement = exports.HandSettlement = /*#__PURE__*/function () {
52
52
  value: function getPlayerEval(userId) {
53
53
  return _classPrivateFieldGet(_evalByUserId, this).get(userId);
54
54
  }
55
+ }, {
56
+ key: "setPlayerEval",
57
+ value: function setPlayerEval(userId, evalData) {
58
+ _classPrivateFieldGet(_evalByUserId, this).set(userId, evalData);
59
+ }
55
60
  }, {
56
61
  key: "reset",
57
62
  value: function reset() {
@@ -166,6 +166,11 @@ var Controller = /*#__PURE__*/function () {
166
166
  value: function getShowdownEvalForPlayer(player) {
167
167
  return _classPrivateFieldGet(_hand, this).settlement.getPlayerEval(player.id);
168
168
  }
169
+ }, {
170
+ key: "setShowdownEvalForPlayer",
171
+ value: function setShowdownEvalForPlayer(player, evalData) {
172
+ _classPrivateFieldGet(_hand, this).settlement.setPlayerEval(player.id, evalData);
173
+ }
169
174
  }, {
170
175
  key: "activePlayer",
171
176
  get: function get() {
@@ -110,6 +110,17 @@ var DealerService = exports.DealerService = /*#__PURE__*/function () {
110
110
  }, _classPrivateFieldGet(_table, this).button.getNextPlayer());
111
111
  return hole;
112
112
  }
113
+ }, {
114
+ key: "setHoleCardsForPlayer",
115
+ value: function setHoleCardsForPlayer(player, pokes) {
116
+ if (!_classPrivateFieldGet(_table, this).button) return;
117
+ var seatIndex = -1;
118
+ _classPrivateFieldGet(_table, this).loop(function (p, i) {
119
+ if (p === player) seatIndex = i;
120
+ }, _classPrivateFieldGet(_table, this).button.getNextPlayer());
121
+ if (seatIndex < 0) return;
122
+ _classPrivateFieldGet(_dealtBoard, this).setHoleCardsAt(seatIndex, pokes);
123
+ }
113
124
  }, {
114
125
  key: "addAction",
115
126
  value: function addAction(player) {
@@ -103,6 +103,11 @@ var Dealer = /*#__PURE__*/function () {
103
103
  value: function getHoleCardsForPlayer(player) {
104
104
  return _classPrivateFieldGet(_service, this).getHoleCardsForPlayer(player);
105
105
  }
106
+ }, {
107
+ key: "setHoleCardsForPlayer",
108
+ value: function setHoleCardsForPlayer(player, pokes) {
109
+ _classPrivateFieldGet(_service, this).setHoleCardsForPlayer(player, pokes);
110
+ }
106
111
  }, {
107
112
  key: "players",
108
113
  get: function get() {
@@ -5,6 +5,12 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.DealtBoard = void 0;
8
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
9
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
10
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
11
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
12
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
13
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
8
14
  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
9
15
  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
10
16
  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
@@ -46,5 +52,12 @@ var DealtBoard = exports.DealtBoard = /*#__PURE__*/function () {
46
52
  commonPokes: _classPrivateFieldGet(_commonPokes, this)
47
53
  };
48
54
  }
55
+ }, {
56
+ key: "setHoleCardsAt",
57
+ value: function setHoleCardsAt(index, pokes) {
58
+ if (!Number.isInteger(index) || index < 0) return;
59
+ while (_classPrivateFieldGet(_handPokes, this).length <= index) _classPrivateFieldGet(_handPokes, this).push([]);
60
+ _classPrivateFieldGet(_handPokes, this)[index] = _toConsumableArray(pokes);
61
+ }
49
62
  }]);
50
63
  }();
@@ -494,6 +494,16 @@ var Player = exports.Player = /*#__PURE__*/function () {
494
494
  value: function getHandPokes() {
495
495
  return _toConsumableArray(_classPrivateFieldGet(_dealerRing, this).getHoleCardsForPlayer(this));
496
496
  }
497
+ }, {
498
+ key: "setHandPokes",
499
+ value: function setHandPokes(pokes) {
500
+ _classPrivateFieldGet(_dealerRing, this).setHoleCardsForPlayer(this, pokes);
501
+ }
502
+ }, {
503
+ key: "setShowdownEval",
504
+ value: function setShowdownEval(evalData) {
505
+ _classPrivateFieldGet(_handSession, this).setShowdownEvalForPlayer(this, evalData);
506
+ }
497
507
  }, {
498
508
  key: "earn",
499
509
  value: function earn(money) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "texas-poker-core",
3
- "version": "1.4.21",
3
+ "version": "1.4.22",
4
4
  "description": "德州扑克核心功能",
5
5
  "main": "dist/index.js",
6
6
  "types": "types/index.d.ts",
@@ -20,6 +20,7 @@ export declare class HandSettlement {
20
20
  #private;
21
21
  get snapshot(): RankSettlementSnapshot;
22
22
  getPlayerEval(userId: number): ShowdownPlayerEval | undefined;
23
+ setPlayerEval(userId: number, evalData: ShowdownPlayerEval): void;
23
24
  reset(): void;
24
25
  settleFromCommonBoard(allSeatedPlayers: Player[], playersStillInShowdown: Player[], commonPokes: Poke[]): void;
25
26
  }
@@ -55,6 +55,7 @@ declare class Controller implements GameComponent, PlayerHandSession<Player> {
55
55
  }[];
56
56
  get stage(): StageEnum;
57
57
  getShowdownEvalForPlayer(player: Player): ShowdownPlayerEval | undefined;
58
+ setShowdownEvalForPlayer(player: Player, evalData: ShowdownPlayerEval): void;
58
59
  get activePlayer(): Player | null;
59
60
  recordPlayerAction(player: Player, options: {
60
61
  emitPot: boolean;
@@ -24,6 +24,7 @@ export declare class DealerService implements GameComponent {
24
24
  * 手牌唯一数据源为 {@link DealtBoard};下标与发牌顺序一致(从庄家下家起绕桌一圈)。
25
25
  */
26
26
  getHoleCardsForPlayer(player: Player): Poke[];
27
+ setHoleCardsForPlayer(player: Player, pokes: readonly Poke[]): void;
27
28
  addAction(player: Player): void;
28
29
  initialRoles(buttonPlayer?: Player): undefined;
29
30
  reArrangeRoles(): undefined;
@@ -1,3 +1,4 @@
1
+ import type { Poke } from '../Deck/constant';
1
2
  import type { PlayerDealerRing } from '../playerSessionPorts';
2
3
  import type { GameComponent, TexasErrorCallback } from '../gameContracts';
3
4
  import Deck from '../Deck';
@@ -29,6 +30,7 @@ declare class Dealer implements GameComponent, PlayerDealerRing<Player> {
29
30
  getPokes(): import("..").DealSnapshot;
30
31
  /** 该玩家在 {@link DealtBoard} 中对应座位的手牌(Player 不再私有缓存) */
31
32
  getHoleCardsForPlayer(player: Player): ("hj" | "h2" | "h3" | "h4" | "h5" | "h6" | "h7" | "h8" | "h9" | "ht" | "hq" | "hk" | "ha" | "s2" | "s3" | "s4" | "s5" | "s6" | "s7" | "s8" | "s9" | "st" | "sj" | "sq" | "sk" | "sa" | "d2" | "d3" | "d4" | "d5" | "d6" | "d7" | "d8" | "d9" | "dt" | "dj" | "dq" | "dk" | "da" | "c2" | "c3" | "c4" | "c5" | "c6" | "c7" | "c8" | "c9" | "ct" | "cj" | "cq" | "ck" | "ca")[];
33
+ setHoleCardsForPlayer(player: Player, pokes: readonly Poke[]): void;
32
34
  get players(): Player[];
33
35
  get stakes(): TableStakes;
34
36
  /** 大盲注额;与 `stakes.bigBlind` 同义 */
@@ -11,4 +11,5 @@ export declare class DealtBoard {
11
11
  capture(snapshot: DealSnapshot): void;
12
12
  reset(): void;
13
13
  getPokes(): DealSnapshot;
14
+ setHoleCardsAt(index: number, pokes: readonly Poke[]): void;
14
15
  }
@@ -132,6 +132,13 @@ export declare class Player implements GameComponent {
132
132
  log(prefix?: string): void;
133
133
  /** 手牌唯一存于荷官侧快照,经 {@link Dealer.getHoleCardsForPlayer} 按座位解析 */
134
134
  getHandPokes(): Poke[];
135
+ setHandPokes(pokes: readonly Poke[]): void;
136
+ setShowdownEval(evalData: {
137
+ bestFiveCards: Poke[];
138
+ rankSignature: RankSignature;
139
+ rankStrength: number;
140
+ rankCategory: RankCategory;
141
+ }): void;
135
142
  earn(money: number): void;
136
143
  resetCurrentStageTotalAmount(): void;
137
144
  /**
@@ -14,6 +14,7 @@ export interface PlayerDealerRing<TPlayer = unknown> {
14
14
  map<R>(callback: (player: TPlayer, index: number) => R): R[];
15
15
  filter(callback: (player: TPlayer, index: number) => boolean): TPlayer[];
16
16
  getHoleCardsForPlayer(player: TPlayer): Poke[];
17
+ setHoleCardsForPlayer(player: TPlayer, pokes: readonly Poke[]): void;
17
18
  }
18
19
  /**
19
20
  * `Player` 需要的「本手阶段机」视图,避免依赖整个 {@link Controller}。
@@ -27,6 +28,7 @@ export interface PlayerHandSession<TPlayer = unknown> {
27
28
  /** 当前轮到行动的玩家;翻前贴盲完成前可能为 `null` */
28
29
  readonly activePlayer: TPlayer | null;
29
30
  getShowdownEvalForPlayer(player: TPlayer): ShowdownPlayerEval | undefined;
31
+ setShowdownEvalForPlayer(player: TPlayer, evalData: ShowdownPlayerEval): void;
30
32
  tryToEndGame(): boolean;
31
33
  /** 下注轮已结束且尚未到河牌时,可推迟进街并由业务调用 `applyPendingStageAdvance` */
32
34
  canDeferBettingRoundStageAdvance(): boolean;