@futdevpro/fsm-dynamo 1.20.24 → 1.20.25
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/build/_modules/game/_models/seeded-random-registry.control-model.d.ts +71 -0
- package/build/_modules/game/_models/seeded-random-registry.control-model.d.ts.map +1 -0
- package/build/_modules/game/_models/seeded-random-registry.control-model.js +129 -0
- package/build/_modules/game/_models/seeded-random-registry.control-model.js.map +1 -0
- package/build/_modules/game/_models/seeded-random-registry.interface.d.ts +27 -0
- package/build/_modules/game/_models/seeded-random-registry.interface.d.ts.map +1 -0
- package/build/_modules/game/_models/seeded-random-registry.interface.js +3 -0
- package/build/_modules/game/_models/seeded-random-registry.interface.js.map +1 -0
- package/build/_modules/game/index.d.ts +2 -0
- package/build/_modules/game/index.d.ts.map +1 -1
- package/build/_modules/game/index.js +2 -0
- package/build/_modules/game/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { DyFM_SeededRandom } from './seeded-random.control-model';
|
|
2
|
+
import { DyFM_SeededRandomRegistry_Diagnostics, DyFM_SeededRandomRegistry_State } from './seeded-random-registry.interface';
|
|
3
|
+
/**
|
|
4
|
+
* BFR-WARFACTORY-009 — **gyökér-seedelt, FÜGGETLEN RNG-stream registry.**
|
|
5
|
+
*
|
|
6
|
+
* ⚠️ **A megoldandó baj:** a `DyFM_SeededRandom` egyetlen sorozat. Ha a játék minden véletlenét
|
|
7
|
+
* egyetlen példányból húzza, akkor **egy harci dobás hozzáadása eltolja a térkép-generálást, a
|
|
8
|
+
* loot-ot, az azonosítókat és a tutorial-állapotot is** — ugyanaz a mentés más világot ad, mert
|
|
9
|
+
* közben egy csatában eggyel többször dobtunk. Ez a determinizmus leggyakoribb, legnehezebben
|
|
10
|
+
* észrevehető elvesztése.
|
|
11
|
+
*
|
|
12
|
+
* ⭐ A megoldás: **egy gyökér-seed → sok, névvel azonosított, egymástól független stream.** A
|
|
13
|
+
* `'combat'` csatorna fogyasztása nem érinti a `'worldgen'`-t, viszont ugyanabból a gyökér-seedből
|
|
14
|
+
* az egész készlet **reprodukálható**.
|
|
15
|
+
*
|
|
16
|
+
* ⚠️ **A származtatás determinisztikus és név-alapú** (`<rootSeed>::<channel>`), nem sorrend-alapú.
|
|
17
|
+
* Ez tudatos: ha a streameket a létrehozásuk sorrendje szerint származtatnánk, egy ÚJ csatorna
|
|
18
|
+
* bevezetése — vagy csak a kód átrendezése — elmozdítaná az összes utána következő sorozatot.
|
|
19
|
+
* Névvel a `'combat'` mindig ugyanaz, függetlenül attól, hány másik csatorna létezik.
|
|
20
|
+
*
|
|
21
|
+
* ⛔ A registry **nem** hoz létre csatornát a hívó tudta nélkül a `get()`-en kívül: az `require()`
|
|
22
|
+
* ismeretlen névre **dob**, mert egy elgépelt csatornanév különben csendben egy vadonatúj, üres
|
|
23
|
+
* sorozatot adna — és a hiba csak a reprodukálhatóság elvesztésekor derülne ki.
|
|
24
|
+
*/
|
|
25
|
+
export declare class DyFM_SeededRandomRegistry_ControlModel {
|
|
26
|
+
private readonly rootSeed;
|
|
27
|
+
private readonly streams;
|
|
28
|
+
private constructor();
|
|
29
|
+
/** Új registry egy gyökér-seedből. Csatornák igény szerint, a `get()` hívásakor jönnek létre. */
|
|
30
|
+
static fromRootSeed(rootSeed: string | number): DyFM_SeededRandomRegistry_ControlModel;
|
|
31
|
+
/**
|
|
32
|
+
* Registry visszatöltése mentett állapotból — minden csatorna ott folytatódik, ahol abbamaradt.
|
|
33
|
+
*
|
|
34
|
+
* @throws {Error} ha a `contractVersion` nem az ismert alak. ⚠️ Ez SZÁNDÉKOSAN dob: egy nem
|
|
35
|
+
* értelmezhető mentés-payload csendben elfogadva friss, üres streameket adna, és a játékos
|
|
36
|
+
* mentése némán más világot generálna.
|
|
37
|
+
*/
|
|
38
|
+
static fromState(state: DyFM_SeededRandomRegistry_State): DyFM_SeededRandomRegistry_ControlModel;
|
|
39
|
+
/**
|
|
40
|
+
* Egy nevesített stream. Ugyanarra a névre **mindig ugyanaz a példány** (tehát a sorozat
|
|
41
|
+
* folytatódik, nem indul újra); ismeretlen névre determinisztikusan **létrehozza**.
|
|
42
|
+
*/
|
|
43
|
+
get(channel: string): DyFM_SeededRandom;
|
|
44
|
+
/**
|
|
45
|
+
* Egy MÁR LÉTEZŐ stream. Ismeretlen névre **dob**.
|
|
46
|
+
*
|
|
47
|
+
* ⭐ Ez a `get()` szigorú párja: ahol a hívó tudja, hogy a csatornának léteznie kell (pl. mentés
|
|
48
|
+
* betöltése után), ott egy elgépelt név ne csendben új, üres sorozatot adjon.
|
|
49
|
+
*/
|
|
50
|
+
require(channel: string): DyFM_SeededRandom;
|
|
51
|
+
/** Létezik-e már a csatorna (létrehozás NÉLKÜL). */
|
|
52
|
+
has(channel: string): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* A teljes registry mentheto allapota — ezt kell a save-payloadba tenni.
|
|
55
|
+
*
|
|
56
|
+
* A csatornak ABECESORRENDBEN kerulnek bele: igy ket azonos allapotu registry
|
|
57
|
+
* szerializalt alakja BAJTRA egyezik, ami a mentes-osszehasonlitast es a teszt-asszerciot
|
|
58
|
+
* determinisztikussa teszi.
|
|
59
|
+
*/
|
|
60
|
+
getState(): DyFM_SeededRandomRegistry_State;
|
|
61
|
+
/**
|
|
62
|
+
* Fuggetlen masolat a TELJES registry-rol. A klon minden csatornaja ott folytatja, ahol az
|
|
63
|
+
* eredeti tart, de a ketto tovabbiakban nem befolyasolja egymast.
|
|
64
|
+
*
|
|
65
|
+
* Tipikus hasznalat: „mi lenne, ha" elore-szimulacio a fo-jatekmenet elrontasa nelkul.
|
|
66
|
+
*/
|
|
67
|
+
clone(): DyFM_SeededRandomRegistry_ControlModel;
|
|
68
|
+
/** Tartalom-mentes diagnosztika: a szerkezet, nem a sorozatok kimenete. */
|
|
69
|
+
getDiagnostics(): DyFM_SeededRandomRegistry_Diagnostics;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=seeded-random-registry.control-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seeded-random-registry.control-model.d.ts","sourceRoot":"","sources":["../../../../src/_modules/game/_models/seeded-random-registry.control-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EACL,qCAAqC,EAAE,+BAA+B,EACvE,MAAM,oCAAoC,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,sCAAsC;IAK/C,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAH3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwE;IAEhG,OAAO;IAIP,iGAAiG;IACjG,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,sCAAsC;IAItF;;;;;;OAMG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,+BAA+B,GAAG,sCAAsC;IAehG;;;OAGG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB;IAoBvC;;;;;OAKG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB;IAW3C,oDAAoD;IACpD,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI7B;;;;;;OAMG;IACH,QAAQ,IAAI,+BAA+B;IAc3C;;;;;OAKG;IACH,KAAK,IAAI,sCAAsC;IAI/C,2EAA2E;IAC3E,cAAc,IAAI,qCAAqC;CASxD"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DyFM_SeededRandomRegistry_ControlModel = void 0;
|
|
4
|
+
const seeded_random_control_model_1 = require("./seeded-random.control-model");
|
|
5
|
+
/**
|
|
6
|
+
* BFR-WARFACTORY-009 — **gyökér-seedelt, FÜGGETLEN RNG-stream registry.**
|
|
7
|
+
*
|
|
8
|
+
* ⚠️ **A megoldandó baj:** a `DyFM_SeededRandom` egyetlen sorozat. Ha a játék minden véletlenét
|
|
9
|
+
* egyetlen példányból húzza, akkor **egy harci dobás hozzáadása eltolja a térkép-generálást, a
|
|
10
|
+
* loot-ot, az azonosítókat és a tutorial-állapotot is** — ugyanaz a mentés más világot ad, mert
|
|
11
|
+
* közben egy csatában eggyel többször dobtunk. Ez a determinizmus leggyakoribb, legnehezebben
|
|
12
|
+
* észrevehető elvesztése.
|
|
13
|
+
*
|
|
14
|
+
* ⭐ A megoldás: **egy gyökér-seed → sok, névvel azonosított, egymástól független stream.** A
|
|
15
|
+
* `'combat'` csatorna fogyasztása nem érinti a `'worldgen'`-t, viszont ugyanabból a gyökér-seedből
|
|
16
|
+
* az egész készlet **reprodukálható**.
|
|
17
|
+
*
|
|
18
|
+
* ⚠️ **A származtatás determinisztikus és név-alapú** (`<rootSeed>::<channel>`), nem sorrend-alapú.
|
|
19
|
+
* Ez tudatos: ha a streameket a létrehozásuk sorrendje szerint származtatnánk, egy ÚJ csatorna
|
|
20
|
+
* bevezetése — vagy csak a kód átrendezése — elmozdítaná az összes utána következő sorozatot.
|
|
21
|
+
* Névvel a `'combat'` mindig ugyanaz, függetlenül attól, hány másik csatorna létezik.
|
|
22
|
+
*
|
|
23
|
+
* ⛔ A registry **nem** hoz létre csatornát a hívó tudta nélkül a `get()`-en kívül: az `require()`
|
|
24
|
+
* ismeretlen névre **dob**, mert egy elgépelt csatornanév különben csendben egy vadonatúj, üres
|
|
25
|
+
* sorozatot adna — és a hiba csak a reprodukálhatóság elvesztésekor derülne ki.
|
|
26
|
+
*/
|
|
27
|
+
class DyFM_SeededRandomRegistry_ControlModel {
|
|
28
|
+
rootSeed;
|
|
29
|
+
streams = new Map();
|
|
30
|
+
constructor(rootSeed) {
|
|
31
|
+
this.rootSeed = rootSeed;
|
|
32
|
+
}
|
|
33
|
+
/** Új registry egy gyökér-seedből. Csatornák igény szerint, a `get()` hívásakor jönnek létre. */
|
|
34
|
+
static fromRootSeed(rootSeed) {
|
|
35
|
+
return new DyFM_SeededRandomRegistry_ControlModel(`${rootSeed}`);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Registry visszatöltése mentett állapotból — minden csatorna ott folytatódik, ahol abbamaradt.
|
|
39
|
+
*
|
|
40
|
+
* @throws {Error} ha a `contractVersion` nem az ismert alak. ⚠️ Ez SZÁNDÉKOSAN dob: egy nem
|
|
41
|
+
* értelmezhető mentés-payload csendben elfogadva friss, üres streameket adna, és a játékos
|
|
42
|
+
* mentése némán más világot generálna.
|
|
43
|
+
*/
|
|
44
|
+
static fromState(state) {
|
|
45
|
+
if (state?.contractVersion !== 'dyfm-seeded-random-registry/1') {
|
|
46
|
+
throw new Error('DyFM_SeededRandomRegistry: unknown or missing contractVersion.');
|
|
47
|
+
}
|
|
48
|
+
const registry = new DyFM_SeededRandomRegistry_ControlModel(`${state.rootSeed ?? ''}`);
|
|
49
|
+
for (const channel of Object.keys(state.channels ?? {})) {
|
|
50
|
+
registry.streams.set(channel, seeded_random_control_model_1.DyFM_SeededRandom.fromState(state.channels[channel]));
|
|
51
|
+
}
|
|
52
|
+
return registry;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Egy nevesített stream. Ugyanarra a névre **mindig ugyanaz a példány** (tehát a sorozat
|
|
56
|
+
* folytatódik, nem indul újra); ismeretlen névre determinisztikusan **létrehozza**.
|
|
57
|
+
*/
|
|
58
|
+
get(channel) {
|
|
59
|
+
const name = `${channel ?? ''}`.trim();
|
|
60
|
+
if (!name.length) {
|
|
61
|
+
throw new Error('DyFM_SeededRandomRegistry: a channel name is required.');
|
|
62
|
+
}
|
|
63
|
+
const existing = this.streams.get(name);
|
|
64
|
+
if (existing) {
|
|
65
|
+
return existing;
|
|
66
|
+
}
|
|
67
|
+
// Nev-alapu szarmaztatas: a `'combat'` mindig ugyanaz, fuggetlenul attol, hany masik csatorna
|
|
68
|
+
// letezik es milyen sorrendben jottek letre.
|
|
69
|
+
const stream = seeded_random_control_model_1.DyFM_SeededRandom.fromSeed(`${this.rootSeed}::${name}`);
|
|
70
|
+
this.streams.set(name, stream);
|
|
71
|
+
return stream;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Egy MÁR LÉTEZŐ stream. Ismeretlen névre **dob**.
|
|
75
|
+
*
|
|
76
|
+
* ⭐ Ez a `get()` szigorú párja: ahol a hívó tudja, hogy a csatornának léteznie kell (pl. mentés
|
|
77
|
+
* betöltése után), ott egy elgépelt név ne csendben új, üres sorozatot adjon.
|
|
78
|
+
*/
|
|
79
|
+
require(channel) {
|
|
80
|
+
const name = `${channel ?? ''}`.trim();
|
|
81
|
+
const existing = this.streams.get(name);
|
|
82
|
+
if (!existing) {
|
|
83
|
+
throw new Error(`DyFM_SeededRandomRegistry: unknown channel "${name}".`);
|
|
84
|
+
}
|
|
85
|
+
return existing;
|
|
86
|
+
}
|
|
87
|
+
/** Létezik-e már a csatorna (létrehozás NÉLKÜL). */
|
|
88
|
+
has(channel) {
|
|
89
|
+
return this.streams.has(`${channel ?? ''}`.trim());
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* A teljes registry mentheto allapota — ezt kell a save-payloadba tenni.
|
|
93
|
+
*
|
|
94
|
+
* A csatornak ABECESORRENDBEN kerulnek bele: igy ket azonos allapotu registry
|
|
95
|
+
* szerializalt alakja BAJTRA egyezik, ami a mentes-osszehasonlitast es a teszt-asszerciot
|
|
96
|
+
* determinisztikussa teszi.
|
|
97
|
+
*/
|
|
98
|
+
getState() {
|
|
99
|
+
const channels = {};
|
|
100
|
+
for (const name of [...this.streams.keys()].sort()) {
|
|
101
|
+
channels[name] = this.streams.get(name).getState();
|
|
102
|
+
}
|
|
103
|
+
return {
|
|
104
|
+
contractVersion: 'dyfm-seeded-random-registry/1',
|
|
105
|
+
rootSeed: this.rootSeed,
|
|
106
|
+
channels: channels,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Fuggetlen masolat a TELJES registry-rol. A klon minden csatornaja ott folytatja, ahol az
|
|
111
|
+
* eredeti tart, de a ketto tovabbiakban nem befolyasolja egymast.
|
|
112
|
+
*
|
|
113
|
+
* Tipikus hasznalat: „mi lenne, ha" elore-szimulacio a fo-jatekmenet elrontasa nelkul.
|
|
114
|
+
*/
|
|
115
|
+
clone() {
|
|
116
|
+
return DyFM_SeededRandomRegistry_ControlModel.fromState(this.getState());
|
|
117
|
+
}
|
|
118
|
+
/** Tartalom-mentes diagnosztika: a szerkezet, nem a sorozatok kimenete. */
|
|
119
|
+
getDiagnostics() {
|
|
120
|
+
const channels = [...this.streams.keys()].sort();
|
|
121
|
+
return {
|
|
122
|
+
rootSeed: this.rootSeed,
|
|
123
|
+
channels: channels,
|
|
124
|
+
channelCount: channels.length,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
exports.DyFM_SeededRandomRegistry_ControlModel = DyFM_SeededRandomRegistry_ControlModel;
|
|
129
|
+
//# sourceMappingURL=seeded-random-registry.control-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seeded-random-registry.control-model.js","sourceRoot":"","sources":["../../../../src/_modules/game/_models/seeded-random-registry.control-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { DyFM_SeededRandom_State } from './seeded-random-state.interface';
|
|
2
|
+
/**
|
|
3
|
+
* BFR-WARFACTORY-009 — a stream-registry MENTHETŐ állapota.
|
|
4
|
+
*
|
|
5
|
+
* ⚠️ **Verziózott**, mert ez egy mentés-payload: egy régi mentés betöltésekor tudni kell, hogy a
|
|
6
|
+
* benne lévő alak még értelmezhető-e. Verzió nélkül a formátum-változás néma adatromlás lenne.
|
|
7
|
+
*/
|
|
8
|
+
export interface DyFM_SeededRandomRegistry_State {
|
|
9
|
+
readonly contractVersion: 'dyfm-seeded-random-registry/1';
|
|
10
|
+
/** A gyökér-seed — ebből származik MINDEN csatorna. */
|
|
11
|
+
readonly rootSeed: string;
|
|
12
|
+
/** Csatornanév → az adott stream pillanatnyi állapota. */
|
|
13
|
+
readonly channels: Readonly<Record<string, DyFM_SeededRandom_State>>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* BFR-WARFACTORY-009 — tartalom-mentes diagnosztika a registry-ről.
|
|
17
|
+
*
|
|
18
|
+
* A csatornanevek a HÍVÓ sajátjai (`'combat'`, `'worldgen'`…), tehát nem titkok — de a
|
|
19
|
+
* *sorozatokból* semmi nem kerül ide: a diagnosztika a szerkezetet írja le, nem a kimenetet.
|
|
20
|
+
*/
|
|
21
|
+
export interface DyFM_SeededRandomRegistry_Diagnostics {
|
|
22
|
+
readonly rootSeed: string;
|
|
23
|
+
/** A létrehozott csatornák nevei, ábécésorrendben (stabil kimenet). */
|
|
24
|
+
readonly channels: readonly string[];
|
|
25
|
+
readonly channelCount: number;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=seeded-random-registry.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seeded-random-registry.interface.d.ts","sourceRoot":"","sources":["../../../../src/_modules/game/_models/seeded-random-registry.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE1E;;;;;GAKG;AACH,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,eAAe,EAAE,+BAA+B,CAAC;IAC1D,uDAAuD;IACvD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,0DAA0D;IAC1D,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC;CACtE;AAED;;;;;GAKG;AACH,MAAM,WAAW,qCAAqC;IACpD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seeded-random-registry.interface.js","sourceRoot":"","sources":["../../../../src/_modules/game/_models/seeded-random-registry.interface.ts"],"names":[],"mappings":""}
|
|
@@ -6,6 +6,8 @@ export * from './_models/audio-mixer.control-model';
|
|
|
6
6
|
export * from './_models/audio-scale.interface';
|
|
7
7
|
export * from './_models/seeded-random-state.interface';
|
|
8
8
|
export * from './_models/seeded-random.control-model';
|
|
9
|
+
export * from './_models/seeded-random-registry.interface';
|
|
10
|
+
export * from './_models/seeded-random-registry.control-model';
|
|
9
11
|
export * from './_collections/audio-mixer.util';
|
|
10
12
|
export * from './_collections/audio-scale.util';
|
|
11
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/_modules/game/index.ts"],"names":[],"mappings":"AACA,cAAc,6BAA6B,CAAC;AAG5C,cAAc,wCAAwC,CAAC;AACvD,cAAc,0CAA0C,CAAC;AACzD,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAChD,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/_modules/game/index.ts"],"names":[],"mappings":"AACA,cAAc,6BAA6B,CAAC;AAG5C,cAAc,wCAAwC,CAAC;AACvD,cAAc,0CAA0C,CAAC;AACzD,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAChD,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,gDAAgD,CAAC;AAG/D,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC"}
|
|
@@ -11,6 +11,8 @@ tslib_1.__exportStar(require("./_models/audio-mixer.control-model"), exports);
|
|
|
11
11
|
tslib_1.__exportStar(require("./_models/audio-scale.interface"), exports);
|
|
12
12
|
tslib_1.__exportStar(require("./_models/seeded-random-state.interface"), exports);
|
|
13
13
|
tslib_1.__exportStar(require("./_models/seeded-random.control-model"), exports);
|
|
14
|
+
tslib_1.__exportStar(require("./_models/seeded-random-registry.interface"), exports);
|
|
15
|
+
tslib_1.__exportStar(require("./_models/seeded-random-registry.control-model"), exports);
|
|
14
16
|
// COLLECTIONS
|
|
15
17
|
tslib_1.__exportStar(require("./_collections/audio-mixer.util"), exports);
|
|
16
18
|
tslib_1.__exportStar(require("./_collections/audio-scale.util"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/_modules/game/index.ts"],"names":[],"mappings":";;;AAAA,QAAQ;AACR,sEAA4C;AAE5C,SAAS;AACT,iFAAuD;AACvD,mFAAyD;AACzD,gFAAsD;AACtD,8EAAoD;AACpD,0EAAgD;AAChD,kFAAwD;AACxD,gFAAsD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/_modules/game/index.ts"],"names":[],"mappings":";;;AAAA,QAAQ;AACR,sEAA4C;AAE5C,SAAS;AACT,iFAAuD;AACvD,mFAAyD;AACzD,gFAAsD;AACtD,8EAAoD;AACpD,0EAAgD;AAChD,kFAAwD;AACxD,gFAAsD;AACtD,qFAA2D;AAC3D,yFAA+D;AAE/D,cAAc;AACd,0EAAgD;AAChD,0EAAgD"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@futdevpro/fsm-dynamo",
|
|
3
|
-
"version": "1.20.
|
|
3
|
+
"version": "1.20.25",
|
|
4
4
|
"description": "Full Stack Model Collection for Dynamic (NodeJS-Typescript) Framework called Dynamo, by Future Development Ltd.",
|
|
5
5
|
"DyBu_settings": {
|
|
6
6
|
"packageType": "full-stack-package",
|
|
@@ -330,7 +330,7 @@
|
|
|
330
330
|
"uuid": "~11.1.1"
|
|
331
331
|
},
|
|
332
332
|
"devDependencies": {
|
|
333
|
-
"@futdevpro/dynamo-eslint": "1.20.
|
|
333
|
+
"@futdevpro/dynamo-eslint": "1.20.14",
|
|
334
334
|
"@types/jasmine": "~4.3.5",
|
|
335
335
|
"@typescript-eslint/eslint-plugin": "^8.41.0",
|
|
336
336
|
"@typescript-eslint/parser": "^8.41.0",
|