@famibee/skynovel 1.64.22 → 2.0.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/README.md +3 -3
- package/dist/Button.js +131 -163
- package/dist/Button.js.map +1 -1
- package/dist/CallStack.js +19 -22
- package/dist/CallStack.js.map +1 -1
- package/dist/CmnInterface.js +91 -0
- package/dist/CmnInterface.js.map +1 -0
- package/dist/CmnLib.js +94 -0
- package/dist/CmnLib.js.map +1 -0
- package/dist/Config.js +26 -0
- package/dist/Config.js.map +1 -0
- package/dist/ConfigBase.js +152 -0
- package/dist/ConfigBase.js.map +1 -0
- package/dist/DebugMng.js +89 -102
- package/dist/DebugMng.js.map +1 -1
- package/dist/EventListenerCtn.js +21 -0
- package/dist/EventListenerCtn.js.map +1 -0
- package/dist/EventMng.js +1435 -1577
- package/dist/EventMng.js.map +1 -1
- package/dist/Grammar.js +194 -0
- package/dist/Grammar.js.map +1 -0
- package/dist/GrpLayer.js +163 -195
- package/dist/GrpLayer.js.map +1 -1
- package/dist/Layer.js +260 -0
- package/dist/Layer.js.map +1 -0
- package/dist/LayerMng.js +810 -992
- package/dist/LayerMng.js.map +1 -1
- package/dist/Main.js +144 -393
- package/dist/Main.js.map +1 -1
- package/dist/PropParser.js +936 -834
- package/dist/PropParser.js.map +1 -1
- package/dist/Reading.js +918 -786
- package/dist/Reading.js.map +1 -1
- package/dist/RubySpliter.js +59 -89
- package/dist/RubySpliter.js.map +1 -1
- package/dist/ScriptIterator.js +805 -1035
- package/dist/ScriptIterator.js.map +1 -1
- package/dist/SndBuf.js +1097 -1326
- package/dist/SndBuf.js.map +1 -1
- package/dist/SoundMng.js +124 -135
- package/dist/SoundMng.js.map +1 -1
- package/dist/SpritesMng.js +220 -232
- package/dist/SpritesMng.js.map +1 -1
- package/dist/SysBase.js +1729 -0
- package/dist/SysBase.js.map +1 -0
- package/dist/TxtLayer.js +1212 -1398
- package/dist/TxtLayer.js.map +1 -1
- package/dist/Variable.js +398 -466
- package/dist/Variable.js.map +1 -1
- package/dist/chunk.js +18 -0
- package/dist/gamepad.js +723 -511
- package/dist/gamepad.js.map +1 -1
- package/dist/pixi.js +13422 -0
- package/dist/pixi.js.map +1 -0
- package/dist/platform.js +424 -369
- package/dist/platform.js.map +1 -1
- package/dist/sn/AnalyzeTagArg.d.ts +1 -1
- package/dist/sn/AnalyzeTagArg.d.ts.map +1 -1
- package/dist/sn/CmnInterface.d.ts +3 -1
- package/dist/sn/CmnInterface.d.ts.map +1 -1
- package/dist/sn/CmnLib.d.ts.map +1 -1
- package/dist/sn/CmnTween.d.ts +7 -7
- package/dist/sn/CmnTween.d.ts.map +1 -1
- package/dist/sn/EventMng.d.ts.map +1 -1
- package/dist/sn/FocusMng.d.ts.map +1 -1
- package/dist/sn/Grammar.d.ts +1 -1
- package/dist/sn/Grammar.d.ts.map +1 -1
- package/dist/sn/Log.d.ts.map +1 -1
- package/dist/sn/Main.d.ts.map +1 -1
- package/dist/sn/Pages.d.ts.map +1 -1
- package/dist/sn/PropParser.d.ts +2 -2
- package/dist/sn/PropParser.d.ts.map +1 -1
- package/dist/sn/Reading.d.ts +7 -0
- package/dist/sn/Reading.d.ts.map +1 -1
- package/dist/sn/RubySpliter.d.ts.map +1 -1
- package/dist/sn/ScriptIterator.d.ts.map +1 -1
- package/dist/sn/SndBuf.d.ts +27 -16
- package/dist/sn/SndBuf.d.ts.map +1 -1
- package/dist/sn/SoundMng.d.ts +4 -1
- package/dist/sn/SoundMng.d.ts.map +1 -1
- package/dist/sn/SysBase.d.ts.map +1 -1
- package/dist/sn/TxtStage.d.ts +4 -1
- package/dist/sn/TxtStage.d.ts.map +1 -1
- package/dist/test/ValTest.d.ts +1 -1
- package/dist/test/ValTest.d.ts.map +1 -1
- package/dist/web.js +653 -8
- package/dist/web.js.map +1 -1
- package/dist_app/Button.js +131 -163
- package/dist_app/Button.js.map +1 -1
- package/dist_app/CallStack.js +19 -22
- package/dist_app/CallStack.js.map +1 -1
- package/dist_app/CmnInterface.js +91 -0
- package/dist_app/CmnInterface.js.map +1 -0
- package/dist_app/CmnLib.js +94 -0
- package/dist_app/CmnLib.js.map +1 -0
- package/dist_app/Config.js +26 -0
- package/dist_app/Config.js.map +1 -0
- package/dist_app/ConfigBase.js +152 -0
- package/dist_app/ConfigBase.js.map +1 -0
- package/dist_app/DebugMng.js +92 -0
- package/dist_app/DebugMng.js.map +1 -0
- package/dist_app/EventListenerCtn.js +21 -0
- package/dist_app/EventListenerCtn.js.map +1 -0
- package/dist_app/EventMng.js +1435 -1577
- package/dist_app/EventMng.js.map +1 -1
- package/dist_app/Grammar.js +194 -0
- package/dist_app/Grammar.js.map +1 -0
- package/dist_app/GrpLayer.js +163 -195
- package/dist_app/GrpLayer.js.map +1 -1
- package/dist_app/Layer.js +260 -0
- package/dist_app/Layer.js.map +1 -0
- package/dist_app/LayerMng.js +810 -992
- package/dist_app/LayerMng.js.map +1 -1
- package/dist_app/Main.js +144 -392
- package/dist_app/Main.js.map +1 -1
- package/dist_app/PropParser.js +936 -834
- package/dist_app/PropParser.js.map +1 -1
- package/dist_app/Reading.js +918 -786
- package/dist_app/Reading.js.map +1 -1
- package/dist_app/RubySpliter.js +59 -89
- package/dist_app/RubySpliter.js.map +1 -1
- package/dist_app/ScriptIterator.js +805 -1034
- package/dist_app/ScriptIterator.js.map +1 -1
- package/dist_app/SndBuf.js +1097 -1326
- package/dist_app/SndBuf.js.map +1 -1
- package/dist_app/SoundMng.js +124 -135
- package/dist_app/SoundMng.js.map +1 -1
- package/dist_app/SpritesMng.js +220 -231
- package/dist_app/SpritesMng.js.map +1 -1
- package/dist_app/SysBase.js +1729 -0
- package/dist_app/SysBase.js.map +1 -0
- package/dist_app/TxtLayer.js +1212 -1397
- package/dist_app/TxtLayer.js.map +1 -1
- package/dist_app/Variable.js +398 -466
- package/dist_app/Variable.js.map +1 -1
- package/dist_app/app.js +211 -8
- package/dist_app/app.js.map +1 -1
- package/dist_app/appMain.js +20 -21
- package/dist_app/appMain.js.map +1 -1
- package/dist_app/chunk.js +18 -0
- package/dist_app/gamepad.js +723 -511
- package/dist_app/gamepad.js.map +1 -1
- package/dist_app/pixi.js +11181 -0
- package/dist_app/pixi.js.map +1 -0
- package/dist_app/platform.js +424 -369
- package/dist_app/platform.js.map +1 -1
- package/dist_app/preload.js +2 -2
- package/dist_app/preload.js.map +1 -1
- package/dist_app/sn/AnalyzeTagArg.d.ts +1 -1
- package/dist_app/sn/AnalyzeTagArg.d.ts.map +1 -1
- package/dist_app/sn/CmnInterface.d.ts +3 -1
- package/dist_app/sn/CmnInterface.d.ts.map +1 -1
- package/dist_app/sn/CmnLib.d.ts.map +1 -1
- package/dist_app/sn/CmnTween.d.ts +7 -7
- package/dist_app/sn/CmnTween.d.ts.map +1 -1
- package/dist_app/sn/EventMng.d.ts.map +1 -1
- package/dist_app/sn/FocusMng.d.ts.map +1 -1
- package/dist_app/sn/Grammar.d.ts +1 -1
- package/dist_app/sn/Grammar.d.ts.map +1 -1
- package/dist_app/sn/Log.d.ts.map +1 -1
- package/dist_app/sn/Main.d.ts.map +1 -1
- package/dist_app/sn/Pages.d.ts.map +1 -1
- package/dist_app/sn/PropParser.d.ts +2 -2
- package/dist_app/sn/PropParser.d.ts.map +1 -1
- package/dist_app/sn/Reading.d.ts +7 -0
- package/dist_app/sn/Reading.d.ts.map +1 -1
- package/dist_app/sn/RubySpliter.d.ts.map +1 -1
- package/dist_app/sn/ScriptIterator.d.ts.map +1 -1
- package/dist_app/sn/SndBuf.d.ts +27 -16
- package/dist_app/sn/SndBuf.d.ts.map +1 -1
- package/dist_app/sn/SoundMng.d.ts +4 -1
- package/dist_app/sn/SoundMng.d.ts.map +1 -1
- package/dist_app/sn/SysBase.d.ts.map +1 -1
- package/dist_app/sn/TxtStage.d.ts +4 -1
- package/dist_app/sn/TxtStage.d.ts.map +1 -1
- package/dist_app/test/ValTest.d.ts +1 -1
- package/dist_app/test/ValTest.d.ts.map +1 -1
- package/package.json +24 -14
- package/dist/CmnTween.js +0 -193
- package/dist/CmnTween.js.map +0 -1
- package/dist/web2.js +0 -21644
- package/dist/web2.js.map +0 -1
- package/dist_app/CmnTween.js +0 -193
- package/dist_app/CmnTween.js.map +0 -1
- package/dist_app/app2.js +0 -18547
- package/dist_app/app2.js.map +0 -1
package/dist_app/SoundMng.js
CHANGED
|
@@ -1,136 +1,125 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
ret_ms: Number(this.val.getVal(a + "ret_ms")),
|
|
123
|
-
fnc: e
|
|
124
|
-
// loaded
|
|
125
|
-
};
|
|
126
|
-
c.buf === u ? this.#u(c) : this.#i(c);
|
|
127
|
-
}));
|
|
128
|
-
}
|
|
129
|
-
destroy() {
|
|
130
|
-
this.#e(), this.clearCache();
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
export {
|
|
134
|
-
V as SoundMng
|
|
1
|
+
import { l as argChk_Num, s as argChk_Boolean } from "./CmnLib.js";
|
|
2
|
+
import "./pixi.js";
|
|
3
|
+
import "./EventListenerCtn.js";
|
|
4
|
+
import "./ConfigBase.js";
|
|
5
|
+
import "./Reading.js";
|
|
6
|
+
import { a as require_howler, i as xchgbuf, n as BUF_SE, r as SndBuf, t as BUF_BGM } from "./SndBuf.js";
|
|
7
|
+
var import_howler = require_howler(), SoundMng = class {
|
|
8
|
+
#e = {};
|
|
9
|
+
#t(e) {
|
|
10
|
+
return this.#e[e];
|
|
11
|
+
}
|
|
12
|
+
constructor(e, r, i, a, o) {
|
|
13
|
+
this.val = i, r.volume = (e) => this.#r(e), r.fadebgm = (e) => this.#s(e), r.fadeoutbgm = (e) => this.#a(e), r.fadeoutse = (e) => this.#o(e), r.fadese = (e) => this.#c(e), r.playbgm = (e) => this.#l(e), r.playse = (e) => this.#u(e), r.stop_allse = () => this.#f(), r.stopbgm = (e) => this.#p(e), r.stopse = (e) => this.#m(e), r.wb = (e) => this.#h(e), r.wf = (e) => this.#g(e), r.stopfadese = () => !1, r.wl = (e) => this.#_(e), r.ws = (e) => this.#v(e), r.xchgbuf = (e) => this.#y(e), i.setVal_Nochk("save", "const.sn.loopPlaying", "{}");
|
|
14
|
+
let c = {};
|
|
15
|
+
for (let e of "aac,caf,dolby,flac,m4a,m4b,mp3,mp4,mpeg,oga,ogg,opus,wav,weba,webm".split(",")) c[e] = import_howler.Howler.codecs(e);
|
|
16
|
+
i.setVal_Nochk("tmp", "const.sn.sound.codecs", JSON.stringify(c)), SndBuf.init(e, i, a, o, (e) => this.#t(e));
|
|
17
|
+
}
|
|
18
|
+
#n;
|
|
19
|
+
setEvtMng(e) {
|
|
20
|
+
this.#n = e, SndBuf.setEvtMng(e);
|
|
21
|
+
}
|
|
22
|
+
setNoticeChgVolume(e, r) {
|
|
23
|
+
this.val.defValTrg("sys:sn.sound.global_volume", (r, i) => {
|
|
24
|
+
let a = Number(i);
|
|
25
|
+
import_howler.Howler.volume(a), e(a);
|
|
26
|
+
}), this.val.defValTrg("sys:sn.sound.movie_volume", (e, i) => r(Number(i))), this.val.setVal_Nochk("sys", "sn.sound.global_volume", this.val.getVal("sys:sn.sound.global_volume", 1)), this.val.setVal_Nochk("sys", "sn.sound.movie_volume", this.val.getVal("sys:sn.sound.movie_volume", 1));
|
|
27
|
+
}
|
|
28
|
+
#r(e) {
|
|
29
|
+
let { buf: r = "SE" } = e, i = "const.sn.sound." + r + ".volume", a = this.#i(e, 1);
|
|
30
|
+
return Number(this.val.getVal("sys:" + i)) === a ? !1 : (this.val.setVal_Nochk("sys", i, a), this.val.flush(), e.time = 0, e.volume = Number(this.val.getVal("save:" + i)), this.#c(e));
|
|
31
|
+
}
|
|
32
|
+
#i(r, i) {
|
|
33
|
+
let a = argChk_Num(r, "volume", i);
|
|
34
|
+
return a < 0 ? 0 : a > 1 ? 1 : a;
|
|
35
|
+
}
|
|
36
|
+
#a(e) {
|
|
37
|
+
return e.volume = 0, this.#s(e);
|
|
38
|
+
}
|
|
39
|
+
#o(e) {
|
|
40
|
+
return e.volume = 0, this.#c(e);
|
|
41
|
+
}
|
|
42
|
+
#s(e) {
|
|
43
|
+
return e.buf = "BGM", this.#c(e);
|
|
44
|
+
}
|
|
45
|
+
#c(e) {
|
|
46
|
+
let { buf: r = "SE" } = e;
|
|
47
|
+
return this.#e[r]?.fade(e), !1;
|
|
48
|
+
}
|
|
49
|
+
#l(e) {
|
|
50
|
+
return e.buf = "BGM", e.canskip = !1, argChk_Boolean(e, "loop", !0), this.#u(e);
|
|
51
|
+
}
|
|
52
|
+
#u(e) {
|
|
53
|
+
let { buf: i = "SE" } = e;
|
|
54
|
+
if (this.#m({ buf: i }), argChk_Boolean(e, "canskip", !0) && this.#n.isSkipping) return !1;
|
|
55
|
+
this.#d();
|
|
56
|
+
let a = argChk_Boolean(e, "join", !0);
|
|
57
|
+
return this.#e[i] = SndBuf.generate(e, i, a), a;
|
|
58
|
+
}
|
|
59
|
+
#d = () => {
|
|
60
|
+
import_howler.Howler.volume(Number(this.val.getVal("sys:sn.sound.global_volume", 1))), this.#d = () => {};
|
|
61
|
+
};
|
|
62
|
+
#f() {
|
|
63
|
+
for (let e of Object.keys(this.#e)) this.#m({ buf: e });
|
|
64
|
+
return this.#e = {}, import_howler.Howler.unload(), !1;
|
|
65
|
+
}
|
|
66
|
+
#p(e) {
|
|
67
|
+
return e.buf = "BGM", this.#m(e);
|
|
68
|
+
}
|
|
69
|
+
#m(e) {
|
|
70
|
+
let { buf: r = "SE" } = e;
|
|
71
|
+
return this.#e[r]?.stopse(), !1;
|
|
72
|
+
}
|
|
73
|
+
#h(e) {
|
|
74
|
+
return e.buf = "BGM", this.#g(e);
|
|
75
|
+
}
|
|
76
|
+
#g(e) {
|
|
77
|
+
let { buf: r = "SE" } = e;
|
|
78
|
+
return this.#e[r]?.wf(e) ?? !1;
|
|
79
|
+
}
|
|
80
|
+
#_(e) {
|
|
81
|
+
return e.buf = "BGM", this.#v(e);
|
|
82
|
+
}
|
|
83
|
+
#v(e) {
|
|
84
|
+
let { buf: r = "SE" } = e;
|
|
85
|
+
return this.#e[r]?.ws(e) ?? !1;
|
|
86
|
+
}
|
|
87
|
+
#y(e) {
|
|
88
|
+
let { buf: r = "SE", buf2: i = "SE" } = e;
|
|
89
|
+
if (r === i) return !1;
|
|
90
|
+
let o = this.#e[r], s = this.#e[i];
|
|
91
|
+
return o ? this.#e[i] = o : delete this.#e[i], s ? this.#e[r] = s : delete this.#e[r], xchgbuf(e), !1;
|
|
92
|
+
}
|
|
93
|
+
playLoopFromSaveObj(e) {
|
|
94
|
+
let r = String(this.val.getVal("save:const.sn.loopPlaying", "{}"));
|
|
95
|
+
if (r === "{}") return this.#f(), [];
|
|
96
|
+
let i = JSON.parse(r);
|
|
97
|
+
if (e) this.#f();
|
|
98
|
+
else for (let [e, r] of Object.entries(this.#e)) e in i || r.stopse();
|
|
99
|
+
return Object.entries(i).map(([r, i]) => new Promise((a) => {
|
|
100
|
+
let o = this.#e[r];
|
|
101
|
+
if (!e && o && o.fn === i) {
|
|
102
|
+
a();
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
let s = "save:const.sn.sound." + r + ".", c = {
|
|
106
|
+
fn: i,
|
|
107
|
+
buf: r,
|
|
108
|
+
join: !1,
|
|
109
|
+
loop: !0,
|
|
110
|
+
volume: Number(this.val.getVal(s + "volume")),
|
|
111
|
+
start_ms: Number(this.val.getVal(s + "start_ms")),
|
|
112
|
+
end_ms: Number(this.val.getVal(s + "end_ms")),
|
|
113
|
+
ret_ms: Number(this.val.getVal(s + "ret_ms")),
|
|
114
|
+
fnc: a
|
|
115
|
+
};
|
|
116
|
+
c.buf === "BGM" ? this.#l(c) : this.#u(c);
|
|
117
|
+
}));
|
|
118
|
+
}
|
|
119
|
+
destroy() {
|
|
120
|
+
this.#f();
|
|
121
|
+
}
|
|
135
122
|
};
|
|
136
|
-
|
|
123
|
+
export { SoundMng };
|
|
124
|
+
|
|
125
|
+
//# sourceMappingURL=SoundMng.js.map
|
package/dist_app/SoundMng.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SoundMng.js","sources":["../src/sn/SoundMng.ts"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {type IEvtMng, argChk_Boolean, argChk_Num} from './CmnLib';\nimport type {T_HTag, TArg} from './Grammar';\nimport type {T_Variable, T_Main, T_NoticeChgVolume} from './CmnInterface';\nimport type {Config} from './Config';\nimport type {SysBase} from './SysBase';\nimport {BUF_BGM, BUF_SE, type HSndBuf, SndBuf} from './SndBuf';\n\nimport {sound, utils} from '@pixi/sound';\n\n\nexport class SoundMng {\n\t#hSndBuf\t: HSndBuf\t= {};\n\n\tconstructor(cfg: Config, hTag: T_HTag, private readonly val: T_Variable, main: T_Main, sys: SysBase) {\n\t\thTag.volume\t\t= o=> this.#volume(o);\t\t// 音量設定(独自拡張)\n\t\thTag.fadebgm\t= o=> this.#fadebgm(o);\t\t// BGMのフェード\n\t\thTag.fadeoutbgm\t= o=> this.#fadeoutbgm(o);\t// BGMのフェードアウト\n\t\thTag.fadeoutse\t= o=> this.#fadeoutse(o);\t// 効果音のフェードアウト\n\t\thTag.fadese\t\t= o=> this.#fadese(o);\t\t// 効果音のフェード\n\t\thTag.playbgm\t= o=> this.#playbgm(o);\t\t// BGM の演奏\n\t\thTag.playse\t\t= o=> this.#playse(o);\t\t// 効果音の再生\n\t\thTag.stop_allse\t= ()=> this.#stop_allse();\t// 全効果音再生の停止\n\t\thTag.stopbgm\t= o=> this.#stopbgm(o);\t\t// BGM 演奏の停止\n\t\thTag.stopse\t\t= o=> this.#stopse(o);\t\t// 効果音再生の停止\n\t\thTag.wb\t\t\t= o=> this.#wb(o);\t\t\t// BGM フェードの終了待ち\n\t\thTag.wf\t\t\t= o=> this.#wf(o);\t\t\t// 効果音フェードの終了待ち\n\t\thTag.stopfadese\t= o=> this.#stopfadese(o);\t// 音声フェードの停止\n\t\thTag.wl\t\t\t= o=> this.#wl(o);\t\t\t// BGM 再生の終了待ち\n\t\thTag.ws\t\t\t= o=> this.#ws(o);\t\t\t// 効果音再生の終了待ち\n\t\thTag.xchgbuf\t= o=> this.#xchgbuf(o);\t\t// 再生トラックの交換\n\n\t\tval.setVal_Nochk('save', 'const.sn.loopPlaying', '{}');\n\n\t\tval.setVal_Nochk('tmp', 'const.sn.sound.codecs', JSON.stringify(utils.supported));\n\n\t\tSndBuf.init(cfg, val, main, sys, this.#hSndBuf);\n\t\tsound.disableAutoPause = true;\n\t}\n\n\t#evtMng\t: IEvtMng;\n\tsetEvtMng(evtMng: IEvtMng) {this.#evtMng = evtMng; SndBuf.setEvtMng(evtMng)}\n\tsetNoticeChgVolume(setGlbVol: T_NoticeChgVolume, setMovVol: T_NoticeChgVolume) {\n\t\tthis.val.defValTrg('sys:sn.sound.global_volume', (_, val)=> setGlbVol(sound.volumeAll = Number(val)));\n\t\tthis.val.defValTrg('sys:sn.sound.movie_volume', (_, val)=> setMovVol(Number(val)));\n\n\t\t// 起動時初期値セット\n\t\tthis.val.setVal_Nochk('sys', 'sn.sound.global_volume', <number>this.val.getVal('sys:sn.sound.global_volume', 1));\n\t\tthis.val.setVal_Nochk('sys', 'sn.sound.movie_volume', <number>this.val.getVal('sys:sn.sound.movie_volume', 1));\n\t}\n\n\t//MARK: 音量設定(独自拡張)\n\t#volume(hArg: TArg) {\n\t\tconst {buf = BUF_SE} = hArg;\n\t\tconst vnV = 'const.sn.sound.'+ buf +'.volume';\n\t\tconst arg_vol = this.#getVol(hArg, 1);\n\t\tif (Number(this.val.getVal('sys:'+ vnV)) === arg_vol) return false;\n\n\t\tthis.val.setVal_Nochk('sys', vnV, arg_vol)\t// 基準音量(sys:)\n\t\tthis.val.flush();\t// fadese()内で必ずしも呼ばれないので\n\n\t\t// 再生中音声の一時的音量も変更\n\t\thArg.time = 0;\n\t\thArg.volume = Number(this.val.getVal('save:'+ vnV));\t// 目標音量(save:)\n\t\treturn this.#fadese(hArg);\n\t}\n\t#getVol(hArg: TArg, def: number) {\n\t\tconst vol = argChk_Num(hArg, 'volume', def);\n\t\tif (vol < 0) return 0;\n\t\tif (vol > 1) return 1;\n\t\treturn vol;\n\t}\n\n\t//MARK: BGM/効果音のフェードアウト(loadから使うのでマクロ化禁止)\n\t#fadeoutbgm(hArg: TArg) {hArg.volume = 0; return this.#fadebgm(hArg)}\n\t//MARK: 効果音のフェードアウト(loadから使うのでマクロ化禁止)\n\t#fadeoutse(hArg: TArg) {hArg.volume = 0; return this.#fadese(hArg)}\n\t//MARK: BGMのフェード(loadから使うのでマクロ化禁止)\n\t#fadebgm(hArg: TArg) {hArg.buf = BUF_BGM; return this.#fadese(hArg)}\n\t//MARK: 効果音のフェード\n\t#fadese(hArg: TArg) {\n\t\tconst {buf = BUF_SE} = hArg;\n\t\tthis.#stopfadese(hArg);\n\t\tthis.#hSndBuf[buf]?.fade(hArg);\n\n\t\treturn false;\n\t}\n\n\t//MARK: BGM の演奏\n\t#playbgm(hArg: TArg) {\n\t\thArg.buf = BUF_BGM;\n\t\thArg.canskip = false;\n\t\targChk_Boolean(hArg, 'loop', true);\n\t\treturn this.#playse(hArg);\n\t}\n\n\t//MARK: 効果音の再生\n\t#playse(hArg: TArg) {\n\t\tconst {buf = BUF_SE, fn} = hArg;\n\t\tthis.#stopse({buf});\n\t\tif (! fn) throw `fnは必須です buf:${buf}`;\n\n\t\t// isSkipping()は此処のみとする。タイミングによって変わる\n\t\tif (argChk_Boolean(hArg, 'canskip', true) && this.#evtMng.isSkipping) return false;\n\n\t\tconst sb = this.#hSndBuf[buf] = new SndBuf(hArg, buf, fn);\n\t\treturn sb.needLoad;\n\t}\n\n\tclearCache() {sound.removeAll()}\n\n\t//MARK: 全効果音再生の停止\n\t#stop_allse() {\n\t\tfor (const buf of Object.keys(this.#hSndBuf)) this.#stopse({buf});\n\t\tthis.#hSndBuf = {};\n\n\t\tsound.stopAll();\t// 念のため\n\n\t\treturn false;\n\t}\n\t//MARK: BGM 演奏の停止(loadから使うのでマクロ化禁止)\n\t#stopbgm(hArg: TArg) {hArg.buf = BUF_BGM; return this.#stopse(hArg)}\n\t//MARK: 効果音再生の停止\n\t#stopse(hArg: TArg) {\n\t\tconst {buf = BUF_SE} = hArg;\n\t\tthis.#hSndBuf[buf]?.stopse(hArg);\n\n\t\treturn false;\n\t}\n\n\t//MARK: BGM フェードの終了待ち\n\t#wb(hArg: TArg) {hArg.buf = BUF_BGM; return this.#wf(hArg)}\n\n\t//MARK: 効果音フェードの終了待ち\n\t#wf(hArg: TArg) {\n\t\tconst {buf = BUF_SE} = hArg;\n\t\treturn this.#hSndBuf[buf]?.wf(hArg) ?? false;\n\t}\n\n\t//MARK: 音声フェードの停止\n\t#stopfadese(hArg: TArg) {\n\t\tconst {buf = BUF_SE} = hArg;\n\t\tthis.#hSndBuf[buf]?.stopfadese(hArg);\n\n\t\treturn false;\n\t}\n\n\t//MARK: BGM 再生の終了待ち\n\t#wl(hArg: TArg) {hArg.buf = BUF_BGM; return this.#ws(hArg)}\n\t//MARK: 効果音再生の終了待ち\n\t#ws(hArg: TArg) {\n\t\tconst {buf = BUF_SE} = hArg;\n\t\treturn this.#hSndBuf[buf]?.ws(hArg) ?? false;\n\t}\n\n\t//MARK: 再生トラックの交換\n\t#xchgbuf(hArg: TArg) {\n\t\tconst {buf: buf1 = BUF_SE, buf2 = BUF_SE} = hArg;\n\t\tif (buf1 === buf2) return false;\n\n\t\tconst a = this.#hSndBuf[buf1];\t// 分割代入の変数交換だと noUncheckedIndexedAccess エラーになるので\n\t\tconst b = this.#hSndBuf[buf2];\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tif (a) this.#hSndBuf[buf2] = a; else delete this.#hSndBuf[buf2];\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tif (b) this.#hSndBuf[buf1] = b; else delete this.#hSndBuf[buf1];\n\n\t\tSndBuf.xchgbuf(hArg);\n\n\t\treturn false;\n\t}\n\n\t//MARK: しおりの読込(BGM状態復元)\n\tplayLoopFromSaveObj(all_stop_and_play: boolean): Promise<void>[] {\n\t\tconst lp = String(this.val.getVal('save:const.sn.loopPlaying', '{}'));\n\t\tif (lp === '{}') {this.#stop_allse(); this.clearCache(); return []}\n/*\n\t\t\t\t\t(Now)#hSndBuf\n\t\t\t\t\tstop\tplay\n\thSaveLP\tstop\t-\t\tstop\t\t--[1]\n\t(to)\tplay\tplay\tstop/play\t--[2]\n\t\t\teq play\tplay\t-\t\t\t--[2]\n*/\n\t\tconst hSaveLP = <{[buf: string]: string}>JSON.parse(lp);\n\t\tif (all_stop_and_play) {this.#stop_allse(); this.clearCache()}\n\t\telse for (const [buf, sb] of Object.entries(this.#hSndBuf)) {\n\t\t\t// [1] #hSndBuf(再生中)だが hSaveLP(再生予定) にない buf -> stop\n\t\t\tif (! (buf in hSaveLP)) sb.stopse({buf});\n\t\t}\n\n\t\t// [2] hSaveLP(再生予定)を再生。だが#hSndBuf(再生中)の状況で処理変更\n\t\treturn Object.entries(hSaveLP).map(([buf, fn])=> new Promise(re=> {\n\t\t\tconst sb = this.#hSndBuf[buf]\n\t\t\tif (! all_stop_and_play && sb) {\n\t\t\t\tif (sb.fn === fn) {re(); return}\n\t\t\t\t//sb.stopse({buf});\t// 再生中 fn !== 再生予定 fn なら stop\n\t\t\t\t\t// #playbgm()、#playse() 内で stop するので省略\n\t\t\t}\n\n\t\t\tconst vm = 'save:const.sn.sound.'+ buf +'.';\n\t\t\tconst hArg = {\n\t\t\t\tfn,\n\t\t\t\tbuf,\n\t\t\t\tjoin\t: false,\n\t\t\t\tloop\t: true,\n\t\t\t\tvolume\t: Number(this.val.getVal(vm +'volume')),\n\t\t\t\tstart_ms: Number(this.val.getVal(vm +'start_ms')),\n\t\t\t\tend_ms\t: Number(this.val.getVal(vm +'end_ms')),\n\t\t\t\tret_ms\t: Number(this.val.getVal(vm +'ret_ms')),\n\t\t\t\tfnc\t\t: re,\t// loaded\n\t\t\t};\n\t\t\tif (hArg.buf === BUF_BGM) this.#playbgm(hArg);\n\t\t\telse this.#playse(hArg);\n\t\t}));\n\t}\n\n\tdestroy() {this.#stop_allse(); this.clearCache()}\n\n}\n"],"names":["SoundMng","cfg","hTag","val","main","sys","o","#volume","#fadebgm","#fadeoutbgm","#fadeoutse","#fadese","#playbgm","#playse","#stop_allse","#stopbgm","#stopse","#wb","#wf","#stopfadese","#wl","#ws","#xchgbuf","utils","SndBuf","#hSndBuf","sound","#evtMng","evtMng","setGlbVol","setMovVol","_","hArg","buf","BUF_SE","vnV","arg_vol","#getVol","def","vol","argChk_Num","BUF_BGM","argChk_Boolean","fn","buf1","buf2","a","b","all_stop_and_play","lp","hSaveLP","sb","re","vm"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SoundMng.js","names":["#hSndBuf","val: T_Variable","#volume","#fadebgm","#fadeoutbgm","#fadeoutse","#fadese","#playbgm","#playse","#stop_allse","#stopbgm","#stopse","#wb","#wf","#wl","#ws","#xchgbuf","codecs: {[ext: string]: boolean}","#getSndBuf","#evtMng","#getVol","#initVol"],"sources":["../src/sn/SoundMng.ts"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {type IEvtMng, argChk_Boolean, argChk_Num} from './CmnLib';\nimport type {T_HTag, TArg} from './Grammar';\nimport type {T_Variable, T_Main, T_NoticeChgVolume} from './CmnInterface';\nimport type {Config} from './Config';\nimport type {SysBase} from './SysBase';\nimport {BUF_BGM, BUF_SE, SndBuf, xchgbuf} from './SndBuf';\n\nimport {Howler} from 'howler';\n\n\nexport type HSndBuf = {[buf: string]: SndBuf}\n\n\nexport class SoundMng {\n\t#hSndBuf\t: HSndBuf\t= {};\n\t#getSndBuf(buf: string) {return this.#hSndBuf[buf]}\n\n\tconstructor(cfg: Config, hTag: T_HTag, private readonly val: T_Variable, main: T_Main, sys: SysBase) {\n\t\thTag.volume\t\t= o=> this.#volume(o);\t\t// 音量設定(独自拡張)\n\t\thTag.fadebgm\t= o=> this.#fadebgm(o);\t\t// BGMのフェード\n\t\thTag.fadeoutbgm\t= o=> this.#fadeoutbgm(o);\t// BGMのフェードアウト\n\t\thTag.fadeoutse\t= o=> this.#fadeoutse(o);\t// 効果音のフェードアウト\n\t\thTag.fadese\t\t= o=> this.#fadese(o);\t\t// 効果音のフェード\n\t\thTag.playbgm\t= o=> this.#playbgm(o);\t\t// BGM の演奏\n\t\thTag.playse\t\t= o=> this.#playse(o);\t\t// 効果音の再生\n\t\thTag.stop_allse\t= ()=> this.#stop_allse();\t// 全効果音再生の停止\n\t\thTag.stopbgm\t= o=> this.#stopbgm(o);\t\t// BGM 演奏の停止\n\t\thTag.stopse\t\t= o=> this.#stopse(o);\t\t// 効果音再生の停止\n\t\thTag.wb\t\t\t= o=> this.#wb(o);\t\t\t// BGM フェードの終了待ち\n\t\thTag.wf\t\t\t= o=> this.#wf(o);\t\t\t// 効果音フェードの終了待ち\n\t\thTag.stopfadese\t= ()=> false;\t\t\t\t// 音声フェードの停止(廃止)\n\t\thTag.wl\t\t\t= o=> this.#wl(o);\t\t\t// BGM 再生の終了待ち\n\t\thTag.ws\t\t\t= o=> this.#ws(o);\t\t\t// 効果音再生の終了待ち\n\t\thTag.xchgbuf\t= o=> this.#xchgbuf(o);\t\t// 再生トラックの交換\n\n\t\tval.setVal_Nochk('save', 'const.sn.loopPlaying', '{}');\n\n\t\tconst codecs: {[ext: string]: boolean} = {};\n\t\tfor (const ext of 'aac,caf,dolby,flac,m4a,m4b,mp3,mp4,mpeg,oga,ogg,opus,wav,weba,webm'.split(',')) codecs[ext] = Howler.codecs(ext);\n\t\tval.setVal_Nochk('tmp', 'const.sn.sound.codecs', JSON.stringify(codecs));\n\t\t// - PixiJS Sound\n\t\t// aiff,caf,mid,mp3,mpeg,oga,ogg,opus,wav,wma\n\t\t// - Howl\n\t\t// aac,caf,dolby,flac,m4a,m4b,mp3,mp4,mpeg,oga,ogg,opus,wav,weba,webm\n\n\t\tSndBuf.init(cfg, val, main, sys, buf=> this.#getSndBuf(buf));\n\t}\n\n\t#evtMng\t: IEvtMng;\n\tsetEvtMng(evtMng: IEvtMng) {this.#evtMng = evtMng; SndBuf.setEvtMng(evtMng)}\n\tsetNoticeChgVolume(setGlbVol: T_NoticeChgVolume, setMovVol: T_NoticeChgVolume) {\n\t\tthis.val.defValTrg('sys:sn.sound.global_volume', (_, val)=> {\n\t\t\tconst v = Number(val);\n\t\t\tHowler.volume(v);\n\t\t\tsetGlbVol(v);\n\t\t});\n\t\tthis.val.defValTrg('sys:sn.sound.movie_volume', (_, val)=> setMovVol(Number(val)));\n\n\t\t// 起動時初期値セット\n\t\tthis.val.setVal_Nochk('sys', 'sn.sound.global_volume', <number>this.val.getVal('sys:sn.sound.global_volume', 1));\n\t\tthis.val.setVal_Nochk('sys', 'sn.sound.movie_volume', <number>this.val.getVal('sys:sn.sound.movie_volume', 1));\n\t}\n\n\t//MARK: 音量設定(独自拡張)\n\t#volume(hArg: TArg) {\n\t\tconst {buf = BUF_SE} = hArg;\n\t\tconst vnV = 'const.sn.sound.'+ buf +'.volume';\n\t\tconst arg_vol = this.#getVol(hArg, 1);\n\t\tif (Number(this.val.getVal('sys:'+ vnV)) === arg_vol) return false;\n\n\t\tthis.val.setVal_Nochk('sys', vnV, arg_vol)\t// 基準音量(sys:)\n\t\tthis.val.flush();\t// fadese()内で必ずしも呼ばれないので\n\n\t\t// 再生中音声の一時的音量も変更\n\t\thArg.time = 0;\n\t\thArg.volume = Number(this.val.getVal('save:'+ vnV));\t// 目標音量(save:)\n\t\treturn this.#fadese(hArg);\n\t}\n\t#getVol(hArg: TArg, def: number) {\n\t\tconst vol = argChk_Num(hArg, 'volume', def);\n\t\tif (vol < 0) return 0;\n\t\tif (vol > 1) return 1;\n\t\treturn vol;\n\t}\n\n\t//MARK: BGM/効果音のフェードアウト(loadから使うのでマクロ化禁止)\n\t#fadeoutbgm(hArg: TArg) {hArg.volume = 0; return this.#fadebgm(hArg)}\n\t//MARK: 効果音のフェードアウト(loadから使うのでマクロ化禁止)\n\t#fadeoutse(hArg: TArg) {hArg.volume = 0; return this.#fadese(hArg)}\n\t//MARK: BGMのフェード(loadから使うのでマクロ化禁止)\n\t#fadebgm(hArg: TArg) {hArg.buf = BUF_BGM; return this.#fadese(hArg)}\n\t//MARK: 効果音のフェード\n\t#fadese(hArg: TArg) {\n\t\tconst {buf = BUF_SE} = hArg;\n\t\tthis.#hSndBuf[buf]?.fade(hArg);\n\n\t\treturn false;\n\t}\n\n\t//MARK: BGM の演奏\n\t#playbgm(hArg: TArg) {\n\t\thArg.buf = BUF_BGM;\n\t\thArg.canskip = false;\n\t\targChk_Boolean(hArg, 'loop', true);\n\t\treturn this.#playse(hArg);\n\t}\n\n\t//MARK: 効果音の再生\n\t#playse(hArg: TArg) {\n\t\tconst {buf = BUF_SE} = hArg;\n\t\tthis.#stopse({buf});\n\n\t\t// isSkipping()は此処のみとする。タイミングによって変わる\n\t\tif (argChk_Boolean(hArg, 'canskip', true) && this.#evtMng.isSkipping) return false;\n\n\t\tthis.#initVol();\n\n\t\tconst join = argChk_Boolean(hArg, 'join', true);\n\t\t\t// an時代・瀬戸愛羅さんより https://famibee.blog.fc2.com/blog-entry-106.html\n\t\t\t// デフォルトでjoin=trueの方が初心者に優しい\n\t\tthis.#hSndBuf[buf] = SndBuf.generate(hArg, buf, join);\n\n\t\treturn join;\n\t}\n\t#initVol = ()=> {\n\t\tHowler.volume(Number(this.val.getVal('sys:sn.sound.global_volume', 1)));\n\t\tthis.#initVol = ()=> { /* empty */ };\n\t};\n\n\t//MARK: 全効果音再生の停止\n\t#stop_allse() {\n\t\tfor (const buf of Object.keys(this.#hSndBuf)) this.#stopse({buf});\n\t\tthis.#hSndBuf = {};\n\n\t\tHowler.unload();\n\n\t\treturn false;\n\t}\n\t//MARK: BGM 演奏の停止(loadから使うのでマクロ化禁止)\n\t#stopbgm(hArg: TArg) {hArg.buf = BUF_BGM; return this.#stopse(hArg)}\n\t//MARK: 効果音再生の停止\n\t#stopse(hArg: TArg) {\n\t\tconst {buf = BUF_SE} = hArg;\n\t\tthis.#hSndBuf[buf]?.stopse();\n\n\t\treturn false;\n\t}\n\n\t//MARK: BGM フェードの終了待ち\n\t#wb(hArg: TArg) {hArg.buf = BUF_BGM; return this.#wf(hArg)}\n\n\t//MARK: 効果音フェードの終了待ち\n\t#wf(hArg: TArg) {\n\t\tconst {buf = BUF_SE} = hArg;\n\t\treturn this.#hSndBuf[buf]?.wf(hArg) ?? false;\n\t}\n\n\t//MARK: BGM 再生の終了待ち\n\t#wl(hArg: TArg) {hArg.buf = BUF_BGM; return this.#ws(hArg)}\n\t//MARK: 効果音再生の終了待ち\n\t#ws(hArg: TArg) {\n\t\tconst {buf = BUF_SE} = hArg;\n\t\treturn this.#hSndBuf[buf]?.ws(hArg) ?? false;\n\t}\n\n\t//MARK: 再生トラックの交換\n\t#xchgbuf(hArg: TArg) {\n\t\tconst {buf: buf1 = BUF_SE, buf2 = BUF_SE} = hArg;\n\t\tif (buf1 === buf2) return false;\n\n\t\tconst a = this.#hSndBuf[buf1];\t// 分割代入の変数交換だと noUncheckedIndexedAccess エラーになるので\n\t\tconst b = this.#hSndBuf[buf2];\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tif (a) this.#hSndBuf[buf2] = a; else delete this.#hSndBuf[buf2];\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tif (b) this.#hSndBuf[buf1] = b; else delete this.#hSndBuf[buf1];\n\n\t\txchgbuf(hArg);\n\n\t\treturn false;\n\t}\n\n\t//MARK: しおりの読込(BGM状態復元)\n\tplayLoopFromSaveObj(all_stop_and_play: boolean): Promise<void>[] {\n\t\tconst lp = String(this.val.getVal('save:const.sn.loopPlaying', '{}'));\n\t\tif (lp === '{}') {this.#stop_allse(); return []}\n/*\n\t\t\t\t\t(Now)#hSndBuf\n\t\t\t\t\tstop\tplay\n\thSaveLP\tstop\t-\t\tstop\t\t--[1]\n\t(to)\tplay\tplay\tstop/play\t--[2]\n\t\t\teq play\tplay\t-\t\t\t--[2]\n*/\n\t\tconst hSaveLP = <{[buf: string]: string}>JSON.parse(lp);\n\t\tif (all_stop_and_play) this.#stop_allse();\n\t\telse for (const [buf, sb] of Object.entries(this.#hSndBuf)) {\n\t\t\t// [1] #hSndBuf(再生中)だが hSaveLP(再生予定) にない buf -> stop\n\t\t\tif (! (buf in hSaveLP)) sb.stopse();\n\t\t}\n\n\t\t// [2] hSaveLP(再生予定)を再生。だが#hSndBuf(再生中)の状況で処理変更\n\t\treturn Object.entries(hSaveLP).map(([buf, fn])=> new Promise(re=> {\n\t\t\tconst sb = this.#hSndBuf[buf]\n\t\t\tif (! all_stop_and_play && sb) {\n\t\t\t\tif (sb.fn === fn) {re(); return}\n\t\t\t\t//sb.stopse({buf});\t// 再生中 fn !== 再生予定 fn なら stop\n\t\t\t\t\t// #playbgm()、#playse() 内で stop するので省略\n\t\t\t}\n\n\t\t\tconst vm = 'save:const.sn.sound.'+ buf +'.';\n\t\t\tconst hArg = {\n\t\t\t\tfn,\n\t\t\t\tbuf,\n\t\t\t\tjoin\t: false,\n\t\t\t\tloop\t: true,\n\t\t\t\tvolume\t: Number(this.val.getVal(vm +'volume')),\n\t\t\t\tstart_ms: Number(this.val.getVal(vm +'start_ms')),\n\t\t\t\tend_ms\t: Number(this.val.getVal(vm +'end_ms')),\n\t\t\t\tret_ms\t: Number(this.val.getVal(vm +'ret_ms')),\n\t\t\t\tfnc\t\t: re,\t// loaded\n\t\t\t};\n\t\t\tif (hArg.buf === BUF_BGM) this.#playbgm(hArg);\n\t\t\telse this.#playse(hArg);\n\t\t}));\n\t}\n\n\tdestroy() {this.#stop_allse()}\n\n}\n"],"mappings":"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"}
|