@energy8platform/game-engine 0.41.0 → 0.43.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.
@@ -1 +1 @@
1
- {"version":3,"file":"vite.cjs.js","sources":["../src/vite/index.ts"],"sourcesContent":[null],"names":["devBridgePlugin","spinPlugin"],"mappings":";;;;AAoCA;AAEA;;;;;;;;;;;;;;;;;;;;;;;AAuBG;AACG,SAAU,gBAAgB,CAAC,MAAA,GAAqB,EAAE,EAAA;IACtD,MAAM,OAAO,GAAa,EAAE;AAE5B,IAAA,IAAI,MAAM,CAAC,SAAS,EAAE;AACpB,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,eAAe,IAAI,cAAc;QAC3D,OAAO,CAAC,IAAI,CAACA,oBAAe,CAAC,UAAU,CAAC,CAAC;;AAEzC,QAAA,OAAO,CAAC,IAAI,CACVC,eAAU,CAAC;AACT,YAAA,QAAQ,EAAE,MAAM,CAAC,UAAU,IAAI,wBAAwB;YACvD,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,IAAI,EAAE,MAAM,CAAC,QAAQ;AACtB,SAAA,CAAC,CACH;IACH;AAEA,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE;IAElC,OAAO;AACL,QAAA,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;AAEzB,QAAA,OAAO,EAAE;AACP,YAAA,GAAG,OAAO;AACV,YAAA,IAAK,QAAQ,CAAC,OAAoB,IAAI,EAAE,CAAC;AAC1C,SAAA;AAED,QAAA,KAAK,EAAE;AACL,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,iBAAiB,EAAE,IAAI;AACvB,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,aAAa,EAAE;AACb,gBAAA,MAAM,EAAE;AACN,oBAAA,YAAY,EAAE;wBACZ,IAAI,EAAE,CAAC,SAAS,CAAC;AAClB,qBAAA;AACF,iBAAA;AACF,aAAA;YACD,GAAG,QAAQ,CAAC,KAAK;AAClB,SAAA;AAED,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,IAAI,EAAE,IAAI;YACV,GAAG,QAAQ,CAAC,MAAM;AACnB,SAAA;AAED,QAAA,OAAO,EAAE;AACP,YAAA,MAAM,EAAE;gBACN,SAAS;AACV,aAAA;YACD,GAAG,QAAQ,CAAC,OAAO;AACpB,SAAA;AAED,QAAA,YAAY,EAAE;AACZ,YAAA,OAAO,EAAE;gBACP,SAAS;AACV,aAAA;AACD,YAAA,cAAc,EAAE;AACd,gBAAA,MAAM,EAAE,QAAQ;AACjB,aAAA;YACD,GAAG,QAAQ,CAAC,YAAY;AACzB,SAAA;KACF;AACH;;;;;;;;;;;;"}
1
+ {"version":3,"file":"vite.cjs.js","sources":["../src/vite/index.ts"],"sourcesContent":[null],"names":["devBridgePlugin","spinPlugin"],"mappings":";;;;AAoCA;AAEA;;;;;;;;;;;;;;;;;;;;;;;AAuBG;AACG,SAAU,gBAAgB,CAAC,MAAA,GAAqB,EAAE,EAAA;IACtD,MAAM,OAAO,GAAa,EAAE;AAE5B,IAAA,IAAI,MAAM,CAAC,SAAS,EAAE;AACpB,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,eAAe,IAAI,cAAc;QAC3D,OAAO,CAAC,IAAI,CAACA,oBAAe,CAAC,UAAU,CAAC,CAAC;;AAEzC,QAAA,OAAO,CAAC,IAAI,CACVC,eAAU,CAAC;AACT,YAAA,QAAQ,EAAE,MAAM,CAAC,UAAU,IAAI,wBAAwB;YACvD,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,IAAI,EAAE,MAAM,CAAC,QAAQ;AACtB,SAAA,CAAC,CACH;IACH;AAEA,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE;IAElC,OAAO;AACL,QAAA,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;AAEzB,QAAA,OAAO,EAAE;AACP,YAAA,GAAG,OAAO;AACV,YAAA,IAAK,QAAQ,CAAC,OAAoB,IAAI,EAAE,CAAC;AAC1C,SAAA;AAED,QAAA,KAAK,EAAE;AACL,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,iBAAiB,EAAE,IAAI;AACvB,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,aAAa,EAAE;AACb,gBAAA,MAAM,EAAE;AACN,oBAAA,YAAY,EAAE;wBACZ,IAAI,EAAE,CAAC,SAAS,CAAC;AAClB,qBAAA;AACF,iBAAA;AACF,aAAA;YACD,GAAG,QAAQ,CAAC,KAAK;AAClB,SAAA;AAED,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,IAAI,EAAE,IAAI;YACV,GAAG,QAAQ,CAAC,MAAM;AACnB,SAAA;AAED,QAAA,OAAO,EAAE;AACP,YAAA,MAAM,EAAE;gBACN,SAAS;AACV,aAAA;YACD,GAAG,QAAQ,CAAC,OAAO;AACpB,SAAA;AAED,QAAA,YAAY,EAAE;AACZ,YAAA,OAAO,EAAE;gBACP,SAAS;AACV,aAAA;AACD,YAAA,cAAc,EAAE;AACd,gBAAA,MAAM,EAAE,QAAQ;AACjB,aAAA;YACD,GAAG,QAAQ,CAAC,YAAY;AACzB,SAAA;KACF;AACH;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"vite.esm.js","sources":["../src/vite/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAoCA;AAEA;;;;;;;;;;;;;;;;;;;;;;;AAuBG;AACG,SAAU,gBAAgB,CAAC,MAAA,GAAqB,EAAE,EAAA;IACtD,MAAM,OAAO,GAAa,EAAE;AAE5B,IAAA,IAAI,MAAM,CAAC,SAAS,EAAE;AACpB,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,eAAe,IAAI,cAAc;QAC3D,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;;AAEzC,QAAA,OAAO,CAAC,IAAI,CACV,UAAU,CAAC;AACT,YAAA,QAAQ,EAAE,MAAM,CAAC,UAAU,IAAI,wBAAwB;YACvD,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,IAAI,EAAE,MAAM,CAAC,QAAQ;AACtB,SAAA,CAAC,CACH;IACH;AAEA,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE;IAElC,OAAO;AACL,QAAA,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;AAEzB,QAAA,OAAO,EAAE;AACP,YAAA,GAAG,OAAO;AACV,YAAA,IAAK,QAAQ,CAAC,OAAoB,IAAI,EAAE,CAAC;AAC1C,SAAA;AAED,QAAA,KAAK,EAAE;AACL,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,iBAAiB,EAAE,IAAI;AACvB,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,aAAa,EAAE;AACb,gBAAA,MAAM,EAAE;AACN,oBAAA,YAAY,EAAE;wBACZ,IAAI,EAAE,CAAC,SAAS,CAAC;AAClB,qBAAA;AACF,iBAAA;AACF,aAAA;YACD,GAAG,QAAQ,CAAC,KAAK;AAClB,SAAA;AAED,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,IAAI,EAAE,IAAI;YACV,GAAG,QAAQ,CAAC,MAAM;AACnB,SAAA;AAED,QAAA,OAAO,EAAE;AACP,YAAA,MAAM,EAAE;gBACN,SAAS;AACV,aAAA;YACD,GAAG,QAAQ,CAAC,OAAO;AACpB,SAAA;AAED,QAAA,YAAY,EAAE;AACZ,YAAA,OAAO,EAAE;gBACP,SAAS;AACV,aAAA;AACD,YAAA,cAAc,EAAE;AACd,gBAAA,MAAM,EAAE,QAAQ;AACjB,aAAA;YACD,GAAG,QAAQ,CAAC,YAAY;AACzB,SAAA;KACF;AACH;;;;"}
1
+ {"version":3,"file":"vite.esm.js","sources":["../src/vite/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAoCA;AAEA;;;;;;;;;;;;;;;;;;;;;;;AAuBG;AACG,SAAU,gBAAgB,CAAC,MAAA,GAAqB,EAAE,EAAA;IACtD,MAAM,OAAO,GAAa,EAAE;AAE5B,IAAA,IAAI,MAAM,CAAC,SAAS,EAAE;AACpB,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,eAAe,IAAI,cAAc;QAC3D,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;;AAEzC,QAAA,OAAO,CAAC,IAAI,CACV,UAAU,CAAC;AACT,YAAA,QAAQ,EAAE,MAAM,CAAC,UAAU,IAAI,wBAAwB;YACvD,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,IAAI,EAAE,MAAM,CAAC,QAAQ;AACtB,SAAA,CAAC,CACH;IACH;AAEA,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE;IAElC,OAAO;AACL,QAAA,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;AAEzB,QAAA,OAAO,EAAE;AACP,YAAA,GAAG,OAAO;AACV,YAAA,IAAK,QAAQ,CAAC,OAAoB,IAAI,EAAE,CAAC;AAC1C,SAAA;AAED,QAAA,KAAK,EAAE;AACL,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,iBAAiB,EAAE,IAAI;AACvB,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,aAAa,EAAE;AACb,gBAAA,MAAM,EAAE;AACN,oBAAA,YAAY,EAAE;wBACZ,IAAI,EAAE,CAAC,SAAS,CAAC;AAClB,qBAAA;AACF,iBAAA;AACF,aAAA;YACD,GAAG,QAAQ,CAAC,KAAK;AAClB,SAAA;AAED,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,IAAI,EAAE,IAAI;YACV,GAAG,QAAQ,CAAC,MAAM;AACnB,SAAA;AAED,QAAA,OAAO,EAAE;AACP,YAAA,MAAM,EAAE;gBACN,SAAS;AACV,aAAA;YACD,GAAG,QAAQ,CAAC,OAAO;AACpB,SAAA;AAED,QAAA,YAAY,EAAE;AACZ,YAAA,OAAO,EAAE;gBACP,SAAS;AACV,aAAA;AACD,YAAA,cAAc,EAAE;AACd,gBAAA,MAAM,EAAE,QAAQ;AACjB,aAAA;YACD,GAAG,QAAQ,CAAC,YAAY;AACzB,SAAA;KACF;AACH;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@energy8platform/game-engine",
3
- "version": "0.41.0",
3
+ "version": "0.43.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",
@@ -94,7 +94,7 @@
94
94
  },
95
95
  "dependencies": {
96
96
  "@energy8platform/platform-core": ">=0.33.0",
97
- "@energy8platform/shell": ">=0.9.0"
97
+ "@energy8platform/shell": ">=0.11.0"
98
98
  },
99
99
  "peerDependencies": {
100
100
  "@energy8platform/game-sdk": "^2.9.0",
@@ -280,7 +280,8 @@ export async function createSlotGame<T extends SlotSpinResultBase = SlotSpinResu
280
280
  * and the Artube bridge fill it the same way, so the resumed-bet path below is shared. */
281
281
  session?: { betAmount?: number };
282
282
  /** Session currency CODE. The Artube bridge's only currency surface (the platform picks it
283
- * per session; demo sessions are 'FUN'); Stake sends full meta on `config.currency` instead. */
283
+ * per session; a demo session is labelled 'DEMO'); Stake sends full meta on
284
+ * `config.currency` instead. */
284
285
  currency?: string;
285
286
  lang?: string;
286
287
  /** The client the platform launched us on. Both bridges read it off the launch URL
@@ -307,9 +308,10 @@ export async function createSlotGame<T extends SlotSpinResultBase = SlotSpinResu
307
308
  // is absent and we only have the spec's currency CODE — resolve it through the SAME table
308
309
  // (stake-bridge's lookupCurrency) so e.g. 'EUR' renders as '€', not the literal text "EUR".
309
310
  // stake-bridge ships with every scaffold; if it's somehow absent we degrade to the code.
310
- // On Artube the session currency is the PLATFORM's (per player, and 'FUN' for demo sessions) and
311
- // arrives as a bare code on initData — there is no meta object. It outranks the spec's static
312
- // code, which would otherwise show every Artube player the spec's currency symbol.
311
+ // On Artube the session currency is the PLATFORM's (per player, and the word 'DEMO' for a demo
312
+ // session — see artube-bridge's displayCurrency) and arrives as a bare code on initData — there
313
+ // is no meta object. It outranks the spec's static code, which would otherwise show every
314
+ // Artube player the spec's currency symbol.
313
315
  const currencyCode = (isArtubeNow ? initData?.currency : undefined) || opts.model.spec.currency;
314
316
  let currencyMeta = config?.currency;
315
317
  if (!currencyMeta?.symbol && currencyCode) {
@@ -2,7 +2,7 @@
2
2
  // `socialize` / `createI18n` / `Lang` are renderer-agnostic helpers from the shell core
3
3
  // (@energy8platform/shell). Renderer-agnostic types (GameInfoSection/Content, PaytableRow,
4
4
  // GameMode) and the pixi-specific surface types come from the @energy8platform/shell/pixi entry.
5
- import { socialize, createI18n } from '@energy8platform/shell';
5
+ import { socialize, createI18n, DISCLAIMER_LINES } from '@energy8platform/shell';
6
6
  import type { Lang } from '@energy8platform/shell';
7
7
  import type { GameInfoContent, GameInfoSection, PaytableRow, GameMode } from '@energy8platform/shell/pixi';
8
8
  import type {
@@ -60,8 +60,11 @@ export interface ShellRuntime {
60
60
  mode: ShellMode;
61
61
  /** Social-casino mode from initData (`config.socialMode`); swaps shell vocabulary. */
62
62
  social?: boolean;
63
- /** Stake-required disclaimer lines from initData (`config.disclaimerLines`); when
64
- * absent (non-stake/dev) no disclaimer section is rendered. */
63
+ /** Disclaimer lines the PLATFORM supplied (`initData.config.disclaimerLines` — in practice the
64
+ * Stake bridge, which appends its own "TM and © {year} Stake Engine." to the mandated body).
65
+ * They outrank the default. When absent — Artube, dev, any other host — the shell's canonical
66
+ * `DISCLAIMER_LINES` are used: the same mandated wording, minus a mark that isn't theirs. The
67
+ * disclaimer is required legal copy, so there is no case where the section is simply missing. */
65
68
  disclaimerLines?: string[];
66
69
  /** Jurisdiction flags from initData (`config.jurisdiction`). Restrict shell features — applied
67
70
  * OVER the author's features so a jurisdiction restriction always wins. */
@@ -268,7 +271,7 @@ function isBrandLine(line: string): boolean {
268
271
  * caller passes a translation-only resolver (never socializing) — mandated legal copy must not be
269
272
  * word-swapped even in social mode. */
270
273
  function disclaimerSection(
271
- lines: string[] | undefined,
274
+ lines: readonly string[] | undefined,
272
275
  t: (s: string) => string = (s) => s,
273
276
  ): GameInfoSection | null {
274
277
  const clean = (lines ?? []).map((l) => l.trim()).filter(Boolean);
@@ -312,7 +315,7 @@ export function defaultGameInfo(
312
315
  const modes = modesSection(model, t);
313
316
  if (modes) sections.push(modes);
314
317
  sections.push({ type: 'controls' });
315
- const disclaimer = disclaimerSection(runtime.disclaimerLines, tDisclaimer);
318
+ const disclaimer = disclaimerSection(runtime.disclaimerLines ?? DISCLAIMER_LINES, tDisclaimer);
316
319
  if (disclaimer) sections.push(disclaimer);
317
320
  return { sections };
318
321
  }