@datamoc/mw_games 0.33.0 → 0.34.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/CHANGELOG.md +17 -0
- package/dist/mw_games.global.js +53 -53
- package/dist/mwl/fengari.d.ts.map +1 -1
- package/dist/mwl/fengari.js +13 -15
- package/dist/mwl/fengari.js.map +1 -1
- package/dist/roguelike/Cave.d.ts +19 -4
- package/dist/roguelike/Cave.d.ts.map +1 -1
- package/dist/roguelike/Cave.js +38 -14
- package/dist/roguelike/Cave.js.map +1 -1
- package/dist/roguelike/Overworld.d.ts +7 -0
- package/dist/roguelike/Overworld.d.ts.map +1 -1
- package/dist/roguelike/Overworld.js +39 -20
- package/dist/roguelike/Overworld.js.map +1 -1
- package/dist/roguelike/generate.d.ts +8 -2
- package/dist/roguelike/generate.d.ts.map +1 -1
- package/dist/roguelike/generate.js +13 -3
- package/dist/roguelike/generate.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
- package/sbom.cdx.json +12 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fengari.d.ts","sourceRoot":"","sources":["../../src/mwl/fengari.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAA6B,UAAU,EAAe,MAAM,cAAc,CAAC;AAEvF,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,+EAA+E;IAC/E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACvB;AAaD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,GAAE,wBAA6B,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"fengari.d.ts","sourceRoot":"","sources":["../../src/mwl/fengari.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAA6B,UAAU,EAAe,MAAM,cAAc,CAAC;AAEvF,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,+EAA+E;IAC/E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACvB;AAaD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,GAAE,wBAA6B,GAAG,UAAU,CAqK1F"}
|
package/dist/mwl/fengari.js
CHANGED
|
@@ -85,31 +85,29 @@ export function createFengariScriptHost(options = {}) {
|
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
};
|
|
88
|
-
const read = (index, depth = 0) => {
|
|
89
|
-
const type = lua.lua_type(
|
|
88
|
+
const read = (L, index, depth = 0) => {
|
|
89
|
+
const type = lua.lua_type(L, index);
|
|
90
90
|
if (type === lua.LUA_TNIL)
|
|
91
91
|
return null;
|
|
92
92
|
if (type === lua.LUA_TBOOLEAN)
|
|
93
|
-
return lua.lua_toboolean(
|
|
93
|
+
return lua.lua_toboolean(L, index);
|
|
94
94
|
if (type === lua.LUA_TNUMBER)
|
|
95
|
-
return lua.lua_tonumber(
|
|
95
|
+
return lua.lua_tonumber(L, index);
|
|
96
96
|
if (type === lua.LUA_TSTRING)
|
|
97
|
-
return lua.lua_tojsstring(
|
|
97
|
+
return lua.lua_tojsstring(L, index) ?? '';
|
|
98
98
|
if (type !== lua.LUA_TTABLE)
|
|
99
99
|
throw new Error('Lua result must be a JSON-compatible value');
|
|
100
100
|
if (depth > 20)
|
|
101
101
|
throw new Error('Lua result is nested too deeply');
|
|
102
102
|
const result = {};
|
|
103
|
-
const tableIndex = index < 0 ? lua.lua_gettop(
|
|
104
|
-
lua.lua_pushnil(
|
|
105
|
-
while (lua.lua_next(
|
|
106
|
-
const key = lua.lua_isinteger(
|
|
107
|
-
? String(lua.lua_tointeger(state, -2))
|
|
108
|
-
: lua.lua_tojsstring(state, -2);
|
|
103
|
+
const tableIndex = index < 0 ? lua.lua_gettop(L) + index + 1 : index;
|
|
104
|
+
lua.lua_pushnil(L);
|
|
105
|
+
while (lua.lua_next(L, tableIndex) !== 0) {
|
|
106
|
+
const key = lua.lua_isinteger(L, -2) ? String(lua.lua_tointeger(L, -2)) : lua.lua_tojsstring(L, -2);
|
|
109
107
|
if (key === null)
|
|
110
108
|
throw new Error('Lua table keys must be strings or integers');
|
|
111
|
-
result[key] = read(-1, depth + 1);
|
|
112
|
-
lua.lua_settop(
|
|
109
|
+
result[key] = read(L, -1, depth + 1);
|
|
110
|
+
lua.lua_settop(L, -2);
|
|
113
111
|
}
|
|
114
112
|
return result;
|
|
115
113
|
};
|
|
@@ -140,7 +138,7 @@ export function createFengariScriptHost(options = {}) {
|
|
|
140
138
|
}
|
|
141
139
|
if (status !== lua.LUA_OK)
|
|
142
140
|
throw new Error(lua.lua_tojsstring(state, -1) ?? 'Lua execution error');
|
|
143
|
-
return results === 0 ? null : read(-1);
|
|
141
|
+
return results === 0 ? null : read(state, -1);
|
|
144
142
|
};
|
|
145
143
|
const run = (source, results) => {
|
|
146
144
|
lua.lua_settop(state, 0);
|
|
@@ -161,7 +159,7 @@ export function createFengariScriptHost(options = {}) {
|
|
|
161
159
|
setContext(context);
|
|
162
160
|
lua.lua_pushjsfunction(state, (currentState) => {
|
|
163
161
|
const name = lua.lua_tojsstring(currentState, 1) ?? '';
|
|
164
|
-
const payload = lua.lua_gettop(currentState) > 1 ? read(2) : undefined;
|
|
162
|
+
const payload = lua.lua_gettop(currentState) > 1 ? read(currentState, 2) : undefined;
|
|
165
163
|
//host-side code: the allocation hook charges only the VM's own strings and buffers
|
|
166
164
|
emit?.(name, payload);
|
|
167
165
|
return 0;
|
package/dist/mwl/fengari.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fengari.js","sourceRoot":"","sources":["../../src/mwl/fengari.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"fengari.js","sourceRoot":"","sources":["../../src/mwl/fengari.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,mEAAmE;AACnE,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;AACzC,MAAM,YAAY,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAUpE,MAAM,yBAAyB,GAAG,OAAO,CAAC;AAC1C,MAAM,oBAAoB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAC9C,mGAAmG;AACnG,MAAM,cAAc,GACnB,MAAM,CAAC,SAAS;IAChB,MAAM,CAAC,UAAU;IACjB,MAAM,CAAC,YAAY;IACnB,MAAM,CAAC,WAAW;IAClB,MAAM,CAAC,WAAW;IAClB,MAAM,CAAC,YAAY,CAAC;AAErB;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAO,GAA6B,EAAE;IAC7E,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IACtC,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,OAAO,CAAC,gBAAgB,IAAI,yBAAyB,CAAC;IACpE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,6CAA6C,CAAC,CAAC;IAC/G,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,oBAAoB,CAAC;IAChE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC;QACpD,MAAM,IAAI,UAAU,CAAC,wCAAwC,CAAC,CAAC;IAChE,IAAI,WAAW,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnD,IAAI,IAA4B,CAAC;IACjC,2FAA2F;IAC3F,mFAAmF;IACnF,iFAAiF;IACjF,MAAM,MAAM,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC3D,GAAG,CAAC,aAAa,CAChB,KAAK,EACL,CAAC,GAAY,EAAE,KAAa,EAAE,EAAE;QAC/B,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC;QAC1B,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC9C,CAAC;IACF,CAAC,EACD,MAAM,CACN,CAAC;IACF,MAAM,WAAW,GAAG,GAAS,EAAE;QAC9B,MAAM,CAAC,SAAS,GAAG,WAAW,CAAC;QAC/B,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;IACzB,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,KAAkB,EAAQ,EAAE;QACzC,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,OAAO,KAAK,KAAK,SAAS;YAAE,OAAO,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACzE,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACvE,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QACrF,GAAG,CAAC,eAAe,CAClB,KAAK,EACL,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EACvC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CACpD,CAAC;QACF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBAC9B,IAAI,CAAC,KAAK,CAAC,CAAC;gBACZ,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;QACJ,CAAC;aAAM,CAAC;YACP,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClD,IAAI,CAAC,KAAK,CAAC,CAAC;gBACZ,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;YAChD,CAAC;QACF,CAAC;IACF,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,CAAU,EAAE,KAAa,EAAE,KAAK,GAAG,CAAC,EAAe,EAAE;QAClE,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACpC,IAAI,IAAI,KAAK,GAAG,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QACvC,IAAI,IAAI,KAAK,GAAG,CAAC,YAAY;YAAE,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAClE,IAAI,IAAI,KAAK,GAAG,CAAC,WAAW;YAAE,OAAO,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAChE,IAAI,IAAI,KAAK,GAAG,CAAC,WAAW;YAAE,OAAO,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QACxE,IAAI,IAAI,KAAK,GAAG,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAC3F,IAAI,KAAK,GAAG,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACnE,MAAM,MAAM,GAAgC,EAAE,CAAC;QAC/C,MAAM,UAAU,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACrE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACnB,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACpG,IAAI,GAAG,KAAK,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAChF,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YACrC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,OAAO,GAAkB,EAAE,EAAQ,EAAE;QACxD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,SAAS;YACpD,IAAI,CAAC,KAAK,CAAC,CAAC;YACZ,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC;IACF,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,OAAe,EAAe,EAAE;QACpE,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,GAAG,CAAC,WAAW,CACd,KAAK,EACL,GAAG,EAAE;YACJ,SAAS,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;gBACpB,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,gCAAgC,CAAC,CAAC,CAAC;gBAC1E,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACF,CAAC,EACD,GAAG,CAAC,aAAa,EACjB,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CACvB,CAAC;QACF,kFAAkF;QAClF,2DAA2D;QAC3D,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QACtD,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,MAAM,KAAK,GAAG,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,qBAAqB,CAAC,CAAC;QACnG,OAAO,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,CAAC,MAAc,EAAE,OAAe,EAAe,EAAE;QAC5D,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACzB,WAAW,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACnC,wFAAwF;QACxF,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QAClG,IAAI,UAAU,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;YAC/B,2EAA2E;YAC3E,IAAI,MAAM,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAClE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,OAAsB,EAAE,QAAqB,EAAQ,EAAE;QACvE,IAAI,GAAG,QAAQ,CAAC;QAChB,UAAU,CAAC,OAAO,CAAC,CAAC;QACpB,GAAG,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,YAAqB,EAAE,EAAE;YACvD,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACvD,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACrF,mFAAmF;YACnF,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACtB,OAAO,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;QACnD,GAAG,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,YAAqB,EAAE,EAAE;YACvD,WAAW,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YACnE,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,WAAW,GAAG,aAAa,CAAC,CAAC;YAC9D,OAAO,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,8FAA8F,CAAC;QAC/G,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACjB,CAAC,CAAC;IACF,kFAAkF;IAClF,GAAG,CAAC,sCAAsC,EAAE,CAAC,CAAC,CAAC;IAE/C,OAAO;QACN,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,EAAE;YAC5B,OAAO,CAAC,OAAO,CAAC,CAAC;YACjB,OAAO,GAAG,CAAC,WAAW,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ;YACrC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC3B,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAChB,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ;YAC3C,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC3B,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACzB,WAAW,EAAE,CAAC;YACd,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACnB,OAAO,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACtC,CAAC;QACD,OAAO;YACN,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;KACD,CAAC;AACH,CAAC"}
|
package/dist/roguelike/Cave.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as Random from '../core/Random.ts';
|
|
2
|
+
import { Level, type LevelShape, type TerrainKind } from './Level.ts';
|
|
2
3
|
/**
|
|
3
4
|
* Caves: chambers grown as blobs, joined by winding passages.
|
|
4
5
|
*
|
|
@@ -13,7 +14,14 @@ import { Level, type TerrainKind } from './Level.ts';
|
|
|
13
14
|
* always fully connected whatever the rolls did.
|
|
14
15
|
*
|
|
15
16
|
* Seeded through the framework `Random` stack: the same seed produces the same cave on every
|
|
16
|
-
* machine, the same contract `generateDungeon` already carries.
|
|
17
|
+
* machine, the same contract `generateDungeon` already carries. A game that owns its stream
|
|
18
|
+
* (a `SimulationRuntime`'s, say) passes it as `random` instead and the cave draws from that,
|
|
19
|
+
* advancing it, with no seed involved.
|
|
20
|
+
*
|
|
21
|
+
* `shape: 'hex'` carves the same cave on a hex grid (odd-q offset coordinates, the `Level`
|
|
22
|
+
* convention): six neighbours instead of four, chambers growing and passages closing in by hex
|
|
23
|
+
* distance, so a chamber is round on screen rather than a skewed diamond. The result's `level`
|
|
24
|
+
* carries the shape, so `Pathfinder` and `FieldOfView` walk it as hexes.
|
|
17
25
|
*
|
|
18
26
|
* @example
|
|
19
27
|
* ```ts
|
|
@@ -61,8 +69,15 @@ export interface CaveStart {
|
|
|
61
69
|
export interface CaveOptions {
|
|
62
70
|
width: number;
|
|
63
71
|
height: number;
|
|
64
|
-
/** seeds the `Random` stream the cave is drawn from */
|
|
65
|
-
seed
|
|
72
|
+
/** seeds the `Random` stream the cave is drawn from; required unless `random` is given */
|
|
73
|
+
seed?: number;
|
|
74
|
+
/**
|
|
75
|
+
* A stream to draw from instead of seeding one: the cave consumes it, so the caller's
|
|
76
|
+
* sequence advances and a replay of that sequence reproduces the cave. Wins over `seed`.
|
|
77
|
+
*/
|
|
78
|
+
random?: Random.RandomSource;
|
|
79
|
+
/** the grid the cave is carved on; defaults to `'square'` */
|
|
80
|
+
shape?: LevelShape;
|
|
66
81
|
/** terrain ids to write; both must exist in the kinds passed to the Level */
|
|
67
82
|
wall?: number;
|
|
68
83
|
floor?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cave.d.ts","sourceRoot":"","sources":["../../src/roguelike/Cave.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Cave.d.ts","sourceRoot":"","sources":["../../src/roguelike/Cave.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,WAAW,WAAW;IAC3B,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,qDAAqD;IACrD,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,uFAAuF;AACvF,MAAM,WAAW,SAAS;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IAEf,0FAA0F;IAC1F,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC;IAE7B,6DAA6D;IAC7D,KAAK,CAAC,EAAE,UAAU,CAAC;IAEnB,6EAA6E;IAC7E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,oFAAoF;IACpF,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IAEtB,QAAQ,EAAE,WAAW,EAAE,CAAC;IAExB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IAErB,mGAAmG;IACnG,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,yEAAyE;IACzE,WAAW,CAAC,EAAE,aAAa,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,KAAK,CAAC;IAEb,+DAA+D;IAC/D,QAAQ,EAAE,aAAa,CAAC;QACvB,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACjC,KAAK,EAAE,aAAa,CAAC;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC/C,CAAC,CAAC;IAEH,iFAAiF;IACjF,MAAM,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE9D,uEAAuE;IACvE,QAAQ,EAAE,aAAa,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD;AAyBD,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,UAAU,CAwL7D"}
|
package/dist/roguelike/Cave.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { hexDistance, hexNeighbors, hexToPixel } from '../core/Hex.js';
|
|
1
2
|
import * as Random from '../core/Random.js';
|
|
2
3
|
import { DUNGEON_KINDS } from './generate.js';
|
|
3
4
|
import { Level } from './Level.js';
|
|
4
5
|
/** the four orthogonal neighbours, the square-grid cave's whole step set */
|
|
5
|
-
function
|
|
6
|
+
function squareNeighbours(x, y) {
|
|
6
7
|
return [
|
|
7
8
|
[x, y - 1],
|
|
8
9
|
[x, y + 1],
|
|
@@ -10,6 +11,16 @@ function neighbours(x, y) {
|
|
|
10
11
|
[x + 1, y],
|
|
11
12
|
];
|
|
12
13
|
}
|
|
14
|
+
function hexNeighbours(x, y) {
|
|
15
|
+
return hexNeighbors(x, y).map((cell) => [cell.x, cell.y]);
|
|
16
|
+
}
|
|
17
|
+
/** a regular flat-top hex is 2/sqrt(3) wider than tall, so pixel distance is true distance */
|
|
18
|
+
const HEX_TILE_WIDTH = 2 / Math.sqrt(3);
|
|
19
|
+
function hexPixelDistanceSquared(ax, ay, bx, by) {
|
|
20
|
+
const a = hexToPixel(ax, ay, HEX_TILE_WIDTH, 1);
|
|
21
|
+
const b = hexToPixel(bx, by, HEX_TILE_WIDTH, 1);
|
|
22
|
+
return (a.x - b.x) ** 2 + (a.y - b.y) ** 2;
|
|
23
|
+
}
|
|
13
24
|
export function generateCave(options) {
|
|
14
25
|
const { width, height } = options;
|
|
15
26
|
if (width < 5 || height < 5)
|
|
@@ -19,7 +30,18 @@ export function generateCave(options) {
|
|
|
19
30
|
const wall = options.wall ?? 0;
|
|
20
31
|
const floor = options.floor ?? 1;
|
|
21
32
|
const kinds = options.kinds ?? [];
|
|
22
|
-
const
|
|
33
|
+
const shape = options.shape ?? 'square';
|
|
34
|
+
const hex = shape === 'hex';
|
|
35
|
+
const neighbours = hex ? hexNeighbours : squareNeighbours;
|
|
36
|
+
//how far a cell is from a target: growth wants rings around the centre, a walk wants the
|
|
37
|
+
//step that closes in on the target in the picture the player sees
|
|
38
|
+
const growthDistance = (ax, ay, bx, by) => hex ? hexDistance({ x: ax, y: ay }, { x: bx, y: by }) : Math.abs(ax - bx) + Math.abs(ay - by);
|
|
39
|
+
const walkDistance = (ax, ay, bx, by) => hex ? hexPixelDistanceSquared(ax, ay, bx, by) : (ax - bx) ** 2 + (ay - by) ** 2;
|
|
40
|
+
if (options.random === undefined && options.seed === undefined)
|
|
41
|
+
throw new Error('a cave needs a seed or a random source');
|
|
42
|
+
const source = options.random;
|
|
43
|
+
const roll = (bound) => Random.int(bound, undefined, source);
|
|
44
|
+
const level = new Level(width, height, [...DUNGEON_KINDS, ...kinds], wall, shape);
|
|
23
45
|
const at = (x, y) => y * width + x;
|
|
24
46
|
const inner = (x, y) => level.insideWithBorder(x, y);
|
|
25
47
|
const open = new Uint8Array(width * height);
|
|
@@ -27,15 +49,16 @@ export function generateCave(options) {
|
|
|
27
49
|
if (inner(x, y))
|
|
28
50
|
open[at(x, y)] = 1;
|
|
29
51
|
};
|
|
30
|
-
|
|
52
|
+
if (source === undefined)
|
|
53
|
+
Random.push(options.seed);
|
|
31
54
|
try {
|
|
32
55
|
const centres = new Map();
|
|
33
56
|
const cellsById = new Map();
|
|
34
57
|
for (const chamber of options.chambers) {
|
|
35
58
|
if (chamber.size < 1)
|
|
36
59
|
throw new Error(`cave chamber ${chamber.id} needs at least one cell`);
|
|
37
|
-
const cx = Random.range(Math.max(1, chamber.xRange[0]), Math.min(width - 2, chamber.xRange[1]));
|
|
38
|
-
const cy = Random.range(Math.max(1, chamber.yRange[0]), Math.min(height - 2, chamber.yRange[1]));
|
|
60
|
+
const cx = Random.range(Math.max(1, chamber.xRange[0]), Math.min(width - 2, chamber.xRange[1]), source);
|
|
61
|
+
const cy = Random.range(Math.max(1, chamber.yRange[0]), Math.min(height - 2, chamber.yRange[1]), source);
|
|
39
62
|
centres.set(chamber.id, { x: cx, y: cy });
|
|
40
63
|
// random growth: absorb frontier cells until `size` are carved; `jagged` is the
|
|
41
64
|
// chance a step picks any frontier cell instead of the one nearest the centre
|
|
@@ -53,13 +76,13 @@ export function generateCave(options) {
|
|
|
53
76
|
push(cx, cy);
|
|
54
77
|
while (cells.length < chamber.size && frontier.length) {
|
|
55
78
|
let pick = 0;
|
|
56
|
-
if (
|
|
57
|
-
pick =
|
|
79
|
+
if (roll(100) < (chamber.jagged ?? 0)) {
|
|
80
|
+
pick = roll(frontier.length);
|
|
58
81
|
}
|
|
59
82
|
else {
|
|
60
83
|
let best = Infinity;
|
|
61
84
|
for (let index = 0; index < frontier.length; index++) {
|
|
62
|
-
const distance =
|
|
85
|
+
const distance = growthDistance(frontier[index][0], frontier[index][1], cx, cy);
|
|
63
86
|
if (distance < best) {
|
|
64
87
|
best = distance;
|
|
65
88
|
pick = index;
|
|
@@ -85,13 +108,13 @@ export function generateCave(options) {
|
|
|
85
108
|
carve(nx, ny);
|
|
86
109
|
const steps = neighbours(x, y).filter(([nx, ny]) => inner(nx, ny));
|
|
87
110
|
let next = steps[0];
|
|
88
|
-
if (
|
|
89
|
-
next = steps[
|
|
111
|
+
if (roll(100) < windiness) {
|
|
112
|
+
next = steps[roll(steps.length)];
|
|
90
113
|
}
|
|
91
114
|
else {
|
|
92
115
|
let best = Infinity;
|
|
93
116
|
for (const option of steps) {
|
|
94
|
-
const distance = (option[0]
|
|
117
|
+
const distance = walkDistance(option[0], option[1], to.x, to.y);
|
|
95
118
|
if (distance < best) {
|
|
96
119
|
best = distance;
|
|
97
120
|
next = option;
|
|
@@ -108,7 +131,7 @@ export function generateCave(options) {
|
|
|
108
131
|
const to = centres.get(passage.to);
|
|
109
132
|
if (!from || !to)
|
|
110
133
|
throw new Error(`cave passage ${chamber.id} -> ${passage.to} names no chamber`);
|
|
111
|
-
if (
|
|
134
|
+
if (roll(100) >= (passage.chance ?? 100))
|
|
112
135
|
continue;
|
|
113
136
|
walk(from, to, Math.max(1, passage.width ?? 1), passage.windiness ?? 0);
|
|
114
137
|
}
|
|
@@ -170,7 +193,7 @@ export function generateCave(options) {
|
|
|
170
193
|
candidates.push(index);
|
|
171
194
|
const wanted = Math.floor((candidates.length * density) / 1000);
|
|
172
195
|
for (let placed = 0; placed < wanted && candidates.length; placed++) {
|
|
173
|
-
const pick =
|
|
196
|
+
const pick = roll(candidates.length);
|
|
174
197
|
const index = candidates.splice(pick, 1)[0];
|
|
175
198
|
villages.push({ x: index % width, y: Math.floor(index / width) });
|
|
176
199
|
}
|
|
@@ -186,7 +209,8 @@ export function generateCave(options) {
|
|
|
186
209
|
};
|
|
187
210
|
}
|
|
188
211
|
finally {
|
|
189
|
-
|
|
212
|
+
if (source === undefined)
|
|
213
|
+
Random.pop();
|
|
190
214
|
}
|
|
191
215
|
}
|
|
192
216
|
//# sourceMappingURL=Cave.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cave.js","sourceRoot":"","sources":["../../src/roguelike/Cave.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Cave.js","sourceRoot":"","sources":["../../src/roguelike/Cave.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { LevelShape } from './Level.ts';
|
|
1
2
|
/**
|
|
2
3
|
* An overworld map: a whole realm as plain tile data.
|
|
3
4
|
*
|
|
@@ -11,6 +12,10 @@
|
|
|
11
12
|
* carry a `leadsTo` id a game feeds its `Overworld` locations with; and every cell carries a
|
|
12
13
|
* coarse region id so encounter tables and names can hang off a region instead of a cell.
|
|
13
14
|
*
|
|
15
|
+
* `shape: 'hex'` generates the same realm on a hex grid (odd-q offset coordinates, the `Level`
|
|
16
|
+
* convention): the noise is sampled where each hex is drawn so landmasses are not stretched,
|
|
17
|
+
* rivers and roads step across the six edges, spacing and "near water" count hex distance.
|
|
18
|
+
*
|
|
14
19
|
* Deterministic: the same seed gives the same realm on every platform, drawn from the
|
|
15
20
|
* framework `Random` stack. Sizes up to a few hundred tiles a side generate on load; a
|
|
16
21
|
* bigger realm is a `threads.spawn` task like any other long job.
|
|
@@ -41,6 +46,8 @@ export interface OverworldOptions {
|
|
|
41
46
|
regionSize?: number;
|
|
42
47
|
/** how stretched the noise is: larger values give broader landmasses; defaults to 6 */
|
|
43
48
|
noiseScale?: number;
|
|
49
|
+
/** the grid the realm is laid out on; defaults to `'square'` */
|
|
50
|
+
shape?: LevelShape;
|
|
44
51
|
}
|
|
45
52
|
export interface OverworldSettlement {
|
|
46
53
|
x: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Overworld.d.ts","sourceRoot":"","sources":["../../src/roguelike/Overworld.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"Overworld.d.ts","sourceRoot":"","sources":["../../src/roguelike/Overworld.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE1G,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IAEb,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uFAAuF;IACvF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,KAAK,CAAC,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IACnC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IACjC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IACpC,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC/B,sDAAsD;IACtD,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,yEAAyE;IACzE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,8DAA8D;IAC9D,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAC/C,sFAAsF;IACtF,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAC9C,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACnC,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;IACtC,gHAAgH;IAChH,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,kDAAkD;IAClD,aAAa,EAAE,MAAM,CAAC;CACtB;AA+ED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAkK5E"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { hexDistance, hexNeighbors, hexRange } from '../core/Hex.js';
|
|
1
2
|
import * as Random from '../core/Random.js';
|
|
2
3
|
/** seeded value noise: a lattice of random values, smoothly interpolated, a few octaves */
|
|
3
|
-
function valueNoise(random, width, height, scale) {
|
|
4
|
+
function valueNoise(random, width, height, scale, hex) {
|
|
4
5
|
const latticeSide = (side) => Math.max(2, Math.ceil(side / scale) + 2);
|
|
5
6
|
const columns = latticeSide(width);
|
|
6
7
|
const rows = latticeSide(height);
|
|
@@ -14,8 +15,10 @@ function valueNoise(random, width, height, scale) {
|
|
|
14
15
|
const weight = 1 / (factor * factor);
|
|
15
16
|
for (let y = 0; y < height; y++) {
|
|
16
17
|
for (let x = 0; x < width; x++) {
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
//on a hex grid sample where the cell is drawn: columns are 0.866 apart and
|
|
19
|
+
//odd columns sit half a row lower
|
|
20
|
+
const gx = ((hex ? x * HEX_COLUMN_PITCH : x) / scale) * factor;
|
|
21
|
+
const gy = ((hex ? y + (x & 1) / 2 : y) / scale) * factor;
|
|
19
22
|
const x0 = Math.floor(gx) % (columns - 1);
|
|
20
23
|
const y0 = Math.floor(gy) % (rows - 1);
|
|
21
24
|
const fx = smooth(gx - Math.floor(gx));
|
|
@@ -32,6 +35,8 @@ function valueNoise(random, width, height, scale) {
|
|
|
32
35
|
field[index] /= total;
|
|
33
36
|
return field;
|
|
34
37
|
}
|
|
38
|
+
/** distance between hex columns in units of the row height: 3/4 of a flat-top hex's width */
|
|
39
|
+
const HEX_COLUMN_PITCH = Math.sqrt(3) / 2;
|
|
35
40
|
const EIGHT = [
|
|
36
41
|
[0, -1],
|
|
37
42
|
[0, 1],
|
|
@@ -42,6 +47,19 @@ const EIGHT = [
|
|
|
42
47
|
[-1, 1],
|
|
43
48
|
[1, 1],
|
|
44
49
|
];
|
|
50
|
+
/**
|
|
51
|
+
* Visit the cells a river or road may step to from `(x, y)`: the eight surrounding squares
|
|
52
|
+
* (flagged diagonal for the corners), or the six hexes, every one an edge neighbour.
|
|
53
|
+
*/
|
|
54
|
+
function forEachStep(hex, x, y, visit) {
|
|
55
|
+
if (hex) {
|
|
56
|
+
for (const cell of hexNeighbors(x, y))
|
|
57
|
+
visit(cell.x, cell.y, false);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
for (const [dx, dy] of EIGHT)
|
|
61
|
+
visit(x + dx, y + dy, dx !== 0 && dy !== 0);
|
|
62
|
+
}
|
|
45
63
|
/** how much a road dislikes crossing each terrain; water is only crossable at a ford */
|
|
46
64
|
const ROAD_COST = {
|
|
47
65
|
plains: 1,
|
|
@@ -60,14 +78,15 @@ export function generateOverworld(options) {
|
|
|
60
78
|
if (!(seaLevel > 0 && seaLevel < 1))
|
|
61
79
|
throw new Error('seaLevel must be between 0 and 1');
|
|
62
80
|
const scale = options.noiseScale ?? 6;
|
|
81
|
+
const hex = options.shape === 'hex';
|
|
63
82
|
const at = (x, y) => y * width + x;
|
|
64
83
|
const inside = (x, y) => x >= 0 && y >= 0 && x < width && y < height;
|
|
65
84
|
Random.push(options.seed);
|
|
66
85
|
try {
|
|
67
86
|
//a terrain field from elevation and moisture, both seeded; landmasses read as
|
|
68
87
|
//coherent shapes rather than scattered peaks because the noise octaves overlap
|
|
69
|
-
const elevation = valueNoise(() => Random.float(), width, height, scale);
|
|
70
|
-
const moisture = valueNoise(() => Random.float(), width, height, scale * 1.5);
|
|
88
|
+
const elevation = valueNoise(() => Random.float(), width, height, scale, hex);
|
|
89
|
+
const moisture = valueNoise(() => Random.float(), width, height, scale * 1.5, hex);
|
|
71
90
|
const terrain = new Array(width * height);
|
|
72
91
|
const classify = (x, y) => {
|
|
73
92
|
const index = at(x, y);
|
|
@@ -116,15 +135,13 @@ export function generateOverworld(options) {
|
|
|
116
135
|
path.push({ x, y });
|
|
117
136
|
walked.add(index);
|
|
118
137
|
let best;
|
|
119
|
-
|
|
120
|
-
const nx = x + dx;
|
|
121
|
-
const ny = y + dy;
|
|
138
|
+
forEachStep(hex, x, y, (nx, ny) => {
|
|
122
139
|
if (!inside(nx, ny))
|
|
123
|
-
|
|
140
|
+
return;
|
|
124
141
|
const candidate = { x: nx, y: ny, up: elevation[at(nx, ny)] };
|
|
125
142
|
if (!best || candidate.up < best.up)
|
|
126
143
|
best = candidate;
|
|
127
|
-
}
|
|
144
|
+
});
|
|
128
145
|
if (!best || best.up >= elevation[at(x, y)]) {
|
|
129
146
|
//no way down: a ridge or a basin. Drown the cell as a lake and stop here
|
|
130
147
|
terrain[at(x, y)] = 'water';
|
|
@@ -142,6 +159,8 @@ export function generateOverworld(options) {
|
|
|
142
159
|
//a town the plains, and everything else reads as a village
|
|
143
160
|
const settlements = [];
|
|
144
161
|
const nearWater = (x, y) => {
|
|
162
|
+
if (hex)
|
|
163
|
+
return hexRange({ x, y }, 3).some((cell) => inside(cell.x, cell.y) && terrain[at(cell.x, cell.y)] === 'water');
|
|
145
164
|
for (let dy = -3; dy <= 3; dy++)
|
|
146
165
|
for (let dx = -3; dx <= 3; dx++) {
|
|
147
166
|
const nx = x + dx;
|
|
@@ -151,7 +170,9 @@ export function generateOverworld(options) {
|
|
|
151
170
|
}
|
|
152
171
|
return false;
|
|
153
172
|
};
|
|
154
|
-
const spaced = (x, y, distance) => settlements.every((settlement) =>
|
|
173
|
+
const spaced = (x, y, distance) => settlements.every((settlement) => (hex
|
|
174
|
+
? hexDistance(settlement, { x, y })
|
|
175
|
+
: Math.abs(settlement.x - x) + Math.abs(settlement.y - y)) >= distance);
|
|
155
176
|
const wanted = options.settlements ?? Math.max(2, Math.floor((width * height) / 500));
|
|
156
177
|
for (let attempt = 0; attempt < wanted * 60 && settlements.length < wanted; attempt++) {
|
|
157
178
|
const x = Random.int(width);
|
|
@@ -178,7 +199,7 @@ export function generateOverworld(options) {
|
|
|
178
199
|
let bestRoute;
|
|
179
200
|
for (const to of pending) {
|
|
180
201
|
for (const start of connected) {
|
|
181
|
-
const path = roadBetween(terrain, width, height, start, to);
|
|
202
|
+
const path = roadBetween(terrain, width, height, start, to, hex);
|
|
182
203
|
if (path && (!bestRoute || path.length < bestRoute.path.length))
|
|
183
204
|
bestRoute = { path, to };
|
|
184
205
|
}
|
|
@@ -224,7 +245,7 @@ export function generateOverworld(options) {
|
|
|
224
245
|
}
|
|
225
246
|
}
|
|
226
247
|
/** one road: Dijkstra from one settlement to another over per-terrain costs */
|
|
227
|
-
function roadBetween(terrain, width, height, from, to) {
|
|
248
|
+
function roadBetween(terrain, width, height, from, to, hex) {
|
|
228
249
|
const at = (x, y) => y * width + x;
|
|
229
250
|
const inside = (x, y) => x >= 0 && y >= 0 && x < width && y < height;
|
|
230
251
|
const total = width * height;
|
|
@@ -284,22 +305,20 @@ function roadBetween(terrain, width, height, from, to) {
|
|
|
284
305
|
}
|
|
285
306
|
const cx = current % width;
|
|
286
307
|
const cy = Math.floor(current / width);
|
|
287
|
-
|
|
288
|
-
const nx = cx + dx;
|
|
289
|
-
const ny = cy + dy;
|
|
308
|
+
forEachStep(hex, cx, cy, (nx, ny, diagonal) => {
|
|
290
309
|
if (!inside(nx, ny))
|
|
291
|
-
|
|
310
|
+
return;
|
|
292
311
|
const next = at(nx, ny);
|
|
293
312
|
if (distance[current] === Infinity)
|
|
294
|
-
|
|
295
|
-
const step = ROAD_COST[terrain[next]] * (
|
|
313
|
+
return;
|
|
314
|
+
const step = ROAD_COST[terrain[next]] * (diagonal ? 1.5 : 1);
|
|
296
315
|
if (distance[current] + step < distance[next]) {
|
|
297
316
|
distance[next] = distance[current] + step;
|
|
298
317
|
previous[next] = current;
|
|
299
318
|
if (!inHeap[next])
|
|
300
319
|
push(next);
|
|
301
320
|
}
|
|
302
|
-
}
|
|
321
|
+
});
|
|
303
322
|
}
|
|
304
323
|
return undefined;
|
|
305
324
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Overworld.js","sourceRoot":"","sources":["../../src/roguelike/Overworld.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Overworld.js","sourceRoot":"","sources":["../../src/roguelike/Overworld.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAyF5C,2FAA2F;AAC3F,SAAS,UAAU,CAAC,MAAoB,EAAE,KAAa,EAAE,MAAc,EAAE,KAAa,EAAE,GAAY;IACnG,MAAM,WAAW,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACvF,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACjD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE;QAAE,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC;IAC/E,MAAM,MAAM,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,IAAI,KAAK,CAAS,KAAK,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxD,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC;QAC3B,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;QACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,2EAA2E;gBAC3E,kCAAkC;gBAClC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC;gBAC/D,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC;gBAC1D,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;gBAC1C,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;gBACvC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;gBACvC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;gBACvC,MAAM,EAAE,GAAG,CAAC,EAAU,EAAE,EAAU,EAAU,EAAE,CAC7C,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;gBAC/D,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;gBAChD,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;gBACnD,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;YACjE,CAAC;QACF,CAAC;IACF,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IACjC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE;QAAE,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;IACzE,OAAO,KAAK,CAAC;AACd,CAAC;AAED,6FAA6F;AAC7F,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAE1C,MAAM,KAAK,GAAG;IACb,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,EAAE,CAAC,CAAC;IACN,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACP,CAAC,CAAC,EAAE,CAAC,CAAC;IACN,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACR,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACP,CAAC,CAAC,EAAE,CAAC,CAAC;CACG,CAAC;AAEX;;;GAGG;AACH,SAAS,WAAW,CACnB,GAAY,EACZ,CAAS,EACT,CAAS,EACT,KAA0D;IAE1D,IAAI,GAAG,EAAE,CAAC;QACT,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACpE,OAAO;IACR,CAAC;IACD,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK;QAAE,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,wFAAwF;AACxF,MAAM,SAAS,GAAqC;IACnD,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,EAAE;IACT,SAAS,EAAE,EAAE;CACb,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,OAAyB;IAC1D,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAClC,IAAI,KAAK,GAAG,EAAE,IAAI,MAAM,GAAG,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC1F,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAC;IACzC,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACzF,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC;IACpC,MAAM,EAAE,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,CAAS,EAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC;IAE9F,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,CAAC;QACJ,8EAA8E;QAC9E,+EAA+E;QAC/E,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9E,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;QACnF,MAAM,OAAO,GAAuB,IAAI,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,CAAS,EAAoB,EAAE;YAC3D,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvB,MAAM,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YAC5B,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,EAAE,GAAG,QAAQ;gBAAE,OAAO,OAAO,CAAC;YAClC,IAAI,EAAE,GAAG,IAAI;gBAAE,OAAO,WAAW,CAAC;YAClC,IAAI,EAAE,GAAG,IAAI;gBAAE,OAAO,OAAO,CAAC;YAC9B,IAAI,GAAG,GAAG,GAAG;gBAAE,OAAO,QAAQ,CAAC;YAC/B,IAAI,GAAG,GAAG,IAAI;gBAAE,OAAO,EAAE,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;YACjE,OAAO,QAAQ,CAAC;QACjB,CAAC,CAAC;QACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE;YAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;gBAAE,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEpG,8EAA8E;QAC9E,2EAA2E;QAC3E,qEAAqE;QACrE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QACrC,MAAM,MAAM,GAA2C,EAAE,CAAC;QAC1D,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACtF,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE;YAClD,IAAI,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,OAAO;gBAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClF,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;YAC3F,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM;YACnC,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAoC,EAAE,CAAC;YACjD,IAAI,CAAC,GAAG,WAAW,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;YACjC,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;gBAClD,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACvB,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,OAAO,EAAE,CAAC;oBACzD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;wBAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBACzC,MAAM;gBACP,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACpB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAClB,IAAI,IAAsD,CAAC;gBAC3D,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;oBACjC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC;wBAAE,OAAO;oBAC5B,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;oBAC9D,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;wBAAE,IAAI,GAAG,SAAS,CAAC;gBACvD,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC7C,yEAAyE;oBACzE,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;oBAC5B,MAAM;gBACP,CAAC;gBACD,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACtB,KAAK,MAAM,IAAI,IAAI,IAAI;oBAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;QACF,CAAC;QAED,iFAAiF;QACjF,2DAA2D;QAC3D,MAAM,WAAW,GAA0B,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,CAAS,EAAW,EAAE;YACnD,IAAI,GAAG;gBACN,OAAO,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAChC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAC3E,CAAC;YACH,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE;gBAC9B,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;oBACjC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;oBAClB,IAAI,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO;wBAAE,OAAO,IAAI,CAAC;gBACpE,CAAC;YACF,OAAO,KAAK,CAAC;QACd,CAAC,CAAC;QACF,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,QAAgB,EAAW,EAAE,CAClE,WAAW,CAAC,KAAK,CAChB,CAAC,UAAU,EAAE,EAAE,CACd,CAAC,GAAG;YACH,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACnC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,QAAQ,CACxE,CAAC;QACH,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACtF,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,EAAE,IAAI,WAAW,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;YACvF,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;gBAAE,SAAS;YAC/F,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAAE,SAAS;YAC/B,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,KAAK,MAAM,UAAU,IAAI,WAAW;YACnC,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;gBAAE,UAAU,CAAC,IAAI,GAAG,SAAS,CAAC;QAEpF,iFAAiF;QACjF,iFAAiF;QACjF,6BAA6B;QAC7B,MAAM,KAAK,GAA2C,EAAE,CAAC;QACzD,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,IAAI,EAAE,CAAC;YACV,MAAM,SAAS,GAA0B,CAAC,IAAI,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACrC,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;gBACvB,IAAI,SAAyF,CAAC;gBAC9F,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;oBAC1B,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;wBAC/B,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;wBACjE,IAAI,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;4BAAE,SAAS,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;oBAC3F,CAAC;gBACF,CAAC;gBACD,IAAI,CAAC,SAAS;oBAAE,MAAM;gBACtB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC3B,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAC7B,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAClD,CAAC;QACF,CAAC;QAED,kEAAkE;QAClE,MAAM,gBAAgB,GAAwB,EAAE,CAAC;QACjD,MAAM,cAAc,GAAG,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACnG,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,cAAc,GAAG,EAAE,IAAI,gBAAgB,CAAC,MAAM,GAAG,cAAc,EAAE,OAAO,EAAE,EAAE,CAAC;YAC5G,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,WAAW;gBAAE,SAAS;YACvD,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAAE,SAAS;YAC/B,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAC;YACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YACjD,gBAAgB,CAAC,IAAI,CAAC;gBACrB,CAAC;gBACD,CAAC;gBACD,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,aAAa,QAAQ,IAAI,gBAAgB,CAAC,MAAM,EAAE;aAC3D,CAAC,CAAC;QACJ,CAAC;QAED,kFAAkF;QAClF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,KAAK,CAAS,KAAK,GAAG,MAAM,CAAC,CAAC;QAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE;YAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;gBAC7B,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;QAE9F,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;IAC/G,CAAC;YAAS,CAAC;QACV,MAAM,CAAC,GAAG,EAAE,CAAC;IACd,CAAC;AACF,CAAC;AAED,+EAA+E;AAC/E,SAAS,WAAW,CACnB,OAA2B,EAC3B,KAAa,EACb,MAAc,EACd,IAA8B,EAC9B,EAA4B,EAC5B,GAAY;IAEZ,MAAM,EAAE,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,CAAS,EAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC;IAC9F,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAC7B,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpB,gFAAgF;IAChF,uEAAuE;IACvE,MAAM,IAAI,GAAa,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,CAAC,QAAgB,EAAQ,EAAE;QAC3C,OAAO,IAAI,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC;YACvB,IAAI,QAAQ,GAAG,QAAQ,CAAC;YACxB,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAAE,QAAQ,GAAG,IAAI,CAAC;YAC3F,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAAE,QAAQ,GAAG,KAAK,CAAC;YAC9F,IAAI,QAAQ,KAAK,QAAQ;gBAAE,OAAO;YAClC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YACpE,QAAQ,GAAG,QAAQ,CAAC;QACrB,CAAC;IACF,CAAC,CAAC;IACF,MAAM,GAAG,GAAG,GAAW,EAAE;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAG,CAAC;QACzB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACf,QAAQ,CAAC,CAAC,CAAC,CAAC;QACb,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,OAAO,GAAG,CAAC;IACZ,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,IAAY,EAAQ,EAAE;QACnC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/B,OAAO,QAAQ,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAAE,MAAM;YAC9D,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAChE,QAAQ,GAAG,MAAM,CAAC;QACnB,CAAC;IACF,CAAC,CAAC;IACF,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;QACtB,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACtB,MAAM,IAAI,GAAoC,EAAE,CAAC;YACjD,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;gBACvD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;YAC7D,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC;QACD,MAAM,EAAE,GAAG,OAAO,GAAG,KAAK,CAAC;QAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;QACvC,WAAW,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE;YAC7C,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC;gBAAE,OAAO;YAC5B,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACxB,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,QAAQ;gBAAE,OAAO;YAC3C,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7D,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/C,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;gBAC1C,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;gBACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC"}
|