texas-poker-core 1.4.33 → 1.4.34

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
@@ -732,4 +732,8 @@ reject modulo bias
732
732
  增加 RunoutHandsRevealed 跑马亮底牌事件;无人须贴入座大盲时不发 PostedJoiningBigBlinds 空事件
733
733
 
734
734
  ## 1.4.33
735
- fix: ensure types are included in npm package
735
+
736
+ fix: ensure types are included in npm package
737
+
738
+ ## 1.4.34
739
+ fix(deck): encode four-of-a-kind kicker in rank signature
@@ -56,7 +56,7 @@ function straightRanksFromMax(max) {
56
56
  /**
57
57
  * 将 `RankSignature` 展开为五张牌的点数(`Rank`),与 `getFiveCardsRankSignature` 编码对称。
58
58
  * 顺子 wheel(`u5`/`y5`)为 5→A 展示顺序,A 在末位;Broadway 仍为 A→T。
59
- * `x`(四条)当前签名仅含四条点数,踢脚未编码,第五位为 `null`。
59
+ * `x`(四条)签名为「四条点数+踢脚」,如 `x2+14`;旧格式 `x2`(无踢脚)仍可读,第五位为 `null`。
60
60
  */
61
61
  function rankSignatureToRanks(rankSignature) {
62
62
  var category = rankSignature[0];
@@ -127,11 +127,18 @@ function rankSignatureToRanks(rankSignature) {
127
127
  }
128
128
  case 'x':
129
129
  {
130
- if (nums.length !== 1) {
131
- throw new Error("rankSignatureToRanks: x \u578B\u7B7E\u540D\u987B\u542B 1 \u4E2A\u70B9\u6570\u6BB5\uFF0C\u5B9E\u9645 ".concat(nums.length));
130
+ if (nums.length === 1) {
131
+ var q = numericRankToRank(nums[0]);
132
+ return [q, q, q, q, null];
133
+ }
134
+ if (nums.length === 2) {
135
+ var _nums$map7 = nums.map(numericRankToRank),
136
+ _nums$map8 = _slicedToArray(_nums$map7, 2),
137
+ quad = _nums$map8[0],
138
+ kicker = _nums$map8[1];
139
+ return [quad, quad, quad, quad, kicker];
132
140
  }
133
- var q = numericRankToRank(nums[0]);
134
- return [q, q, q, q, null];
141
+ throw new Error("rankSignatureToRanks: x \u578B\u7B7E\u540D\u987B\u4E3A\u300C\u56DB\u6761\u300D\u6216\u300C\u56DB\u6761+\u8E22\u811A\u300D\u5171 1\u20132 \u6BB5\uFF0C\u5B9E\u9645 ".concat(nums.length));
135
142
  }
136
143
  default:
137
144
  throw new Error("rankSignatureToRanks: \u672A\u77E5\u724C\u578B\u524D\u7F00 ".concat(category));
@@ -193,6 +200,7 @@ var compareFnOfSameType = function compareFnOfSameType(a, b) {
193
200
  var len = Math.max(ranks1.length, ranks2.length);
194
201
  for (var i = 0; i < len; i++) {
195
202
  var _ranks1$i, _ranks2$i;
203
+ // 旧 x 签名无踢脚段,视为踢脚 0,弱于含踢脚的新签名
196
204
  var v1 = (_ranks1$i = ranks1[i]) !== null && _ranks1$i !== void 0 ? _ranks1$i : 0;
197
205
  var v2 = (_ranks2$i = ranks2[i]) !== null && _ranks2$i !== void 0 ? _ranks2$i : 0;
198
206
  if (v2 !== v1) return v2 - v1;
@@ -110,7 +110,7 @@ function getFiveCardsRankSignature(input) {
110
110
  greaterOne = _ref3[0],
111
111
  lessOne = _ref3[1];
112
112
  if ([countA, countB].includes(4)) {
113
- return "x".concat((0, _constant.rankMap)(greaterOne));
113
+ return "x".concat((0, _constant.rankMap)(greaterOne), "+").concat((0, _constant.rankMap)(lessOne));
114
114
  }
115
115
  return "w".concat((0, _constant.rankMap)(greaterOne), "+r").concat((0, _constant.rankMap)(lessOne));
116
116
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "texas-poker-core",
3
- "version": "1.4.33",
3
+ "version": "1.4.34",
4
4
  "description": "德州扑克核心功能",
5
5
  "main": "dist/index.js",
6
6
  "types": "types/index.d.ts",
@@ -2,7 +2,7 @@ import { Poke, Rank, RankSignature } from './constant';
2
2
  /**
3
3
  * 将 `RankSignature` 展开为五张牌的点数(`Rank`),与 `getFiveCardsRankSignature` 编码对称。
4
4
  * 顺子 wheel(`u5`/`y5`)为 5→A 展示顺序,A 在末位;Broadway 仍为 A→T。
5
- * `x`(四条)当前签名仅含四条点数,踢脚未编码,第五位为 `null`。
5
+ * `x`(四条)签名为「四条点数+踢脚」,如 `x2+14`;旧格式 `x2`(无踢脚)仍可读,第五位为 `null`。
6
6
  */
7
7
  export declare function rankSignatureToRanks(rankSignature: RankSignature): (Rank | null)[];
8
8
  /** 供 UI 分组渲染:每组 `ranks` 为从左到右、已合并同点的连续张(与 `rankSignatureToRanks` 顺序一致)。 */