@energy8platform/game-engine 0.9.2 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +293 -1414
- package/bin/simulate.ts +75 -0
- package/dist/debug.cjs.js +892 -18
- package/dist/debug.cjs.js.map +1 -1
- package/dist/debug.d.ts +64 -0
- package/dist/debug.esm.js +892 -18
- package/dist/debug.esm.js.map +1 -1
- package/dist/index.cjs.js +899 -18
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +239 -2
- package/dist/index.esm.js +893 -19
- package/dist/index.esm.js.map +1 -1
- package/dist/lua.cjs.js +1000 -0
- package/dist/lua.cjs.js.map +1 -0
- package/dist/lua.d.ts +296 -0
- package/dist/lua.esm.js +990 -0
- package/dist/lua.esm.js.map +1 -0
- package/dist/vite.cjs.js +37 -0
- package/dist/vite.cjs.js.map +1 -1
- package/dist/vite.esm.js +37 -0
- package/dist/vite.esm.js.map +1 -1
- package/package.json +30 -13
- package/src/debug/DevBridge.ts +73 -22
- package/src/index.ts +17 -0
- package/src/lua/ActionRouter.ts +132 -0
- package/src/lua/LuaEngine.ts +322 -0
- package/src/lua/LuaEngineAPI.ts +305 -0
- package/src/lua/PersistentState.ts +80 -0
- package/src/lua/SessionManager.ts +178 -0
- package/src/lua/SimulationRunner.ts +195 -0
- package/src/lua/index.ts +22 -0
- package/src/lua/types.ts +132 -0
- package/src/vite/index.ts +43 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lua.esm.js","sources":["../src/lua/LuaEngineAPI.ts","../src/lua/ActionRouter.ts","../src/lua/SessionManager.ts","../src/lua/PersistentState.ts","../src/lua/LuaEngine.ts","../src/lua/SimulationRunner.ts"],"sourcesContent":[null,null,null,null,null,null],"names":["fengari","lua","lauxlib","to_luastring","to_jsstring"],"mappings":"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"}
|
package/dist/vite.cjs.js
CHANGED
|
@@ -64,6 +64,31 @@ await import('${entrySrc}');
|
|
|
64
64
|
},
|
|
65
65
|
};
|
|
66
66
|
}
|
|
67
|
+
// ─── Lua Plugin ─────────────────────────────────────────
|
|
68
|
+
/**
|
|
69
|
+
* Vite plugin that enables importing `.lua` files as raw strings
|
|
70
|
+
* and triggers a full page reload on `.lua` file changes.
|
|
71
|
+
*/
|
|
72
|
+
function luaPlugin() {
|
|
73
|
+
return {
|
|
74
|
+
name: 'game-engine:lua',
|
|
75
|
+
apply: 'serve',
|
|
76
|
+
transform(code, id) {
|
|
77
|
+
if (id.endsWith('.lua')) {
|
|
78
|
+
return {
|
|
79
|
+
code: `export default ${JSON.stringify(code)};`,
|
|
80
|
+
map: null,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
handleHotUpdate({ file, server }) {
|
|
85
|
+
if (file.endsWith('.lua')) {
|
|
86
|
+
server.ws.send({ type: 'full-reload' });
|
|
87
|
+
return [];
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
}
|
|
67
92
|
// ─── defineGameConfig ────────────────────────────────────
|
|
68
93
|
/**
|
|
69
94
|
* Define a Vite configuration tailored for Energy8 casino games.
|
|
@@ -90,14 +115,26 @@ function defineGameConfig(config = {}) {
|
|
|
90
115
|
if (config.devBridge) {
|
|
91
116
|
const configPath = config.devBridgeConfig ?? './dev.config';
|
|
92
117
|
plugins.push(devBridgePlugin(configPath));
|
|
118
|
+
plugins.push(luaPlugin());
|
|
93
119
|
}
|
|
94
120
|
const userVite = config.vite ?? {};
|
|
121
|
+
// fengari (Lua 5.3 in JS) is a CJS Node.js package that references `process`
|
|
122
|
+
// and `require('os')` at module level. Provide shims so it works in the browser.
|
|
123
|
+
const fengariShims = config.devBridge ? {
|
|
124
|
+
'process.versions.node': 'undefined',
|
|
125
|
+
'process.env': '({})',
|
|
126
|
+
'process.platform': '"browser"',
|
|
127
|
+
} : {};
|
|
95
128
|
return {
|
|
96
129
|
base: config.base ?? '/',
|
|
97
130
|
plugins: [
|
|
98
131
|
...plugins,
|
|
99
132
|
...(userVite.plugins ?? []),
|
|
100
133
|
],
|
|
134
|
+
define: {
|
|
135
|
+
...fengariShims,
|
|
136
|
+
...userVite.define,
|
|
137
|
+
},
|
|
101
138
|
build: {
|
|
102
139
|
target: 'esnext',
|
|
103
140
|
assetsInlineLimit: 8192,
|
package/dist/vite.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.cjs.js","sources":["../src/vite/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAkBA;AAEA;;;;AAIG;AACH,MAAM,UAAU,GAAG,uBAAuB;AAE1C,SAAS,eAAe,CAAC,UAAkB,EAAA;IACzC,IAAI,QAAQ,GAAG,EAAE;IACjB,IAAI,QAAQ,GAAG,EAAE;IACjB,IAAI,kBAAkB,GAAG,UAAU;IAEnC,OAAO;AACL,QAAA,IAAI,EAAE,wBAAwB;QAC9B,KAAK,EAAE,OAAO;AACd,QAAA,OAAO,EAAE,KAAK;AAEd,QAAA,cAAc,CAAC,MAAM,EAAA;AACnB,YAAA,QAAQ,GAAG,MAAM,CAAC,IAAI;;;AAGtB,YAAA,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC9B,gBAAA,kBAAkB,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YAC1E;QACF,CAAC;AAED,QAAA,SAAS,CAAC,EAAE,EAAA;YACV,IAAI,EAAE,KAAK,UAAU;AAAE,gBAAA,OAAO,EAAE;QAClC,CAAC;AAED,QAAA,IAAI,CAAC,EAAE,EAAA;AACL,YAAA,IAAI,EAAE,KAAK,UAAU,EAAE;;gBAErB,OAAO;;;;8BAIe,kBAAkB,CAAA;;;;;;;gBAOhC,QAAQ,CAAA;CACvB;YACK;QACF,CAAC;AAED,QAAA,kBAAkB,CAAC,IAAI,EAAA;;YAErB,MAAM,WAAW,GAAG,iEAAiE;YACrF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;YAErC,IAAI,CAAC,KAAK,EAAE;AACV,gBAAA,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC;AAC5E,gBAAA,OAAO,IAAI;YACb;AAEA,YAAA,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC;AACnB,YAAA,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC5B,gBAAA,QAAQ,GAAG,QAAQ,GAAG,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YAC3D;AAAO,iBAAA,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACnC,gBAAA,QAAQ,GAAG,QAAQ,GAAG,QAAQ;YAChC;AACA,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA,2BAAA,EAA8B,UAAU,CAAA,WAAA,CAAa,CAAC;QACtF,CAAC;KACF;AACH;AAEA;AAEA;;;;;;;;;;;;;;;;;;;AAmBG;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;
|
|
1
|
+
{"version":3,"file":"vite.cjs.js","sources":["../src/vite/index.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/dist/vite.esm.js
CHANGED
|
@@ -62,6 +62,31 @@ await import('${entrySrc}');
|
|
|
62
62
|
},
|
|
63
63
|
};
|
|
64
64
|
}
|
|
65
|
+
// ─── Lua Plugin ─────────────────────────────────────────
|
|
66
|
+
/**
|
|
67
|
+
* Vite plugin that enables importing `.lua` files as raw strings
|
|
68
|
+
* and triggers a full page reload on `.lua` file changes.
|
|
69
|
+
*/
|
|
70
|
+
function luaPlugin() {
|
|
71
|
+
return {
|
|
72
|
+
name: 'game-engine:lua',
|
|
73
|
+
apply: 'serve',
|
|
74
|
+
transform(code, id) {
|
|
75
|
+
if (id.endsWith('.lua')) {
|
|
76
|
+
return {
|
|
77
|
+
code: `export default ${JSON.stringify(code)};`,
|
|
78
|
+
map: null,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
handleHotUpdate({ file, server }) {
|
|
83
|
+
if (file.endsWith('.lua')) {
|
|
84
|
+
server.ws.send({ type: 'full-reload' });
|
|
85
|
+
return [];
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
}
|
|
65
90
|
// ─── defineGameConfig ────────────────────────────────────
|
|
66
91
|
/**
|
|
67
92
|
* Define a Vite configuration tailored for Energy8 casino games.
|
|
@@ -88,14 +113,26 @@ function defineGameConfig(config = {}) {
|
|
|
88
113
|
if (config.devBridge) {
|
|
89
114
|
const configPath = config.devBridgeConfig ?? './dev.config';
|
|
90
115
|
plugins.push(devBridgePlugin(configPath));
|
|
116
|
+
plugins.push(luaPlugin());
|
|
91
117
|
}
|
|
92
118
|
const userVite = config.vite ?? {};
|
|
119
|
+
// fengari (Lua 5.3 in JS) is a CJS Node.js package that references `process`
|
|
120
|
+
// and `require('os')` at module level. Provide shims so it works in the browser.
|
|
121
|
+
const fengariShims = config.devBridge ? {
|
|
122
|
+
'process.versions.node': 'undefined',
|
|
123
|
+
'process.env': '({})',
|
|
124
|
+
'process.platform': '"browser"',
|
|
125
|
+
} : {};
|
|
93
126
|
return {
|
|
94
127
|
base: config.base ?? '/',
|
|
95
128
|
plugins: [
|
|
96
129
|
...plugins,
|
|
97
130
|
...(userVite.plugins ?? []),
|
|
98
131
|
],
|
|
132
|
+
define: {
|
|
133
|
+
...fengariShims,
|
|
134
|
+
...userVite.define,
|
|
135
|
+
},
|
|
99
136
|
build: {
|
|
100
137
|
target: 'esnext',
|
|
101
138
|
assetsInlineLimit: 8192,
|
package/dist/vite.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.esm.js","sources":["../src/vite/index.ts"],"sourcesContent":[null],"names":[],"mappings":"AAkBA;AAEA;;;;AAIG;AACH,MAAM,UAAU,GAAG,uBAAuB;AAE1C,SAAS,eAAe,CAAC,UAAkB,EAAA;IACzC,IAAI,QAAQ,GAAG,EAAE;IACjB,IAAI,QAAQ,GAAG,EAAE;IACjB,IAAI,kBAAkB,GAAG,UAAU;IAEnC,OAAO;AACL,QAAA,IAAI,EAAE,wBAAwB;QAC9B,KAAK,EAAE,OAAO;AACd,QAAA,OAAO,EAAE,KAAK;AAEd,QAAA,cAAc,CAAC,MAAM,EAAA;AACnB,YAAA,QAAQ,GAAG,MAAM,CAAC,IAAI;;;AAGtB,YAAA,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC9B,gBAAA,kBAAkB,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YAC1E;QACF,CAAC;AAED,QAAA,SAAS,CAAC,EAAE,EAAA;YACV,IAAI,EAAE,KAAK,UAAU;AAAE,gBAAA,OAAO,EAAE;QAClC,CAAC;AAED,QAAA,IAAI,CAAC,EAAE,EAAA;AACL,YAAA,IAAI,EAAE,KAAK,UAAU,EAAE;;gBAErB,OAAO;;;;8BAIe,kBAAkB,CAAA;;;;;;;gBAOhC,QAAQ,CAAA;CACvB;YACK;QACF,CAAC;AAED,QAAA,kBAAkB,CAAC,IAAI,EAAA;;YAErB,MAAM,WAAW,GAAG,iEAAiE;YACrF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;YAErC,IAAI,CAAC,KAAK,EAAE;AACV,gBAAA,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC;AAC5E,gBAAA,OAAO,IAAI;YACb;AAEA,YAAA,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC;AACnB,YAAA,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC5B,gBAAA,QAAQ,GAAG,QAAQ,GAAG,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YAC3D;AAAO,iBAAA,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACnC,gBAAA,QAAQ,GAAG,QAAQ,GAAG,QAAQ;YAChC;AACA,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA,2BAAA,EAA8B,UAAU,CAAA,WAAA,CAAa,CAAC;QACtF,CAAC;KACF;AACH;AAEA;AAEA;;;;;;;;;;;;;;;;;;;AAmBG;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;
|
|
1
|
+
{"version":3,"file":"vite.esm.js","sources":["../src/vite/index.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@energy8platform/game-engine",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.1",
|
|
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",
|
|
7
7
|
"module": "./dist/index.esm.js",
|
|
8
8
|
"types": "./dist/index.d.ts",
|
|
9
|
+
"bin": {
|
|
10
|
+
"game-engine-simulate": "./bin/simulate.ts"
|
|
11
|
+
},
|
|
9
12
|
"exports": {
|
|
10
13
|
".": {
|
|
11
14
|
"import": "./dist/index.esm.js",
|
|
@@ -51,13 +54,20 @@
|
|
|
51
54
|
"import": "./dist/react.esm.js",
|
|
52
55
|
"require": "./dist/react.cjs.js",
|
|
53
56
|
"types": "./dist/react.d.ts"
|
|
57
|
+
},
|
|
58
|
+
"./lua": {
|
|
59
|
+
"import": "./dist/lua.esm.js",
|
|
60
|
+
"require": "./dist/lua.cjs.js",
|
|
61
|
+
"types": "./dist/lua.d.ts"
|
|
54
62
|
}
|
|
55
63
|
},
|
|
56
64
|
"files": [
|
|
57
65
|
"dist",
|
|
58
|
-
"src"
|
|
66
|
+
"src",
|
|
67
|
+
"bin"
|
|
59
68
|
],
|
|
60
69
|
"scripts": {
|
|
70
|
+
"simulate": "tsx bin/simulate.ts",
|
|
61
71
|
"build": "rollup -c rollup.config.mjs",
|
|
62
72
|
"dev": "rollup -c rollup.config.mjs -w",
|
|
63
73
|
"lint": "eslint src/ --ext .ts",
|
|
@@ -68,14 +78,15 @@
|
|
|
68
78
|
"prepublishOnly": "npm run build"
|
|
69
79
|
},
|
|
70
80
|
"peerDependencies": {
|
|
71
|
-
"pixi.js": "^8.16.0",
|
|
72
81
|
"@energy8platform/game-sdk": "^2.7.0",
|
|
73
|
-
"@pixi/ui": "^2.3.0",
|
|
74
82
|
"@pixi/layout": "^3.2.0",
|
|
75
|
-
"
|
|
83
|
+
"@pixi/ui": "^2.3.0",
|
|
84
|
+
"fengari": "^0.1.4",
|
|
85
|
+
"pixi.js": "^8.16.0",
|
|
76
86
|
"react": ">=18.0.0",
|
|
77
87
|
"react-dom": ">=18.0.0",
|
|
78
|
-
"react-reconciler": ">=0.29.0"
|
|
88
|
+
"react-reconciler": ">=0.29.0",
|
|
89
|
+
"yoga-layout": "^3.0.0"
|
|
79
90
|
},
|
|
80
91
|
"peerDependenciesMeta": {
|
|
81
92
|
"@esotericsoftware/spine-pixi-v8": {
|
|
@@ -101,32 +112,38 @@
|
|
|
101
112
|
},
|
|
102
113
|
"react-reconciler": {
|
|
103
114
|
"optional": true
|
|
115
|
+
},
|
|
116
|
+
"fengari": {
|
|
117
|
+
"optional": true
|
|
104
118
|
}
|
|
105
119
|
},
|
|
106
120
|
"devDependencies": {
|
|
107
121
|
"@energy8platform/game-sdk": "^2.7.0",
|
|
108
122
|
"@esotericsoftware/spine-pixi-v8": "~4.2.0",
|
|
123
|
+
"@pixi/layout": "^3.2.0",
|
|
109
124
|
"@pixi/sound": "^6.0.0",
|
|
110
125
|
"@pixi/ui": "^2.3.0",
|
|
111
|
-
"@pixi/layout": "^3.2.0",
|
|
112
|
-
"yoga-layout": "^3.0.0",
|
|
113
126
|
"@rollup/plugin-typescript": "^12.1.0",
|
|
127
|
+
"@types/react": "^19.0.0",
|
|
128
|
+
"@types/react-dom": "^19.0.0",
|
|
114
129
|
"@typescript-eslint/eslint-plugin": "^8.0.0",
|
|
115
130
|
"@typescript-eslint/parser": "^8.0.0",
|
|
116
131
|
"eslint": "^9.0.0",
|
|
132
|
+
"fengari": "^0.1.5",
|
|
133
|
+
"fengari-web": "^0.1.4",
|
|
117
134
|
"pixi.js": "^8.16.0",
|
|
118
135
|
"prettier": "^3.4.0",
|
|
136
|
+
"react": "^19.0.0",
|
|
137
|
+
"react-dom": "^19.0.0",
|
|
138
|
+
"react-reconciler": "^0.31.0",
|
|
119
139
|
"rollup": "^4.24.0",
|
|
120
140
|
"rollup-plugin-dts": "^6.1.0",
|
|
121
141
|
"tslib": "^2.8.0",
|
|
142
|
+
"tsx": "^4.21.0",
|
|
122
143
|
"typescript": "^5.6.0",
|
|
123
144
|
"vite": "^6.0.0",
|
|
124
145
|
"vitest": "^2.0.0",
|
|
125
|
-
"
|
|
126
|
-
"react-dom": "^19.0.0",
|
|
127
|
-
"react-reconciler": "^0.31.0",
|
|
128
|
-
"@types/react": "^19.0.0",
|
|
129
|
-
"@types/react-dom": "^19.0.0"
|
|
146
|
+
"yoga-layout": "^3.0.0"
|
|
130
147
|
},
|
|
131
148
|
"keywords": [
|
|
132
149
|
"casino",
|
package/src/debug/DevBridge.ts
CHANGED
|
@@ -8,6 +8,8 @@ import {
|
|
|
8
8
|
type PlayResultAckPayload,
|
|
9
9
|
type PlayParams,
|
|
10
10
|
} from '@energy8platform/game-sdk';
|
|
11
|
+
import type { GameDefinition } from '../lua/types';
|
|
12
|
+
import { LuaEngine } from '../lua/LuaEngine';
|
|
11
13
|
|
|
12
14
|
export interface DevBridgeConfig {
|
|
13
15
|
/** Mock initial balance */
|
|
@@ -26,9 +28,15 @@ export interface DevBridgeConfig {
|
|
|
26
28
|
networkDelay?: number;
|
|
27
29
|
/** Enable debug logging */
|
|
28
30
|
debug?: boolean;
|
|
31
|
+
/** Lua script source code. When set, overrides onPlay with LuaEngine. */
|
|
32
|
+
luaScript?: string;
|
|
33
|
+
/** Game definition for Lua engine (actions, transitions, etc.) */
|
|
34
|
+
gameDefinition?: GameDefinition;
|
|
35
|
+
/** RNG seed for deterministic Lua execution */
|
|
36
|
+
luaSeed?: number;
|
|
29
37
|
}
|
|
30
38
|
|
|
31
|
-
const DEFAULT_CONFIG: Required<DevBridgeConfig> = {
|
|
39
|
+
const DEFAULT_CONFIG: Omit<Required<DevBridgeConfig>, 'luaScript' | 'gameDefinition' | 'luaSeed'> = {
|
|
32
40
|
balance: 10000,
|
|
33
41
|
currency: 'USD',
|
|
34
42
|
gameConfig: {
|
|
@@ -75,14 +83,16 @@ const DEFAULT_CONFIG: Required<DevBridgeConfig> = {
|
|
|
75
83
|
* ```
|
|
76
84
|
*/
|
|
77
85
|
export class DevBridge {
|
|
78
|
-
private _config: Required<DevBridgeConfig>;
|
|
86
|
+
private _config: Required<Pick<DevBridgeConfig, 'balance' | 'currency' | 'gameConfig' | 'assetsUrl' | 'session' | 'onPlay' | 'networkDelay' | 'debug'>> & Pick<DevBridgeConfig, 'luaScript' | 'gameDefinition' | 'luaSeed'>;
|
|
79
87
|
private _balance: number;
|
|
80
88
|
private _roundCounter = 0;
|
|
81
89
|
private _bridge: Bridge | null = null;
|
|
90
|
+
private _luaEngine: LuaEngine | null = null;
|
|
82
91
|
|
|
83
92
|
constructor(config: DevBridgeConfig = {}) {
|
|
84
93
|
this._config = { ...DEFAULT_CONFIG, ...config };
|
|
85
94
|
this._balance = this._config.balance;
|
|
95
|
+
this.initLuaEngine();
|
|
86
96
|
}
|
|
87
97
|
|
|
88
98
|
/** Current mock balance */
|
|
@@ -148,6 +158,24 @@ export class DevBridge {
|
|
|
148
158
|
/** Destroy the dev bridge */
|
|
149
159
|
destroy(): void {
|
|
150
160
|
this.stop();
|
|
161
|
+
if (this._luaEngine) {
|
|
162
|
+
this._luaEngine.destroy();
|
|
163
|
+
this._luaEngine = null;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
private initLuaEngine(): void {
|
|
168
|
+
if (!this._config.luaScript || !this._config.gameDefinition) return;
|
|
169
|
+
|
|
170
|
+
this._luaEngine = new LuaEngine({
|
|
171
|
+
script: this._config.luaScript,
|
|
172
|
+
gameDefinition: this._config.gameDefinition,
|
|
173
|
+
seed: this._config.luaSeed,
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
if (this._config.debug) {
|
|
177
|
+
console.log('[DevBridge] LuaEngine initialized');
|
|
178
|
+
}
|
|
151
179
|
}
|
|
152
180
|
|
|
153
181
|
// ─── Message Handling ──────────────────────────────────
|
|
@@ -174,26 +202,49 @@ export class DevBridge {
|
|
|
174
202
|
this._balance -= bet;
|
|
175
203
|
this._roundCounter++;
|
|
176
204
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
205
|
+
let result: PlayResultData;
|
|
206
|
+
|
|
207
|
+
if (this._luaEngine) {
|
|
208
|
+
// Use LuaEngine for real Lua execution
|
|
209
|
+
const luaResult = this._luaEngine.execute({ action, bet, roundId, params });
|
|
210
|
+
const totalWin = luaResult.creditDeferred ? 0 : luaResult.totalWin;
|
|
211
|
+
|
|
212
|
+
this._balance += totalWin;
|
|
213
|
+
|
|
214
|
+
result = {
|
|
215
|
+
roundId: roundId ?? `dev-round-${this._roundCounter}`,
|
|
216
|
+
action,
|
|
217
|
+
balanceAfter: this._balance,
|
|
218
|
+
totalWin: Math.round(luaResult.totalWin * 100) / 100,
|
|
219
|
+
data: luaResult.data,
|
|
220
|
+
nextActions: luaResult.nextActions,
|
|
221
|
+
session: luaResult.session,
|
|
222
|
+
creditPending: luaResult.creditDeferred,
|
|
223
|
+
bonusFreeSpin: null,
|
|
224
|
+
currency: this._config.currency,
|
|
225
|
+
gameId: this._config.gameConfig?.id ?? 'dev-game',
|
|
226
|
+
};
|
|
227
|
+
} else {
|
|
228
|
+
// Fallback to onPlay callback
|
|
229
|
+
const customResult = this._config.onPlay({ action, bet, roundId, params });
|
|
230
|
+
const totalWin = customResult.totalWin ?? (Math.random() > 0.6 ? bet * (1 + Math.random() * 10) : 0);
|
|
231
|
+
|
|
232
|
+
this._balance += totalWin;
|
|
233
|
+
|
|
234
|
+
result = {
|
|
235
|
+
roundId: roundId ?? `dev-round-${this._roundCounter}`,
|
|
236
|
+
action,
|
|
237
|
+
balanceAfter: this._balance,
|
|
238
|
+
totalWin: Math.round(totalWin * 100) / 100,
|
|
239
|
+
data: customResult.data ?? {},
|
|
240
|
+
nextActions: customResult.nextActions ?? ['spin'],
|
|
241
|
+
session: customResult.session ?? null,
|
|
242
|
+
creditPending: false,
|
|
243
|
+
bonusFreeSpin: customResult.bonusFreeSpin ?? null,
|
|
244
|
+
currency: this._config.currency,
|
|
245
|
+
gameId: this._config.gameConfig?.id ?? 'dev-game',
|
|
246
|
+
};
|
|
247
|
+
}
|
|
197
248
|
|
|
198
249
|
this.delayedSend('PLAY_RESULT', result, id);
|
|
199
250
|
}
|
package/src/index.ts
CHANGED
|
@@ -99,3 +99,20 @@ export { LoadingScene } from './loading/LoadingScene';
|
|
|
99
99
|
export { DevBridge } from './debug/DevBridge';
|
|
100
100
|
export type { DevBridgeConfig } from './debug/DevBridge';
|
|
101
101
|
export { FPSOverlay } from './debug/FPSOverlay';
|
|
102
|
+
|
|
103
|
+
// ─── Lua ────────────────────────────────────────────────
|
|
104
|
+
// NOTE: fengari is an optional peer dependency.
|
|
105
|
+
// Import Lua components from '@energy8platform/game-engine/lua' sub-path
|
|
106
|
+
// to avoid pulling in fengari when it isn't installed.
|
|
107
|
+
export { LuaEngine } from './lua/LuaEngine';
|
|
108
|
+
export { LuaEngineAPI, createSeededRng } from './lua/LuaEngineAPI';
|
|
109
|
+
export { ActionRouter, evaluateCondition } from './lua/ActionRouter';
|
|
110
|
+
export { SessionManager } from './lua/SessionManager';
|
|
111
|
+
export { PersistentState } from './lua/PersistentState';
|
|
112
|
+
export type {
|
|
113
|
+
GameDefinition,
|
|
114
|
+
ActionDefinition,
|
|
115
|
+
TransitionRule,
|
|
116
|
+
LuaEngineConfig,
|
|
117
|
+
LuaPlayResult,
|
|
118
|
+
} from './lua/types';
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import type { ActionDefinition, TransitionRule, GameDefinition } from './types';
|
|
2
|
+
|
|
3
|
+
export interface TransitionMatch {
|
|
4
|
+
rule: TransitionRule;
|
|
5
|
+
nextActions: string[];
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Replicates the platform's action dispatch and transition evaluation.
|
|
10
|
+
* Routes play requests to the correct action, evaluates transition conditions
|
|
11
|
+
* against current variables to determine next actions and session operations.
|
|
12
|
+
*/
|
|
13
|
+
export class ActionRouter {
|
|
14
|
+
private actions: Record<string, ActionDefinition>;
|
|
15
|
+
|
|
16
|
+
constructor(gameDefinition: GameDefinition) {
|
|
17
|
+
this.actions = gameDefinition.actions;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** Look up action by name and validate prerequisites */
|
|
21
|
+
resolveAction(actionName: string, hasSession: boolean): ActionDefinition {
|
|
22
|
+
const action = this.actions[actionName];
|
|
23
|
+
if (!action) {
|
|
24
|
+
throw new Error(`Unknown action: "${actionName}". Available: ${Object.keys(this.actions).join(', ')}`);
|
|
25
|
+
}
|
|
26
|
+
if (action.requires_session && !hasSession) {
|
|
27
|
+
throw new Error(`Action "${actionName}" requires an active session`);
|
|
28
|
+
}
|
|
29
|
+
return action;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** Evaluate transitions in order, return the first matching rule */
|
|
33
|
+
evaluateTransitions(
|
|
34
|
+
action: ActionDefinition,
|
|
35
|
+
variables: Record<string, number>,
|
|
36
|
+
): TransitionMatch {
|
|
37
|
+
for (const rule of action.transitions) {
|
|
38
|
+
if (evaluateCondition(rule.condition, variables)) {
|
|
39
|
+
return { rule, nextActions: rule.next_actions };
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
throw new Error(
|
|
43
|
+
`No matching transition for action with stage "${action.stage}". ` +
|
|
44
|
+
`Variables: ${JSON.stringify(variables)}`
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// ─── Condition Evaluator ────────────────────────────────
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Evaluates a transition condition expression against variables.
|
|
53
|
+
*
|
|
54
|
+
* Supports:
|
|
55
|
+
* - "always" → true
|
|
56
|
+
* - Simple comparisons: "var > 0", "var == 1", "var >= 10", "var != 0", "var < 5", "var <= 3"
|
|
57
|
+
* - Logical connectives: "expr && expr", "expr || expr"
|
|
58
|
+
*
|
|
59
|
+
* This covers all patterns used by the platform's govaluate conditions.
|
|
60
|
+
*/
|
|
61
|
+
export function evaluateCondition(
|
|
62
|
+
condition: string,
|
|
63
|
+
variables: Record<string, number>,
|
|
64
|
+
): boolean {
|
|
65
|
+
const trimmed = condition.trim();
|
|
66
|
+
|
|
67
|
+
if (trimmed === 'always') return true;
|
|
68
|
+
|
|
69
|
+
// Handle || (OR) — lowest precedence
|
|
70
|
+
if (trimmed.includes('||')) {
|
|
71
|
+
const parts = splitOnOperator(trimmed, '||');
|
|
72
|
+
return parts.some(part => evaluateCondition(part, variables));
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Handle && (AND)
|
|
76
|
+
if (trimmed.includes('&&')) {
|
|
77
|
+
const parts = splitOnOperator(trimmed, '&&');
|
|
78
|
+
return parts.every(part => evaluateCondition(part, variables));
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Single comparison: "variable op value"
|
|
82
|
+
return evaluateComparison(trimmed, variables);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
function splitOnOperator(expr: string, operator: string): string[] {
|
|
86
|
+
const parts: string[] = [];
|
|
87
|
+
let depth = 0;
|
|
88
|
+
let current = '';
|
|
89
|
+
|
|
90
|
+
for (let i = 0; i < expr.length; i++) {
|
|
91
|
+
if (expr[i] === '(') depth++;
|
|
92
|
+
else if (expr[i] === ')') depth--;
|
|
93
|
+
|
|
94
|
+
if (depth === 0 && expr.substring(i, i + operator.length) === operator) {
|
|
95
|
+
parts.push(current);
|
|
96
|
+
current = '';
|
|
97
|
+
i += operator.length - 1;
|
|
98
|
+
} else {
|
|
99
|
+
current += expr[i];
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
parts.push(current);
|
|
103
|
+
return parts;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
function evaluateComparison(
|
|
107
|
+
expr: string,
|
|
108
|
+
variables: Record<string, number>,
|
|
109
|
+
): boolean {
|
|
110
|
+
// Match: variable_name operator value
|
|
111
|
+
const match = expr.trim().match(
|
|
112
|
+
/^\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*(>=|<=|!=|==|>|<)\s*(-?\d+(?:\.\d+)?)\s*$/
|
|
113
|
+
);
|
|
114
|
+
|
|
115
|
+
if (!match) {
|
|
116
|
+
throw new Error(`Cannot parse condition: "${expr}"`);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const [, varName, op, valueStr] = match;
|
|
120
|
+
const left = variables[varName] ?? 0;
|
|
121
|
+
const right = parseFloat(valueStr);
|
|
122
|
+
|
|
123
|
+
switch (op) {
|
|
124
|
+
case '>': return left > right;
|
|
125
|
+
case '>=': return left >= right;
|
|
126
|
+
case '<': return left < right;
|
|
127
|
+
case '<=': return left <= right;
|
|
128
|
+
case '==': return left === right;
|
|
129
|
+
case '!=': return left !== right;
|
|
130
|
+
default: return false;
|
|
131
|
+
}
|
|
132
|
+
}
|