@futdevpro/fsm-dynamo 1.16.31 → 1.16.33
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-scale.util.d.ts +57 -0
- package/build/_modules/game/_collections/audio-scale.util.d.ts.map +1 -0
- package/build/_modules/game/_collections/audio-scale.util.js +105 -0
- package/build/_modules/game/_collections/audio-scale.util.js.map +1 -0
- package/build/_modules/game/_enums/audio-channel.enum.d.ts +8 -4
- package/build/_modules/game/_enums/audio-channel.enum.d.ts.map +1 -1
- package/build/_modules/game/_enums/audio-channel.enum.js +8 -4
- package/build/_modules/game/_enums/audio-channel.enum.js.map +1 -1
- package/build/_modules/game/_models/audio-mixer-config.interface.d.ts +37 -0
- package/build/_modules/game/_models/audio-mixer-config.interface.d.ts.map +1 -0
- package/build/_modules/game/_models/audio-mixer-config.interface.js +3 -0
- package/build/_modules/game/_models/audio-mixer-config.interface.js.map +1 -0
- package/build/_modules/game/_models/audio-mixer-state.interface.d.ts +19 -0
- package/build/_modules/game/_models/audio-mixer-state.interface.d.ts.map +1 -0
- package/build/_modules/game/_models/audio-mixer-state.interface.js +3 -0
- package/build/_modules/game/_models/audio-mixer-state.interface.js.map +1 -0
- package/build/_modules/game/_models/audio-mixer.control-model.d.ts +123 -0
- package/build/_modules/game/_models/audio-mixer.control-model.d.ts.map +1 -0
- package/build/_modules/game/_models/audio-mixer.control-model.js +312 -0
- package/build/_modules/game/_models/audio-mixer.control-model.js.map +1 -0
- package/build/_modules/game/_models/audio-scale.interface.d.ts +18 -0
- package/build/_modules/game/_models/audio-scale.interface.d.ts.map +1 -0
- package/build/_modules/game/_models/audio-scale.interface.js +3 -0
- package/build/_modules/game/_models/audio-scale.interface.js.map +1 -0
- package/build/_modules/game/index.d.ts +5 -0
- package/build/_modules/game/index.d.ts.map +1 -1
- package/build/_modules/game/index.js +5 -0
- package/build/_modules/game/index.js.map +1 -1
- package/package.json +1 -1
- package/src/_modules/game/_collections/audio-scale.util.spec.ts +140 -0
- package/src/_modules/game/_collections/audio-scale.util.ts +129 -0
- package/src/_modules/game/_enums/audio-channel.enum.ts +8 -4
- package/src/_modules/game/_models/audio-mixer-config.interface.ts +45 -0
- package/src/_modules/game/_models/audio-mixer-state.interface.ts +23 -0
- package/src/_modules/game/_models/audio-mixer.control-model.spec.ts +306 -0
- package/src/_modules/game/_models/audio-mixer.control-model.ts +378 -0
- package/src/_modules/game/_models/audio-scale.interface.ts +21 -0
- package/src/_modules/game/index.ts +5 -0
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DyFM_AudioMixer_ControlModel = void 0;
|
|
4
|
+
const error_control_model_1 = require("../../../_models/control-models/error.control-model");
|
|
5
|
+
const audio_scale_util_1 = require("../_collections/audio-scale.util");
|
|
6
|
+
/**
|
|
7
|
+
* **Csatorna- es skala-agnosztikus** jatek-audio mixer: a projekt deklaralja a sajat
|
|
8
|
+
* csatornait es szamabrazolasat, a modell pedig kezeli az allapotot es kiszamolja az
|
|
9
|
+
* effektiv hangerot.
|
|
10
|
+
*
|
|
11
|
+
* **Miert letezik a `DyFM_AudioMixer_Util` (round-1) mellett:** az a util negy FIX csatornara
|
|
12
|
+
* (`music` / `ambience` / `effects`) es `0..1` skalara epul. Ez a Prototyper harom prototipusara
|
|
13
|
+
* igaz, de a **Hero Coordinator** csatornai `music` / `dialog` / `interface`, az ertekei pedig
|
|
14
|
+
* `0-100` egeszek. A fix alak ott csatorna-vesztessel es kotelezo adat-migracioval jarna.
|
|
15
|
+
* Ez a modell mindkettot kiszolgalja; a round-1 alak `createClassic()` presetkent tovabb el.
|
|
16
|
+
*
|
|
17
|
+
* **Rendereles-agnosztikus:** NINCS DOM, Web Audio, Angular vagy Node fuggese. A tenyleges
|
|
18
|
+
* lejatszas (HTMLAudioElement, Web Audio `GainNode`, vagy barmi mas) a fogyasztoe — ez a
|
|
19
|
+
* **modell + szamitas**.
|
|
20
|
+
*
|
|
21
|
+
* **Hasznalat (Hero Coordinator-stilus, 0-100 egesz):**
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const mixer = DyFM_AudioMixer_ControlModel.createPercent(['music', 'dialog', 'interface'], {
|
|
24
|
+
* music: 36, dialog: 84, interface: 68,
|
|
25
|
+
* }, 72);
|
|
26
|
+
*
|
|
27
|
+
* let state = mixer.merge(JSON.parse(localStorage.getItem('audio') ?? 'null'));
|
|
28
|
+
* gainNode.gain.value = mixer.getEffectiveVolume(state, 'interface'); // MINDIG 0..1
|
|
29
|
+
*
|
|
30
|
+
* state = mixer.withChannelVolume(state, 'music', 40); // a sajat skalajan adjuk meg
|
|
31
|
+
* localStorage.setItem('audio', JSON.stringify(state));
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* **Hasznalat (Prototyper-stilus, 0..1):**
|
|
35
|
+
* ```typescript
|
|
36
|
+
* const mixer = DyFM_AudioMixer_ControlModel.createClassic();
|
|
37
|
+
* const state = DyFM_AudioMixer_ControlModel.fromClassicSettings(legacySettings);
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
class DyFM_AudioMixer_ControlModel {
|
|
41
|
+
/** A `master` fenntartott nev — nem lehet sima csatorna, mert minden csatornara szorzodik. */
|
|
42
|
+
static masterChannel = 'master';
|
|
43
|
+
/** A validalt, sajat peldany-config (a hivo altal atadott objektumtol fuggetlen masolat). */
|
|
44
|
+
config;
|
|
45
|
+
/**
|
|
46
|
+
* A config validalasa **konstruktor-idoben** tortenik: egy elgepelt csatorna-nev vagy hianyzo
|
|
47
|
+
* skala igy a jatek inditasakor derul ki, nem hangleajatszas kozben.
|
|
48
|
+
*/
|
|
49
|
+
constructor(config) {
|
|
50
|
+
if (!config || !Array.isArray(config.channels) || !config.channels.length) {
|
|
51
|
+
throw new error_control_model_1.DyFM_Error({
|
|
52
|
+
errorCode: 'DYFM-AUDIO-MIXER-001',
|
|
53
|
+
message: 'DyFM_AudioMixer_ControlModel: config.channels must be a non-empty string array',
|
|
54
|
+
additionalContent: { config: config },
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
const seen = [];
|
|
58
|
+
for (const channel of config.channels) {
|
|
59
|
+
if (typeof channel !== 'string' || !channel.length) {
|
|
60
|
+
throw new error_control_model_1.DyFM_Error({
|
|
61
|
+
errorCode: 'DYFM-AUDIO-MIXER-002',
|
|
62
|
+
message: 'DyFM_AudioMixer_ControlModel: every channel name must be a non-empty string',
|
|
63
|
+
additionalContent: { channels: config.channels },
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
if (channel === DyFM_AudioMixer_ControlModel.masterChannel) {
|
|
67
|
+
throw new error_control_model_1.DyFM_Error({
|
|
68
|
+
errorCode: 'DYFM-AUDIO-MIXER-003',
|
|
69
|
+
message: 'DyFM_AudioMixer_ControlModel: "master" is reserved and must not be listed in channels',
|
|
70
|
+
additionalContent: { channels: config.channels },
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
if (seen.includes(channel)) {
|
|
74
|
+
throw new error_control_model_1.DyFM_Error({
|
|
75
|
+
errorCode: 'DYFM-AUDIO-MIXER-004',
|
|
76
|
+
message: 'DyFM_AudioMixer_ControlModel: duplicate channel name',
|
|
77
|
+
additionalContent: { channel: channel, channels: config.channels },
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
seen.push(channel);
|
|
81
|
+
}
|
|
82
|
+
const scale = config.scale && typeof config.scale.max === 'number'
|
|
83
|
+
? { max: config.scale.max, integer: config.scale.integer === true }
|
|
84
|
+
: audio_scale_util_1.DyFM_AudioScale_Util.getUnitScale();
|
|
85
|
+
this.config = {
|
|
86
|
+
channels: [...config.channels],
|
|
87
|
+
scale: scale,
|
|
88
|
+
defaults: config.defaults ? { ...config.defaults } : {},
|
|
89
|
+
defaultMaster: config.defaultMaster,
|
|
90
|
+
defaultChannelVolume: config.defaultChannelVolume,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* A round-1 `DyFM_AudioMixer_Settings` alakjaval egyenerteku mixer (`music` / `ambience` /
|
|
95
|
+
* `effects`, `0..1` skala, 0.8 default). A Prototyper-stilusu fogyasztoknak.
|
|
96
|
+
*/
|
|
97
|
+
static createClassic() {
|
|
98
|
+
return new DyFM_AudioMixer_ControlModel({
|
|
99
|
+
channels: ['music', 'ambience', 'effects'],
|
|
100
|
+
scale: audio_scale_util_1.DyFM_AudioScale_Util.getUnitScale(),
|
|
101
|
+
defaultMaster: audio_scale_util_1.DyFM_AudioScale_Util.defaultRatio,
|
|
102
|
+
defaultChannelVolume: audio_scale_util_1.DyFM_AudioScale_Util.defaultRatio,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* `0-100` egesz skalaju mixer tetszoleges csatorna-keszlettel — a Hero Coordinator-stilusu
|
|
107
|
+
* fogyasztoknak, akik igy **adat-migracio nelkul** vehetik hasznalatba a bedrock modellt.
|
|
108
|
+
*/
|
|
109
|
+
static createPercent(channels, defaults, defaultMaster) {
|
|
110
|
+
return new DyFM_AudioMixer_ControlModel({
|
|
111
|
+
channels: channels,
|
|
112
|
+
scale: audio_scale_util_1.DyFM_AudioScale_Util.getPercentScale(),
|
|
113
|
+
defaults: defaults,
|
|
114
|
+
defaultMaster: defaultMaster,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
/** A round-1 fix alakot atalakitja a nyitott allapot-alakra (migracios hid). */
|
|
118
|
+
static fromClassicSettings(settings) {
|
|
119
|
+
const safe = settings ?? {};
|
|
120
|
+
const scale = audio_scale_util_1.DyFM_AudioScale_Util.getUnitScale();
|
|
121
|
+
return {
|
|
122
|
+
master: audio_scale_util_1.DyFM_AudioScale_Util.toUnit(safe.master, scale),
|
|
123
|
+
channels: {
|
|
124
|
+
music: audio_scale_util_1.DyFM_AudioScale_Util.toUnit(safe.music, scale),
|
|
125
|
+
ambience: audio_scale_util_1.DyFM_AudioScale_Util.toUnit(safe.ambience, scale),
|
|
126
|
+
effects: audio_scale_util_1.DyFM_AudioScale_Util.toUnit(safe.effects, scale),
|
|
127
|
+
},
|
|
128
|
+
muted: safe.muted === true,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* A nyitott allapot-alakot visszaalakitja a round-1 fix alakra (migracios hid visszafele).
|
|
133
|
+
*
|
|
134
|
+
* **Peldany-metodus**, mert a helyes konverziohoz ismerni kell a peldany skalajat: egy
|
|
135
|
+
* `0-100`-as allapotot igy is `0..1`-re normalizal, ahogy a round-1 alak varja. (Statikus
|
|
136
|
+
* valtozatban ez nemaan rossz erteket adna.)
|
|
137
|
+
*
|
|
138
|
+
* A klasszikus keszleten kivuli csatornak (pl. `dialog`) **elvesznek** — ez a round-1 alak
|
|
139
|
+
* korlatja, nem a konverzioe.
|
|
140
|
+
*/
|
|
141
|
+
toClassicSettings(state) {
|
|
142
|
+
const safe = this.merge(state);
|
|
143
|
+
const scale = this.config.scale;
|
|
144
|
+
return {
|
|
145
|
+
master: audio_scale_util_1.DyFM_AudioScale_Util.toUnit(safe.master, scale),
|
|
146
|
+
music: audio_scale_util_1.DyFM_AudioScale_Util.toUnit(safe.channels['music'], scale),
|
|
147
|
+
ambience: audio_scale_util_1.DyFM_AudioScale_Util.toUnit(safe.channels['ambience'], scale),
|
|
148
|
+
effects: audio_scale_util_1.DyFM_AudioScale_Util.toUnit(safe.channels['effects'], scale),
|
|
149
|
+
muted: safe.muted === true,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
/** A peldany configja (masolat — a mutalasa nem hat vissza a modellre). */
|
|
153
|
+
getConfig() {
|
|
154
|
+
return {
|
|
155
|
+
channels: [...this.config.channels],
|
|
156
|
+
scale: { max: this.config.scale.max, integer: this.config.scale.integer },
|
|
157
|
+
defaults: { ...this.config.defaults },
|
|
158
|
+
defaultMaster: this.config.defaultMaster,
|
|
159
|
+
defaultChannelVolume: this.config.defaultChannelVolume,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
/** A deklaralt csatorna-nevek (a `master` nelkul). */
|
|
163
|
+
getChannels() {
|
|
164
|
+
return [...this.config.channels];
|
|
165
|
+
}
|
|
166
|
+
/** Igaz, ha a nev a deklaralt csatornak kozott van (a `master` NEM az). */
|
|
167
|
+
hasChannel(channel) {
|
|
168
|
+
return this.config.channels.includes(channel);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Alapertelmezett allapot a **sajat skalan**. Minden hivas UJ objektumot ad vissza, hogy a
|
|
172
|
+
* hivo szabadon mutalhassa.
|
|
173
|
+
*/
|
|
174
|
+
getDefaults() {
|
|
175
|
+
const channels = {};
|
|
176
|
+
for (const channel of this.config.channels) {
|
|
177
|
+
channels[channel] = this.getDefaultChannelVolume(channel);
|
|
178
|
+
}
|
|
179
|
+
return {
|
|
180
|
+
master: this.getDefaultMaster(),
|
|
181
|
+
channels: channels,
|
|
182
|
+
muted: false,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Reszleges / hianyzo / serult allapotbol teljes, ervenyes allapotot allit elo: a hianyzo
|
|
187
|
+
* csatornak a defaultot kapjak, az ertekek a sajat skalara szorulnak.
|
|
188
|
+
*
|
|
189
|
+
* **Ez a migracios biztositek:** egy regi payload, ami meg nem ismert egy kesobb bevezetett
|
|
190
|
+
* csatornat, igy is betoltheto marad. A **nem deklaralt** csatornak kiesnek — igy egy
|
|
191
|
+
* eltavolitott csatorna nem szivarog vissza a mentesbol. Serult (NaN / nem-szam) ertek eseten
|
|
192
|
+
* a csatorna DEFAULT-jat kapja, nem 0-t — egy hibas mentes ne nemitson el csendben.
|
|
193
|
+
*
|
|
194
|
+
* **Figyelem:** ez a nyitott (`channels` rekord) alakot varja. A round-1 LAPOS alakot
|
|
195
|
+
* (`{ master, music, ambience, effects, muted }`) eloszor a `fromClassicSettings()`-szel
|
|
196
|
+
* kell atalakitani — kulonben a csatornak a defaultot kapjak.
|
|
197
|
+
*/
|
|
198
|
+
merge(partial) {
|
|
199
|
+
const defaults = this.getDefaults();
|
|
200
|
+
if (!partial) {
|
|
201
|
+
return defaults;
|
|
202
|
+
}
|
|
203
|
+
const source = partial.channels ?? {};
|
|
204
|
+
const channels = {};
|
|
205
|
+
for (const channel of this.config.channels) {
|
|
206
|
+
const raw = source[channel];
|
|
207
|
+
channels[channel] = raw === undefined || raw === null
|
|
208
|
+
? defaults.channels[channel]
|
|
209
|
+
: audio_scale_util_1.DyFM_AudioScale_Util.clampToScale(raw, this.config.scale, defaults.channels[channel]);
|
|
210
|
+
}
|
|
211
|
+
const master = partial.master === undefined || partial.master === null
|
|
212
|
+
? defaults.master
|
|
213
|
+
: audio_scale_util_1.DyFM_AudioScale_Util.clampToScale(partial.master, this.config.scale, defaults.master);
|
|
214
|
+
return {
|
|
215
|
+
master: master,
|
|
216
|
+
channels: channels,
|
|
217
|
+
muted: partial.muted === true,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Egy csatorna **effektiv** hangereje `0..1`-ben — ezt varja a `HTMLAudioElement.volume` es a
|
|
222
|
+
* Web Audio `GainNode.gain.value`, fuggetlenul attol, milyen skalan tarol a projekt.
|
|
223
|
+
*
|
|
224
|
+
* A csatorna sajat erteke szorozva a master-rel; nemitas eseten mindig 0. A `'master'` nevre
|
|
225
|
+
* a master sajat (normalizalt) erteket adja vissza, nem negyzetre emelve.
|
|
226
|
+
*
|
|
227
|
+
* **Dob**, ha a csatorna nincs deklaralva — egy elgepelt csatorna-nev igy nem nemul el
|
|
228
|
+
* csendben, hanem azonnal kiderul (`core-rich-error-handling`).
|
|
229
|
+
*/
|
|
230
|
+
getEffectiveVolume(state, channel) {
|
|
231
|
+
if (channel !== DyFM_AudioMixer_ControlModel.masterChannel && !this.hasChannel(channel)) {
|
|
232
|
+
throw new error_control_model_1.DyFM_Error({
|
|
233
|
+
errorCode: 'DYFM-AUDIO-MIXER-005',
|
|
234
|
+
message: 'DyFM_AudioMixer_ControlModel.getEffectiveVolume: unknown channel',
|
|
235
|
+
additionalContent: { channel: channel, declaredChannels: this.config.channels },
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
const safe = this.merge(state);
|
|
239
|
+
if (safe.muted) {
|
|
240
|
+
return 0;
|
|
241
|
+
}
|
|
242
|
+
const masterUnit = audio_scale_util_1.DyFM_AudioScale_Util.toUnit(safe.master, this.config.scale);
|
|
243
|
+
if (channel === DyFM_AudioMixer_ControlModel.masterChannel) {
|
|
244
|
+
return masterUnit;
|
|
245
|
+
}
|
|
246
|
+
const channelUnit = audio_scale_util_1.DyFM_AudioScale_Util.toUnit(safe.channels[channel], this.config.scale);
|
|
247
|
+
return audio_scale_util_1.DyFM_AudioScale_Util.clampUnit(channelUnit * masterUnit);
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Egy csatorna hangerejenek beallitasa a **sajat skalan** — UJ allapot-objektumot ad vissza
|
|
251
|
+
* (immutable update), hogy signal-/state-alapu tarolokban is biztonsagos legyen.
|
|
252
|
+
*/
|
|
253
|
+
withChannelVolume(state, channel, volume) {
|
|
254
|
+
if (!this.hasChannel(channel)) {
|
|
255
|
+
throw new error_control_model_1.DyFM_Error({
|
|
256
|
+
errorCode: 'DYFM-AUDIO-MIXER-006',
|
|
257
|
+
message: 'DyFM_AudioMixer_ControlModel.withChannelVolume: unknown channel',
|
|
258
|
+
additionalContent: { channel: channel, declaredChannels: this.config.channels },
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
const next = this.merge(state);
|
|
262
|
+
next.channels[channel] = audio_scale_util_1.DyFM_AudioScale_Util.clampToScale(volume, this.config.scale);
|
|
263
|
+
return next;
|
|
264
|
+
}
|
|
265
|
+
/** A master beallitasa a **sajat skalan** — UJ allapot-objektumot ad vissza. */
|
|
266
|
+
withMasterVolume(state, volume) {
|
|
267
|
+
const next = this.merge(state);
|
|
268
|
+
next.master = audio_scale_util_1.DyFM_AudioScale_Util.clampToScale(volume, this.config.scale);
|
|
269
|
+
return next;
|
|
270
|
+
}
|
|
271
|
+
/** Nemitas beallitasa — UJ allapot-objektumot ad vissza. */
|
|
272
|
+
withMuted(state, muted) {
|
|
273
|
+
const next = this.merge(state);
|
|
274
|
+
next.muted = muted === true;
|
|
275
|
+
return next;
|
|
276
|
+
}
|
|
277
|
+
/** Ket allapot ertek szerinti egyezese (mentes-szukseg / change-detection dontesehez). */
|
|
278
|
+
isEqual(a, b) {
|
|
279
|
+
const left = this.merge(a);
|
|
280
|
+
const right = this.merge(b);
|
|
281
|
+
if (left.master !== right.master || left.muted !== right.muted) {
|
|
282
|
+
return false;
|
|
283
|
+
}
|
|
284
|
+
for (const channel of this.config.channels) {
|
|
285
|
+
if (left.channels[channel] !== right.channels[channel]) {
|
|
286
|
+
return false;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
return true;
|
|
290
|
+
}
|
|
291
|
+
/** A master alapertelmezese a sajat skalan (config, kulonben a maximum 80%-a). */
|
|
292
|
+
getDefaultMaster() {
|
|
293
|
+
if (typeof this.config.defaultMaster === 'number' && !Number.isNaN(this.config.defaultMaster)) {
|
|
294
|
+
return audio_scale_util_1.DyFM_AudioScale_Util.clampToScale(this.config.defaultMaster, this.config.scale);
|
|
295
|
+
}
|
|
296
|
+
return audio_scale_util_1.DyFM_AudioScale_Util.fromUnit(audio_scale_util_1.DyFM_AudioScale_Util.defaultRatio, this.config.scale);
|
|
297
|
+
}
|
|
298
|
+
/** Egy csatorna alapertelmezese a sajat skalan (per-csatorna, kulonben kozos, kulonben 80%). */
|
|
299
|
+
getDefaultChannelVolume(channel) {
|
|
300
|
+
const perChannel = (this.config.defaults ?? {})[channel];
|
|
301
|
+
if (typeof perChannel === 'number' && !Number.isNaN(perChannel)) {
|
|
302
|
+
return audio_scale_util_1.DyFM_AudioScale_Util.clampToScale(perChannel, this.config.scale);
|
|
303
|
+
}
|
|
304
|
+
if (typeof this.config.defaultChannelVolume === 'number'
|
|
305
|
+
&& !Number.isNaN(this.config.defaultChannelVolume)) {
|
|
306
|
+
return audio_scale_util_1.DyFM_AudioScale_Util.clampToScale(this.config.defaultChannelVolume, this.config.scale);
|
|
307
|
+
}
|
|
308
|
+
return audio_scale_util_1.DyFM_AudioScale_Util.fromUnit(audio_scale_util_1.DyFM_AudioScale_Util.defaultRatio, this.config.scale);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
exports.DyFM_AudioMixer_ControlModel = DyFM_AudioMixer_ControlModel;
|
|
312
|
+
//# sourceMappingURL=audio-mixer.control-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio-mixer.control-model.js","sourceRoot":"","sources":["../../../../src/_modules/game/_models/audio-mixer.control-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Egy audio-mixer csatorna-ertekeinek **skalaja** — a projekt sajat szamabrazolasa.
|
|
3
|
+
*
|
|
4
|
+
* **Miert kell:** a flotta ket kulonbozo skalat hasznal. A Prototyper prototipusai `0..1`
|
|
5
|
+
* lebegopontos erteket tarolnak, a Hero Coordinator viszont `0-100` egeszet (`Math.round`-dal
|
|
6
|
+
* clampelve, igy is van elmentve a localStorage-ban). Ha a bedrock egyetlen skalat kenyszeritene,
|
|
7
|
+
* az egyik oldalnak **adatot kellene migralnia** — ezt kerulik el ezek a leirok.
|
|
8
|
+
*
|
|
9
|
+
* A modell befele mindig `0..1`-re normalizal (a lejatszo API-k ezt varjak), kifele viszont a
|
|
10
|
+
* projekt sajat skalajan tarol es ad vissza.
|
|
11
|
+
*/
|
|
12
|
+
export interface DyFM_AudioScale {
|
|
13
|
+
/** A csatorna-ertek maximuma a projekt sajat skalajan (pl. `1` vagy `100`). */
|
|
14
|
+
max: number;
|
|
15
|
+
/** Ha `true`, a sajat skalara visszaalakitott ertek egeszre kerekitodik (0-100 UI-hoz). */
|
|
16
|
+
integer: boolean;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=audio-scale.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio-scale.interface.d.ts","sourceRoot":"","sources":["../../../../src/_modules/game/_models/audio-scale.interface.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe;IAE9B,+EAA+E;IAC/E,GAAG,EAAE,MAAM,CAAC;IAEZ,2FAA2F;IAC3F,OAAO,EAAE,OAAO,CAAC;CAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio-scale.interface.js","sourceRoot":"","sources":["../../../../src/_modules/game/_models/audio-scale.interface.ts"],"names":[],"mappings":""}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
export * from './_enums/audio-channel.enum';
|
|
2
|
+
export * from './_models/audio-mixer-config.interface';
|
|
2
3
|
export * from './_models/audio-mixer-settings.interface';
|
|
4
|
+
export * from './_models/audio-mixer-state.interface';
|
|
5
|
+
export * from './_models/audio-mixer.control-model';
|
|
6
|
+
export * from './_models/audio-scale.interface';
|
|
3
7
|
export * from './_models/seeded-random-state.interface';
|
|
4
8
|
export * from './_models/seeded-random.control-model';
|
|
5
9
|
export * from './_collections/audio-mixer.util';
|
|
10
|
+
export * from './_collections/audio-scale.util';
|
|
6
11
|
//# 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,0CAA0C,CAAC;AACzD,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AAGtD,cAAc,iCAAiC,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;AAGtD,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC"}
|
|
@@ -4,9 +4,14 @@ const tslib_1 = require("tslib");
|
|
|
4
4
|
// ENUMS
|
|
5
5
|
tslib_1.__exportStar(require("./_enums/audio-channel.enum"), exports);
|
|
6
6
|
// MODELS
|
|
7
|
+
tslib_1.__exportStar(require("./_models/audio-mixer-config.interface"), exports);
|
|
7
8
|
tslib_1.__exportStar(require("./_models/audio-mixer-settings.interface"), exports);
|
|
9
|
+
tslib_1.__exportStar(require("./_models/audio-mixer-state.interface"), exports);
|
|
10
|
+
tslib_1.__exportStar(require("./_models/audio-mixer.control-model"), exports);
|
|
11
|
+
tslib_1.__exportStar(require("./_models/audio-scale.interface"), exports);
|
|
8
12
|
tslib_1.__exportStar(require("./_models/seeded-random-state.interface"), exports);
|
|
9
13
|
tslib_1.__exportStar(require("./_models/seeded-random.control-model"), exports);
|
|
10
14
|
// COLLECTIONS
|
|
11
15
|
tslib_1.__exportStar(require("./_collections/audio-mixer.util"), exports);
|
|
16
|
+
tslib_1.__exportStar(require("./_collections/audio-scale.util"), exports);
|
|
12
17
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/_modules/game/index.ts"],"names":[],"mappings":";;;AAAA,QAAQ;AACR,sEAA4C;AAE5C,SAAS;AACT,mFAAyD;AACzD,kFAAwD;AACxD,gFAAsD;AAEtD,cAAc;AACd,0EAAgD"}
|
|
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;AAEtD,cAAc;AACd,0EAAgD;AAChD,0EAAgD"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@futdevpro/fsm-dynamo",
|
|
3
|
-
"version": "01.16.
|
|
3
|
+
"version": "01.16.33",
|
|
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",
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
|
|
2
|
+
import { DyFM_AudioScale } from '../_models/audio-scale.interface';
|
|
3
|
+
|
|
4
|
+
import { DyFM_AudioScale_Util } from './audio-scale.util';
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
describe('DyFM_AudioScale_Util', (): void => {
|
|
8
|
+
|
|
9
|
+
describe('getUnitScale / getPercentScale', (): void => {
|
|
10
|
+
|
|
11
|
+
it('a unit-skala 0..1, nem egesz', (): void => {
|
|
12
|
+
const scale: DyFM_AudioScale = DyFM_AudioScale_Util.getUnitScale();
|
|
13
|
+
|
|
14
|
+
expect(scale.max).toBe(1);
|
|
15
|
+
expect(scale.integer).toBe(false);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it('a percent-skala 0-100, egesz', (): void => {
|
|
19
|
+
const scale: DyFM_AudioScale = DyFM_AudioScale_Util.getPercentScale();
|
|
20
|
+
|
|
21
|
+
expect(scale.max).toBe(100);
|
|
22
|
+
expect(scale.integer).toBe(true);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('minden hivas UJ objektumot ad (nincs megosztott referencia)', (): void => {
|
|
26
|
+
const first: DyFM_AudioScale = DyFM_AudioScale_Util.getPercentScale();
|
|
27
|
+
const second: DyFM_AudioScale = DyFM_AudioScale_Util.getPercentScale();
|
|
28
|
+
|
|
29
|
+
first.max = 7;
|
|
30
|
+
|
|
31
|
+
expect(second.max).toBe(100);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
describe('toUnit', (): void => {
|
|
36
|
+
|
|
37
|
+
it('percent skalarol 0..1-re normalizal', (): void => {
|
|
38
|
+
const scale: DyFM_AudioScale = DyFM_AudioScale_Util.getPercentScale();
|
|
39
|
+
|
|
40
|
+
expect(DyFM_AudioScale_Util.toUnit(0, scale)).toBe(0);
|
|
41
|
+
expect(DyFM_AudioScale_Util.toUnit(72, scale)).toBeCloseTo(0.72, 10);
|
|
42
|
+
expect(DyFM_AudioScale_Util.toUnit(100, scale)).toBe(1);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it('unit skalan valtozatlanul hagy', (): void => {
|
|
46
|
+
const scale: DyFM_AudioScale = DyFM_AudioScale_Util.getUnitScale();
|
|
47
|
+
|
|
48
|
+
expect(DyFM_AudioScale_Util.toUnit(0.35, scale)).toBeCloseTo(0.35, 10);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it('a tartomanyon kivuli erteket beszoritja', (): void => {
|
|
52
|
+
const scale: DyFM_AudioScale = DyFM_AudioScale_Util.getPercentScale();
|
|
53
|
+
|
|
54
|
+
expect(DyFM_AudioScale_Util.toUnit(-40, scale)).toBe(0);
|
|
55
|
+
expect(DyFM_AudioScale_Util.toUnit(400, scale)).toBe(1);
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
it('ervenytelen bemenetre a fallback-et adja (NaN nem szivaroghat a lejatszoba)', (): void => {
|
|
59
|
+
const scale: DyFM_AudioScale = DyFM_AudioScale_Util.getPercentScale();
|
|
60
|
+
|
|
61
|
+
expect(DyFM_AudioScale_Util.toUnit(NaN, scale, 0.5)).toBe(0.5);
|
|
62
|
+
expect(DyFM_AudioScale_Util.toUnit(undefined as unknown as number, scale, 0.5)).toBe(0.5);
|
|
63
|
+
expect(DyFM_AudioScale_Util.toUnit('80' as unknown as number, scale, 0.5)).toBe(0.5);
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
it('serult skalaval sem oszt nullaval es nem ad NaN-t', (): void => {
|
|
67
|
+
const broken: DyFM_AudioScale = { max: 0, integer: false };
|
|
68
|
+
|
|
69
|
+
expect(DyFM_AudioScale_Util.toUnit(0.5, broken)).toBe(0.5);
|
|
70
|
+
expect(Number.isNaN(DyFM_AudioScale_Util.toUnit(1, broken))).toBe(false);
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
describe('fromUnit', (): void => {
|
|
75
|
+
|
|
76
|
+
it('percent skalara egeszre kerekit', (): void => {
|
|
77
|
+
const scale: DyFM_AudioScale = DyFM_AudioScale_Util.getPercentScale();
|
|
78
|
+
|
|
79
|
+
expect(DyFM_AudioScale_Util.fromUnit(0.725, scale)).toBe(73);
|
|
80
|
+
expect(DyFM_AudioScale_Util.fromUnit(0, scale)).toBe(0);
|
|
81
|
+
expect(DyFM_AudioScale_Util.fromUnit(1, scale)).toBe(100);
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
it('unit skalan NEM kerekit', (): void => {
|
|
85
|
+
const scale: DyFM_AudioScale = DyFM_AudioScale_Util.getUnitScale();
|
|
86
|
+
|
|
87
|
+
expect(DyFM_AudioScale_Util.fromUnit(0.725, scale)).toBeCloseTo(0.725, 10);
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
it('ervenytelen bemenetre 0-t ad', (): void => {
|
|
91
|
+
const scale: DyFM_AudioScale = DyFM_AudioScale_Util.getPercentScale();
|
|
92
|
+
|
|
93
|
+
expect(DyFM_AudioScale_Util.fromUnit(NaN, scale)).toBe(0);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
describe('oda-vissza konverzio', (): void => {
|
|
98
|
+
|
|
99
|
+
it('percent egesz erteket VALTOZATLANUL ad vissza (nincs adat-drift a HC mentesen)', (): void => {
|
|
100
|
+
const scale: DyFM_AudioScale = DyFM_AudioScale_Util.getPercentScale();
|
|
101
|
+
const values: number[] = [0, 1, 36, 68, 72, 84, 99, 100];
|
|
102
|
+
|
|
103
|
+
for (const value of values) {
|
|
104
|
+
const roundTrip: number = DyFM_AudioScale_Util.fromUnit(
|
|
105
|
+
DyFM_AudioScale_Util.toUnit(value, scale),
|
|
106
|
+
scale,
|
|
107
|
+
);
|
|
108
|
+
|
|
109
|
+
expect(roundTrip).toBe(value);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
describe('clampToScale', (): void => {
|
|
115
|
+
|
|
116
|
+
it('a sajat skala tartomanyaba szorit es egesz skalan kerekit', (): void => {
|
|
117
|
+
const scale: DyFM_AudioScale = DyFM_AudioScale_Util.getPercentScale();
|
|
118
|
+
|
|
119
|
+
expect(DyFM_AudioScale_Util.clampToScale(-5, scale)).toBe(0);
|
|
120
|
+
expect(DyFM_AudioScale_Util.clampToScale(150, scale)).toBe(100);
|
|
121
|
+
expect(DyFM_AudioScale_Util.clampToScale(72.4, scale)).toBe(72);
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
it('ervenytelen erteket 0-ra visz (nem a fallback-re)', (): void => {
|
|
125
|
+
const scale: DyFM_AudioScale = DyFM_AudioScale_Util.getPercentScale();
|
|
126
|
+
|
|
127
|
+
expect(DyFM_AudioScale_Util.clampToScale(NaN, scale)).toBe(0);
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
describe('clampUnit', (): void => {
|
|
132
|
+
|
|
133
|
+
it('0..1 koze szorit, NaN-ra 0', (): void => {
|
|
134
|
+
expect(DyFM_AudioScale_Util.clampUnit(-1)).toBe(0);
|
|
135
|
+
expect(DyFM_AudioScale_Util.clampUnit(2)).toBe(1);
|
|
136
|
+
expect(DyFM_AudioScale_Util.clampUnit(0.42)).toBe(0.42);
|
|
137
|
+
expect(DyFM_AudioScale_Util.clampUnit(NaN)).toBe(0);
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
});
|