@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.
- package/dist/__tests__/bonus-sequence.test.d.ts +7 -0
- package/dist/__tests__/bonus-sequence.test.d.ts.map +1 -0
- package/dist/__tests__/cherry-frequency.test.d.ts +8 -0
- package/dist/__tests__/cherry-frequency.test.d.ts.map +1 -0
- package/dist/__tests__/counter-manager.test.d.ts +7 -0
- package/dist/__tests__/counter-manager.test.d.ts.map +1 -0
- package/dist/__tests__/cpp-parity.test.d.ts +39 -0
- package/dist/__tests__/cpp-parity.test.d.ts.map +1 -0
- package/dist/__tests__/cpp-parity.test.js +29 -25
- package/dist/__tests__/cpp-parity.test.js.map +1 -1
- package/dist/__tests__/fixtures/cpp-parity-vectors.json +69 -50
- package/dist/__tests__/happy-panda-engine.test.d.ts +7 -0
- package/dist/__tests__/happy-panda-engine.test.d.ts.map +1 -0
- package/dist/__tests__/jackpot-manager.test.d.ts +8 -0
- package/dist/__tests__/jackpot-manager.test.d.ts.map +1 -0
- package/dist/__tests__/jackpot-trigger-trace.test.d.ts +6 -0
- package/dist/__tests__/jackpot-trigger-trace.test.d.ts.map +1 -0
- package/dist/__tests__/rtp-1million.test.d.ts +8 -0
- package/dist/__tests__/rtp-1million.test.d.ts.map +1 -0
- package/dist/__tests__/rtp-analysis.test.d.ts +8 -0
- package/dist/__tests__/rtp-analysis.test.d.ts.map +1 -0
- package/dist/__tests__/rtp-diagnostic.test.d.ts +6 -0
- package/dist/__tests__/rtp-diagnostic.test.d.ts.map +1 -0
- package/dist/__tests__/rtp-simulation.test.d.ts +8 -0
- package/dist/__tests__/rtp-simulation.test.d.ts.map +1 -0
- package/dist/__tests__/special-wins.test.d.ts +7 -0
- package/dist/__tests__/special-wins.test.d.ts.map +1 -0
- package/dist/__tests__/spin-generator.test.d.ts +7 -0
- package/dist/__tests__/spin-generator.test.d.ts.map +1 -0
- package/dist/__tests__/spin-handler.test.d.ts +7 -0
- package/dist/__tests__/spin-handler.test.d.ts.map +1 -0
- package/dist/__tests__/symbol-distribution.test.d.ts +6 -0
- package/dist/__tests__/symbol-distribution.test.d.ts.map +1 -0
- package/dist/__tests__/weighted-random.test.d.ts +7 -0
- package/dist/__tests__/weighted-random.test.d.ts.map +1 -0
- package/dist/__tests__/win-evaluator.test.d.ts +7 -0
- package/dist/__tests__/win-evaluator.test.d.ts.map +1 -0
- package/dist/__tests__/win-evaluator.test.js +20 -13
- package/dist/__tests__/win-evaluator.test.js.map +1 -1
- package/dist/config/happy-panda.config.d.ts +212 -0
- package/dist/config/happy-panda.config.d.ts.map +1 -0
- package/dist/config/index.d.ts +5 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/domain/index.d.ts +5 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/types.d.ts +205 -0
- package/dist/domain/types.d.ts.map +1 -0
- package/dist/engine/happy-panda-engine.d.ts +50 -0
- package/dist/engine/happy-panda-engine.d.ts.map +1 -0
- package/dist/engine/index.d.ts +5 -0
- package/dist/engine/index.d.ts.map +1 -0
- package/dist/happy-panda-v1.game-engine.d.ts +63 -0
- package/dist/happy-panda-v1.game-engine.d.ts.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/logic/handlers/index.d.ts +5 -0
- package/dist/logic/handlers/index.d.ts.map +1 -0
- package/dist/logic/handlers/spin-handler.d.ts +54 -0
- package/dist/logic/handlers/spin-handler.d.ts.map +1 -0
- package/dist/logic/index.d.ts +6 -0
- package/dist/logic/index.d.ts.map +1 -0
- package/dist/logic/services/counter-manager.d.ts +60 -0
- package/dist/logic/services/counter-manager.d.ts.map +1 -0
- package/dist/logic/services/index.d.ts +7 -0
- package/dist/logic/services/index.d.ts.map +1 -0
- package/dist/logic/services/jackpot-manager.d.ts +59 -0
- package/dist/logic/services/jackpot-manager.d.ts.map +1 -0
- package/dist/logic/services/win-evaluator.d.ts +49 -0
- package/dist/logic/services/win-evaluator.d.ts.map +1 -0
- package/dist/logic/services/win-evaluator.js +9 -4
- package/dist/logic/services/win-evaluator.js.map +1 -1
- package/dist/rng/dummy-rng-client.d.ts +39 -0
- package/dist/rng/dummy-rng-client.d.ts.map +1 -0
- package/dist/rng/index.d.ts +10 -0
- package/dist/rng/index.d.ts.map +1 -0
- package/dist/rng/rng-client.factory.d.ts +33 -0
- package/dist/rng/rng-client.factory.d.ts.map +1 -0
- package/dist/rng/rng-client.interface.d.ts +51 -0
- package/dist/rng/rng-client.interface.d.ts.map +1 -0
- package/dist/rng/rng-service.d.ts +93 -0
- package/dist/rng/rng-service.d.ts.map +1 -0
- package/dist/rng/spin-generator.d.ts +31 -0
- package/dist/rng/spin-generator.d.ts.map +1 -0
- package/dist/rng/weighted-random.d.ts +30 -0
- package/dist/rng/weighted-random.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Happy Panda Game Engine
|
|
3
|
+
*
|
|
4
|
+
* Main engine class that provides the public API for the game.
|
|
5
|
+
* Implements the command pattern used by other Omnitronix game engines.
|
|
6
|
+
*/
|
|
7
|
+
import { GameDirection, SessionState, RngProvider, GameCommand } from '../domain/types';
|
|
8
|
+
export declare class HappyPandaEngine {
|
|
9
|
+
private rng;
|
|
10
|
+
constructor(rngProvider: RngProvider);
|
|
11
|
+
/**
|
|
12
|
+
* Handle a game command.
|
|
13
|
+
*/
|
|
14
|
+
handleCommand(command: GameCommand, currentState?: SessionState): Promise<{
|
|
15
|
+
response: unknown;
|
|
16
|
+
state: SessionState;
|
|
17
|
+
}>;
|
|
18
|
+
private handleInitSession;
|
|
19
|
+
private handleSpin;
|
|
20
|
+
private handleGetSymbols;
|
|
21
|
+
/**
|
|
22
|
+
* Extract public state from game state.
|
|
23
|
+
*/
|
|
24
|
+
private extractPublicState;
|
|
25
|
+
/**
|
|
26
|
+
* Extract private state from game state.
|
|
27
|
+
*/
|
|
28
|
+
private extractPrivateState;
|
|
29
|
+
/**
|
|
30
|
+
* Create session state from game state.
|
|
31
|
+
*/
|
|
32
|
+
private createSessionState;
|
|
33
|
+
/**
|
|
34
|
+
* Reconstruct game state from session state.
|
|
35
|
+
*/
|
|
36
|
+
private reconstructGameState;
|
|
37
|
+
/**
|
|
38
|
+
* Create empty session for commands that don't need state.
|
|
39
|
+
*/
|
|
40
|
+
private createEmptySession;
|
|
41
|
+
/**
|
|
42
|
+
* Update bet settings (only when no bonus pending).
|
|
43
|
+
*/
|
|
44
|
+
updateBet(session: SessionState, gameDirection: GameDirection, betStake: number): SessionState;
|
|
45
|
+
/**
|
|
46
|
+
* Check if player can change bet.
|
|
47
|
+
*/
|
|
48
|
+
canChangeBet(session: SessionState): boolean;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=happy-panda-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"happy-panda-engine.d.ts","sourceRoot":"","sources":["../../src/engine/happy-panda-engine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAEL,aAAa,EAGb,YAAY,EACZ,WAAW,EAEX,WAAW,EAIZ,MAAM,iBAAiB,CAAC;AAczB,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,GAAG,CAAc;gBAEb,WAAW,EAAE,WAAW;IAQpC;;OAEG;IACG,aAAa,CACjB,OAAO,EAAE,WAAW,EACpB,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,YAAY,CAAA;KAAE,CAAC;YAuBxC,iBAAiB;YAiBjB,UAAU;YAiCV,gBAAgB;IAkB9B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAuB5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoB1B;;OAEG;IACH,SAAS,CACP,OAAO,EAAE,YAAY,EACrB,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,MAAM,GACf,YAAY;IAMf;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;CAM7C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HappyPandaV1GameEngine
|
|
3
|
+
*
|
|
4
|
+
* Wrapper class that adapts HappyPandaEngine to the standard GameEngine interface
|
|
5
|
+
* expected by the game-engine-service infrastructure.
|
|
6
|
+
*
|
|
7
|
+
* Uses the proper RNG infrastructure matching Heroes of Aether and Bonny's Fortune:
|
|
8
|
+
* - RngClientFactory for environment-based client selection
|
|
9
|
+
* - RngService for audit trail tracking
|
|
10
|
+
* - Full RNG outcome reporting for compliance
|
|
11
|
+
*/
|
|
12
|
+
import { PublicState, PrivateState } from './domain/types';
|
|
13
|
+
import { RngOutcome, RngOutcomeRecord } from './rng/rng-service';
|
|
14
|
+
export { RngOutcome, RngOutcomeRecord };
|
|
15
|
+
export interface GameEngineInfo {
|
|
16
|
+
gameCode: string;
|
|
17
|
+
version: string;
|
|
18
|
+
rtp: number;
|
|
19
|
+
gameType: string;
|
|
20
|
+
gameName: string;
|
|
21
|
+
provider: string;
|
|
22
|
+
}
|
|
23
|
+
export interface CommandProcessingResult<TPublicState = unknown, TPrivateState = unknown, TOutcome = unknown> {
|
|
24
|
+
success: boolean;
|
|
25
|
+
publicState: TPublicState;
|
|
26
|
+
privateState: TPrivateState;
|
|
27
|
+
outcome?: TOutcome;
|
|
28
|
+
message?: string;
|
|
29
|
+
rngOutcome?: RngOutcome;
|
|
30
|
+
}
|
|
31
|
+
export interface GameActionCommand<TPayload = unknown> {
|
|
32
|
+
id: string;
|
|
33
|
+
type: string;
|
|
34
|
+
payload?: TPayload;
|
|
35
|
+
}
|
|
36
|
+
export interface GameEngine<TPublicState = unknown, TPrivateState = unknown, TOutcome = unknown> {
|
|
37
|
+
processCommand(publicState: TPublicState, privateState: TPrivateState, command: GameActionCommand): Promise<CommandProcessingResult<TPublicState, TPrivateState, TOutcome>>;
|
|
38
|
+
getGameEngineInfo(): GameEngineInfo;
|
|
39
|
+
}
|
|
40
|
+
export interface HappyPandaV1GameEngineConfig {
|
|
41
|
+
metrics?: unknown;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Happy Panda V1 Game Engine
|
|
45
|
+
*
|
|
46
|
+
* Implements the standard GameEngine interface for use with game-engine-service.
|
|
47
|
+
* Uses proper RNG infrastructure with full audit trail support.
|
|
48
|
+
*/
|
|
49
|
+
export declare class HappyPandaV1GameEngine implements GameEngine<PublicState, PrivateState, unknown> {
|
|
50
|
+
private readonly gameCode;
|
|
51
|
+
private readonly version;
|
|
52
|
+
private readonly rtp;
|
|
53
|
+
private readonly gameType;
|
|
54
|
+
private readonly gameName;
|
|
55
|
+
private readonly provider;
|
|
56
|
+
private readonly rngService;
|
|
57
|
+
private readonly rngAdapter;
|
|
58
|
+
private readonly engine;
|
|
59
|
+
constructor(config?: HappyPandaV1GameEngineConfig);
|
|
60
|
+
getGameEngineInfo(): GameEngineInfo;
|
|
61
|
+
processCommand(publicState: PublicState | null, privateState: PrivateState | null, command: GameActionCommand): Promise<CommandProcessingResult<PublicState, PrivateState, unknown>>;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=happy-panda-v1.game-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"happy-panda-v1.game-engine.d.ts","sourceRoot":"","sources":["../src/happy-panda-v1.game-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAGL,WAAW,EACX,YAAY,EAGb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAc,UAAU,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG7E,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC;AAGxC,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB,CACtC,YAAY,GAAG,OAAO,EACtB,aAAa,GAAG,OAAO,EACvB,QAAQ,GAAG,OAAO;IAElB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,YAAY,CAAC;IAC1B,YAAY,EAAE,aAAa,CAAC;IAC5B,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB,CAAC,QAAQ,GAAG,OAAO;IACnD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,QAAQ,CAAC;CACpB;AAED,MAAM,WAAW,UAAU,CACzB,YAAY,GAAG,OAAO,EACtB,aAAa,GAAG,OAAO,EACvB,QAAQ,GAAG,OAAO;IAElB,cAAc,CACZ,WAAW,EAAE,YAAY,EACzB,YAAY,EAAE,aAAa,EAC3B,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,uBAAuB,CAAC,YAAY,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE3E,iBAAiB,IAAI,cAAc,CAAC;CACrC;AAoCD,MAAM,WAAW,4BAA4B;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;GAKG;AACH,qBAAa,sBACX,YAAW,UAAU,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,CAAC;IAEzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IAEzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;gBAE9B,MAAM,GAAE,4BAAiC;IAc9C,iBAAiB,IAAI,cAAc;IAW7B,cAAc,CACzB,WAAW,EAAE,WAAW,GAAG,IAAI,EAC/B,YAAY,EAAE,YAAY,GAAG,IAAI,EACjC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,uBAAuB,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;CAmHxE"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Happy Panda Game Engine
|
|
3
|
+
*
|
|
4
|
+
* A 3x3 slot game engine with 8/16 bidirectional paylines.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
export { HappyPandaV1GameEngine } from './happy-panda-v1.game-engine';
|
|
9
|
+
export type { GameEngine, GameEngineInfo, GameActionCommand, CommandProcessingResult, RngOutcome, RngOutcomeRecord, } from './happy-panda-v1.game-engine';
|
|
10
|
+
export { HappyPandaEngine } from './engine';
|
|
11
|
+
export { Symbol, SpinType, ScreenWinType, GRID, LINE_SHAPES, LINES_PER_DIRECTION, } from './config';
|
|
12
|
+
export { Grid, Position, LineWin, WallWin, ScatterWin, SpecialWin, SpinWinResult, BonusCounters, PendingBonuses, JackpotState, GameDirection, GameState, PublicState, PrivateState, SpinRequest, SpinResponse, SessionState, RngProvider, CommandType, GameCommand, InitSessionRequest, SpinCommandRequest, GetSymbolsRequest, } from './domain';
|
|
13
|
+
export { evaluateSpin, evaluateLineWins, evaluateWallWin, evaluateScatterWins } from './logic/services';
|
|
14
|
+
export { generateGrid } from './rng';
|
|
15
|
+
export { IRngClient, RngSingleResponse, RngBatchResponse, } from './rng/rng-client.interface';
|
|
16
|
+
export { DummyRngClient } from './rng/dummy-rng-client';
|
|
17
|
+
export { RngClientFactory, RngClientConfig } from './rng/rng-client.factory';
|
|
18
|
+
export { RngService } from './rng/rng-service';
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,YAAY,EACV,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,uBAAuB,EACvB,UAAU,EACV,gBAAgB,GACjB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAG5C,OAAO,EACL,MAAM,EACN,QAAQ,EACR,aAAa,EACb,IAAI,EACJ,WAAW,EACX,mBAAmB,GACpB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,OAAO,EACP,UAAU,EACV,UAAU,EACV,aAAa,EACb,aAAa,EACb,cAAc,EACd,YAAY,EACZ,aAAa,EACb,SAAS,EACT,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACxG,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAGrC,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/logic/handlers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spin Handler
|
|
3
|
+
*
|
|
4
|
+
* Coordinates the entire spin flow:
|
|
5
|
+
* 1. Determine spin type
|
|
6
|
+
* 2. Generate grid
|
|
7
|
+
* 3. Evaluate wins
|
|
8
|
+
* 4. Update counters
|
|
9
|
+
* 5. Update jackpots
|
|
10
|
+
* 6. Determine next spin type
|
|
11
|
+
* 7. Build response
|
|
12
|
+
*/
|
|
13
|
+
import { SpinType } from '../../config/happy-panda.config';
|
|
14
|
+
import { Grid, GameDirection, GameState, SpinWinResult, RngProvider } from '../../domain/types';
|
|
15
|
+
export interface SpinResult {
|
|
16
|
+
/** Resulting grid */
|
|
17
|
+
grid: Grid;
|
|
18
|
+
/** Win evaluation results */
|
|
19
|
+
wins: SpinWinResult;
|
|
20
|
+
/** Updated game state */
|
|
21
|
+
state: GameState;
|
|
22
|
+
/** Progressive jackpot won (if any) */
|
|
23
|
+
jackpotWon: number;
|
|
24
|
+
/** Pool jackpot won (if any) */
|
|
25
|
+
poolJackpotWon: number;
|
|
26
|
+
/** Bonus type triggered this spin */
|
|
27
|
+
bonusTriggered: SpinType | null;
|
|
28
|
+
/** Is this the final spin of bonus sequence */
|
|
29
|
+
isBonusComplete: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Execute a single spin.
|
|
33
|
+
*/
|
|
34
|
+
export declare function executeSpin(state: GameState, rng: RngProvider): Promise<SpinResult>;
|
|
35
|
+
/** Minimum bet stake */
|
|
36
|
+
export declare const MIN_BET_STAKE = 1;
|
|
37
|
+
/** Maximum bet stake (reasonable upper bound) */
|
|
38
|
+
export declare const MAX_BET_STAKE = 100;
|
|
39
|
+
/**
|
|
40
|
+
* Validate bet parameters.
|
|
41
|
+
* @throws Error if parameters are invalid
|
|
42
|
+
*/
|
|
43
|
+
export declare function validateBetParams(gameDirection: GameDirection, betStake: number): void;
|
|
44
|
+
/**
|
|
45
|
+
* Create initial game state.
|
|
46
|
+
* @throws Error if parameters are invalid
|
|
47
|
+
*/
|
|
48
|
+
export declare function createInitialState(gameDirection: GameDirection, betStake: number): GameState;
|
|
49
|
+
/**
|
|
50
|
+
* Update state for new bet.
|
|
51
|
+
* @throws Error if parameters are invalid
|
|
52
|
+
*/
|
|
53
|
+
export declare function updateBet(state: GameState, gameDirection: GameDirection, betStake: number): GameState;
|
|
54
|
+
//# sourceMappingURL=spin-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spin-handler.d.ts","sourceRoot":"","sources":["../../../src/logic/handlers/spin-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAEL,QAAQ,EAET,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,IAAI,EACJ,aAAa,EACb,SAAS,EACT,aAAa,EACb,WAAW,EACZ,MAAM,oBAAoB,CAAC;AAoB5B,MAAM,WAAW,UAAU;IACzB,qBAAqB;IACrB,IAAI,EAAE,IAAI,CAAC;IACX,6BAA6B;IAC7B,IAAI,EAAE,aAAa,CAAC;IACpB,yBAAyB;IACzB,KAAK,EAAE,SAAS,CAAC;IACjB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,qCAAqC;IACrC,cAAc,EAAE,QAAQ,GAAG,IAAI,CAAC;IAChC,+CAA+C;IAC/C,eAAe,EAAE,OAAO,CAAC;CAC1B;AAqBD;;GAEG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,SAAS,EAChB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,UAAU,CAAC,CA2KrB;AAMD,wBAAwB;AACxB,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,iDAAiD;AACjD,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAUtF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,MAAM,GACf,SAAS,CAsCX;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,SAAS,EAChB,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,MAAM,GACf,SAAS,CAiBX"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logic/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Counter Manager Service
|
|
3
|
+
*
|
|
4
|
+
* Manages bonus counters and trigger detection.
|
|
5
|
+
* Each bonus type has a counter that decrements on specific events.
|
|
6
|
+
* When a counter reaches 0, the bonus is triggered.
|
|
7
|
+
*/
|
|
8
|
+
import { SpinType } from '../../config/happy-panda.config';
|
|
9
|
+
import { Grid, GameDirection, BonusCounters, PendingBonuses, LineWin, RngProvider } from '../../domain/types';
|
|
10
|
+
/**
|
|
11
|
+
* Create initial bonus counters.
|
|
12
|
+
*/
|
|
13
|
+
export declare function createInitialCounters(): BonusCounters;
|
|
14
|
+
/**
|
|
15
|
+
* Create empty pending bonuses.
|
|
16
|
+
*/
|
|
17
|
+
export declare function createEmptyPendingBonuses(): PendingBonuses;
|
|
18
|
+
/**
|
|
19
|
+
* Randomize cherry counter initial value (6 or 9).
|
|
20
|
+
*/
|
|
21
|
+
export declare function randomizeCherryCounter(gameDirection: GameDirection, rng: RngProvider): Promise<number>;
|
|
22
|
+
/**
|
|
23
|
+
* Randomize bell counter initial value (3 or 5).
|
|
24
|
+
*/
|
|
25
|
+
export declare function randomizeBellCounter(gameDirection: GameDirection, rng: RngProvider): Promise<number>;
|
|
26
|
+
/** Result of counter update */
|
|
27
|
+
export interface CounterUpdateResult {
|
|
28
|
+
counters: BonusCounters;
|
|
29
|
+
pendingBonuses: PendingBonuses;
|
|
30
|
+
triggeredJackpot: boolean;
|
|
31
|
+
triggeredCherry: boolean;
|
|
32
|
+
triggeredBell: boolean;
|
|
33
|
+
triggeredBar1: boolean;
|
|
34
|
+
triggeredRespin: number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Update counters based on spin results.
|
|
38
|
+
* Only applies during paid_spin and respin_cherry.
|
|
39
|
+
*/
|
|
40
|
+
export declare function updateCounters(currentCounters: BonusCounters, currentPending: PendingBonuses, lineWins: LineWin[], grid: Grid, gameDirection: GameDirection, spinType: SpinType, totalWin: number, rng: RngProvider): Promise<CounterUpdateResult>;
|
|
41
|
+
/** Bonus type to consume */
|
|
42
|
+
export type BonusType = 'jackpot' | 'cherry' | 'bell' | 'bar1' | 'respin';
|
|
43
|
+
/**
|
|
44
|
+
* Get the next bonus type to execute (priority order).
|
|
45
|
+
* Returns null if no bonuses pending.
|
|
46
|
+
*/
|
|
47
|
+
export declare function getNextBonusType(pending: PendingBonuses): BonusType | null;
|
|
48
|
+
/**
|
|
49
|
+
* Consume one bonus from pending.
|
|
50
|
+
* Returns updated pending and number of spins for that bonus.
|
|
51
|
+
*/
|
|
52
|
+
export declare function consumeBonus(pending: PendingBonuses, bonusType: BonusType): {
|
|
53
|
+
pending: PendingBonuses;
|
|
54
|
+
spins: number;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Check if any bonus is pending.
|
|
58
|
+
*/
|
|
59
|
+
export declare function hasPendingBonus(pending: PendingBonuses): boolean;
|
|
60
|
+
//# sourceMappingURL=counter-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"counter-manager.d.ts","sourceRoot":"","sources":["../../../src/logic/services/counter-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAEL,QAAQ,EAOT,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,IAAI,EACJ,aAAa,EACb,aAAa,EACb,cAAc,EACd,OAAO,EACP,WAAW,EACZ,MAAM,oBAAoB,CAAC;AAO5B;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,aAAa,CAOrD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,cAAc,CAQ1D;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,aAAa,EAAE,aAAa,EAC5B,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,MAAM,CAAC,CAIjB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,aAAa,EAAE,aAAa,EAC5B,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,MAAM,CAAC,CAIjB;AAMD,+BAA+B;AAC/B,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,aAAa,CAAC;IACxB,cAAc,EAAE,cAAc,CAAC;IAC/B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,eAAe,EAAE,aAAa,EAC9B,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,OAAO,EAAE,EACnB,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,mBAAmB,CAAC,CAwI9B;AAMD,4BAA4B;AAC5B,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE1E;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,GAAG,SAAS,GAAG,IAAI,CAQ1E;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,SAAS,GACnB;IAAE,OAAO,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAsC5C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAQhE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/logic/services/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Jackpot Manager Service
|
|
3
|
+
*
|
|
4
|
+
* Manages progressive jackpot and pool jackpot values.
|
|
5
|
+
*
|
|
6
|
+
* Progressive Jackpot (Bonus Jackpot):
|
|
7
|
+
* - Starts at 100 x bet_game
|
|
8
|
+
* - On losing paid spins: 3/13 chance to increase by 1-2 x bet_stake
|
|
9
|
+
* - Max: 1000 x bet_game
|
|
10
|
+
* - Paid when Jackpot Bonus triggered
|
|
11
|
+
*
|
|
12
|
+
* Pool Jackpot:
|
|
13
|
+
* - Starts at 0
|
|
14
|
+
* - Increases when Seven/Super Seven in center with no wins
|
|
15
|
+
* - Max: 250 x bet_game
|
|
16
|
+
* - Paid when Bell Bonus triggered
|
|
17
|
+
*/
|
|
18
|
+
import { SpinType } from '../../config/happy-panda.config';
|
|
19
|
+
import { Grid, GameDirection, JackpotState, RngProvider } from '../../domain/types';
|
|
20
|
+
/**
|
|
21
|
+
* Create initial jackpot state.
|
|
22
|
+
*/
|
|
23
|
+
export declare function createInitialJackpots(betGame: number): JackpotState;
|
|
24
|
+
/**
|
|
25
|
+
* Update progressive jackpot value on losing paid spin.
|
|
26
|
+
* 3/13 probability to increase.
|
|
27
|
+
*/
|
|
28
|
+
export declare function updateProgressiveJackpot(currentValue: number, gameDirection: GameDirection, betGame: number, betStake: number, spinType: SpinType, totalWin: number, rng: RngProvider): Promise<number>;
|
|
29
|
+
/**
|
|
30
|
+
* Pay out progressive jackpot and reset.
|
|
31
|
+
*/
|
|
32
|
+
export declare function payProgressiveJackpot(currentValue: number, betGame: number): {
|
|
33
|
+
payout: number;
|
|
34
|
+
newValue: number;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Update pool jackpot value.
|
|
38
|
+
* Increases when Seven/Super Seven in center position with no wins.
|
|
39
|
+
* IMPORTANT: Must be the ONLY Seven on the entire screen (per C++ math model).
|
|
40
|
+
*/
|
|
41
|
+
export declare function updatePoolJackpot(currentValue: number, grid: Grid, gameDirection: GameDirection, betGame: number, betStake: number, spinType: SpinType, totalWin: number): number;
|
|
42
|
+
/**
|
|
43
|
+
* Pay out pool jackpot and reset.
|
|
44
|
+
*/
|
|
45
|
+
export declare function payPoolJackpot(currentValue: number, betGame: number): {
|
|
46
|
+
payout: number;
|
|
47
|
+
newValue: number;
|
|
48
|
+
};
|
|
49
|
+
/** Result of jackpot updates */
|
|
50
|
+
export interface JackpotUpdateResult {
|
|
51
|
+
jackpots: JackpotState;
|
|
52
|
+
progressiveJackpotIncreased: boolean;
|
|
53
|
+
poolJackpotIncreased: boolean;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Update both jackpot values after a spin.
|
|
57
|
+
*/
|
|
58
|
+
export declare function updateJackpots(currentJackpots: JackpotState, grid: Grid, gameDirection: GameDirection, betGame: number, betStake: number, spinType: SpinType, totalWin: number, rng: RngProvider): Promise<JackpotUpdateResult>;
|
|
59
|
+
//# sourceMappingURL=jackpot-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jackpot-manager.d.ts","sourceRoot":"","sources":["../../../src/logic/services/jackpot-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAEL,QAAQ,EAIT,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAOpF;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAKnE;AAMD;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,MAAM,CAAC,CAyBjB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,GACd;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAItC;AAMD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,GACf,MAAM,CAsCR;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,GACd;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAItC;AAMD,gCAAgC;AAChC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,YAAY,CAAC;IACvB,2BAA2B,EAAE,OAAO,CAAC;IACrC,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,eAAe,EAAE,YAAY,EAC7B,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,mBAAmB,CAAC,CAgC9B"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Win Evaluator Service
|
|
3
|
+
*
|
|
4
|
+
* Evaluates wins on a 3x3 grid with correct priority:
|
|
5
|
+
* 1. Wall wins (3x3) - suppress line wins
|
|
6
|
+
* 2. Scatter wins (Seven/Super Seven) - suppress line wins
|
|
7
|
+
* 3. Line wins (only if no wall or scatter)
|
|
8
|
+
* 4. Special wins (bonus-specific)
|
|
9
|
+
*/
|
|
10
|
+
import { SpinType } from '../../config/happy-panda.config';
|
|
11
|
+
import { Grid, GameDirection, LineWin, WallWin, ScatterWin, SpecialWin, SpinWinResult } from '../../domain/types';
|
|
12
|
+
/**
|
|
13
|
+
* Evaluate wall (3x3) wins.
|
|
14
|
+
* Wall wins require all 9 positions to be the same symbol or valid mix.
|
|
15
|
+
*/
|
|
16
|
+
export declare function evaluateWallWin(grid: Grid, betGame: number): WallWin | null;
|
|
17
|
+
/**
|
|
18
|
+
* Evaluate Seven/Super Seven scatter wins.
|
|
19
|
+
* C++ can award TWO scatter wins:
|
|
20
|
+
* 1. Super Seven only scatter (if SEV_S >= 2, doubled if no regular Sevens)
|
|
21
|
+
* 2. Total count scatter (if total >= 2 AND at least 1 regular Seven)
|
|
22
|
+
* Plus +bet_game bonus if exactly 1 Super Seven
|
|
23
|
+
*/
|
|
24
|
+
export declare function evaluateScatterWins(grid: Grid, betGame: number): ScatterWin[];
|
|
25
|
+
/**
|
|
26
|
+
* Evaluate all line wins.
|
|
27
|
+
*/
|
|
28
|
+
export declare function evaluateLineWins(grid: Grid, gameDirection: GameDirection, betStake: number): LineWin[];
|
|
29
|
+
/**
|
|
30
|
+
* Evaluate cherry piece line wins (Jackpot Bonus).
|
|
31
|
+
* Cherry pieces on lines pay special multiplier.
|
|
32
|
+
*/
|
|
33
|
+
export declare function evaluateCherryPieceWins(grid: Grid, gameDirection: GameDirection, betStake: number): SpecialWin[];
|
|
34
|
+
/**
|
|
35
|
+
* Evaluate bell scatter wins (Bell Bonus).
|
|
36
|
+
* Each bell pays as scatter during bonus.
|
|
37
|
+
*/
|
|
38
|
+
export declare function evaluateBellScatterWins(grid: Grid, gameDirection: GameDirection, betStake: number): SpecialWin | null;
|
|
39
|
+
/**
|
|
40
|
+
* Evaluate super bar scatter wins (Bar1 Bonus).
|
|
41
|
+
* Each super bar pays as scatter during bonus.
|
|
42
|
+
*/
|
|
43
|
+
export declare function evaluateSuperBarScatterWins(grid: Grid, gameDirection: GameDirection, betStake: number): SpecialWin | null;
|
|
44
|
+
/**
|
|
45
|
+
* Evaluate all wins for a spin.
|
|
46
|
+
* Implements correct priority: Wall > Scatter > Lines
|
|
47
|
+
*/
|
|
48
|
+
export declare function evaluateSpin(grid: Grid, gameDirection: GameDirection, betStake: number, betGame: number, spinType: SpinType): SpinWinResult;
|
|
49
|
+
//# sourceMappingURL=win-evaluator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"win-evaluator.d.ts","sourceRoot":"","sources":["../../../src/logic/services/win-evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAEL,QAAQ,EAiBT,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,IAAI,EACJ,aAAa,EAEb,OAAO,EACP,OAAO,EACP,UAAU,EACV,UAAU,EACV,aAAa,EACd,MAAM,oBAAoB,CAAC;AAqE5B;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,MAAM,GACd,OAAO,GAAG,IAAI,CAmEhB;AAMD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,MAAM,GACd,UAAU,EAAE,CAsDd;AAmGD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,MAAM,GACf,OAAO,EAAE,CAYX;AAMD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,MAAM,GACf,UAAU,EAAE,CAmCd;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,MAAM,GACf,UAAU,GAAG,IAAI,CAcnB;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,MAAM,GACf,UAAU,GAAG,IAAI,CAcnB;AAMD;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,GACjB,aAAa,CA8Ff"}
|
|
@@ -431,10 +431,15 @@ function evaluateSpin(grid, gameDirection, betStake, betGame, spinType) {
|
|
|
431
431
|
}
|
|
432
432
|
// Step 3: Line wins
|
|
433
433
|
// C++ header states: "line wins are suppress (not added) in case of 3x3 wins"
|
|
434
|
-
//
|
|
435
|
-
//
|
|
436
|
-
//
|
|
437
|
-
|
|
434
|
+
// However, C++ simulation (lines 2731-2735) shows:
|
|
435
|
+
// LineWinsCalculating() -> player_current_win += line_wins_sum
|
|
436
|
+
// ScreenWinsCalculating() -> player_current_win += screen_win_sum
|
|
437
|
+
// BOTH are added independently - scatter wins do NOT suppress line wins.
|
|
438
|
+
// Only wall wins (3x3) suppress line wins (per test fixture and game design).
|
|
439
|
+
//
|
|
440
|
+
// Example: 3x Seven on a line = line win (100) + scatter win (40) = 140 total
|
|
441
|
+
// C++ pays both, so we must too.
|
|
442
|
+
const shouldSuppressLines = wallWin !== null && spinType === happy_panda_config_1.SpinType.PAID_SPIN;
|
|
438
443
|
if (!shouldSuppressLines) {
|
|
439
444
|
const lineWins = evaluateLineWins(grid, gameDirection, betStake);
|
|
440
445
|
result.lineWins = lineWins;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"win-evaluator.js","sourceRoot":"","sources":["../../../src/logic/services/win-evaluator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"win-evaluator.js","sourceRoot":"","sources":["../../../src/logic/services/win-evaluator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dummy RNG Client
|
|
3
|
+
*
|
|
4
|
+
* Local RNG client for development and testing.
|
|
5
|
+
* Uses Math.random() for all operations.
|
|
6
|
+
* Returns seed value of 0 (non-cryptographic, for testing only).
|
|
7
|
+
*/
|
|
8
|
+
import { IRngClient, RngSingleResponse, RngBatchResponse } from './rng-client.interface';
|
|
9
|
+
export declare class DummyRngClient implements IRngClient {
|
|
10
|
+
/**
|
|
11
|
+
* Generate a single random integer in range [min, max]
|
|
12
|
+
*/
|
|
13
|
+
getSingleNumber(min: number, max: number, _seed?: number): Promise<RngSingleResponse>;
|
|
14
|
+
/**
|
|
15
|
+
* Generate multiple random integers in range [min, max]
|
|
16
|
+
*/
|
|
17
|
+
getBatchNumbers(min: number, max: number, count: number, _seed?: number): Promise<number[]>;
|
|
18
|
+
/**
|
|
19
|
+
* Generate multiple random integers with individual seeds
|
|
20
|
+
*/
|
|
21
|
+
getBatchNumbersWithSeeds(min: number, max: number, count: number, _seed?: number): Promise<RngSingleResponse[]>;
|
|
22
|
+
/**
|
|
23
|
+
* Generate a single random float in range [0, 1)
|
|
24
|
+
*/
|
|
25
|
+
getSingleFloat(_seed?: number): Promise<RngSingleResponse>;
|
|
26
|
+
/**
|
|
27
|
+
* Generate multiple random floats in range [0, 1)
|
|
28
|
+
*/
|
|
29
|
+
getBatchFloats(count: number, _seed?: number): Promise<RngBatchResponse>;
|
|
30
|
+
/**
|
|
31
|
+
* Alternative method for single random number
|
|
32
|
+
*/
|
|
33
|
+
getRandomNumber(min: number, max: number, _seed?: number): Promise<RngSingleResponse>;
|
|
34
|
+
/**
|
|
35
|
+
* Alternative method for single random float
|
|
36
|
+
*/
|
|
37
|
+
getRandomFloat(_seed?: number): Promise<RngSingleResponse>;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=dummy-rng-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dummy-rng-client.d.ts","sourceRoot":"","sources":["../../src/rng/dummy-rng-client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAEhC,qBAAa,cAAe,YAAW,UAAU;IAC/C;;OAEG;IACG,eAAe,CACnB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC;IAM7B;;OAEG;IACG,eAAe,CACnB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,EAAE,CAAC;IASpB;;OAEG;IACG,wBAAwB,CAC5B,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAY/B;;OAEG;IACG,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIhE;;OAEG;IACG,cAAc,CAClB,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,gBAAgB,CAAC;IAU5B;;OAEG;IACG,eAAe,CACnB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC;IAI7B;;OAEG;IACG,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAGjE"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RNG module exports
|
|
3
|
+
*/
|
|
4
|
+
export * from './weighted-random';
|
|
5
|
+
export * from './spin-generator';
|
|
6
|
+
export * from './rng-client.interface';
|
|
7
|
+
export * from './dummy-rng-client';
|
|
8
|
+
export * from './rng-client.factory';
|
|
9
|
+
export * from './rng-service';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rng/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RNG Client Factory
|
|
3
|
+
*
|
|
4
|
+
* Factory pattern for creating RNG clients based on environment configuration.
|
|
5
|
+
* Matches the pattern used in Heroes of Aether and Bonny's Fortune.
|
|
6
|
+
*
|
|
7
|
+
* Environment Variables:
|
|
8
|
+
* - RNG_CLIENT_MODE: 'local' (DummyRngClient) or 'external' (production RngClient)
|
|
9
|
+
* - RNG_CLIENT_URL: HTTP endpoint for external RNG service
|
|
10
|
+
* - RNG_CLIENT_GRPC_URL: gRPC endpoint for external RNG service
|
|
11
|
+
* - RNG_CLIENT_METHOD: 'grpc' or 'rest'
|
|
12
|
+
* - RNG_CLIENT_POOL_SIZE: Ring buffer pool size (default: 2000)
|
|
13
|
+
*/
|
|
14
|
+
import { IRngClient } from './rng-client.interface';
|
|
15
|
+
export interface RngClientConfig {
|
|
16
|
+
serverUrl?: string;
|
|
17
|
+
grpcUrl?: string;
|
|
18
|
+
clientMethod?: 'grpc' | 'rest';
|
|
19
|
+
poolingSize?: number;
|
|
20
|
+
metrics?: unknown;
|
|
21
|
+
}
|
|
22
|
+
export declare class RngClientFactory {
|
|
23
|
+
/**
|
|
24
|
+
* Create an RNG client based on environment configuration.
|
|
25
|
+
*
|
|
26
|
+
* @param config Optional configuration overrides
|
|
27
|
+
* @returns IRngClient instance (DummyRngClient for local, external client for production)
|
|
28
|
+
*/
|
|
29
|
+
static create(config?: {
|
|
30
|
+
metrics?: unknown;
|
|
31
|
+
}): IRngClient;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=rng-client.factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rng-client.factory.d.ts","sourceRoot":"","sources":["../../src/rng/rng-client.factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,gBAAgB;IAC3B;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,GAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,UAAU;CAqC9D"}
|