@famibee/skynovel 2.0.1 → 2.0.3
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/dist/Button.js +36 -34
- package/dist/Button.js.map +1 -1
- package/dist/CallStack.js +11 -6
- package/dist/CallStack.js.map +1 -1
- package/dist/CmnInterface.js +13 -11
- package/dist/CmnInterface.js.map +1 -1
- package/dist/CmnLib.js +58 -56
- package/dist/CmnLib.js.map +1 -1
- package/dist/Config.js +9 -7
- package/dist/Config.js.map +1 -1
- package/dist/ConfigBase.js +52 -49
- package/dist/ConfigBase.js.map +1 -1
- package/dist/DebugMng.js +9 -6
- package/dist/DebugMng.js.map +1 -1
- package/dist/EventListenerCtn.js +6 -4
- package/dist/EventListenerCtn.js.map +1 -1
- package/dist/EventMng.js +522 -417
- package/dist/EventMng.js.map +1 -1
- package/dist/Grammar.js +22 -20
- package/dist/Grammar.js.map +1 -1
- package/dist/GrpLayer.js +58 -57
- package/dist/GrpLayer.js.map +1 -1
- package/dist/Layer.js +66 -64
- package/dist/Layer.js.map +1 -1
- package/dist/LayerMng.js +461 -441
- package/dist/LayerMng.js.map +1 -1
- package/dist/Main.js +69 -67
- package/dist/Main.js.map +1 -1
- package/dist/PropParser.js +23 -19
- package/dist/PropParser.js.map +1 -1
- package/dist/Reading.js +422 -418
- package/dist/Reading.js.map +1 -1
- package/dist/RubySpliter.js +6 -4
- package/dist/RubySpliter.js.map +1 -1
- package/dist/ScriptIterator.js +374 -370
- package/dist/ScriptIterator.js.map +1 -1
- package/dist/SndBuf.js +643 -622
- package/dist/SndBuf.js.map +1 -1
- package/dist/SoundMng.js +59 -60
- package/dist/SoundMng.js.map +1 -1
- package/dist/SpritesMng.js +135 -129
- package/dist/SpritesMng.js.map +1 -1
- package/dist/SysBase.js +985 -950
- package/dist/SysBase.js.map +1 -1
- package/dist/TxtLayer.js +558 -551
- package/dist/TxtLayer.js.map +1 -1
- package/dist/Variable.js +47 -45
- package/dist/Variable.js.map +1 -1
- package/dist/chunk.js +11 -9
- package/dist/gamepad.js +396 -660
- package/dist/gamepad.js.map +1 -1
- package/dist/pixi.js +2631 -2593
- package/dist/pixi.js.map +1 -1
- package/dist/platform.js +6 -4
- package/dist/platform.js.map +1 -1
- package/dist/rolldown-runtime.js +20 -0
- package/dist/sn/RubySpliter.d.ts.map +1 -1
- package/dist/web.js +418 -418
- package/dist/web.js.map +1 -1
- package/dist_app/Button.js +36 -34
- package/dist_app/Button.js.map +1 -1
- package/dist_app/CallStack.js +11 -6
- package/dist_app/CallStack.js.map +1 -1
- package/dist_app/CmnInterface.js +13 -11
- package/dist_app/CmnInterface.js.map +1 -1
- package/dist_app/CmnLib.js +58 -56
- package/dist_app/CmnLib.js.map +1 -1
- package/dist_app/Config.js +9 -7
- package/dist_app/Config.js.map +1 -1
- package/dist_app/ConfigBase.js +52 -49
- package/dist_app/ConfigBase.js.map +1 -1
- package/dist_app/DebugMng.js +9 -6
- package/dist_app/DebugMng.js.map +1 -1
- package/dist_app/EventListenerCtn.js +6 -4
- package/dist_app/EventListenerCtn.js.map +1 -1
- package/dist_app/EventMng.js +522 -417
- package/dist_app/EventMng.js.map +1 -1
- package/dist_app/Grammar.js +22 -20
- package/dist_app/Grammar.js.map +1 -1
- package/dist_app/GrpLayer.js +58 -57
- package/dist_app/GrpLayer.js.map +1 -1
- package/dist_app/Layer.js +66 -64
- package/dist_app/Layer.js.map +1 -1
- package/dist_app/LayerMng.js +461 -441
- package/dist_app/LayerMng.js.map +1 -1
- package/dist_app/Main.js +69 -67
- package/dist_app/Main.js.map +1 -1
- package/dist_app/PropParser.js +23 -19
- package/dist_app/PropParser.js.map +1 -1
- package/dist_app/Reading.js +422 -418
- package/dist_app/Reading.js.map +1 -1
- package/dist_app/RubySpliter.js +6 -4
- package/dist_app/RubySpliter.js.map +1 -1
- package/dist_app/ScriptIterator.js +374 -370
- package/dist_app/ScriptIterator.js.map +1 -1
- package/dist_app/SndBuf.js +643 -622
- package/dist_app/SndBuf.js.map +1 -1
- package/dist_app/SoundMng.js +59 -60
- package/dist_app/SoundMng.js.map +1 -1
- package/dist_app/SpritesMng.js +135 -129
- package/dist_app/SpritesMng.js.map +1 -1
- package/dist_app/SysBase.js +985 -950
- package/dist_app/SysBase.js.map +1 -1
- package/dist_app/TxtLayer.js +558 -551
- package/dist_app/TxtLayer.js.map +1 -1
- package/dist_app/Variable.js +47 -45
- package/dist_app/Variable.js.map +1 -1
- package/dist_app/app.js +62 -63
- package/dist_app/app.js.map +1 -1
- package/dist_app/appMain.js +11 -11
- package/dist_app/appMain.js.map +1 -1
- package/dist_app/chunk.js +11 -9
- package/dist_app/gamepad.js +396 -660
- package/dist_app/gamepad.js.map +1 -1
- package/dist_app/pixi.js +2028 -1990
- package/dist_app/pixi.js.map +1 -1
- package/dist_app/platform.js +6 -4
- package/dist_app/platform.js.map +1 -1
- package/dist_app/preload.js +1 -1
- package/dist_app/preload.js.map +1 -1
- package/dist_app/rolldown-runtime.js +20 -0
- package/dist_app/sn/RubySpliter.d.ts.map +1 -1
- package/package.json +20 -21
package/dist/SoundMng.js
CHANGED
|
@@ -1,37 +1,35 @@
|
|
|
1
|
-
import { l as
|
|
2
|
-
import "./
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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 {
|
|
1
|
+
import { l as e, s as t } from "./CmnLib.js";
|
|
2
|
+
import { n, r, t as i } from "./SndBuf.js";
|
|
3
|
+
//#region src/sn/SoundMng.ts
|
|
4
|
+
var a = r(), o = class {
|
|
5
|
+
val;
|
|
8
6
|
#e = {};
|
|
9
7
|
#t(e) {
|
|
10
8
|
return this.#e[e];
|
|
11
9
|
}
|
|
12
|
-
constructor(e,
|
|
13
|
-
this.val =
|
|
14
|
-
let
|
|
15
|
-
for (let e of "aac,caf,dolby,flac,m4a,m4b,mp3,mp4,mpeg,oga,ogg,opus,wav,weba,webm".split(","))
|
|
16
|
-
|
|
10
|
+
constructor(e, t, n, r, o) {
|
|
11
|
+
this.val = n, t.volume = (e) => this.#r(e), t.fadebgm = (e) => this.#s(e), t.fadeoutbgm = (e) => this.#a(e), t.fadeoutse = (e) => this.#o(e), t.fadese = (e) => this.#c(e), t.playbgm = (e) => this.#l(e), t.playse = (e) => this.#u(e), t.stop_allse = () => this.#f(), t.stopbgm = (e) => this.#p(e), t.stopse = (e) => this.#m(e), t.wb = (e) => this.#h(e), t.wf = (e) => this.#g(e), t.stopfadese = () => !1, t.wl = (e) => this.#_(e), t.ws = (e) => this.#v(e), t.xchgbuf = (e) => this.#y(e), n.setVal_Nochk("save", "const.sn.loopPlaying", "{}");
|
|
12
|
+
let s = {};
|
|
13
|
+
for (let e of "aac,caf,dolby,flac,m4a,m4b,mp3,mp4,mpeg,oga,ogg,opus,wav,weba,webm".split(",")) s[e] = a.Howler.codecs(e);
|
|
14
|
+
n.setVal_Nochk("tmp", "const.sn.sound.codecs", JSON.stringify(s)), i.init(e, n, r, o, (e) => this.#t(e));
|
|
17
15
|
}
|
|
18
16
|
#n;
|
|
19
17
|
setEvtMng(e) {
|
|
20
|
-
this.#n = e,
|
|
18
|
+
this.#n = e, i.setEvtMng(e);
|
|
21
19
|
}
|
|
22
|
-
setNoticeChgVolume(e,
|
|
23
|
-
this.val.defValTrg("sys:sn.sound.global_volume", (
|
|
24
|
-
let
|
|
25
|
-
|
|
26
|
-
}), this.val.defValTrg("sys:sn.sound.movie_volume", (e,
|
|
20
|
+
setNoticeChgVolume(e, t) {
|
|
21
|
+
this.val.defValTrg("sys:sn.sound.global_volume", (t, n) => {
|
|
22
|
+
let r = Number(n);
|
|
23
|
+
a.Howler.volume(r), e(r);
|
|
24
|
+
}), this.val.defValTrg("sys:sn.sound.movie_volume", (e, n) => t(Number(n))), 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
25
|
}
|
|
28
26
|
#r(e) {
|
|
29
|
-
let { buf:
|
|
30
|
-
return Number(this.val.getVal("sys:" +
|
|
27
|
+
let { buf: t = "SE" } = e, n = "const.sn.sound." + t + ".volume", r = this.#i(e, 1);
|
|
28
|
+
return Number(this.val.getVal("sys:" + n)) === r ? !1 : (this.val.setVal_Nochk("sys", n, r), this.val.flush(), e.time = 0, e.volume = Number(this.val.getVal("save:" + n)), this.#c(e));
|
|
31
29
|
}
|
|
32
|
-
#i(
|
|
33
|
-
let
|
|
34
|
-
return
|
|
30
|
+
#i(t, n) {
|
|
31
|
+
let r = e(t, "volume", n);
|
|
32
|
+
return r < 0 ? 0 : r > 1 ? 1 : r;
|
|
35
33
|
}
|
|
36
34
|
#a(e) {
|
|
37
35
|
return e.volume = 0, this.#s(e);
|
|
@@ -43,83 +41,84 @@ var import_howler = require_howler(), SoundMng = class {
|
|
|
43
41
|
return e.buf = "BGM", this.#c(e);
|
|
44
42
|
}
|
|
45
43
|
#c(e) {
|
|
46
|
-
let { buf:
|
|
47
|
-
return this.#e[
|
|
44
|
+
let { buf: t = "SE" } = e;
|
|
45
|
+
return this.#e[t]?.fade(e), !1;
|
|
48
46
|
}
|
|
49
47
|
#l(e) {
|
|
50
|
-
return e.buf = "BGM", e.canskip = !1,
|
|
48
|
+
return e.buf = "BGM", e.canskip = !1, t(e, "loop", !0), this.#u(e);
|
|
51
49
|
}
|
|
52
50
|
#u(e) {
|
|
53
|
-
let { buf:
|
|
54
|
-
if (this.#m({ buf:
|
|
51
|
+
let { buf: n = "SE" } = e;
|
|
52
|
+
if (this.#m({ buf: n }), t(e, "canskip", !0) && this.#n.isSkipping) return !1;
|
|
55
53
|
this.#d();
|
|
56
|
-
let
|
|
57
|
-
return this.#e[
|
|
54
|
+
let r = t(e, "join", !0);
|
|
55
|
+
return this.#e[n] = i.generate(e, n, r), r;
|
|
58
56
|
}
|
|
59
57
|
#d = () => {
|
|
60
|
-
|
|
58
|
+
a.Howler.volume(Number(this.val.getVal("sys:sn.sound.global_volume", 1))), this.#d = () => {};
|
|
61
59
|
};
|
|
62
60
|
#f() {
|
|
63
61
|
for (let e of Object.keys(this.#e)) this.#m({ buf: e });
|
|
64
|
-
return this.#e = {},
|
|
62
|
+
return this.#e = {}, a.Howler.unload(), !1;
|
|
65
63
|
}
|
|
66
64
|
#p(e) {
|
|
67
65
|
return e.buf = "BGM", this.#m(e);
|
|
68
66
|
}
|
|
69
67
|
#m(e) {
|
|
70
|
-
let { buf:
|
|
71
|
-
return this.#e[
|
|
68
|
+
let { buf: t = "SE" } = e;
|
|
69
|
+
return this.#e[t]?.stopse(), !1;
|
|
72
70
|
}
|
|
73
71
|
#h(e) {
|
|
74
72
|
return e.buf = "BGM", this.#g(e);
|
|
75
73
|
}
|
|
76
74
|
#g(e) {
|
|
77
|
-
let { buf:
|
|
78
|
-
return this.#e[
|
|
75
|
+
let { buf: t = "SE" } = e;
|
|
76
|
+
return this.#e[t]?.wf(e) ?? !1;
|
|
79
77
|
}
|
|
80
78
|
#_(e) {
|
|
81
79
|
return e.buf = "BGM", this.#v(e);
|
|
82
80
|
}
|
|
83
81
|
#v(e) {
|
|
84
|
-
let { buf:
|
|
85
|
-
return this.#e[
|
|
82
|
+
let { buf: t = "SE" } = e;
|
|
83
|
+
return this.#e[t]?.ws(e) ?? !1;
|
|
86
84
|
}
|
|
87
85
|
#y(e) {
|
|
88
|
-
let { buf:
|
|
89
|
-
if (
|
|
90
|
-
let
|
|
91
|
-
return
|
|
86
|
+
let { buf: t = "SE", buf2: r = "SE" } = e;
|
|
87
|
+
if (t === r) return !1;
|
|
88
|
+
let i = this.#e[t], a = this.#e[r];
|
|
89
|
+
return i ? this.#e[r] = i : delete this.#e[r], a ? this.#e[t] = a : delete this.#e[t], n(e), !1;
|
|
92
90
|
}
|
|
93
91
|
playLoopFromSaveObj(e) {
|
|
94
|
-
let
|
|
95
|
-
if (
|
|
96
|
-
let
|
|
92
|
+
let t = String(this.val.getVal("save:const.sn.loopPlaying", "{}"));
|
|
93
|
+
if (t === "{}") return this.#f(), [];
|
|
94
|
+
let n = JSON.parse(t);
|
|
97
95
|
if (e) this.#f();
|
|
98
|
-
else for (let [e,
|
|
99
|
-
return Object.entries(
|
|
100
|
-
let
|
|
101
|
-
if (!e &&
|
|
102
|
-
|
|
96
|
+
else for (let [e, t] of Object.entries(this.#e)) e in n || t.stopse();
|
|
97
|
+
return Object.entries(n).map(([t, n]) => new Promise((r) => {
|
|
98
|
+
let i = this.#e[t];
|
|
99
|
+
if (!e && i && i.fn === n) {
|
|
100
|
+
r();
|
|
103
101
|
return;
|
|
104
102
|
}
|
|
105
|
-
let
|
|
106
|
-
fn:
|
|
107
|
-
buf:
|
|
103
|
+
let a = "save:const.sn.sound." + t + ".", o = {
|
|
104
|
+
fn: n,
|
|
105
|
+
buf: t,
|
|
108
106
|
join: !1,
|
|
109
107
|
loop: !0,
|
|
110
|
-
volume: Number(this.val.getVal(
|
|
111
|
-
start_ms: Number(this.val.getVal(
|
|
112
|
-
end_ms: Number(this.val.getVal(
|
|
113
|
-
ret_ms: Number(this.val.getVal(
|
|
114
|
-
fnc:
|
|
108
|
+
volume: Number(this.val.getVal(a + "volume")),
|
|
109
|
+
start_ms: Number(this.val.getVal(a + "start_ms")),
|
|
110
|
+
end_ms: Number(this.val.getVal(a + "end_ms")),
|
|
111
|
+
ret_ms: Number(this.val.getVal(a + "ret_ms")),
|
|
112
|
+
fnc: r
|
|
115
113
|
};
|
|
116
|
-
|
|
114
|
+
o.buf === "BGM" ? this.#l(o) : this.#u(o);
|
|
117
115
|
}));
|
|
118
116
|
}
|
|
119
117
|
destroy() {
|
|
120
118
|
this.#f();
|
|
121
119
|
}
|
|
122
120
|
};
|
|
123
|
-
|
|
121
|
+
//#endregion
|
|
122
|
+
export { o as SoundMng };
|
|
124
123
|
|
|
125
124
|
//# sourceMappingURL=SoundMng.js.map
|
package/dist/SoundMng.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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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"}
|
|
1
|
+
{"version":3,"file":"SoundMng.js","names":["#hSndBuf","#volume","#fadebgm","#fadeoutbgm","#fadeoutse","#fadese","#playbgm","#playse","#stop_allse","#stopbgm","#stopse","#wb","#wf","#wl","#ws","#xchgbuf","#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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"}
|
package/dist/SpritesMng.js
CHANGED
|
@@ -1,24 +1,29 @@
|
|
|
1
|
-
import { d as
|
|
2
|
-
import { b as
|
|
3
|
-
import { n as
|
|
4
|
-
import { t as
|
|
5
|
-
import { t as
|
|
6
|
-
import { t as
|
|
7
|
-
|
|
1
|
+
import { d as e, l as t, p as n, s as r } from "./CmnLib.js";
|
|
2
|
+
import { b as i, c as a, f as o, g as s, h as c, l, n as u, o as d } from "./pixi.js";
|
|
3
|
+
import { n as f } from "./ConfigBase.js";
|
|
4
|
+
import { t as p } from "./Layer.js";
|
|
5
|
+
import { t as m } from "./DebugMng.js";
|
|
6
|
+
import { t as h } from "./Reading.js";
|
|
7
|
+
//#region src/sn/SpritesMng.ts
|
|
8
|
+
var g = class g {
|
|
9
|
+
csvFn;
|
|
10
|
+
ctn;
|
|
11
|
+
fncFirstComp;
|
|
12
|
+
fncAllComp;
|
|
8
13
|
static #e;
|
|
9
14
|
static #t;
|
|
10
15
|
static #n;
|
|
11
16
|
static #r;
|
|
12
|
-
static init(e,
|
|
13
|
-
g.#e = e, g.#t =
|
|
14
|
-
let
|
|
17
|
+
static init(e, t, n, r, i) {
|
|
18
|
+
g.#e = e, g.#t = t, g.#n = n, g.#r = r, n.arg.crypto && (g.#f = (e, t, n) => g.#m(e, t, n), g.#g = (e, t, n) => g.#_(e, t, n));
|
|
19
|
+
let a = () => {
|
|
15
20
|
let e = g.#a * g.#i;
|
|
16
|
-
for (let
|
|
21
|
+
for (let t of Object.values(g.#y)) t.volume = e;
|
|
17
22
|
};
|
|
18
|
-
|
|
19
|
-
g.#a = e,
|
|
23
|
+
i.setNoticeChgVolume((e) => {
|
|
24
|
+
g.#a = e, a();
|
|
20
25
|
}, (e) => {
|
|
21
|
-
g.#i = e,
|
|
26
|
+
g.#i = e, a();
|
|
22
27
|
});
|
|
23
28
|
}
|
|
24
29
|
static #i = 1;
|
|
@@ -27,9 +32,9 @@ var SpritesMng = class g {
|
|
|
27
32
|
static setEvtMng(e) {
|
|
28
33
|
g.#o = e;
|
|
29
34
|
}
|
|
30
|
-
constructor(e = "",
|
|
31
|
-
this.csvFn = e, this.ctn =
|
|
32
|
-
|
|
35
|
+
constructor(e = "", t, n = () => {}, r = () => {}) {
|
|
36
|
+
this.csvFn = e, this.ctn = t, this.fncFirstComp = n, this.fncAllComp = r, e && (this.#s = t ? (e) => {
|
|
37
|
+
t.addChild(e), this.#c.push(e);
|
|
33
38
|
} : () => {}, this.ret = g.#l(e, (e) => this.fncFirstComp(e), (e) => this.fncAllComp(e), (e) => this.#s(e)));
|
|
34
39
|
}
|
|
35
40
|
ret = !1;
|
|
@@ -43,179 +48,180 @@ var SpritesMng = class g {
|
|
|
43
48
|
static destroy() {
|
|
44
49
|
g.#u = {}, g.#d = {}, g.#y = {};
|
|
45
50
|
}
|
|
46
|
-
static #l(e,
|
|
51
|
+
static #l(e, t, n, r) {
|
|
47
52
|
if (!e) return !1;
|
|
48
|
-
let
|
|
53
|
+
let o = !1;
|
|
49
54
|
if (e.startsWith("data:")) {
|
|
50
|
-
let
|
|
51
|
-
let
|
|
52
|
-
|
|
55
|
+
let i = () => {
|
|
56
|
+
let i = d.from(e);
|
|
57
|
+
r(i), t(i), n(o);
|
|
53
58
|
};
|
|
54
|
-
return e in
|
|
59
|
+
return e in s ? i() : (o = !0, new a().add(e, e).load(i)), o;
|
|
55
60
|
}
|
|
56
|
-
let
|
|
57
|
-
for (let
|
|
58
|
-
if (!
|
|
59
|
-
let { dx: e, dy:
|
|
60
|
-
fn:
|
|
61
|
+
let c = [], u = new a();
|
|
62
|
+
for (let t of e.split(",")) {
|
|
63
|
+
if (!t) throw "face属性に空要素が含まれます";
|
|
64
|
+
let { dx: e, dy: n, blendmode: r, fn: d } = g.#u[t] ?? {
|
|
65
|
+
fn: t,
|
|
61
66
|
dx: 0,
|
|
62
67
|
dy: 0,
|
|
63
|
-
blendmode:
|
|
68
|
+
blendmode: i.NORMAL
|
|
64
69
|
};
|
|
65
|
-
if (
|
|
66
|
-
fn:
|
|
67
|
-
fnc: (
|
|
68
|
-
|
|
70
|
+
if (c.push({
|
|
71
|
+
fn: d,
|
|
72
|
+
fnc: (t) => {
|
|
73
|
+
t.transform && (t.x = e, t.y = n, t.blendMode = r);
|
|
69
74
|
}
|
|
70
|
-
}),
|
|
71
|
-
|
|
72
|
-
let
|
|
73
|
-
|
|
74
|
-
...
|
|
75
|
-
name:
|
|
76
|
-
url:
|
|
75
|
+
}), d in g.#d || d in s || d in a.shared.resources) continue;
|
|
76
|
+
o = !0;
|
|
77
|
+
let p = g.#e.searchPath(d, f.SP_GSM), m = this.#n.arg.crypto ? { xhrType: p.endsWith(".json") ? l.XHR_RESPONSE_TYPE.TEXT : l.XHR_RESPONSE_TYPE.BUFFER } : {};
|
|
78
|
+
u.add({
|
|
79
|
+
...m,
|
|
80
|
+
name: d,
|
|
81
|
+
url: p
|
|
77
82
|
});
|
|
78
83
|
}
|
|
79
|
-
let
|
|
80
|
-
|
|
81
|
-
let
|
|
82
|
-
for (let { fn: e, fnc:
|
|
83
|
-
let
|
|
84
|
-
|
|
84
|
+
let p = c.at(0);
|
|
85
|
+
p && (p.fnc = t);
|
|
86
|
+
let m = (e, t) => {
|
|
87
|
+
for (let { fn: e, fnc: n } of c) {
|
|
88
|
+
let i = g.#v(e, t);
|
|
89
|
+
i.name = e, r(i), n(i);
|
|
85
90
|
}
|
|
86
|
-
|
|
91
|
+
n(o);
|
|
87
92
|
};
|
|
88
|
-
return
|
|
93
|
+
return o ? u.use((e, t) => {
|
|
89
94
|
try {
|
|
90
95
|
if (e.extension === "json") {
|
|
91
|
-
this.#n.dec("json", e.data).then((
|
|
96
|
+
this.#n.dec("json", e.data).then((n) => g.#g(n, e, t));
|
|
92
97
|
return;
|
|
93
98
|
}
|
|
94
|
-
this.#n.decAB(e.data).then((
|
|
95
|
-
} catch (
|
|
96
|
-
let
|
|
97
|
-
g.#o.isSkipping ? console.warn(
|
|
99
|
+
this.#n.decAB(e.data).then((n) => g.#f(n, e, t));
|
|
100
|
+
} catch (t) {
|
|
101
|
+
let n = `画像/動画ロード失敗です fn:${e.name} ${String(t)}`;
|
|
102
|
+
g.#o.isSkipping ? console.warn(n) : console.error("%c" + n, "color:#FF3300;");
|
|
98
103
|
}
|
|
99
|
-
}).load(
|
|
104
|
+
}).load(m) : queueMicrotask(() => m(0, {})), o;
|
|
100
105
|
}
|
|
101
106
|
static #u = {};
|
|
102
107
|
static #d = {};
|
|
103
|
-
static #f = (e, { type:
|
|
104
|
-
switch (
|
|
105
|
-
case
|
|
106
|
-
let e =
|
|
107
|
-
e.volume = g.#a, g.#y[
|
|
108
|
+
static #f = (e, { type: t, name: n, data: r }, i) => {
|
|
109
|
+
switch (t) {
|
|
110
|
+
case l.TYPE.VIDEO: {
|
|
111
|
+
let e = r;
|
|
112
|
+
e.volume = g.#a, g.#y[n] = g.#h(e);
|
|
108
113
|
}
|
|
109
114
|
}
|
|
110
|
-
|
|
115
|
+
i();
|
|
111
116
|
};
|
|
112
117
|
static #p(e) {
|
|
113
|
-
let
|
|
114
|
-
if (!
|
|
115
|
-
let [,
|
|
116
|
-
return e.sort((e,
|
|
118
|
+
let t = /([^\d]+)\d+\.(\w+)/.exec(e[0] ?? "");
|
|
119
|
+
if (!t) return [];
|
|
120
|
+
let [, r = "", i = ""] = t, a = r.length, o = -i.length - 1;
|
|
121
|
+
return e.sort((e, t) => n(e.slice(a, o)) > n(t.slice(a, o)) ? 1 : -1);
|
|
117
122
|
}
|
|
118
|
-
static #m(e,
|
|
119
|
-
if (
|
|
120
|
-
|
|
121
|
-
|
|
123
|
+
static #m(e, t, n) {
|
|
124
|
+
if (t.data = e, t.extension !== "bin" && n(), e instanceof HTMLImageElement) {
|
|
125
|
+
o.fromLoader(e, t.url, t.name).then((r) => {
|
|
126
|
+
t.texture = r, t.type = l.TYPE.IMAGE, n(), URL.revokeObjectURL(e.src);
|
|
122
127
|
});
|
|
123
128
|
return;
|
|
124
129
|
}
|
|
125
|
-
e instanceof HTMLVideoElement && (e.volume = g.#a, g.#y[
|
|
130
|
+
e instanceof HTMLVideoElement && (e.volume = g.#a, g.#y[t.name] = g.#h(e), t.type = l.TYPE.VIDEO), n();
|
|
126
131
|
}
|
|
127
132
|
static #h(e) {
|
|
128
|
-
return g.#t.getVal("const.sn.needClick2Play") && (
|
|
133
|
+
return g.#t.getVal("const.sn.needClick2Play") && (m.trace_beforeNew(`[lay系] ${m.strPos()}未クリック状態で動画を自動再生します。音声はミュートされます`, "W"), e.muted = !0), e.setAttribute("playsinline", ""), e;
|
|
129
134
|
}
|
|
130
|
-
static #g = (e, { type:
|
|
131
|
-
switch (
|
|
132
|
-
case
|
|
133
|
-
let e =
|
|
134
|
-
g.#p(e), g.#d[
|
|
135
|
-
aTex: e.map((e) =>
|
|
136
|
-
meta:
|
|
135
|
+
static #g = (e, { type: t, spritesheet: n, name: r, data: i }, a) => {
|
|
136
|
+
switch (t) {
|
|
137
|
+
case l.TYPE.JSON: {
|
|
138
|
+
let e = n._frameKeys;
|
|
139
|
+
g.#p(e), g.#d[r] = {
|
|
140
|
+
aTex: e.map((e) => o.from(e)),
|
|
141
|
+
meta: i.meta
|
|
137
142
|
};
|
|
138
143
|
}
|
|
139
144
|
}
|
|
140
|
-
|
|
145
|
+
a();
|
|
141
146
|
};
|
|
142
|
-
static #_(
|
|
143
|
-
let { meta:
|
|
144
|
-
if (
|
|
145
|
-
|
|
147
|
+
static #_(t, n, r) {
|
|
148
|
+
let { meta: i, frames: s } = n.data = JSON.parse(t);
|
|
149
|
+
if (n.type = l.TYPE.JSON, !i?.image) {
|
|
150
|
+
r();
|
|
146
151
|
return;
|
|
147
152
|
}
|
|
148
|
-
let
|
|
149
|
-
new
|
|
150
|
-
this.#n.decAB(e.data).then((
|
|
151
|
-
if (e.data =
|
|
152
|
-
e.type =
|
|
153
|
+
let u = e(i.image), d = g.#e.searchPath(u, f.SP_GSM);
|
|
154
|
+
new a().use((e, t) => {
|
|
155
|
+
this.#n.decAB(e.data).then((n) => {
|
|
156
|
+
if (e.data = n, n instanceof HTMLImageElement) {
|
|
157
|
+
e.type = l.TYPE.IMAGE, t(), URL.revokeObjectURL(n.src);
|
|
153
158
|
return;
|
|
154
159
|
}
|
|
155
|
-
|
|
156
|
-
}).catch((
|
|
160
|
+
t();
|
|
161
|
+
}).catch((t) => this.#r.errScript(`画像/動画ロード失敗です dec2res4Cripto fn:${e.name} ${String(t)}`, !1));
|
|
157
162
|
}).add({
|
|
158
|
-
name:
|
|
159
|
-
url:
|
|
160
|
-
xhrType:
|
|
161
|
-
}).load((e,
|
|
162
|
-
for (let { data:
|
|
163
|
-
let { baseTexture: e } =
|
|
164
|
-
g.#d[
|
|
165
|
-
aTex:
|
|
166
|
-
meta:
|
|
163
|
+
name: u,
|
|
164
|
+
url: d,
|
|
165
|
+
xhrType: l.XHR_RESPONSE_TYPE.BUFFER
|
|
166
|
+
}).load((e, t) => {
|
|
167
|
+
for (let { data: t } of Object.values(e.resources)) {
|
|
168
|
+
let { baseTexture: e } = o.from(t), r = Object.values(s);
|
|
169
|
+
g.#d[n.name] = {
|
|
170
|
+
aTex: r.map(({ frame: { x: t, y: n, w: r, h: i } }) => new o(e, new c(t, n, r, i))),
|
|
171
|
+
meta: i
|
|
167
172
|
};
|
|
168
173
|
}
|
|
169
|
-
|
|
174
|
+
r();
|
|
170
175
|
});
|
|
171
176
|
}
|
|
172
|
-
static #v(e,
|
|
173
|
-
let
|
|
174
|
-
if (
|
|
175
|
-
let e = new
|
|
176
|
-
return e.animationSpeed =
|
|
177
|
+
static #v(e, t) {
|
|
178
|
+
let n = g.#d[e];
|
|
179
|
+
if (n) {
|
|
180
|
+
let e = new u(n.aTex);
|
|
181
|
+
return e.animationSpeed = n.meta.animationSpeed ?? 1, e.play(), e;
|
|
177
182
|
}
|
|
178
|
-
if (e in
|
|
179
|
-
let
|
|
180
|
-
if (
|
|
181
|
-
let
|
|
182
|
-
return
|
|
183
|
+
if (e in s) return d.from(e);
|
|
184
|
+
let r = g.#y[e];
|
|
185
|
+
if (r) return d.from(r);
|
|
186
|
+
let i = t[e];
|
|
187
|
+
return i ? new d(i.texture) : new d();
|
|
183
188
|
}
|
|
184
189
|
static #y = {};
|
|
185
190
|
static getHFn2VElm(e) {
|
|
186
191
|
return g.#y[e];
|
|
187
192
|
}
|
|
188
193
|
static wv(e) {
|
|
189
|
-
let { fn:
|
|
190
|
-
if (!
|
|
191
|
-
let
|
|
192
|
-
if (!
|
|
193
|
-
if (g.#o.isSkipping ||
|
|
194
|
-
let
|
|
195
|
-
|
|
194
|
+
let { fn: t } = e;
|
|
195
|
+
if (!t) throw "fnは必須です";
|
|
196
|
+
let n = g.#y[t];
|
|
197
|
+
if (!n || n.loop) return !1;
|
|
198
|
+
if (g.#o.isSkipping || n.ended) return g.stopVideo(t), !1;
|
|
199
|
+
let i = "wv fn:" + t, a = r(e, "stop", !0), o = () => {
|
|
200
|
+
a && g.stopVideo(t);
|
|
196
201
|
};
|
|
197
|
-
return
|
|
202
|
+
return h.beginProc(i, o, !0, r(e, "canskip", !0) ? o : void 0), n.addEventListener("ended", () => h.notifyEndProc(i), {
|
|
198
203
|
once: !0,
|
|
199
204
|
passive: !0
|
|
200
205
|
}), !0;
|
|
201
206
|
}
|
|
202
207
|
static stopVideo(e) {
|
|
203
|
-
let
|
|
204
|
-
|
|
208
|
+
let t = g.#y[e];
|
|
209
|
+
t && (delete g.#y[e], t.pause(), t.currentTime = t.duration);
|
|
205
210
|
}
|
|
206
211
|
static add_face(e) {
|
|
207
|
-
let { name:
|
|
208
|
-
if (!
|
|
209
|
-
if (
|
|
210
|
-
let { fn:
|
|
211
|
-
return g.#u[
|
|
212
|
-
fn:
|
|
213
|
-
dx:
|
|
214
|
-
dy:
|
|
215
|
-
blendmode:
|
|
212
|
+
let { name: n } = e;
|
|
213
|
+
if (!n) throw "nameは必須です";
|
|
214
|
+
if (n in g.#u) throw "一つのname(" + n + ")に対して同じ画像を複数割り当てられません";
|
|
215
|
+
let { fn: r = n } = e;
|
|
216
|
+
return g.#u[n] = {
|
|
217
|
+
fn: r,
|
|
218
|
+
dx: t(e, "dx", 0),
|
|
219
|
+
dy: t(e, "dy", 0),
|
|
220
|
+
blendmode: p.getBlendmodeNum(e.blendmode ?? "")
|
|
216
221
|
}, !1;
|
|
217
222
|
}
|
|
218
223
|
};
|
|
219
|
-
|
|
224
|
+
//#endregion
|
|
225
|
+
export { g as t };
|
|
220
226
|
|
|
221
227
|
//# sourceMappingURL=SpritesMng.js.map
|