@omnitronix/happy-panda-game-engine 0.0.3 → 0.0.5

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.
Files changed (86) hide show
  1. package/dist/__tests__/bonus-sequence.test.d.ts +7 -0
  2. package/dist/__tests__/bonus-sequence.test.d.ts.map +1 -0
  3. package/dist/__tests__/cherry-frequency.test.d.ts +8 -0
  4. package/dist/__tests__/cherry-frequency.test.d.ts.map +1 -0
  5. package/dist/__tests__/counter-manager.test.d.ts +7 -0
  6. package/dist/__tests__/counter-manager.test.d.ts.map +1 -0
  7. package/dist/__tests__/cpp-parity.test.d.ts +39 -0
  8. package/dist/__tests__/cpp-parity.test.d.ts.map +1 -0
  9. package/dist/__tests__/cpp-parity.test.js +29 -25
  10. package/dist/__tests__/cpp-parity.test.js.map +1 -1
  11. package/dist/__tests__/fixtures/cpp-parity-vectors.json +69 -50
  12. package/dist/__tests__/happy-panda-engine.test.d.ts +7 -0
  13. package/dist/__tests__/happy-panda-engine.test.d.ts.map +1 -0
  14. package/dist/__tests__/jackpot-manager.test.d.ts +8 -0
  15. package/dist/__tests__/jackpot-manager.test.d.ts.map +1 -0
  16. package/dist/__tests__/jackpot-trigger-trace.test.d.ts +6 -0
  17. package/dist/__tests__/jackpot-trigger-trace.test.d.ts.map +1 -0
  18. package/dist/__tests__/rtp-1million.test.d.ts +8 -0
  19. package/dist/__tests__/rtp-1million.test.d.ts.map +1 -0
  20. package/dist/__tests__/rtp-analysis.test.d.ts +8 -0
  21. package/dist/__tests__/rtp-analysis.test.d.ts.map +1 -0
  22. package/dist/__tests__/rtp-diagnostic.test.d.ts +6 -0
  23. package/dist/__tests__/rtp-diagnostic.test.d.ts.map +1 -0
  24. package/dist/__tests__/rtp-simulation.test.d.ts +8 -0
  25. package/dist/__tests__/rtp-simulation.test.d.ts.map +1 -0
  26. package/dist/__tests__/special-wins.test.d.ts +7 -0
  27. package/dist/__tests__/special-wins.test.d.ts.map +1 -0
  28. package/dist/__tests__/spin-generator.test.d.ts +7 -0
  29. package/dist/__tests__/spin-generator.test.d.ts.map +1 -0
  30. package/dist/__tests__/spin-handler.test.d.ts +7 -0
  31. package/dist/__tests__/spin-handler.test.d.ts.map +1 -0
  32. package/dist/__tests__/symbol-distribution.test.d.ts +6 -0
  33. package/dist/__tests__/symbol-distribution.test.d.ts.map +1 -0
  34. package/dist/__tests__/weighted-random.test.d.ts +7 -0
  35. package/dist/__tests__/weighted-random.test.d.ts.map +1 -0
  36. package/dist/__tests__/win-evaluator.test.d.ts +7 -0
  37. package/dist/__tests__/win-evaluator.test.d.ts.map +1 -0
  38. package/dist/__tests__/win-evaluator.test.js +20 -13
  39. package/dist/__tests__/win-evaluator.test.js.map +1 -1
  40. package/dist/config/happy-panda.config.d.ts +212 -0
  41. package/dist/config/happy-panda.config.d.ts.map +1 -0
  42. package/dist/config/index.d.ts +5 -0
  43. package/dist/config/index.d.ts.map +1 -0
  44. package/dist/domain/index.d.ts +5 -0
  45. package/dist/domain/index.d.ts.map +1 -0
  46. package/dist/domain/types.d.ts +205 -0
  47. package/dist/domain/types.d.ts.map +1 -0
  48. package/dist/engine/happy-panda-engine.d.ts +50 -0
  49. package/dist/engine/happy-panda-engine.d.ts.map +1 -0
  50. package/dist/engine/index.d.ts +5 -0
  51. package/dist/engine/index.d.ts.map +1 -0
  52. package/dist/happy-panda-v1.game-engine.d.ts +63 -0
  53. package/dist/happy-panda-v1.game-engine.d.ts.map +1 -0
  54. package/dist/index.d.ts +19 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/logic/handlers/index.d.ts +5 -0
  57. package/dist/logic/handlers/index.d.ts.map +1 -0
  58. package/dist/logic/handlers/spin-handler.d.ts +54 -0
  59. package/dist/logic/handlers/spin-handler.d.ts.map +1 -0
  60. package/dist/logic/index.d.ts +6 -0
  61. package/dist/logic/index.d.ts.map +1 -0
  62. package/dist/logic/services/counter-manager.d.ts +60 -0
  63. package/dist/logic/services/counter-manager.d.ts.map +1 -0
  64. package/dist/logic/services/index.d.ts +7 -0
  65. package/dist/logic/services/index.d.ts.map +1 -0
  66. package/dist/logic/services/jackpot-manager.d.ts +59 -0
  67. package/dist/logic/services/jackpot-manager.d.ts.map +1 -0
  68. package/dist/logic/services/win-evaluator.d.ts +49 -0
  69. package/dist/logic/services/win-evaluator.d.ts.map +1 -0
  70. package/dist/logic/services/win-evaluator.js +9 -4
  71. package/dist/logic/services/win-evaluator.js.map +1 -1
  72. package/dist/rng/dummy-rng-client.d.ts +39 -0
  73. package/dist/rng/dummy-rng-client.d.ts.map +1 -0
  74. package/dist/rng/index.d.ts +10 -0
  75. package/dist/rng/index.d.ts.map +1 -0
  76. package/dist/rng/rng-client.factory.d.ts +33 -0
  77. package/dist/rng/rng-client.factory.d.ts.map +1 -0
  78. package/dist/rng/rng-client.interface.d.ts +51 -0
  79. package/dist/rng/rng-client.interface.d.ts.map +1 -0
  80. package/dist/rng/rng-service.d.ts +93 -0
  81. package/dist/rng/rng-service.d.ts.map +1 -0
  82. package/dist/rng/spin-generator.d.ts +31 -0
  83. package/dist/rng/spin-generator.d.ts.map +1 -0
  84. package/dist/rng/weighted-random.d.ts +30 -0
  85. package/dist/rng/weighted-random.d.ts.map +1 -0
  86. package/package.json +1 -1
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Weighted Random Tests
3
+ *
4
+ * Tests for weighted random selection utilities.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=weighted-random.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weighted-random.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/weighted-random.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Win Evaluator Tests
3
+ *
4
+ * Tests for the win evaluation logic against the C++ math model.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=win-evaluator.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"win-evaluator.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/win-evaluator.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -26,7 +26,7 @@ describe('Win Evaluator', () => {
26
26
  const grid = filledGrid(happy_panda_config_1.Symbol.BAR3);
27
27
  const result = (0, win_evaluator_1.evaluateWallWin)(grid, 8);
28
28
  expect(result).not.toBeNull();
29
- expect(result.payout).toBe(44 * 8); // 44x bet_game (tuned for 96.38% RTP)
29
+ expect(result.payout).toBe(500 * 8); // BAR3 = 500x bet_game (WALL_MULTIPLIERS[0])
30
30
  });
31
31
  it('should detect Cherry wall win (mixed CH/CH_S)', () => {
32
32
  const grid = [
@@ -36,7 +36,7 @@ describe('Win Evaluator', () => {
36
36
  ];
37
37
  const result = (0, win_evaluator_1.evaluateWallWin)(grid, 8);
38
38
  expect(result).not.toBeNull();
39
- expect(result.payout).toBe(35 * 8); // Cherry wall = 35x (tuned for 96.38% RTP)
39
+ expect(result.payout).toBe(400 * 8); // Cherry wall = 400x bet_game (WALL_MULTIPLIERS[7])
40
40
  });
41
41
  it('should detect Any Bar wall (mixed BAR3/BAR2/BAR1)', () => {
42
42
  const grid = [
@@ -46,7 +46,7 @@ describe('Win Evaluator', () => {
46
46
  ];
47
47
  const result = (0, win_evaluator_1.evaluateWallWin)(grid, 8);
48
48
  expect(result).not.toBeNull();
49
- expect(result.payout).toBe(5 * 8); // Any Bar = 5x (tuned for 96.38% RTP)
49
+ expect(result.payout).toBe(50 * 8); // Any Bar = 50x bet_game (WALL_MULTIPLIERS[8])
50
50
  });
51
51
  it('should detect All Fruits wall', () => {
52
52
  const grid = [
@@ -56,7 +56,7 @@ describe('Win Evaluator', () => {
56
56
  ];
57
57
  const result = (0, win_evaluator_1.evaluateWallWin)(grid, 8);
58
58
  expect(result).not.toBeNull();
59
- expect(result.payout).toBe(2 * 8); // All Fruits = 2x (tuned for 96.38% RTP)
59
+ expect(result.payout).toBe(15 * 8); // All Fruits = 15x bet_game (WALL_MULTIPLIERS[9])
60
60
  });
61
61
  it('should return null for non-wall', () => {
62
62
  const grid = [
@@ -78,7 +78,7 @@ describe('Win Evaluator', () => {
78
78
  const results = (0, win_evaluator_1.evaluateScatterWins)(grid, 8);
79
79
  expect(results.length).toBe(1); // Only mix scatter (2 regular sevens)
80
80
  expect(results[0].count).toBe(2);
81
- expect(results[0].payout).toBe(1 * 8); // 2x = 1x bet_game
81
+ expect(results[0].payout).toBe(2 * 8); // 2x = 2x bet_game (SEVEN_SCATTER_MULTIPLIERS[7])
82
82
  });
83
83
  it('should detect 3x Super Seven scatter (doubled)', () => {
84
84
  const grid = [
@@ -90,7 +90,7 @@ describe('Win Evaluator', () => {
90
90
  expect(results.length).toBe(1); // Only Super Seven scatter (no regular sevens)
91
91
  expect(results[0].count).toBe(3);
92
92
  expect(results[0].isSuperSevenOnly).toBe(true);
93
- expect(results[0].payout).toBe(2 * 8 * 2); // 3x = 2x, doubled for Super Seven only
93
+ expect(results[0].payout).toBe(5 * 8 * 2); // 3x = 5x bet_game, doubled for Super Seven only
94
94
  });
95
95
  it('should detect mixed Seven/Super Seven (TWO wins per C++)', () => {
96
96
  const grid = [
@@ -104,7 +104,7 @@ describe('Win Evaluator', () => {
104
104
  expect(results[0].count).toBe(3); // Total count
105
105
  expect(results[0].isSuperSevenOnly).toBe(false);
106
106
  // With exactly 1 Super Seven in mix, add bet_game bonus
107
- expect(results[0].payout).toBe(2 * 8 + 8); // 3x = 2x + 1x bonus
107
+ expect(results[0].payout).toBe(5 * 8 + 8); // 3x = 5x bet_game + 1x bonus
108
108
  });
109
109
  it('should return empty array for 1 Seven', () => {
110
110
  const grid = [
@@ -224,19 +224,26 @@ describe('Win Evaluator', () => {
224
224
  const result = (0, win_evaluator_1.evaluateSpin)(grid, types_1.GameDirection.SINGLE, 1, 8, happy_panda_config_1.SpinType.PAID_SPIN);
225
225
  expect(result.wallWin).not.toBeNull();
226
226
  expect(result.lineWins.length).toBe(0); // Lines suppressed
227
- expect(result.totalPayout).toBe(44 * 8); // Only wall payout (tuned for 96.38% RTP)
227
+ expect(result.totalPayout).toBe(500 * 8); // BAR3 wall = 500x bet_game (WALL_MULTIPLIERS[0])
228
228
  });
229
- it('should suppress line wins when scatter win present', () => {
230
- // 3x Seven scatter with potential line wins
229
+ it('should pay BOTH line wins AND scatter wins (C++ behavior)', () => {
230
+ // 3x Seven scatter with line wins
231
+ // Per C++ simulation (lines 2731-2735): BOTH line_wins_sum AND screen_win_sum are added
232
+ // Scatter wins do NOT suppress line wins - only wall wins suppress line wins
231
233
  const grid = [
232
- [happy_panda_config_1.Symbol.SEVEN, happy_panda_config_1.Symbol.SEVEN, happy_panda_config_1.Symbol.SEVEN], // Would be line win too
233
- [happy_panda_config_1.Symbol.BAR3, happy_panda_config_1.Symbol.BAR3, happy_panda_config_1.Symbol.BAR3], // Would be line win
234
+ [happy_panda_config_1.Symbol.SEVEN, happy_panda_config_1.Symbol.SEVEN, happy_panda_config_1.Symbol.SEVEN], // Line win: 100 × bet_stake
235
+ [happy_panda_config_1.Symbol.BAR3, happy_panda_config_1.Symbol.BAR3, happy_panda_config_1.Symbol.BAR3], // Line win: 80 × bet_stake
234
236
  [happy_panda_config_1.Symbol.MELON, happy_panda_config_1.Symbol.PRUNE, happy_panda_config_1.Symbol.ORANGE],
235
237
  ];
236
238
  const result = (0, win_evaluator_1.evaluateSpin)(grid, types_1.GameDirection.SINGLE, 1, 8, happy_panda_config_1.SpinType.PAID_SPIN);
237
239
  expect(result.scatterWins.length).toBeGreaterThan(0);
238
240
  expect(result.scatterWins[0].count).toBe(3);
239
- expect(result.lineWins.length).toBe(0); // Lines suppressed
241
+ // C++ pays BOTH line wins and scatter wins
242
+ expect(result.lineWins.length).toBe(2); // 3x Seven + 3x BAR3
243
+ expect(result.lineWins[0].payout).toBe(100); // Seven line
244
+ expect(result.lineWins[1].payout).toBe(80); // BAR3 line
245
+ // Total = line wins (180) + scatter win (40) = 220
246
+ expect(result.totalPayout).toBe(220);
240
247
  });
241
248
  it('should evaluate line wins when no wall or scatter', () => {
242
249
  const grid = [
@@ -1 +1 @@
1
- {"version":3,"file":"win-evaluator.test.js","sourceRoot":"","sources":["../../src/__tests__/win-evaluator.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"win-evaluator.test.js","sourceRoot":"","sources":["../../src/__tests__/win-evaluator.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,212 @@
1
+ /**
2
+ * Happy Panda Game Engine Configuration
3
+ *
4
+ * Extracted from CherryMaster_A_2.cpp math model.
5
+ * 3x3 slot with 8/16 bidirectional paylines.
6
+ *
7
+ * Game Modes:
8
+ * - gameDirection=0: 8 lines, single direction, min bet = 8
9
+ * - gameDirection=1: 16 lines, both directions, min bet = 16
10
+ */
11
+ export declare enum Symbol {
12
+ NONE = -1,
13
+ SUPER_SEVEN = 0,// SEV_S
14
+ SEVEN = 1,// SEV
15
+ BAR3 = 2,// BA3
16
+ BAR2 = 3,// BA2
17
+ BAR1 = 4,// BA1
18
+ MELON = 5,// ME
19
+ BELL = 6,// BE
20
+ PRUNE = 7,// PR
21
+ ORANGE = 8,// OR
22
+ CHERRY = 9,// CH
23
+ SUPER_CHERRY = 10,// CH_S
24
+ SUPER_BAR = 11,// BA_S - used in Bar1 Bonus
25
+ BAR_ANY = 25,// Mixed bar (BAR3+BAR2+BAR1) - for line wins, not bonus trigger
26
+ CHERRY_00 = 12,
27
+ CHERRY_01 = 13,
28
+ CHERRY_02 = 14,
29
+ CHERRY_10 = 15,
30
+ CHERRY_11 = 16,
31
+ CHERRY_12 = 17,
32
+ CHERRY_20 = 18,
33
+ CHERRY_21 = 19,
34
+ CHERRY_22 = 20,
35
+ COLOR_YELLOW = 21,// CO_Y - Jackpot Bonus
36
+ COLOR_RED = 22,// CO_R - Cherry Bonus
37
+ COLOR_GREEN = 23,// CO_G - Bell Bonus
38
+ COLOR_BLUE = 24
39
+ }
40
+ export declare enum SpinType {
41
+ PAID_SPIN = 0,
42
+ BONUS_JACKPOT = 1,
43
+ BONUS_CHERRY = 2,
44
+ BONUS_BELL = 3,
45
+ BONUS_BAR1 = 4,
46
+ RESPIN_CHERRY = 5
47
+ }
48
+ export declare enum ScreenWinType {
49
+ NOTHING = -1,
50
+ SCREEN_SUPER_SEVEN = 0,
51
+ SCREEN_SEVEN = 1,
52
+ SCREEN_BAR3 = 2,
53
+ SCREEN_BAR2 = 3,
54
+ SCREEN_BAR1 = 4,
55
+ SCREEN_MELON = 5,
56
+ SCREEN_BELL = 6,
57
+ SCREEN_PRUNE = 7,
58
+ SCREEN_ORANGE = 8,
59
+ SCREEN_CHERRY = 9,
60
+ SCREEN_BAR_ANY = 10,
61
+ SCREEN_FRUIT_ANY = 11,
62
+ SCREEN_COLOR_ANY = 12,
63
+ SCREEN_CHERRY_PIECES = 13,// Jackpot Bonus
64
+ SCREEN_BELL_SCATTER = 14,// Bell Bonus
65
+ SCREEN_SUPER_BAR = 15
66
+ }
67
+ export declare const GRID: {
68
+ readonly REELS: 3;
69
+ readonly ROWS: 3;
70
+ readonly POSITIONS: 9;
71
+ };
72
+ /**
73
+ * Line pay table: [symbol][matchCount] = multiplier
74
+ * matchCount: 0=x1, 1=x2, 2=x3
75
+ * Values are multiplied by line bet
76
+ */
77
+ export declare const LINE_MULTIPLIERS: number[][];
78
+ /**
79
+ * 16 payline definitions: [lineIdx][positionIdx] = [reel, row]
80
+ * Lines 0-7: forward direction
81
+ * Lines 8-15: reverse direction (for 16-line mode)
82
+ */
83
+ export declare const LINE_SHAPES: number[][][];
84
+ export declare const LINES_PER_DIRECTION: readonly [8, 16];
85
+ /**
86
+ * Wall win multipliers: [wallType] = multiplier x bet_game
87
+ * Order matches ScreenMulti in C++ EXACTLY
88
+ */
89
+ export declare const WALL_MULTIPLIERS: number[];
90
+ /**
91
+ * Seven/Super Seven scatter pay table: [count-2] = multiplier x bet_game
92
+ * Pays for 2-9 matching Seven/Super Seven symbols
93
+ * Matches SevenSuperMulti in C++ EXACTLY
94
+ */
95
+ export declare const SEVEN_SCATTER_MULTIPLIERS: number[];
96
+ export declare const SEVEN_MIN_COUNT = 2;
97
+ export declare const SUPER_SEVEN_MULTIPLIER = 2;
98
+ /**
99
+ * Special win multipliers: [gameDirection][type] = multiplier x line
100
+ * type: 0=cherry pieces, 1=bell scatter, 2=super bar scatter
101
+ * Matches SpecialWins in C++ EXACTLY
102
+ */
103
+ export declare const SPECIAL_WIN_MULTIPLIERS: number[][];
104
+ export declare const BONUS_JACKPOT: {
105
+ /** Initial jackpot value: multiplier x bet_game */
106
+ readonly INIT: 100;
107
+ /** Maximum jackpot value: multiplier x bet_game */
108
+ readonly MAX: 1000;
109
+ /** Probability weights to increment jackpot on losing spin: [gameDir][yes,no] */
110
+ readonly INCREMENT_WEIGHTS: readonly [readonly [3, 10], readonly [3, 10]];
111
+ /** Increment amount: [gameDir] x bet_stake */
112
+ readonly INCREMENT_VALUE: readonly [1, 2];
113
+ /** Counter starts at (always 1 - triggers on 3x cherry line) */
114
+ readonly COUNTER_INIT: 1;
115
+ /** Free spins awarded */
116
+ readonly SPINS: 1;
117
+ /** Additional win on jackpot: multiplier x bet_game */
118
+ readonly ADD_WIN: 5;
119
+ };
120
+ export declare const POOL_JACKPOT: {
121
+ /** Initial pool value */
122
+ readonly INIT: 0;
123
+ /** Maximum pool value: multiplier x bet_game */
124
+ readonly MAX: 250;
125
+ /** Increment values: [gameDir][superSeven, seven] x bet_line */
126
+ readonly INCREMENT: readonly [readonly [10, 5], readonly [10, 5]];
127
+ };
128
+ export declare const BONUS_CHERRY: {
129
+ /** Counter initial values (randomly chosen) */
130
+ readonly COUNTER_INIT: readonly [6, 9];
131
+ /** Weights for choosing initial counter: [gameDir][weight_for_6, weight_for_9] */
132
+ readonly COUNTER_INIT_WEIGHTS: readonly [readonly [5, 5], readonly [5, 5]];
133
+ /** Free spins awarded */
134
+ readonly SPINS: 1;
135
+ };
136
+ export declare const BONUS_BELL: {
137
+ /** Counter initial values (randomly chosen) */
138
+ readonly COUNTER_INIT: readonly [3, 5];
139
+ /** Weights for choosing initial counter: [gameDir][weight_for_3, weight_for_5] */
140
+ readonly COUNTER_INIT_WEIGHTS: readonly [readonly [5, 5], readonly [5, 5]];
141
+ /** Free spins awarded */
142
+ readonly SPINS: 5;
143
+ };
144
+ export declare const BONUS_BAR1: {
145
+ /** Counter starts at (always 1) */
146
+ readonly COUNTER_INIT: 1;
147
+ /** Free spins awarded */
148
+ readonly SPINS: 7;
149
+ };
150
+ export declare const RESPIN_CHERRY: {
151
+ /** Spins awarded: [Cherry, Super Cherry] */
152
+ readonly SPINS: readonly [1, 2];
153
+ };
154
+ /**
155
+ * Symbol weights for paid spins: [gameDirection][position][symbol]
156
+ * Position order: (0,0), (0,1), (0,2), (1,0), (1,1), (1,2), (2,0), (2,1), (2,2)
157
+ * Symbol order: SEV_S, SEV, BA3, BA2, BA1, ME, BE, PR, OR, CH, CH_S
158
+ */
159
+ export declare const PAID_SPIN_WEIGHTS: number[][][];
160
+ /**
161
+ * Active symbol indices for paid spins
162
+ */
163
+ export declare const PAID_SPIN_SYMBOLS: Symbol[];
164
+ /**
165
+ * Limitation tiers: maximum symbols of same type allowed
166
+ */
167
+ export declare const LIMITATION_TIERS: readonly [2, 4, 7, 9];
168
+ /**
169
+ * Limitation weights for paid spins: [gameDirection][symbol][tier]
170
+ * Tier order: max2, max4, max7, max9
171
+ */
172
+ export declare const PAID_SPIN_LIMITATION_WEIGHTS: number[][][];
173
+ /**
174
+ * Probability weights for 3x3 wall wins: [gameDirection][yes, no]
175
+ */
176
+ export declare const PAID_SPIN_3X3_WEIGHTS: number[][];
177
+ /**
178
+ * Weights for which symbol creates 3x3 win
179
+ * Order: SEV_S, SEV, BA3, BA2, BA1, ME, BE, PR, OR, CH, CH_S
180
+ */
181
+ export declare const PAID_SPIN_3X3_SYMBOL_WEIGHTS: number[];
182
+ export declare const JACKPOT_BONUS_SYMBOLS: Symbol[];
183
+ export declare const JACKPOT_BONUS_WEIGHTS: number[][][];
184
+ export declare const JACKPOT_BONUS_LIMITATION_WEIGHTS: number[][][];
185
+ export declare const JACKPOT_BONUS_3X3_WEIGHTS: number[][];
186
+ export declare const JACKPOT_BONUS_3X3_SYMBOL_WEIGHTS: number[];
187
+ export declare const CHERRY_BONUS_SYMBOLS: Symbol[];
188
+ export declare const CHERRY_BONUS_WEIGHTS: number[][][];
189
+ export declare const CHERRY_BONUS_LIMITATION_WEIGHTS: number[][][];
190
+ export declare const CHERRY_BONUS_3X3_WEIGHTS: number[][];
191
+ export declare const CHERRY_BONUS_3X3_SYMBOL_WEIGHTS: number[];
192
+ export declare const BELL_BONUS_SYMBOLS: Symbol[];
193
+ export declare const BELL_BONUS_WEIGHTS: number[][][];
194
+ export declare const BELL_BONUS_LIMITATION_WEIGHTS: number[][][];
195
+ export declare const BELL_BONUS_3X3_WEIGHTS: number[][];
196
+ export declare const BELL_BONUS_3X3_SYMBOL_WEIGHTS: number[];
197
+ export declare const BAR1_BONUS_SYMBOLS: Symbol[];
198
+ export declare const BAR1_BONUS_WEIGHTS: number[][][];
199
+ export declare const BAR1_BONUS_LIMITATION_WEIGHTS: number[][][];
200
+ export declare const BAR1_BONUS_3X3_WEIGHTS: number[][];
201
+ export declare const BAR1_BONUS_3X3_SYMBOL_WEIGHTS: number[];
202
+ export declare const RESPIN_CHERRY_SYMBOLS: Symbol[];
203
+ export declare const RESPIN_CHERRY_WEIGHTS: number[][][];
204
+ export declare const RESPIN_CHERRY_LIMITATION_WEIGHTS: number[][][];
205
+ export declare const BAR_SYMBOLS: Symbol[];
206
+ /** Bar symbols including Super Bar - for bar mix wins (per C++ math model line 1229) */
207
+ export declare const BAR_MIX_SYMBOLS: Symbol[];
208
+ export declare const FRUIT_SYMBOLS: Symbol[];
209
+ export declare const COLOR_SYMBOLS: Symbol[];
210
+ export declare const SEVEN_SYMBOLS: Symbol[];
211
+ export declare const CHERRY_SYMBOLS: Symbol[];
212
+ //# sourceMappingURL=happy-panda.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"happy-panda.config.d.ts","sourceRoot":"","sources":["../../src/config/happy-panda.config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Configuration module exports
3
+ */
4
+ export * from './happy-panda.config';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Domain module exports
3
+ */
4
+ export * from './types';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,SAAS,CAAC"}
@@ -0,0 +1,205 @@
1
+ /**
2
+ * Happy Panda Game Engine - Domain Types
3
+ *
4
+ * Core type definitions for game state and spin results.
5
+ */
6
+ import { Symbol, SpinType, ScreenWinType } from '../config/happy-panda.config';
7
+ /** 3x3 grid indexed by [reel][row] */
8
+ export type Grid = Symbol[][];
9
+ /** Position on the grid */
10
+ export interface Position {
11
+ reel: number;
12
+ row: number;
13
+ }
14
+ /** Line win result */
15
+ export interface LineWin {
16
+ lineIndex: number;
17
+ symbol: Symbol;
18
+ matchLength: number;
19
+ payout: number;
20
+ positions: Position[];
21
+ }
22
+ /** Wall (3x3) win result */
23
+ export interface WallWin {
24
+ wallType: ScreenWinType;
25
+ payout: number;
26
+ positions: Position[];
27
+ }
28
+ /** Scatter win result (Seven/Super Seven) */
29
+ export interface ScatterWin {
30
+ symbol: Symbol;
31
+ count: number;
32
+ payout: number;
33
+ positions: Position[];
34
+ isSuperSevenOnly: boolean;
35
+ }
36
+ /** Special bonus win (cherry pieces, bell scatter, super bar scatter) */
37
+ export interface SpecialWin {
38
+ winType: ScreenWinType;
39
+ count: number;
40
+ payout: number;
41
+ positions: Position[];
42
+ }
43
+ /** Combined win result for a spin */
44
+ export interface SpinWinResult {
45
+ lineWins: LineWin[];
46
+ wallWin: WallWin | null;
47
+ scatterWins: ScatterWin[];
48
+ specialWins: SpecialWin[];
49
+ totalPayout: number;
50
+ }
51
+ /** Bonus counter state */
52
+ export interface BonusCounters {
53
+ /** Jackpot bonus counter (triggers at 0, resets to 1) */
54
+ jackpot: number;
55
+ /** Cherry bonus counter (triggers at 0, resets to 6 or 9) */
56
+ cherry: number;
57
+ /** Bell bonus counter (triggers at 0, resets to 3 or 5) */
58
+ bell: number;
59
+ /** Bar1 bonus counter (triggers at 0, resets to 1) */
60
+ bar1: number;
61
+ }
62
+ /** Pending bonus queue */
63
+ export interface PendingBonuses {
64
+ /** Number of pending jackpot bonuses */
65
+ jackpot: number;
66
+ /** Number of pending cherry bonuses */
67
+ cherry: number;
68
+ /** Number of pending bell bonuses (each grants 5 spins) */
69
+ bell: number;
70
+ /** Number of pending bar1 bonuses (each grants 7 spins) */
71
+ bar1: number;
72
+ /** Number of pending center cherry respins */
73
+ respin: number;
74
+ }
75
+ /** Jackpot state */
76
+ export interface JackpotState {
77
+ /** Progressive jackpot value (accumulates on losing paid spins) */
78
+ bonusJackpotValue: number;
79
+ /** Pool jackpot value (paid when bell bonus triggers) */
80
+ poolJackpotValue: number;
81
+ }
82
+ /** Game direction/mode */
83
+ export declare enum GameDirection {
84
+ SINGLE = 0,// 8 lines
85
+ BOTH = 1
86
+ }
87
+ /** Core game state */
88
+ export interface GameState {
89
+ /** Game mode (8 or 16 lines) */
90
+ gameDirection: GameDirection;
91
+ /** Bet multiplier (line bet) */
92
+ betStake: number;
93
+ /** Total bet per spin (8 or 16 x betStake) */
94
+ betGame: number;
95
+ /** Current spin type */
96
+ currentSpinType: SpinType;
97
+ /** Next spin type (determined after current spin) */
98
+ nextSpinType: SpinType;
99
+ /** Remaining spins in current bonus (0 for paid spin) */
100
+ spinsRemaining: number;
101
+ /** Bonus counters */
102
+ counters: BonusCounters;
103
+ /** Pending bonuses to execute */
104
+ pendingBonuses: PendingBonuses;
105
+ /** Jackpot values */
106
+ jackpots: JackpotState;
107
+ /** Current grid (3x3) */
108
+ grid: Grid;
109
+ /** Accumulated bonus wins (reset when bonus sequence ends) */
110
+ accumulatedBonusWins: number;
111
+ /** Center cherry symbol for respin (if active) */
112
+ centerCherrySymbol: Symbol | null;
113
+ }
114
+ /** State visible to client */
115
+ export interface PublicState {
116
+ gameDirection: GameDirection;
117
+ betStake: number;
118
+ betGame: number;
119
+ currentSpinType: SpinType;
120
+ spinsRemaining: number;
121
+ grid: Grid;
122
+ bonusJackpotValue: number;
123
+ poolJackpotValue: number;
124
+ /** Indicates if a bonus is pending (without revealing which) */
125
+ hasPendingBonus: boolean;
126
+ }
127
+ /** Server-side only state */
128
+ export interface PrivateState {
129
+ counters: BonusCounters;
130
+ pendingBonuses: PendingBonuses;
131
+ nextSpinType: SpinType;
132
+ accumulatedBonusWins: number;
133
+ centerCherrySymbol: Symbol | null;
134
+ }
135
+ /** Spin request from client */
136
+ export interface SpinRequest {
137
+ /** Session ID */
138
+ sessionId: string;
139
+ /** Game direction (8 or 16 lines) */
140
+ gameDirection: GameDirection;
141
+ /** Bet multiplier */
142
+ betStake: number;
143
+ }
144
+ /** Spin response to client */
145
+ export interface SpinResponse {
146
+ /** Session ID */
147
+ sessionId: string;
148
+ /** Resulting grid */
149
+ grid: Grid;
150
+ /** Win results */
151
+ wins: SpinWinResult;
152
+ /** Updated public state */
153
+ state: PublicState;
154
+ /** Jackpot won this spin (if any) */
155
+ jackpotWon: number;
156
+ /** Pool jackpot won this spin (if any) */
157
+ poolJackpotWon: number;
158
+ /** Bonus type triggered (for animation) */
159
+ bonusTriggered: SpinType | null;
160
+ /** Is this the final spin of a bonus sequence */
161
+ isBonusComplete: boolean;
162
+ }
163
+ /** Full session state (for persistence) */
164
+ export interface SessionState {
165
+ sessionId: string;
166
+ publicState: PublicState;
167
+ privateState: PrivateState;
168
+ createdAt: Date;
169
+ updatedAt: Date;
170
+ }
171
+ /** RNG interface for dependency injection */
172
+ export interface RngProvider {
173
+ /** Generate random integer in range [0, max) */
174
+ random(max: number): Promise<number>;
175
+ /** Generate multiple random integers */
176
+ randomBatch(count: number, max: number): Promise<number[]>;
177
+ }
178
+ /** Game command types */
179
+ export declare enum CommandType {
180
+ INIT_SESSION_STATE = "INIT_SESSION_STATE",
181
+ SPIN = "SPIN",
182
+ GET_SYMBOLS = "GET_SYMBOLS"
183
+ }
184
+ /** Command request base */
185
+ export interface CommandRequest {
186
+ command: CommandType;
187
+ sessionId: string;
188
+ }
189
+ /** Init session command */
190
+ export interface InitSessionRequest extends CommandRequest {
191
+ command: CommandType.INIT_SESSION_STATE;
192
+ gameDirection: GameDirection;
193
+ betStake: number;
194
+ }
195
+ /** Spin command */
196
+ export interface SpinCommandRequest extends CommandRequest {
197
+ command: CommandType.SPIN;
198
+ }
199
+ /** Get symbols command */
200
+ export interface GetSymbolsRequest extends CommandRequest {
201
+ command: CommandType.GET_SYMBOLS;
202
+ }
203
+ /** Union of all commands */
204
+ export type GameCommand = InitSessionRequest | SpinCommandRequest | GetSymbolsRequest;
205
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/domain/types.ts"],"names":[],"mappings":"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"}