@famibee/skynovel 2.0.2 → 2.0.4

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.
Files changed (121) hide show
  1. package/dist/Button.js +36 -34
  2. package/dist/Button.js.map +1 -1
  3. package/dist/CallStack.js +11 -6
  4. package/dist/CallStack.js.map +1 -1
  5. package/dist/CmnInterface.js +13 -11
  6. package/dist/CmnInterface.js.map +1 -1
  7. package/dist/CmnLib.js +58 -56
  8. package/dist/CmnLib.js.map +1 -1
  9. package/dist/Config.js +9 -7
  10. package/dist/Config.js.map +1 -1
  11. package/dist/ConfigBase.js +52 -49
  12. package/dist/ConfigBase.js.map +1 -1
  13. package/dist/DebugMng.js +9 -6
  14. package/dist/DebugMng.js.map +1 -1
  15. package/dist/EventListenerCtn.js +6 -4
  16. package/dist/EventListenerCtn.js.map +1 -1
  17. package/dist/EventMng.js +522 -417
  18. package/dist/EventMng.js.map +1 -1
  19. package/dist/Grammar.js +22 -20
  20. package/dist/Grammar.js.map +1 -1
  21. package/dist/GrpLayer.js +58 -57
  22. package/dist/GrpLayer.js.map +1 -1
  23. package/dist/Layer.js +66 -64
  24. package/dist/Layer.js.map +1 -1
  25. package/dist/LayerMng.js +461 -441
  26. package/dist/LayerMng.js.map +1 -1
  27. package/dist/Main.js +69 -67
  28. package/dist/Main.js.map +1 -1
  29. package/dist/PropParser.js +23 -19
  30. package/dist/PropParser.js.map +1 -1
  31. package/dist/Reading.js +422 -418
  32. package/dist/Reading.js.map +1 -1
  33. package/dist/RubySpliter.js +4 -2
  34. package/dist/RubySpliter.js.map +1 -1
  35. package/dist/ScriptIterator.js +374 -370
  36. package/dist/ScriptIterator.js.map +1 -1
  37. package/dist/SndBuf.js +643 -622
  38. package/dist/SndBuf.js.map +1 -1
  39. package/dist/SoundMng.js +59 -60
  40. package/dist/SoundMng.js.map +1 -1
  41. package/dist/SpritesMng.js +135 -129
  42. package/dist/SpritesMng.js.map +1 -1
  43. package/dist/SysBase.js +1019 -955
  44. package/dist/SysBase.js.map +1 -1
  45. package/dist/TxtLayer.js +558 -551
  46. package/dist/TxtLayer.js.map +1 -1
  47. package/dist/Variable.js +47 -45
  48. package/dist/Variable.js.map +1 -1
  49. package/dist/chunk.js +11 -9
  50. package/dist/gamepad.js +396 -660
  51. package/dist/gamepad.js.map +1 -1
  52. package/dist/pixi.js +3044 -3648
  53. package/dist/pixi.js.map +1 -1
  54. package/dist/platform.js +6 -4
  55. package/dist/platform.js.map +1 -1
  56. package/dist/rolldown-runtime.js +20 -0
  57. package/dist/web.js +106 -590
  58. package/dist/web.js.map +1 -1
  59. package/dist_app/Button.js +36 -34
  60. package/dist_app/Button.js.map +1 -1
  61. package/dist_app/CallStack.js +11 -6
  62. package/dist_app/CallStack.js.map +1 -1
  63. package/dist_app/CmnInterface.js +13 -11
  64. package/dist_app/CmnInterface.js.map +1 -1
  65. package/dist_app/CmnLib.js +58 -56
  66. package/dist_app/CmnLib.js.map +1 -1
  67. package/dist_app/Config.js +9 -7
  68. package/dist_app/Config.js.map +1 -1
  69. package/dist_app/ConfigBase.js +52 -49
  70. package/dist_app/ConfigBase.js.map +1 -1
  71. package/dist_app/DebugMng.js +9 -6
  72. package/dist_app/DebugMng.js.map +1 -1
  73. package/dist_app/EventListenerCtn.js +6 -4
  74. package/dist_app/EventListenerCtn.js.map +1 -1
  75. package/dist_app/EventMng.js +522 -417
  76. package/dist_app/EventMng.js.map +1 -1
  77. package/dist_app/Grammar.js +22 -20
  78. package/dist_app/Grammar.js.map +1 -1
  79. package/dist_app/GrpLayer.js +58 -57
  80. package/dist_app/GrpLayer.js.map +1 -1
  81. package/dist_app/Layer.js +66 -64
  82. package/dist_app/Layer.js.map +1 -1
  83. package/dist_app/LayerMng.js +461 -441
  84. package/dist_app/LayerMng.js.map +1 -1
  85. package/dist_app/Main.js +69 -67
  86. package/dist_app/Main.js.map +1 -1
  87. package/dist_app/PropParser.js +23 -19
  88. package/dist_app/PropParser.js.map +1 -1
  89. package/dist_app/Reading.js +422 -418
  90. package/dist_app/Reading.js.map +1 -1
  91. package/dist_app/RubySpliter.js +4 -2
  92. package/dist_app/RubySpliter.js.map +1 -1
  93. package/dist_app/ScriptIterator.js +374 -370
  94. package/dist_app/ScriptIterator.js.map +1 -1
  95. package/dist_app/SndBuf.js +643 -622
  96. package/dist_app/SndBuf.js.map +1 -1
  97. package/dist_app/SoundMng.js +59 -60
  98. package/dist_app/SoundMng.js.map +1 -1
  99. package/dist_app/SpritesMng.js +135 -129
  100. package/dist_app/SpritesMng.js.map +1 -1
  101. package/dist_app/SysBase.js +1019 -955
  102. package/dist_app/SysBase.js.map +1 -1
  103. package/dist_app/TxtLayer.js +558 -551
  104. package/dist_app/TxtLayer.js.map +1 -1
  105. package/dist_app/Variable.js +47 -45
  106. package/dist_app/Variable.js.map +1 -1
  107. package/dist_app/app.js +62 -63
  108. package/dist_app/app.js.map +1 -1
  109. package/dist_app/appMain.js +1 -21
  110. package/dist_app/appMain.js.map +1 -1
  111. package/dist_app/chunk.js +11 -9
  112. package/dist_app/gamepad.js +396 -660
  113. package/dist_app/gamepad.js.map +1 -1
  114. package/dist_app/pixi.js +2028 -1990
  115. package/dist_app/pixi.js.map +1 -1
  116. package/dist_app/platform.js +6 -4
  117. package/dist_app/platform.js.map +1 -1
  118. package/dist_app/preload.js +1 -1
  119. package/dist_app/preload.js.map +1 -1
  120. package/dist_app/rolldown-runtime.js +20 -0
  121. package/package.json +20 -47
package/dist/SoundMng.js CHANGED
@@ -1,37 +1,35 @@
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 {
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, 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));
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, SndBuf.setEvtMng(e);
18
+ this.#n = e, i.setEvtMng(e);
21
19
  }
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));
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: 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));
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(r, i) {
33
- let a = argChk_Num(r, "volume", i);
34
- return a < 0 ? 0 : a > 1 ? 1 : a;
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: r = "SE" } = e;
47
- return this.#e[r]?.fade(e), !1;
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, argChk_Boolean(e, "loop", !0), this.#u(e);
48
+ return e.buf = "BGM", e.canskip = !1, t(e, "loop", !0), this.#u(e);
51
49
  }
52
50
  #u(e) {
53
- let { buf: i = "SE" } = e;
54
- if (this.#m({ buf: i }), argChk_Boolean(e, "canskip", !0) && this.#n.isSkipping) return !1;
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 a = argChk_Boolean(e, "join", !0);
57
- return this.#e[i] = SndBuf.generate(e, i, a), a;
54
+ let r = t(e, "join", !0);
55
+ return this.#e[n] = i.generate(e, n, r), r;
58
56
  }
59
57
  #d = () => {
60
- import_howler.Howler.volume(Number(this.val.getVal("sys:sn.sound.global_volume", 1))), this.#d = () => {};
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 = {}, import_howler.Howler.unload(), !1;
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: r = "SE" } = e;
71
- return this.#e[r]?.stopse(), !1;
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: r = "SE" } = e;
78
- return this.#e[r]?.wf(e) ?? !1;
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: r = "SE" } = e;
85
- return this.#e[r]?.ws(e) ?? !1;
82
+ let { buf: t = "SE" } = e;
83
+ return this.#e[t]?.ws(e) ?? !1;
86
84
  }
87
85
  #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;
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 r = String(this.val.getVal("save:const.sn.loopPlaying", "{}"));
95
- if (r === "{}") return this.#f(), [];
96
- let i = JSON.parse(r);
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, 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();
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 s = "save:const.sn.sound." + r + ".", c = {
106
- fn: i,
107
- buf: r,
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(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
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
- c.buf === "BGM" ? this.#l(c) : this.#u(c);
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
- export { SoundMng };
121
+ //#endregion
122
+ export { o as SoundMng };
124
123
 
125
124
  //# sourceMappingURL=SoundMng.js.map
@@ -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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"}
@@ -1,24 +1,29 @@
1
- import { d as getFn, l as argChk_Num, p as int, s as argChk_Boolean } from "./CmnLib.js";
2
- import { b as BLEND_MODES, c as Loader, f as Texture, g as TextureCache, h as Rectangle, l as LoaderResource, n as AnimatedSprite, o as Sprite } from "./pixi.js";
3
- import { n as SEARCH_PATH_ARG_EXT } from "./ConfigBase.js";
4
- import { t as Layer } from "./Layer.js";
5
- import { t as DebugMng } from "./DebugMng.js";
6
- import { t as Reading } from "./Reading.js";
7
- var SpritesMng = class g {
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, i, a, o, s) {
13
- g.#e = e, g.#t = i, g.#n = a, g.#r = o, a.arg.crypto && (g.#f = (e, i, a) => g.#m(e, i, a), g.#g = (e, i, a) => g.#_(e, i, a));
14
- let c = () => {
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 i of Object.values(g.#y)) i.volume = e;
21
+ for (let t of Object.values(g.#y)) t.volume = e;
17
22
  };
18
- s.setNoticeChgVolume((e) => {
19
- g.#a = e, c();
23
+ i.setNoticeChgVolume((e) => {
24
+ g.#a = e, a();
20
25
  }, (e) => {
21
- g.#i = e, c();
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 = "", i, a = () => {}, o = () => {}) {
31
- this.csvFn = e, this.ctn = i, this.fncFirstComp = a, this.fncAllComp = o, e && (this.#s = i ? (e) => {
32
- i.addChild(e), this.#c.push(e);
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, i, a, o) {
51
+ static #l(e, t, n, r) {
47
52
  if (!e) return !1;
48
- let l = !1;
53
+ let o = !1;
49
54
  if (e.startsWith("data:")) {
50
- let s = () => {
51
- let s = Sprite.from(e);
52
- o(s), i(s), a(l);
55
+ let i = () => {
56
+ let i = d.from(e);
57
+ r(i), t(i), n(o);
53
58
  };
54
- return e in TextureCache ? s() : (l = !0, new Loader().add(e, e).load(s)), l;
59
+ return e in s ? i() : (o = !0, new a().add(e, e).load(i)), o;
55
60
  }
56
- let d = [], f = new Loader();
57
- for (let i of e.split(",")) {
58
- if (!i) throw "face属性に空要素が含まれます";
59
- let { dx: e, dy: a, blendmode: o, fn: p } = g.#u[i] ?? {
60
- fn: i,
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: BLEND_MODES.NORMAL
68
+ blendmode: i.NORMAL
64
69
  };
65
- if (d.push({
66
- fn: p,
67
- fnc: (i) => {
68
- i.transform && (i.x = e, i.y = a, i.blendMode = o);
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
- }), p in g.#d || p in TextureCache || p in Loader.shared.resources) continue;
71
- l = !0;
72
- let m = g.#e.searchPath(p, SEARCH_PATH_ARG_EXT.SP_GSM), h = this.#n.arg.crypto ? { xhrType: m.endsWith(".json") ? LoaderResource.XHR_RESPONSE_TYPE.TEXT : LoaderResource.XHR_RESPONSE_TYPE.BUFFER } : {};
73
- f.add({
74
- ...h,
75
- name: p,
76
- url: m
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 m = d.at(0);
80
- m && (m.fnc = i);
81
- let h = (e, i) => {
82
- for (let { fn: e, fnc: a } of d) {
83
- let s = g.#v(e, i);
84
- s.name = e, o(s), a(s);
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
- a(l);
91
+ n(o);
87
92
  };
88
- return l ? f.use((e, i) => {
93
+ return o ? u.use((e, t) => {
89
94
  try {
90
95
  if (e.extension === "json") {
91
- this.#n.dec("json", e.data).then((a) => g.#g(a, e, i));
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((a) => g.#f(a, e, i));
95
- } catch (i) {
96
- let a = `画像/動画ロード失敗です fn:${e.name} ${String(i)}`;
97
- g.#o.isSkipping ? console.warn(a) : console.error("%c" + a, "color:#FF3300;");
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(h) : queueMicrotask(() => h(0, {})), l;
104
+ }).load(m) : queueMicrotask(() => m(0, {})), o;
100
105
  }
101
106
  static #u = {};
102
107
  static #d = {};
103
- static #f = (e, { type: i, name: a, data: o }, s) => {
104
- switch (i) {
105
- case LoaderResource.TYPE.VIDEO: {
106
- let e = o;
107
- e.volume = g.#a, g.#y[a] = g.#h(e);
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
- s();
115
+ i();
111
116
  };
112
117
  static #p(e) {
113
- let i = /([^\d]+)\d+\.(\w+)/.exec(e[0] ?? "");
114
- if (!i) return [];
115
- let [, o = "", s = ""] = i, c = o.length, l = -s.length - 1;
116
- return e.sort((e, i) => int(e.slice(c, l)) > int(i.slice(c, l)) ? 1 : -1);
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, i, a) {
119
- if (i.data = e, i.extension !== "bin" && a(), e instanceof HTMLImageElement) {
120
- Texture.fromLoader(e, i.url, i.name).then((o) => {
121
- i.texture = o, i.type = LoaderResource.TYPE.IMAGE, a(), URL.revokeObjectURL(e.src);
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[i.name] = g.#h(e), i.type = LoaderResource.TYPE.VIDEO), a();
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") && (DebugMng.trace_beforeNew(`[lay系] ${DebugMng.strPos()}未クリック状態で動画を自動再生します。音声はミュートされます`, "W"), e.muted = !0), e.setAttribute("playsinline", ""), e;
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: i, spritesheet: a, name: o, data: s }, c) => {
131
- switch (i) {
132
- case LoaderResource.TYPE.JSON: {
133
- let e = a._frameKeys;
134
- g.#p(e), g.#d[o] = {
135
- aTex: e.map((e) => Texture.from(e)),
136
- meta: s.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
- c();
145
+ a();
141
146
  };
142
- static #_(i, a, o) {
143
- let { meta: s, frames: u } = a.data = JSON.parse(i);
144
- if (a.type = LoaderResource.TYPE.JSON, !s?.image) {
145
- o();
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 f = getFn(s.image), p = g.#e.searchPath(f, SEARCH_PATH_ARG_EXT.SP_GSM);
149
- new Loader().use((e, i) => {
150
- this.#n.decAB(e.data).then((a) => {
151
- if (e.data = a, a instanceof HTMLImageElement) {
152
- e.type = LoaderResource.TYPE.IMAGE, i(), URL.revokeObjectURL(a.src);
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
- i();
156
- }).catch((i) => this.#r.errScript(`画像/動画ロード失敗です dec2res4Cripto fn:${e.name} ${String(i)}`, !1));
160
+ t();
161
+ }).catch((t) => this.#r.errScript(`画像/動画ロード失敗です dec2res4Cripto fn:${e.name} ${String(t)}`, !1));
157
162
  }).add({
158
- name: f,
159
- url: p,
160
- xhrType: LoaderResource.XHR_RESPONSE_TYPE.BUFFER
161
- }).load((e, i) => {
162
- for (let { data: i } of Object.values(e.resources)) {
163
- let { baseTexture: e } = Texture.from(i), o = Object.values(u);
164
- g.#d[a.name] = {
165
- aTex: o.map(({ frame: { x: i, y: a, w: o, h: s } }) => new Texture(e, new Rectangle(i, a, o, s))),
166
- meta: s
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
- o();
174
+ r();
170
175
  });
171
176
  }
172
- static #v(e, i) {
173
- let a = g.#d[e];
174
- if (a) {
175
- let e = new AnimatedSprite(a.aTex);
176
- return e.animationSpeed = a.meta.animationSpeed ?? 1, e.play(), e;
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 TextureCache) return Sprite.from(e);
179
- let o = g.#y[e];
180
- if (o) return Sprite.from(o);
181
- let s = i[e];
182
- return s ? new Sprite(s.texture) : new Sprite();
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: i } = e;
190
- if (!i) throw "fnは必須です";
191
- let a = g.#y[i];
192
- if (!a || a.loop) return !1;
193
- if (g.#o.isSkipping || a.ended) return g.stopVideo(i), !1;
194
- let s = "wv fn:" + i, c = argChk_Boolean(e, "stop", !0), l = () => {
195
- c && g.stopVideo(i);
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 Reading.beginProc(s, l, !0, argChk_Boolean(e, "canskip", !0) ? l : void 0), a.addEventListener("ended", () => Reading.notifyEndProc(s), {
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 i = g.#y[e];
204
- i && (delete g.#y[e], i.pause(), i.currentTime = i.duration);
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: a } = e;
208
- if (!a) throw "nameは必須です";
209
- if (a in g.#u) throw "一つのname(" + a + ")に対して同じ画像を複数割り当てられません";
210
- let { fn: o = a } = e;
211
- return g.#u[a] = {
212
- fn: o,
213
- dx: argChk_Num(e, "dx", 0),
214
- dy: argChk_Num(e, "dy", 0),
215
- blendmode: Layer.getBlendmodeNum(e.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
- export { SpritesMng as t };
224
+ //#endregion
225
+ export { g as t };
220
226
 
221
227
  //# sourceMappingURL=SpritesMng.js.map