@futdevpro/fsm-dynamo 1.16.29 → 1.16.31
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/_collections/audio-mixer.util.d.ts +55 -0
- package/build/_modules/game/_collections/audio-mixer.util.d.ts.map +1 -0
- package/build/_modules/game/_collections/audio-mixer.util.js +114 -0
- package/build/_modules/game/_collections/audio-mixer.util.js.map +1 -0
- package/build/_modules/game/_enums/audio-channel.enum.d.ts +17 -0
- package/build/_modules/game/_enums/audio-channel.enum.d.ts.map +1 -0
- package/build/_modules/game/_enums/audio-channel.enum.js +21 -0
- package/build/_modules/game/_enums/audio-channel.enum.js.map +1 -0
- package/build/_modules/game/_models/audio-mixer-settings.interface.d.ts +23 -0
- package/build/_modules/game/_models/audio-mixer-settings.interface.d.ts.map +1 -0
- package/build/_modules/game/_models/audio-mixer-settings.interface.js +3 -0
- package/build/_modules/game/_models/audio-mixer-settings.interface.js.map +1 -0
- package/build/_modules/game/_models/seeded-random-state.interface.d.ts +17 -0
- package/build/_modules/game/_models/seeded-random-state.interface.d.ts.map +1 -0
- package/build/_modules/game/_models/seeded-random-state.interface.js +3 -0
- package/build/_modules/game/_models/seeded-random-state.interface.js.map +1 -0
- package/build/_modules/game/_models/seeded-random.control-model.d.ts +125 -0
- package/build/_modules/game/_models/seeded-random.control-model.d.ts.map +1 -0
- package/build/_modules/game/_models/seeded-random.control-model.js +263 -0
- package/build/_modules/game/_models/seeded-random.control-model.js.map +1 -0
- package/build/_modules/game/index.d.ts +6 -0
- package/build/_modules/game/index.d.ts.map +1 -0
- package/build/_modules/game/index.js +12 -0
- package/build/_modules/game/index.js.map +1 -0
- package/package.json +12 -3
- package/src/_modules/game/_collections/audio-mixer.util.spec.ts +198 -0
- package/src/_modules/game/_collections/audio-mixer.util.ts +143 -0
- package/src/_modules/game/_enums/audio-channel.enum.ts +18 -0
- package/src/_modules/game/_models/audio-mixer-settings.interface.ts +28 -0
- package/src/_modules/game/_models/seeded-random-state.interface.ts +21 -0
- package/src/_modules/game/_models/seeded-random.control-model.spec.ts +290 -0
- package/src/_modules/game/_models/seeded-random.control-model.ts +311 -0
- package/src/_modules/game/index.ts +10 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { DyFM_AudioChannel } from '../_enums/audio-channel.enum';
|
|
2
|
+
import { DyFM_AudioMixer_Settings } from '../_models/audio-mixer-settings.interface';
|
|
3
|
+
/**
|
|
4
|
+
* Statikus util a jatek-audio mixer beallitasaihoz.
|
|
5
|
+
*
|
|
6
|
+
* Rendereles-agnosztikus es platform-fuggetlen: NINCS benne DOM, Web Audio, Angular vagy Node
|
|
7
|
+
* fuggoseg — a tenyleges lejatszast az `@futdevpro/ngx-dynamo` game-modulja (vagy a projekt sajat
|
|
8
|
+
* motorja) vegzi, ez csak a **modell + szamitas**.
|
|
9
|
+
*
|
|
10
|
+
* **Hasznalat:**
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const settings: DyFM_AudioMixer_Settings = DyFM_AudioMixer_Util.merge(loadedFromSave);
|
|
13
|
+
* const volume: number = DyFM_AudioMixer_Util.getEffectiveVolume(settings, DyFM_AudioChannel.music);
|
|
14
|
+
* audioElement.volume = volume;
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export declare class DyFM_AudioMixer_Util {
|
|
18
|
+
/** Alapertelmezett hangero minden csatornara (0..1). */
|
|
19
|
+
private static readonly defaultVolume;
|
|
20
|
+
/**
|
|
21
|
+
* Az alapertelmezett mixer-beallitas. Minden hivas UJ objektumot ad vissza, hogy a
|
|
22
|
+
* hivo szabadon mutalhassa (nincs megosztott referencia).
|
|
23
|
+
*/
|
|
24
|
+
static getDefaults(): DyFM_AudioMixer_Settings;
|
|
25
|
+
/**
|
|
26
|
+
* Egy hangero-erteket a 0..1 tartomanyba szorit. A nem-szamokat (NaN, undefined, null,
|
|
27
|
+
* nem-szam tipus) a `fallback`-re cseréli — igy egy serult save-payload sem tud NaN-t
|
|
28
|
+
* juttatni a lejatszoba (a `HTMLAudioElement.volume = NaN` dobna).
|
|
29
|
+
*/
|
|
30
|
+
static clamp(value: number, fallback?: number): number;
|
|
31
|
+
/**
|
|
32
|
+
* Reszleges (vagy hianyzo) beallitas-objektumbol teljes, ervenyes settingset allit elo:
|
|
33
|
+
* a hianyzo mezoket a defaultbol veszi, a meglevoket 0..1-re szoritja.
|
|
34
|
+
*
|
|
35
|
+
* **Ez a migracios biztositek:** egy regi save-payload, ami meg nem ismerte az `ambience`
|
|
36
|
+
* csatornat, igy is betoltheto marad.
|
|
37
|
+
*/
|
|
38
|
+
static merge(partial?: Partial<DyFM_AudioMixer_Settings> | null): DyFM_AudioMixer_Settings;
|
|
39
|
+
/**
|
|
40
|
+
* Egy csatorna EFFEKTIV hangereje: a csatorna sajat erteke szorozva a master-rel.
|
|
41
|
+
* Nemitas (`muted`) eseten mindig 0. A `master` csatornara a sajat erteket adja vissza
|
|
42
|
+
* (nem negyzetre emelve).
|
|
43
|
+
*/
|
|
44
|
+
static getEffectiveVolume(settings: DyFM_AudioMixer_Settings, channel: DyFM_AudioChannel): number;
|
|
45
|
+
/**
|
|
46
|
+
* Egy csatorna hangerejenek beallitasa — UJ settings-objektumot ad vissza (immutable update),
|
|
47
|
+
* hogy signal-/state-alapu tarolokban is biztonsagos legyen.
|
|
48
|
+
*/
|
|
49
|
+
static withChannelVolume(settings: DyFM_AudioMixer_Settings, channel: DyFM_AudioChannel, volume: number): DyFM_AudioMixer_Settings;
|
|
50
|
+
/** Nemitas beallitasa — UJ settings-objektumot ad vissza (immutable update). */
|
|
51
|
+
static withMuted(settings: DyFM_AudioMixer_Settings, muted: boolean): DyFM_AudioMixer_Settings;
|
|
52
|
+
/** Ket beallitas ertek szerinti egyezese (mentes-szukseg / change-detection dontesehez). */
|
|
53
|
+
static isEqual(a: DyFM_AudioMixer_Settings, b: DyFM_AudioMixer_Settings): boolean;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=audio-mixer.util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio-mixer.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/game/_collections/audio-mixer.util.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AAGrF;;;;;;;;;;;;;GAaG;AACH,qBAAa,oBAAoB;IAE/B,wDAAwD;IACxD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAe;IAEpD;;;OAGG;IACH,MAAM,CAAC,WAAW,IAAI,wBAAwB;IAU9C;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,MAA2C,GAAG,MAAM;IAgB1F;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC,GAAG,IAAI,GAAG,wBAAwB;IAgB1F;;;;OAIG;IACH,MAAM,CAAC,kBAAkB,CACvB,QAAQ,EAAE,wBAAwB,EAClC,OAAO,EAAE,iBAAiB,GACzB,MAAM;IAcT;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CACtB,QAAQ,EAAE,wBAAwB,EAClC,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,MAAM,GACb,wBAAwB;IAO3B,gFAAgF;IAChF,MAAM,CAAC,SAAS,CACd,QAAQ,EAAE,wBAAwB,EAClC,KAAK,EAAE,OAAO,GACb,wBAAwB;IAO3B,4FAA4F;IAC5F,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,wBAAwB,EAAE,CAAC,EAAE,wBAAwB,GAAG,OAAO;CAUlF"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DyFM_AudioMixer_Util = void 0;
|
|
4
|
+
const audio_channel_enum_1 = require("../_enums/audio-channel.enum");
|
|
5
|
+
/**
|
|
6
|
+
* Statikus util a jatek-audio mixer beallitasaihoz.
|
|
7
|
+
*
|
|
8
|
+
* Rendereles-agnosztikus es platform-fuggetlen: NINCS benne DOM, Web Audio, Angular vagy Node
|
|
9
|
+
* fuggoseg — a tenyleges lejatszast az `@futdevpro/ngx-dynamo` game-modulja (vagy a projekt sajat
|
|
10
|
+
* motorja) vegzi, ez csak a **modell + szamitas**.
|
|
11
|
+
*
|
|
12
|
+
* **Hasznalat:**
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const settings: DyFM_AudioMixer_Settings = DyFM_AudioMixer_Util.merge(loadedFromSave);
|
|
15
|
+
* const volume: number = DyFM_AudioMixer_Util.getEffectiveVolume(settings, DyFM_AudioChannel.music);
|
|
16
|
+
* audioElement.volume = volume;
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
class DyFM_AudioMixer_Util {
|
|
20
|
+
/** Alapertelmezett hangero minden csatornara (0..1). */
|
|
21
|
+
static defaultVolume = 0.8;
|
|
22
|
+
/**
|
|
23
|
+
* Az alapertelmezett mixer-beallitas. Minden hivas UJ objektumot ad vissza, hogy a
|
|
24
|
+
* hivo szabadon mutalhassa (nincs megosztott referencia).
|
|
25
|
+
*/
|
|
26
|
+
static getDefaults() {
|
|
27
|
+
return {
|
|
28
|
+
master: this.defaultVolume,
|
|
29
|
+
music: this.defaultVolume,
|
|
30
|
+
ambience: this.defaultVolume,
|
|
31
|
+
effects: this.defaultVolume,
|
|
32
|
+
muted: false,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Egy hangero-erteket a 0..1 tartomanyba szorit. A nem-szamokat (NaN, undefined, null,
|
|
37
|
+
* nem-szam tipus) a `fallback`-re cseréli — igy egy serult save-payload sem tud NaN-t
|
|
38
|
+
* juttatni a lejatszoba (a `HTMLAudioElement.volume = NaN` dobna).
|
|
39
|
+
*/
|
|
40
|
+
static clamp(value, fallback = DyFM_AudioMixer_Util.defaultVolume) {
|
|
41
|
+
if (typeof value !== 'number' || Number.isNaN(value)) {
|
|
42
|
+
return fallback;
|
|
43
|
+
}
|
|
44
|
+
if (value < 0) {
|
|
45
|
+
return 0;
|
|
46
|
+
}
|
|
47
|
+
if (1 < value) {
|
|
48
|
+
return 1;
|
|
49
|
+
}
|
|
50
|
+
return value;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Reszleges (vagy hianyzo) beallitas-objektumbol teljes, ervenyes settingset allit elo:
|
|
54
|
+
* a hianyzo mezoket a defaultbol veszi, a meglevoket 0..1-re szoritja.
|
|
55
|
+
*
|
|
56
|
+
* **Ez a migracios biztositek:** egy regi save-payload, ami meg nem ismerte az `ambience`
|
|
57
|
+
* csatornat, igy is betoltheto marad.
|
|
58
|
+
*/
|
|
59
|
+
static merge(partial) {
|
|
60
|
+
const defaults = this.getDefaults();
|
|
61
|
+
if (!partial) {
|
|
62
|
+
return defaults;
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
master: this.clamp(partial.master ?? defaults.master, defaults.master),
|
|
66
|
+
music: this.clamp(partial.music ?? defaults.music, defaults.music),
|
|
67
|
+
ambience: this.clamp(partial.ambience ?? defaults.ambience, defaults.ambience),
|
|
68
|
+
effects: this.clamp(partial.effects ?? defaults.effects, defaults.effects),
|
|
69
|
+
muted: partial.muted === true,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Egy csatorna EFFEKTIV hangereje: a csatorna sajat erteke szorozva a master-rel.
|
|
74
|
+
* Nemitas (`muted`) eseten mindig 0. A `master` csatornara a sajat erteket adja vissza
|
|
75
|
+
* (nem negyzetre emelve).
|
|
76
|
+
*/
|
|
77
|
+
static getEffectiveVolume(settings, channel) {
|
|
78
|
+
const safe = this.merge(settings);
|
|
79
|
+
if (safe.muted) {
|
|
80
|
+
return 0;
|
|
81
|
+
}
|
|
82
|
+
if (channel === audio_channel_enum_1.DyFM_AudioChannel.master) {
|
|
83
|
+
return safe.master;
|
|
84
|
+
}
|
|
85
|
+
return this.clamp(safe[channel] * safe.master);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Egy csatorna hangerejenek beallitasa — UJ settings-objektumot ad vissza (immutable update),
|
|
89
|
+
* hogy signal-/state-alapu tarolokban is biztonsagos legyen.
|
|
90
|
+
*/
|
|
91
|
+
static withChannelVolume(settings, channel, volume) {
|
|
92
|
+
const next = this.merge(settings);
|
|
93
|
+
next[channel] = this.clamp(volume);
|
|
94
|
+
return next;
|
|
95
|
+
}
|
|
96
|
+
/** Nemitas beallitasa — UJ settings-objektumot ad vissza (immutable update). */
|
|
97
|
+
static withMuted(settings, muted) {
|
|
98
|
+
const next = this.merge(settings);
|
|
99
|
+
next.muted = muted === true;
|
|
100
|
+
return next;
|
|
101
|
+
}
|
|
102
|
+
/** Ket beallitas ertek szerinti egyezese (mentes-szukseg / change-detection dontesehez). */
|
|
103
|
+
static isEqual(a, b) {
|
|
104
|
+
const left = this.merge(a);
|
|
105
|
+
const right = this.merge(b);
|
|
106
|
+
return left.master === right.master
|
|
107
|
+
&& left.music === right.music
|
|
108
|
+
&& left.ambience === right.ambience
|
|
109
|
+
&& left.effects === right.effects
|
|
110
|
+
&& left.muted === right.muted;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
exports.DyFM_AudioMixer_Util = DyFM_AudioMixer_Util;
|
|
114
|
+
//# sourceMappingURL=audio-mixer.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio-mixer.util.js","sourceRoot":"","sources":["../../../../src/_modules/game/_collections/audio-mixer.util.ts"],"names":[],"mappings":";;;AAEA,qEAAiE;AAIjE;;;;;;;;;;;;;GAaG;AACH,MAAa,oBAAoB;IAE/B,wDAAwD;IAChD,MAAM,CAAU,aAAa,GAAW,GAAG,CAAC;IAEpD;;;OAGG;IACH,MAAM,CAAC,WAAW;QAChB,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,aAAa;YAC1B,KAAK,EAAE,IAAI,CAAC,aAAa;YACzB,QAAQ,EAAE,IAAI,CAAC,aAAa;YAC5B,OAAO,EAAE,IAAI,CAAC,aAAa;YAC3B,KAAK,EAAE,KAAK;SACb,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,KAAa,EAAE,WAAmB,oBAAoB,CAAC,aAAa;QAC/E,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACrD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,OAAO,CAAC,CAAC;QACX,CAAC;QAED,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;YACd,OAAO,CAAC,CAAC;QACX,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,OAAkD;QAC7D,MAAM,QAAQ,GAA6B,IAAI,CAAC,WAAW,EAAE,CAAC;QAE9D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;YACtE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;YAClE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;YAC9E,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC;YAC1E,KAAK,EAAE,OAAO,CAAC,KAAK,KAAK,IAAI;SAC9B,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,kBAAkB,CACvB,QAAkC,EAClC,OAA0B;QAE1B,MAAM,IAAI,GAA6B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE5D,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,CAAC;QACX,CAAC;QAED,IAAI,OAAO,KAAK,sCAAiB,CAAC,MAAM,EAAE,CAAC;YACzC,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CACtB,QAAkC,EAClC,OAA0B,EAC1B,MAAc;QAEd,MAAM,IAAI,GAA6B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5D,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gFAAgF;IAChF,MAAM,CAAC,SAAS,CACd,QAAkC,EAClC,KAAc;QAEd,MAAM,IAAI,GAA6B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK,GAAG,KAAK,KAAK,IAAI,CAAC;QAE5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4FAA4F;IAC5F,MAAM,CAAC,OAAO,CAAC,CAA2B,EAAE,CAA2B;QACrE,MAAM,IAAI,GAA6B,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,KAAK,GAA6B,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAEtD,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;eAC9B,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;eAC1B,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;eAChC,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;eAC9B,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;IAClC,CAAC;;AAzHH,oDA0HC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A jatek-audio mixer csatornai.
|
|
3
|
+
*
|
|
4
|
+
* A flotta NEGY jateka egymastol fuggetlenul ugyanezt a negy csatornat vezette be
|
|
5
|
+
* (Prototyper: Room Cats / Cell Stage / Portalhold, plusz a Hero Coordinator) — ez az
|
|
6
|
+
* enum a kanonikus nevezektan, amire mindegyik ratert.
|
|
7
|
+
*
|
|
8
|
+
* A `master` NEM onallo hangsav: minden csatorna effektiv hangereje a sajat erteke
|
|
9
|
+
* SZOROZVA a master-rel (lasd `DyFM_AudioMixer_Util.getEffectiveVolume`).
|
|
10
|
+
*/
|
|
11
|
+
export declare enum DyFM_AudioChannel {
|
|
12
|
+
master = "master",
|
|
13
|
+
music = "music",
|
|
14
|
+
ambience = "ambience",
|
|
15
|
+
effects = "effects"
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=audio-channel.enum.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio-channel.enum.d.ts","sourceRoot":"","sources":["../../../../src/_modules/game/_enums/audio-channel.enum.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,oBAAY,iBAAiB;IAC3B,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,OAAO,YAAY;CACpB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DyFM_AudioChannel = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* A jatek-audio mixer csatornai.
|
|
6
|
+
*
|
|
7
|
+
* A flotta NEGY jateka egymastol fuggetlenul ugyanezt a negy csatornat vezette be
|
|
8
|
+
* (Prototyper: Room Cats / Cell Stage / Portalhold, plusz a Hero Coordinator) — ez az
|
|
9
|
+
* enum a kanonikus nevezektan, amire mindegyik ratert.
|
|
10
|
+
*
|
|
11
|
+
* A `master` NEM onallo hangsav: minden csatorna effektiv hangereje a sajat erteke
|
|
12
|
+
* SZOROZVA a master-rel (lasd `DyFM_AudioMixer_Util.getEffectiveVolume`).
|
|
13
|
+
*/
|
|
14
|
+
var DyFM_AudioChannel;
|
|
15
|
+
(function (DyFM_AudioChannel) {
|
|
16
|
+
DyFM_AudioChannel["master"] = "master";
|
|
17
|
+
DyFM_AudioChannel["music"] = "music";
|
|
18
|
+
DyFM_AudioChannel["ambience"] = "ambience";
|
|
19
|
+
DyFM_AudioChannel["effects"] = "effects";
|
|
20
|
+
})(DyFM_AudioChannel || (exports.DyFM_AudioChannel = DyFM_AudioChannel = {}));
|
|
21
|
+
//# sourceMappingURL=audio-channel.enum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio-channel.enum.js","sourceRoot":"","sources":["../../../../src/_modules/game/_enums/audio-channel.enum.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;GASG;AACH,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAC3B,sCAAiB,CAAA;IACjB,oCAAe,CAAA;IACf,0CAAqB,CAAA;IACrB,wCAAmB,CAAA;AACrB,CAAC,EALW,iBAAiB,iCAAjB,iBAAiB,QAK5B"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A jatek-audio mixer beallitasai — csatornankent 0..1 hangero + globalis nemitas.
|
|
3
|
+
*
|
|
4
|
+
* **Miert bedrock:** ez az interfesz a flottaban NEGY helyen elt egymastol fuggetlenul,
|
|
5
|
+
* karakterre azonos alakban (`pcr-audio-settings.interface.ts`, `pcs-audio-settings.interface.ts`,
|
|
6
|
+
* `pg-audio-settings.interface.ts` + a Hero Coordinator sajat audio-service-e). Ez a kanonikus alak.
|
|
7
|
+
*
|
|
8
|
+
* **Mentheto:** tisztan JSON-serializalhato, tehat a jatek save-payload resze lehet.
|
|
9
|
+
* Reszleges/legacy payload-bol a `DyFM_AudioMixer_Util.merge()` allit elo teljes settingset.
|
|
10
|
+
*/
|
|
11
|
+
export interface DyFM_AudioMixer_Settings {
|
|
12
|
+
/** Fo-hangero (0..1) — minden csatornara szorzodik. */
|
|
13
|
+
master: number;
|
|
14
|
+
/** Zene-csatorna hangereje (0..1). */
|
|
15
|
+
music: number;
|
|
16
|
+
/** Kornyezeti hangok (ambience) csatorna hangereje (0..1). */
|
|
17
|
+
ambience: number;
|
|
18
|
+
/** Effekt-hangok csatorna hangereje (0..1). */
|
|
19
|
+
effects: number;
|
|
20
|
+
/** Globalis nemitas — ha true, minden effektiv hangero 0. */
|
|
21
|
+
muted: boolean;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=audio-mixer-settings.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio-mixer-settings.interface.d.ts","sourceRoot":"","sources":["../../../../src/_modules/game/_models/audio-mixer-settings.interface.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,MAAM,WAAW,wBAAwB;IACvC,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;IAEf,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IAEd,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;IAEjB,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAEhB,6DAA6D;IAC7D,KAAK,EAAE,OAAO,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio-mixer-settings.interface.js","sourceRoot":"","sources":["../../../../src/_modules/game/_models/audio-mixer-settings.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A `DyFM_SeededRandom` teljes belso allapota — 4 db 32-bites egesz (sfc32).
|
|
3
|
+
*
|
|
4
|
+
* Tisztan JSON-serializalhato, tehat **a jatek save-payload resze lehet**: a mentes utan
|
|
5
|
+
* visszatoltve a veletlen-sorozat PONTOSAN ott folytatodik, ahol abbamaradt.
|
|
6
|
+
*/
|
|
7
|
+
export interface DyFM_SeededRandom_State {
|
|
8
|
+
/** sfc32 allapot-szo #1. */
|
|
9
|
+
a: number;
|
|
10
|
+
/** sfc32 allapot-szo #2. */
|
|
11
|
+
b: number;
|
|
12
|
+
/** sfc32 allapot-szo #3. */
|
|
13
|
+
c: number;
|
|
14
|
+
/** sfc32 counter-szo. */
|
|
15
|
+
d: number;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=seeded-random-state.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seeded-random-state.interface.d.ts","sourceRoot":"","sources":["../../../../src/_modules/game/_models/seeded-random-state.interface.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,4BAA4B;IAC5B,CAAC,EAAE,MAAM,CAAC;IAEV,4BAA4B;IAC5B,CAAC,EAAE,MAAM,CAAC;IAEV,4BAA4B;IAC5B,CAAC,EAAE,MAAM,CAAC;IAEV,yBAAyB;IACzB,CAAC,EAAE,MAAM,CAAC;CACX"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seeded-random-state.interface.js","sourceRoot":"","sources":["../../../../src/_modules/game/_models/seeded-random-state.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { DyFM_RandomWeight } from '../../../_models/interfaces/random-weight.interface';
|
|
2
|
+
import { DyFM_SeededRandom_State } from './seeded-random-state.interface';
|
|
3
|
+
/**
|
|
4
|
+
* Determinisztikus, **seed-elt** veletlenszam-generator mentheto allapottal.
|
|
5
|
+
*
|
|
6
|
+
* **Miert letezik:** a `DyFM_Random` `Math.random()`-ra epul — gyors es kenyelmes, de
|
|
7
|
+
* NEM reprodukalhato es nincs allapota. A flotta harom jateka ezert epitett maganak sajat
|
|
8
|
+
* PRNG-t (`sm-random.service.ts`, `random-seed.service.ts`, Portalhold `worldSeed`).
|
|
9
|
+
* Ez az osztaly az egysegesitett valtozat.
|
|
10
|
+
*
|
|
11
|
+
* **Algoritmus:** sfc32 (Small Fast Counting) — 128 bites allapot (4x32 bit), kivalo
|
|
12
|
+
* statisztikai minoseg, gyors, es az allapota trivialisan serializalhato. A string-seedet
|
|
13
|
+
* cyrb128 hash-eli 4x32 bitre, tehat `'my-world-seed'` es `42` egyarant ervenyes seed.
|
|
14
|
+
*
|
|
15
|
+
* **Mire jo (a jatekon tul):**
|
|
16
|
+
* - reprodukalhato vilag-generalas es mentheto RNG-allapot,
|
|
17
|
+
* - **determinisztikus e2e/QA** — ugyanaz a seed ugyanazt a jatekmenetet adja,
|
|
18
|
+
* - perf-osszemeres azonos bemeneten,
|
|
19
|
+
* - mock-adat es teszt-fixture stabil generalasa.
|
|
20
|
+
*
|
|
21
|
+
* **Hasznalat:**
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const rng = DyFM_SeededRandom.fromSeed('world-42');
|
|
24
|
+
* const damage: number = rng.nextInt(5, 15);
|
|
25
|
+
* const loot = rng.getRandomWeighted([
|
|
26
|
+
* { chance: 0.7, result: 'common' },
|
|
27
|
+
* { chance: 0.3, result: 'rare' },
|
|
28
|
+
* ]);
|
|
29
|
+
*
|
|
30
|
+
* // mentes
|
|
31
|
+
* save.rngState = rng.getState();
|
|
32
|
+
*
|
|
33
|
+
* // betoltes — a sorozat ott folytatodik, ahol abbamaradt
|
|
34
|
+
* const restored = DyFM_SeededRandom.fromState(save.rngState);
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* **Fontos:** ket kulon instance NEM befolyasolja egymast; ha determinisztikus alrendszereket
|
|
38
|
+
* akarsz (pl. vilag-generalas kulon a harci dobasoktol), adj mindegyiknek sajat instance-ot.
|
|
39
|
+
*/
|
|
40
|
+
export declare class DyFM_SeededRandom {
|
|
41
|
+
/** 2^32 — a 32 bites egeszek normalizalasahoz. */
|
|
42
|
+
private static readonly uint32Range;
|
|
43
|
+
/** sfc32 allapot-szo #1. */
|
|
44
|
+
private a;
|
|
45
|
+
/** sfc32 allapot-szo #2. */
|
|
46
|
+
private b;
|
|
47
|
+
/** sfc32 allapot-szo #3. */
|
|
48
|
+
private c;
|
|
49
|
+
/** sfc32 counter-szo. */
|
|
50
|
+
private d;
|
|
51
|
+
/**
|
|
52
|
+
* Kozvetlen allapotbol epit. A tipikus belepesi pont a `fromSeed()` / `fromState()`
|
|
53
|
+
* statikus factory.
|
|
54
|
+
*/
|
|
55
|
+
constructor(state: DyFM_SeededRandom_State);
|
|
56
|
+
/**
|
|
57
|
+
* Generator letrehozasa seed-bol. A seed lehet string (pl. mentett `worldSeed`) vagy szam.
|
|
58
|
+
* Ugyanaz a seed MINDIG ugyanazt a sorozatot adja.
|
|
59
|
+
*/
|
|
60
|
+
static fromSeed(seed: string | number): DyFM_SeededRandom;
|
|
61
|
+
/** Generator letrehozasa korabban elmentett allapotbol (save-betoltes). */
|
|
62
|
+
static fromState(state: DyFM_SeededRandom_State): DyFM_SeededRandom;
|
|
63
|
+
/**
|
|
64
|
+
* String seed -> 4x32 bites allapot (cyrb128). Determinisztikus es jol szoro:
|
|
65
|
+
* a `'a'` es `'b'` seed teljesen kulonbozo sorozatot ad.
|
|
66
|
+
*/
|
|
67
|
+
private static hashSeed;
|
|
68
|
+
/** A generator teljes allapotanak masolata — ezt kell a save-payloadba tenni. */
|
|
69
|
+
getState(): DyFM_SeededRandom_State;
|
|
70
|
+
/** Allapot visszatoltese — a sorozat innentol az elmentett ponton folytatodik. */
|
|
71
|
+
setState(state: DyFM_SeededRandom_State): void;
|
|
72
|
+
/**
|
|
73
|
+
* Fuggetlen masolat az AKTUALIS allapotrol — a klon ugyanazt a sorozatot folytatja,
|
|
74
|
+
* de a ket instance tovabbiakban nem befolyasolja egymast.
|
|
75
|
+
*
|
|
76
|
+
* Tipikus hasznalat: „mi lenne, ha" elore-szimulacio a fo-jatekmenet elrontasa nelkul.
|
|
77
|
+
*/
|
|
78
|
+
clone(): DyFM_SeededRandom;
|
|
79
|
+
/**
|
|
80
|
+
* A kovetkezo veletlen lebegopontos szam a `[0, 1)` tartomanybol (sfc32 mag).
|
|
81
|
+
* Minden mas metodus erre epul.
|
|
82
|
+
*/
|
|
83
|
+
nextFloat(): number;
|
|
84
|
+
/**
|
|
85
|
+
* Veletlen egesz a `[min, max]` tartomanybol (mindket veg ZART) — a `DyFM_Random.getRandomInt`
|
|
86
|
+
* seedelt parja. Ha `max < min`, a ket erteket felcsereli.
|
|
87
|
+
*/
|
|
88
|
+
nextInt(min: number, max: number): number;
|
|
89
|
+
/** A `DyFM_Random.getRandomInt` API-paritas alias — l. `nextInt`. */
|
|
90
|
+
getRandomInt(min: number, max: number): number;
|
|
91
|
+
/** Veletlen lebegopontos szam a `[min, max)` tartomanybol. */
|
|
92
|
+
nextRange(min: number, max: number): number;
|
|
93
|
+
/**
|
|
94
|
+
* Veletlen logikai ertek. A `chance` a `true` valoszinusege (0..1; default 0.5).
|
|
95
|
+
*/
|
|
96
|
+
nextBool(chance?: number): boolean;
|
|
97
|
+
/**
|
|
98
|
+
* Veletlen elem a listabol (`null`, ha a lista ures) — a `DyFM_Random.getRandomListElement`
|
|
99
|
+
* seedelt parja.
|
|
100
|
+
*/
|
|
101
|
+
getRandomListElement<T>(list: T[]): T | null;
|
|
102
|
+
/**
|
|
103
|
+
* Sulyozott veletlen elem (`null`, ha a lista ures) — a `DyFM_Random.getRandomWeighted`
|
|
104
|
+
* seedelt parja.
|
|
105
|
+
*
|
|
106
|
+
* **Elteres a `DyFM_Random`-tol:** ez a valtozat NEM mutalja a bemeneti tombot
|
|
107
|
+
* (a statikus verzio helyben rendez es atirja a `chance` ertekeket).
|
|
108
|
+
*/
|
|
109
|
+
getRandomWeighted<T>(weights: DyFM_RandomWeight<T>[]): T | null;
|
|
110
|
+
/**
|
|
111
|
+
* Sulyozott veletlen egesz — a `DyFM_Random.getRandomWeightedInt` seedelt parja.
|
|
112
|
+
* Ha a sulyozas nem ad talalatot, `nextInt(min, max)`-ra esik vissza.
|
|
113
|
+
*/
|
|
114
|
+
getRandomWeightedInt(min: number, max: number, weights: DyFM_RandomWeight<number>[]): number;
|
|
115
|
+
/**
|
|
116
|
+
* Fisher-Yates keveres — UJ tombot ad vissza, a bemenetet nem mutalja.
|
|
117
|
+
*/
|
|
118
|
+
shuffle<T>(list: T[]): T[];
|
|
119
|
+
/**
|
|
120
|
+
* `count` darab KULONBOZO elem kivalasztasa a listabol (sorrendje veletlen).
|
|
121
|
+
* Ha `count` nagyobb a lista hosszanal, a teljes (megkevert) listat adja vissza.
|
|
122
|
+
*/
|
|
123
|
+
pick<T>(list: T[], count: number): T[];
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=seeded-random.control-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seeded-random.control-model.d.ts","sourceRoot":"","sources":["../../../../src/_modules/game/_models/seeded-random.control-model.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qDAAqD,CAAC;AAExF,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAG1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,qBAAa,iBAAiB;IAE5B,kDAAkD;IAClD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAsB;IAEzD,4BAA4B;IAC5B,OAAO,CAAC,CAAC,CAAS;IAElB,4BAA4B;IAC5B,OAAO,CAAC,CAAC,CAAS;IAElB,4BAA4B;IAC5B,OAAO,CAAC,CAAC,CAAS;IAElB,yBAAyB;IACzB,OAAO,CAAC,CAAC,CAAS;IAElB;;;OAGG;gBACS,KAAK,EAAE,uBAAuB;IAgB1C;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,iBAAiB;IAYzD,2EAA2E;IAC3E,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,uBAAuB,GAAG,iBAAiB;IAInE;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ;IA4BvB,iFAAiF;IACjF,QAAQ,IAAI,uBAAuB;IAInC,kFAAkF;IAClF,QAAQ,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI;IAgB9C;;;;;OAKG;IACH,KAAK,IAAI,iBAAiB;IAI1B;;;OAGG;IACH,SAAS,IAAI,MAAM;IAiBnB;;;OAGG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAOzC,qEAAqE;IACrE,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAI9C,8DAA8D;IAC9D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAO3C;;OAEG;IACH,QAAQ,CAAC,MAAM,GAAE,MAAY,GAAG,OAAO;IAIvC;;;OAGG;IACH,oBAAoB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI;IAQ5C;;;;;;OAMG;IACH,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI;IA2B/D;;;OAGG;IACH,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM;IAU5F;;OAEG;IACH,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE;IAiB1B;;;OAGG;IACH,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE;CAOvC"}
|