@energy8platform/game-engine 0.17.0 → 0.19.0
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/audio.cjs.js +15 -5
- package/dist/audio.cjs.js.map +1 -1
- package/dist/audio.d.ts +5 -0
- package/dist/audio.esm.js +15 -5
- package/dist/audio.esm.js.map +1 -1
- package/dist/core.cjs.js +108 -19
- package/dist/core.cjs.js.map +1 -1
- package/dist/core.d.ts +46 -3
- package/dist/core.esm.js +109 -21
- package/dist/core.esm.js.map +1 -1
- package/dist/game-spec.cjs.js +13 -0
- package/dist/game-spec.cjs.js.map +1 -0
- package/dist/game-spec.d.ts +1 -0
- package/dist/game-spec.esm.js +2 -0
- package/dist/game-spec.esm.js.map +1 -0
- package/dist/host.cjs.js +3612 -0
- package/dist/host.cjs.js.map +1 -0
- package/dist/host.d.ts +1000 -0
- package/dist/host.esm.js +3603 -0
- package/dist/host.esm.js.map +1 -0
- package/dist/index.cjs.js +59 -19
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +19 -2
- package/dist/index.esm.js +59 -19
- package/dist/index.esm.js.map +1 -1
- package/dist/react.cjs.js.map +1 -1
- package/dist/react.d.ts +19 -2
- package/dist/react.esm.js.map +1 -1
- package/dist/shell.cjs.js +19 -0
- package/dist/shell.cjs.js.map +1 -0
- package/dist/shell.d.ts +1 -0
- package/dist/shell.esm.js +2 -0
- package/dist/shell.esm.js.map +1 -0
- package/dist/slot.cjs.js +998 -0
- package/dist/slot.cjs.js.map +1 -0
- package/dist/slot.d.ts +333 -0
- package/dist/slot.esm.js +985 -0
- package/dist/slot.esm.js.map +1 -0
- package/package.json +28 -2
- package/src/audio/AudioManager.ts +17 -5
- package/src/core/GameApplication.ts +38 -6
- package/src/core/index.ts +2 -0
- package/src/game-spec/index.ts +1 -0
- package/src/host/autoplay.ts +78 -0
- package/src/host/balanceGate.ts +46 -0
- package/src/host/buildConfig.ts +28 -0
- package/src/host/createSlotGame.ts +543 -0
- package/src/host/fatalError.ts +104 -0
- package/src/host/freeSpinsCounter.ts +44 -0
- package/src/host/index.ts +21 -0
- package/src/host/overlayController.ts +81 -0
- package/src/host/pauseController.ts +21 -0
- package/src/host/playError.ts +64 -0
- package/src/host/preboot.ts +25 -0
- package/src/host/replay.ts +9 -0
- package/src/host/runRound.ts +55 -0
- package/src/host/sceneAudio.ts +14 -0
- package/src/host/sceneController.ts +96 -0
- package/src/host/sceneStart.ts +25 -0
- package/src/host/shellConfig.ts +384 -0
- package/src/host/skipGesture.ts +24 -0
- package/src/host/slotPlay.ts +62 -0
- package/src/host/types.ts +74 -0
- package/src/scenes/IntroScene.ts +66 -0
- package/src/shell/index.ts +20 -0
- package/src/slot/anim/CascadeController.ts +102 -0
- package/src/slot/anim/ReelSpinController.ts +81 -0
- package/src/slot/anim/easing-map.ts +14 -0
- package/src/slot/freeSpins/FreeSpinsSession.ts +40 -0
- package/src/slot/grid/AnimatedSymbol.ts +68 -0
- package/src/slot/grid/ReelGrid.ts +92 -0
- package/src/slot/grid/SymbolCell.ts +127 -0
- package/src/slot/grid/SymbolView.ts +13 -0
- package/src/slot/index.ts +21 -0
- package/src/slot/multiplier/MultiplierAccumulator.ts +29 -0
- package/src/slot/overlay/BigWinOverlay.ts +89 -0
- package/src/slot/overlay/CountUpDisplay.ts +56 -0
- package/src/slot/overlay/tiers.ts +29 -0
- package/src/types.ts +3 -0
- package/src/viewport/ViewportManager.ts +19 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slot.esm.js","sources":["../src/animation/Easing.ts","../src/animation/Tween.ts","../src/animation/SpriteAnimation.ts","../src/slot/grid/AnimatedSymbol.ts","../src/slot/grid/SymbolCell.ts","../src/slot/grid/ReelGrid.ts","../src/slot/anim/easing-map.ts","../src/slot/anim/CascadeController.ts","../src/slot/anim/ReelSpinController.ts","../src/slot/overlay/tiers.ts","../src/slot/overlay/CountUpDisplay.ts","../src/slot/overlay/BigWinOverlay.ts","../src/slot/freeSpins/FreeSpinsSession.ts","../src/slot/multiplier/MultiplierAccumulator.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["DEFAULT_TIMINGS"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@energy8platform/game-engine",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.0",
|
|
4
4
|
"description": "Universal casino game engine built on PixiJS v8 and @energy8platform/game-sdk",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs.js",
|
|
@@ -42,6 +42,11 @@
|
|
|
42
42
|
"require": "./dist/debug.cjs.js",
|
|
43
43
|
"types": "./dist/debug.d.ts"
|
|
44
44
|
},
|
|
45
|
+
"./shell": {
|
|
46
|
+
"import": "./dist/shell.esm.js",
|
|
47
|
+
"require": "./dist/shell.cjs.js",
|
|
48
|
+
"types": "./dist/shell.d.ts"
|
|
49
|
+
},
|
|
45
50
|
"./vite": {
|
|
46
51
|
"import": "./dist/vite.esm.js",
|
|
47
52
|
"require": "./dist/vite.cjs.js",
|
|
@@ -61,6 +66,21 @@
|
|
|
61
66
|
"import": "./dist/lua.esm.js",
|
|
62
67
|
"require": "./dist/lua.cjs.js",
|
|
63
68
|
"types": "./dist/lua.d.ts"
|
|
69
|
+
},
|
|
70
|
+
"./game-spec": {
|
|
71
|
+
"import": "./dist/game-spec.esm.js",
|
|
72
|
+
"require": "./dist/game-spec.cjs.js",
|
|
73
|
+
"types": "./dist/game-spec.d.ts"
|
|
74
|
+
},
|
|
75
|
+
"./host": {
|
|
76
|
+
"import": "./dist/host.esm.js",
|
|
77
|
+
"require": "./dist/host.cjs.js",
|
|
78
|
+
"types": "./dist/host.d.ts"
|
|
79
|
+
},
|
|
80
|
+
"./slot": {
|
|
81
|
+
"import": "./dist/slot.esm.js",
|
|
82
|
+
"require": "./dist/slot.cjs.js",
|
|
83
|
+
"types": "./dist/slot.d.ts"
|
|
64
84
|
}
|
|
65
85
|
},
|
|
66
86
|
"files": [
|
|
@@ -78,16 +98,21 @@
|
|
|
78
98
|
"prepublishOnly": "npm run build"
|
|
79
99
|
},
|
|
80
100
|
"dependencies": {
|
|
81
|
-
"@energy8platform/platform-core": "*"
|
|
101
|
+
"@energy8platform/platform-core": "*",
|
|
102
|
+
"@energy8platform/pixi-shell": "*"
|
|
82
103
|
},
|
|
83
104
|
"peerDependencies": {
|
|
84
105
|
"@energy8platform/game-sdk": "^2.7.0",
|
|
106
|
+
"@energy8platform/stake-bridge": ">=0.2.1",
|
|
85
107
|
"pixi.js": "^8.16.0",
|
|
86
108
|
"react": ">=18.0.0",
|
|
87
109
|
"react-dom": ">=18.0.0",
|
|
88
110
|
"react-reconciler": ">=0.29.0"
|
|
89
111
|
},
|
|
90
112
|
"peerDependenciesMeta": {
|
|
113
|
+
"@energy8platform/stake-bridge": {
|
|
114
|
+
"optional": true
|
|
115
|
+
},
|
|
91
116
|
"@esotericsoftware/spine-pixi-v8": {
|
|
92
117
|
"optional": true
|
|
93
118
|
},
|
|
@@ -106,6 +131,7 @@
|
|
|
106
131
|
},
|
|
107
132
|
"devDependencies": {
|
|
108
133
|
"@energy8platform/game-sdk": "^2.7.0",
|
|
134
|
+
"@energy8platform/stake-bridge": "*",
|
|
109
135
|
"@esotericsoftware/spine-pixi-v8": "~4.2.0",
|
|
110
136
|
"@pixi/sound": "^6.0.0",
|
|
111
137
|
"@rollup/plugin-typescript": "^12.1.0",
|
|
@@ -35,6 +35,7 @@ export class AudioManager {
|
|
|
35
35
|
private _persist: boolean;
|
|
36
36
|
private _storageKey: string;
|
|
37
37
|
private _categories: Record<AudioCategoryName, CategoryState>;
|
|
38
|
+
private _masterGain = 1.0;
|
|
38
39
|
private _currentMusic: string | null = null;
|
|
39
40
|
private _unlocked = false;
|
|
40
41
|
private _unlockHandler: (() => void) | null = null;
|
|
@@ -105,7 +106,7 @@ export class AudioManager {
|
|
|
105
106
|
if (this._globalMuted || this._categories[category].muted) return;
|
|
106
107
|
|
|
107
108
|
const { sound } = this._soundModule;
|
|
108
|
-
const vol = (options?.volume ?? 1) * this._categories[category].volume;
|
|
109
|
+
const vol = (options?.volume ?? 1) * this._categories[category].volume * this._masterGain;
|
|
109
110
|
|
|
110
111
|
try {
|
|
111
112
|
sound.play(alias, {
|
|
@@ -137,7 +138,7 @@ export class AudioManager {
|
|
|
137
138
|
if (this._globalMuted || this._categories.music.muted) return;
|
|
138
139
|
|
|
139
140
|
// Fade out the previous track
|
|
140
|
-
this.fadeVolume(prevAlias, this._categories.music.volume, 0, fadeDuration, () => {
|
|
141
|
+
this.fadeVolume(prevAlias, this._categories.music.volume * this._masterGain, 0, fadeDuration, () => {
|
|
141
142
|
try { sound.stop(prevAlias); } catch { /* ignore */ }
|
|
142
143
|
});
|
|
143
144
|
|
|
@@ -147,7 +148,7 @@ export class AudioManager {
|
|
|
147
148
|
volume: 0,
|
|
148
149
|
loop: true,
|
|
149
150
|
});
|
|
150
|
-
this.fadeVolume(alias, 0, this._categories.music.volume, fadeDuration);
|
|
151
|
+
this.fadeVolume(alias, 0, this._categories.music.volume * this._masterGain, fadeDuration);
|
|
151
152
|
} catch (e) {
|
|
152
153
|
console.warn(`[AudioManager] Failed to play music "${alias}":`, e);
|
|
153
154
|
}
|
|
@@ -162,7 +163,7 @@ export class AudioManager {
|
|
|
162
163
|
|
|
163
164
|
try {
|
|
164
165
|
sound.play(alias, {
|
|
165
|
-
volume: this._categories.music.volume,
|
|
166
|
+
volume: this._categories.music.volume * this._masterGain,
|
|
166
167
|
loop: true,
|
|
167
168
|
});
|
|
168
169
|
} catch (e) {
|
|
@@ -195,6 +196,17 @@ export class AudioManager {
|
|
|
195
196
|
this._currentMusic = null;
|
|
196
197
|
}
|
|
197
198
|
|
|
199
|
+
/** Global gain (0..1) folded into every category's effective volume. Driven by the shell's
|
|
200
|
+
* 'master' settingChange. Does not affect the persisted per-category volumes. */
|
|
201
|
+
setMasterVolume(volume: number): void {
|
|
202
|
+
this._masterGain = Math.max(0, Math.min(1, volume));
|
|
203
|
+
this.applyVolumes();
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
getMasterVolume(): number {
|
|
207
|
+
return this._masterGain;
|
|
208
|
+
}
|
|
209
|
+
|
|
198
210
|
/**
|
|
199
211
|
* Set volume for a category.
|
|
200
212
|
*/
|
|
@@ -350,7 +362,7 @@ export class AudioManager {
|
|
|
350
362
|
const { sound } = this._soundModule;
|
|
351
363
|
// Global mute is owned by sound.muteAll()/unmuteAll() (context.muted),
|
|
352
364
|
// not by volumeAll — mixing both leaves mute un-undoable after reload.
|
|
353
|
-
sound.volumeAll =
|
|
365
|
+
sound.volumeAll = this._masterGain; // master multiplies the global bus
|
|
354
366
|
}
|
|
355
367
|
|
|
356
368
|
private setupMobileUnlock(): void {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Application, Assets, Ticker } from 'pixi.js';
|
|
1
|
+
import { Application, Assets, Container, Ticker } from 'pixi.js';
|
|
2
2
|
import type { CasinoGameSDK } from '@energy8platform/game-sdk';
|
|
3
3
|
import type { InitData, GameConfigData, SessionData } from '@energy8platform/game-sdk';
|
|
4
4
|
import { createPlatformSession, type PlatformSession } from '@energy8platform/platform-core';
|
|
@@ -66,6 +66,14 @@ export class GameApplication extends EventEmitter<GameEngineEvents> {
|
|
|
66
66
|
/** Viewport manager */
|
|
67
67
|
public viewport!: ViewportManager;
|
|
68
68
|
|
|
69
|
+
/** Scaled world root (holds scenes). Transformed by the ViewportManager to fit the design
|
|
70
|
+
* resolution; lives below the UI layer on app.stage. */
|
|
71
|
+
public worldRoot!: Container;
|
|
72
|
+
|
|
73
|
+
/** Unscaled, screen-space UI layer. Sits above {@link worldRoot} and is NOT touched by the
|
|
74
|
+
* viewport transform — children fill the real screen (e.g. the host's shell + overlay). */
|
|
75
|
+
public uiLayer!: Container;
|
|
76
|
+
|
|
69
77
|
/** SDK instance (null in offline mode) */
|
|
70
78
|
public sdk: CasinoGameSDK | null = null;
|
|
71
79
|
|
|
@@ -78,6 +86,9 @@ export class GameApplication extends EventEmitter<GameEngineEvents> {
|
|
|
78
86
|
/** Platform session (SDK + optional DevBridge). null until start() runs. */
|
|
79
87
|
public platformSession: PlatformSession | null = null;
|
|
80
88
|
|
|
89
|
+
/** Branded game shell (only when config.shell is set). */
|
|
90
|
+
public shell?: import('@energy8platform/platform-core/shell').GameShell;
|
|
91
|
+
|
|
81
92
|
/** Configuration */
|
|
82
93
|
public readonly config: GameApplicationConfig;
|
|
83
94
|
|
|
@@ -156,6 +167,12 @@ export class GameApplication extends EventEmitter<GameEngineEvents> {
|
|
|
156
167
|
// 4. Initialize SDK (if enabled)
|
|
157
168
|
await this.initSDK();
|
|
158
169
|
|
|
170
|
+
// 4b. Mount the branded game shell after the SDK handshake (optional)
|
|
171
|
+
if (this.config.shell) {
|
|
172
|
+
const { createGameShell } = await import('@energy8platform/platform-core/shell');
|
|
173
|
+
this.shell = createGameShell(this.config.shell);
|
|
174
|
+
}
|
|
175
|
+
|
|
159
176
|
// 5. Merge design dimensions from SDK config
|
|
160
177
|
this.applySDKConfig();
|
|
161
178
|
|
|
@@ -185,11 +202,17 @@ export class GameApplication extends EventEmitter<GameEngineEvents> {
|
|
|
185
202
|
/**
|
|
186
203
|
* Destroy the engine and free all resources.
|
|
187
204
|
*/
|
|
188
|
-
destroy(): void {
|
|
205
|
+
async destroy(): Promise<void> {
|
|
189
206
|
if (this._destroyed) return;
|
|
190
207
|
this._destroyed = true;
|
|
191
208
|
this._running = false;
|
|
192
209
|
|
|
210
|
+
if (this.shell) {
|
|
211
|
+
const { removeGameShell } = await import('@energy8platform/platform-core/shell');
|
|
212
|
+
await removeGameShell();
|
|
213
|
+
this.shell = undefined;
|
|
214
|
+
}
|
|
215
|
+
|
|
193
216
|
this.scenes?.destroy();
|
|
194
217
|
this.input?.destroy();
|
|
195
218
|
this.audio?.destroy();
|
|
@@ -272,7 +295,15 @@ export class GameApplication extends EventEmitter<GameEngineEvents> {
|
|
|
272
295
|
// Input Manager
|
|
273
296
|
this.input = new InputManager(this.app.canvas as HTMLCanvasElement);
|
|
274
297
|
|
|
275
|
-
//
|
|
298
|
+
// Stage layers: a scaled world root (scenes, transformed to design resolution by the
|
|
299
|
+
// viewport) below an unscaled UI layer (screen space). app.stage itself stays identity.
|
|
300
|
+
this.worldRoot = new Container();
|
|
301
|
+
this.worldRoot.label = 'world';
|
|
302
|
+
this.uiLayer = new Container();
|
|
303
|
+
this.uiLayer.label = 'ui';
|
|
304
|
+
this.app.stage.addChild(this.worldRoot, this.uiLayer);
|
|
305
|
+
|
|
306
|
+
// Viewport Manager — scales worldRoot (NOT app.stage), so the UI layer is unscaled.
|
|
276
307
|
this.viewport = new ViewportManager(
|
|
277
308
|
this.app,
|
|
278
309
|
this._container!,
|
|
@@ -282,16 +313,17 @@ export class GameApplication extends EventEmitter<GameEngineEvents> {
|
|
|
282
313
|
scaleMode: this.config.scaleMode!,
|
|
283
314
|
orientation: this.config.orientation!,
|
|
284
315
|
},
|
|
316
|
+
this.worldRoot,
|
|
285
317
|
);
|
|
286
318
|
|
|
287
|
-
// Wire SceneManager to the
|
|
288
|
-
this.scenes.setRoot(this.
|
|
319
|
+
// Wire SceneManager to the scaled world root
|
|
320
|
+
this.scenes.setRoot(this.worldRoot);
|
|
289
321
|
this.scenes.setApp(this);
|
|
290
322
|
|
|
291
323
|
// Wire viewport resize → scene manager + input manager
|
|
292
324
|
this.viewport.on('resize', ({ width, height, scale }) => {
|
|
293
325
|
this.scenes.resize(width, height);
|
|
294
|
-
this.input.setViewportTransform(scale, this.
|
|
326
|
+
this.input.setViewportTransform(scale, this.worldRoot.x, this.worldRoot.y);
|
|
295
327
|
this.emit('resize', { width, height });
|
|
296
328
|
});
|
|
297
329
|
|
package/src/core/index.ts
CHANGED
|
@@ -2,3 +2,5 @@ export { GameApplication } from './GameApplication';
|
|
|
2
2
|
export { SceneManager } from './SceneManager';
|
|
3
3
|
export { Scene } from './Scene';
|
|
4
4
|
export { EventEmitter } from './EventEmitter';
|
|
5
|
+
export { IntroScene } from '../scenes/IntroScene';
|
|
6
|
+
export type { IntroSceneConfig } from '../scenes/IntroScene';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@energy8platform/platform-core/game-spec';
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Host-side autoplay loop. The shell owns the picker + confirm (a count only commits after the
|
|
3
|
+
* confirm modal); it emits `autoplayStart` with the chosen count and `autoplayStop`. This driver
|
|
4
|
+
* runs N rounds back-to-back through the SAME `playRound` a manual spin uses (so a triggered bonus
|
|
5
|
+
* drains fully before the next auto-spin), updating the shell's autoplay readout each spin and
|
|
6
|
+
* halting on Stop, on an unaffordable spin, or on a play error.
|
|
7
|
+
*
|
|
8
|
+
* Sequential by construction: it awaits each round (incl. its bonus drain) before the next, so
|
|
9
|
+
* there is never more than one round in flight. Pure over injected deps — unit-testable.
|
|
10
|
+
*/
|
|
11
|
+
export interface AutoplayDeps {
|
|
12
|
+
/** The action to auto-spin (e.g. an active ante feature, else 'spin'). Read fresh each round. */
|
|
13
|
+
resolveAction(): string;
|
|
14
|
+
/** Affordability gate for the action (the host's ensureAffordable — may surface a modal). */
|
|
15
|
+
canAfford(action: string): boolean;
|
|
16
|
+
/** Play one full round (trigger + any bonus drain). Resolves when the round + animation finish. */
|
|
17
|
+
playRound(action: string): Promise<void>;
|
|
18
|
+
/** Push the autoplay readout to the shell (active + remaining). */
|
|
19
|
+
onState(state: { active: boolean; remaining: number }): void;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface Autoplay {
|
|
23
|
+
/** Begin an autoplay run of `count` rounds (no-op if already running or count ≤ 0). */
|
|
24
|
+
start(count: number): void;
|
|
25
|
+
/** Stop the run; the in-flight round (if any) finishes, then the loop exits. */
|
|
26
|
+
stop(): void;
|
|
27
|
+
readonly active: boolean;
|
|
28
|
+
readonly remaining: number;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export function createAutoplayLoop(deps: AutoplayDeps): Autoplay {
|
|
32
|
+
let active = false;
|
|
33
|
+
let remaining = 0;
|
|
34
|
+
let running = false; // guards against a second concurrent loop
|
|
35
|
+
|
|
36
|
+
const stop = (): void => {
|
|
37
|
+
if (!active && remaining === 0) return;
|
|
38
|
+
active = false;
|
|
39
|
+
remaining = 0;
|
|
40
|
+
deps.onState({ active: false, remaining: 0 });
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
async function loop(): Promise<void> {
|
|
44
|
+
if (running) return;
|
|
45
|
+
running = true;
|
|
46
|
+
try {
|
|
47
|
+
while (active && remaining > 0) {
|
|
48
|
+
const action = deps.resolveAction();
|
|
49
|
+
if (!deps.canAfford(action)) { stop(); return; }
|
|
50
|
+
// Decrement at spin START (so the spin in flight is `total − remaining`), then play it out.
|
|
51
|
+
remaining -= 1;
|
|
52
|
+
deps.onState({ active: true, remaining });
|
|
53
|
+
try {
|
|
54
|
+
await deps.playRound(action);
|
|
55
|
+
} catch {
|
|
56
|
+
stop(); // a play error already surfaced its own modal — just halt the run
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (active) stop(); // ran the budget out
|
|
61
|
+
} finally {
|
|
62
|
+
running = false;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return {
|
|
67
|
+
start(count: number): void {
|
|
68
|
+
if (active || running || count <= 0) return;
|
|
69
|
+
active = true;
|
|
70
|
+
remaining = count;
|
|
71
|
+
deps.onState({ active: true, remaining });
|
|
72
|
+
void loop();
|
|
73
|
+
},
|
|
74
|
+
stop,
|
|
75
|
+
get active() { return active; },
|
|
76
|
+
get remaining() { return remaining; },
|
|
77
|
+
};
|
|
78
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gate for WHEN a balance change is painted to the shell readout.
|
|
3
|
+
*
|
|
4
|
+
* The wallet emits balance changes at two moments: the DEBIT lands when `play()` is called (before
|
|
5
|
+
* the scene animates), and the CREDIT (win) lands when the round settles — `/wallet/end-round`
|
|
6
|
+
* fires asynchronously AFTER the final segment's ack, i.e. after `present()`. The HUD-timing rule is
|
|
7
|
+
* "balance updates only after present()", so:
|
|
8
|
+
* - while a segment is between `beginPlay()` and `afterPresent()`, balance changes are BUFFERED
|
|
9
|
+
* (the debit must not flash before the animation),
|
|
10
|
+
* - `afterPresent()` paints the latest buffered value (the debit),
|
|
11
|
+
* - any later change (the async win credit) paints immediately, because the gate is open again.
|
|
12
|
+
*
|
|
13
|
+
* `balance` always reflects the true latest wallet value (regardless of gating) so an affordability
|
|
14
|
+
* guard can read it. Pure + unit-testable: the shell paint is injected.
|
|
15
|
+
*/
|
|
16
|
+
export interface BalanceGate {
|
|
17
|
+
/** Record a wallet balance change. Paints it now unless a present is in flight. */
|
|
18
|
+
onBalance(amount: number): void;
|
|
19
|
+
/** A play() was issued — suppress painting until the matching afterPresent() (debit must wait). */
|
|
20
|
+
beginPlay(): void;
|
|
21
|
+
/** A segment finished animating — paint the latest balance and re-open the gate. */
|
|
22
|
+
afterPresent(): void;
|
|
23
|
+
/** The latest wallet balance, painted or not (for affordability checks). */
|
|
24
|
+
readonly balance: number;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function createBalanceGate(paint: (amount: number) => void, initial = 0): BalanceGate {
|
|
28
|
+
let latest = initial;
|
|
29
|
+
let suppressed = false;
|
|
30
|
+
return {
|
|
31
|
+
onBalance(amount: number): void {
|
|
32
|
+
latest = amount;
|
|
33
|
+
if (!suppressed) paint(amount);
|
|
34
|
+
},
|
|
35
|
+
beginPlay(): void {
|
|
36
|
+
suppressed = true;
|
|
37
|
+
},
|
|
38
|
+
afterPresent(): void {
|
|
39
|
+
paint(latest);
|
|
40
|
+
suppressed = false;
|
|
41
|
+
},
|
|
42
|
+
get balance(): number {
|
|
43
|
+
return latest;
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// packages/game-engine/src/host/buildConfig.ts
|
|
2
|
+
import type { GameApplicationConfig } from '../types';
|
|
3
|
+
import { ScaleMode, Orientation } from '../types';
|
|
4
|
+
import type { CreateSlotGameOptions } from './types';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Pure: map host options to a GameApplicationConfig with sane defaults.
|
|
8
|
+
* `isStakeNow` is computed by the orchestrator (kept out of here so this
|
|
9
|
+
* stays a pure, renderer-free function).
|
|
10
|
+
*/
|
|
11
|
+
export function buildAppConfig(
|
|
12
|
+
opts: CreateSlotGameOptions,
|
|
13
|
+
isStakeNow: boolean,
|
|
14
|
+
): GameApplicationConfig {
|
|
15
|
+
return {
|
|
16
|
+
container: opts.container ?? '#game',
|
|
17
|
+
designWidth: opts.design?.width ?? 1920,
|
|
18
|
+
designHeight: opts.design?.height ?? 1080,
|
|
19
|
+
scaleMode: opts.scaleMode ?? ScaleMode.FILL,
|
|
20
|
+
orientation: opts.orientation ?? Orientation.ANY,
|
|
21
|
+
loading: opts.loading ?? { tapToStart: false, minDisplayTime: 600 },
|
|
22
|
+
manifest: opts.manifest,
|
|
23
|
+
audio: opts.audio,
|
|
24
|
+
pixi: opts.pixi,
|
|
25
|
+
sdk: { devMode: isStakeNow || (opts.dev ?? false) },
|
|
26
|
+
debug: opts.dev ?? false,
|
|
27
|
+
};
|
|
28
|
+
}
|