@famibee/skynovel 1.64.21 → 1.65.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/dist/Button.js +59 -57
- package/dist/Button.js.map +1 -1
- package/dist/CmnTween.js +921 -109
- package/dist/CmnTween.js.map +1 -1
- package/dist/EventMng.js +1 -1
- package/dist/EventMng.js.map +1 -1
- package/dist/GrpLayer.js +10 -11
- package/dist/GrpLayer.js.map +1 -1
- package/dist/LayerMng.js +43 -44
- package/dist/LayerMng.js.map +1 -1
- package/dist/Main.js.map +1 -1
- package/dist/RubySpliter.js +18 -15
- package/dist/RubySpliter.js.map +1 -1
- package/dist/ScriptIterator.js +1 -2
- package/dist/ScriptIterator.js.map +1 -1
- package/dist/SndBuf.js +83 -77
- package/dist/SndBuf.js.map +1 -1
- package/dist/SpritesMng.js +50 -46
- package/dist/SpritesMng.js.map +1 -1
- package/dist/TxtLayer.js +435 -420
- package/dist/TxtLayer.js.map +1 -1
- package/dist/Variable.js +1 -1
- package/dist/sn/Button.d.ts.map +1 -1
- package/dist/sn/CmnTween.d.ts +4 -4
- package/dist/sn/CmnTween.d.ts.map +1 -1
- package/dist/sn/FocusMng.d.ts +2 -2
- package/dist/sn/FocusMng.d.ts.map +1 -1
- package/dist/sn/FrameMng.d.ts.map +1 -1
- package/dist/sn/GrpLayer.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/Reading.d.ts +1 -0
- package/dist/sn/Reading.d.ts.map +1 -1
- package/dist/sn/RubySpliter.d.ts.map +1 -1
- package/dist/sn/SndBuf.d.ts.map +1 -1
- package/dist/sn/SpritesMng.d.ts.map +1 -1
- package/dist/sn/SysBase.d.ts.map +1 -1
- package/dist/sn/TxtLayer.d.ts.map +1 -1
- package/dist/sn/TxtStage.d.ts +2 -0
- package/dist/sn/TxtStage.d.ts.map +1 -1
- package/dist/web2.js.map +1 -1
- package/dist_app/Button.js +59 -57
- package/dist_app/Button.js.map +1 -1
- package/dist_app/CmnTween.js +921 -109
- package/dist_app/CmnTween.js.map +1 -1
- package/dist_app/EventMng.js +1 -1
- package/dist_app/EventMng.js.map +1 -1
- package/dist_app/GrpLayer.js +10 -11
- package/dist_app/GrpLayer.js.map +1 -1
- package/dist_app/LayerMng.js +2 -3
- package/dist_app/LayerMng.js.map +1 -1
- package/dist_app/Main.js.map +1 -1
- package/dist_app/RubySpliter.js +18 -15
- package/dist_app/RubySpliter.js.map +1 -1
- package/dist_app/ScriptIterator.js +1 -2
- package/dist_app/ScriptIterator.js.map +1 -1
- package/dist_app/SndBuf.js +83 -77
- package/dist_app/SndBuf.js.map +1 -1
- package/dist_app/SpritesMng.js +46 -42
- package/dist_app/SpritesMng.js.map +1 -1
- package/dist_app/TxtLayer.js +435 -420
- package/dist_app/TxtLayer.js.map +1 -1
- package/dist_app/Variable.js +1 -1
- package/dist_app/app2.js.map +1 -1
- package/dist_app/sn/Button.d.ts.map +1 -1
- package/dist_app/sn/CmnTween.d.ts +4 -4
- package/dist_app/sn/CmnTween.d.ts.map +1 -1
- package/dist_app/sn/FocusMng.d.ts.map +1 -1
- package/dist_app/sn/FrameMng.d.ts.map +1 -1
- package/dist_app/sn/GrpLayer.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/Reading.d.ts +1 -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/SndBuf.d.ts.map +1 -1
- package/dist_app/sn/SpritesMng.d.ts.map +1 -1
- package/dist_app/sn/SysBase.d.ts.map +1 -1
- package/dist_app/sn/TxtLayer.d.ts.map +1 -1
- package/dist_app/sn/TxtStage.d.ts +2 -0
- package/dist_app/sn/TxtStage.d.ts.map +1 -1
- package/package.json +4 -4
package/dist_app/SpritesMng.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { U as
|
|
2
|
-
import { a as
|
|
1
|
+
import { U as w, L as v, V as C, S as L, m as h, i as x, y as R, D as N, b as F, N as A, B as k, x as y, e as H, z as Y, k as O } from "./app2.js";
|
|
2
|
+
import { a as V } from "./CmnTween.js";
|
|
3
3
|
class e {
|
|
4
4
|
constructor(t = "", a, c = () => {
|
|
5
5
|
}, n = () => {
|
|
@@ -18,14 +18,14 @@ class e {
|
|
|
18
18
|
));
|
|
19
19
|
}
|
|
20
20
|
static #n;
|
|
21
|
-
static #f;
|
|
22
|
-
static #e;
|
|
23
21
|
static #r;
|
|
22
|
+
static #e;
|
|
23
|
+
static #f;
|
|
24
24
|
static init(t, a, c, n, o) {
|
|
25
|
-
e.#n = t, e.#
|
|
25
|
+
e.#n = t, e.#r = a, e.#e = c, e.#f = n, c.arg.crypto && (e.#l = (d, r, u) => e.#T(d, r, u), e.#h = (d, r, u) => e.#P(d, r, u));
|
|
26
26
|
const s = () => {
|
|
27
27
|
const d = e.#o * e.#m;
|
|
28
|
-
for (const
|
|
28
|
+
for (const r of Object.values(e.#t)) r.volume = d;
|
|
29
29
|
};
|
|
30
30
|
o.setNoticeChgVolume(
|
|
31
31
|
(d) => {
|
|
@@ -65,42 +65,42 @@ class e {
|
|
|
65
65
|
const l = y.from(t);
|
|
66
66
|
n(l), a(l), c(o);
|
|
67
67
|
};
|
|
68
|
-
return t in
|
|
68
|
+
return t in w ? i() : (o = !0, new v().add(t, t).load(i)), o;
|
|
69
69
|
}
|
|
70
70
|
const s = [], d = new v();
|
|
71
71
|
for (const i of t.split(",")) {
|
|
72
72
|
if (!i) throw "face属性に空要素が含まれます";
|
|
73
|
-
const { dx: l, dy:
|
|
73
|
+
const { dx: l, dy: f, blendmode: E, fn: m } = e.#c[i] ?? {
|
|
74
74
|
fn: i,
|
|
75
75
|
dx: 0,
|
|
76
76
|
dy: 0,
|
|
77
|
-
blendmode:
|
|
77
|
+
blendmode: C.NORMAL
|
|
78
78
|
};
|
|
79
79
|
if (s.push({ fn: m, fnc: (P) => {
|
|
80
|
-
P.transform && (P.x = l, P.y =
|
|
81
|
-
} }), m in e.#a || m in
|
|
80
|
+
P.transform && (P.x = l, P.y = f, P.blendMode = E);
|
|
81
|
+
} }), m in e.#a || m in w || m in v.shared.resources) continue;
|
|
82
82
|
o = !0;
|
|
83
|
-
const T = e.#n.searchPath(m,
|
|
84
|
-
d.add({ ...
|
|
83
|
+
const T = e.#n.searchPath(m, L.SP_GSM), b = this.#e.arg.crypto ? { xhrType: T.endsWith(".json") ? h.XHR_RESPONSE_TYPE.TEXT : h.XHR_RESPONSE_TYPE.BUFFER } : {};
|
|
84
|
+
d.add({ ...b, name: m, url: T });
|
|
85
85
|
}
|
|
86
|
-
const
|
|
87
|
-
|
|
86
|
+
const r = s.at(0);
|
|
87
|
+
r && (r.fnc = a);
|
|
88
88
|
const u = (i, l) => {
|
|
89
|
-
for (const { fn:
|
|
90
|
-
const m = e.#v(
|
|
91
|
-
m.name =
|
|
89
|
+
for (const { fn: f, fnc: E } of s) {
|
|
90
|
+
const m = e.#v(f, l);
|
|
91
|
+
m.name = f, n(m), E(m);
|
|
92
92
|
}
|
|
93
93
|
c(o);
|
|
94
94
|
};
|
|
95
95
|
return o ? d.use((i, l) => {
|
|
96
96
|
try {
|
|
97
97
|
if (i.extension === "json") {
|
|
98
|
-
this.#e.dec("json", i.data).then((
|
|
98
|
+
this.#e.dec("json", i.data).then((f) => e.#h(f, i, l));
|
|
99
99
|
return;
|
|
100
100
|
}
|
|
101
|
-
this.#e.decAB(i.data).then((
|
|
102
|
-
} catch (
|
|
103
|
-
const E = `画像/動画ロード失敗です fn:${i.name} ${String(
|
|
101
|
+
this.#e.decAB(i.data).then((f) => e.#l(f, i, l));
|
|
102
|
+
} catch (f) {
|
|
103
|
+
const E = `画像/動画ロード失敗です fn:${i.name} ${String(f)}`;
|
|
104
104
|
e.#s.isSkipping ? console.warn(E) : console.error("%c" + E, "color:#FF3300;");
|
|
105
105
|
}
|
|
106
106
|
}).load(u) : queueMicrotask(() => u(0, {})), o;
|
|
@@ -121,20 +121,20 @@ class e {
|
|
|
121
121
|
const a = /([^\d]+)\d+\.(\w+)/.exec(t[0] ?? "");
|
|
122
122
|
if (!a) return [];
|
|
123
123
|
const [, c = "", n = ""] = a, o = c.length, s = -n.length - 1;
|
|
124
|
-
return t.sort((d,
|
|
124
|
+
return t.sort((d, r) => x(d.slice(o, s)) > x(r.slice(o, s)) ? 1 : -1);
|
|
125
125
|
}
|
|
126
126
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
127
127
|
static #T(t, a, c) {
|
|
128
128
|
if (a.data = t, a.extension !== "bin" && c(), t instanceof HTMLImageElement) {
|
|
129
|
-
|
|
130
|
-
a.texture = n, a.type = h.TYPE.IMAGE;
|
|
131
|
-
})
|
|
129
|
+
R.fromLoader(t, a.url, a.name).then((n) => {
|
|
130
|
+
a.texture = n, a.type = h.TYPE.IMAGE, c(), URL.revokeObjectURL(t.src);
|
|
131
|
+
});
|
|
132
132
|
return;
|
|
133
133
|
}
|
|
134
134
|
t instanceof HTMLVideoElement && (t.volume = e.#o, e.#t[a.name] = e.#u(t), a.type = h.TYPE.VIDEO), c();
|
|
135
135
|
}
|
|
136
136
|
static #u(t) {
|
|
137
|
-
return e.#
|
|
137
|
+
return e.#r.getVal("const.sn.needClick2Play") && (N.trace_beforeNew(`[lay系] ${N.strPos()}未クリック状態で動画を自動再生します。音声はミュートされます`, "W"), t.muted = !0), t.setAttribute("playsinline", ""), t;
|
|
138
138
|
}
|
|
139
139
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
140
140
|
static #h = (t, { type: a, spritesheet: c, name: n, data: o }, s) => {
|
|
@@ -142,7 +142,7 @@ class e {
|
|
|
142
142
|
case h.TYPE.JSON: {
|
|
143
143
|
const d = c._frameKeys;
|
|
144
144
|
e.#y(d), e.#a[n] = {
|
|
145
|
-
aTex: d.map((
|
|
145
|
+
aTex: d.map((r) => R.from(r)),
|
|
146
146
|
meta: o.meta
|
|
147
147
|
};
|
|
148
148
|
}
|
|
@@ -156,18 +156,22 @@ class e {
|
|
|
156
156
|
c();
|
|
157
157
|
return;
|
|
158
158
|
}
|
|
159
|
-
const s =
|
|
160
|
-
new v().use((
|
|
161
|
-
this.#e.decAB(
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
159
|
+
const s = F(n.image), d = e.#n.searchPath(s, L.SP_GSM);
|
|
160
|
+
new v().use((r, u) => {
|
|
161
|
+
this.#e.decAB(r.data).then((i) => {
|
|
162
|
+
if (r.data = i, i instanceof HTMLImageElement) {
|
|
163
|
+
r.type = h.TYPE.IMAGE, u(), URL.revokeObjectURL(i.src);
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
u();
|
|
167
|
+
}).catch((i) => this.#f.errScript(`画像/動画ロード失敗です dec2res4Cripto fn:${r.name} ${String(i)}`, !1));
|
|
168
|
+
}).add({ name: s, url: d, xhrType: h.XHR_RESPONSE_TYPE.BUFFER }).load((r, u) => {
|
|
169
|
+
for (const { data: i } of Object.values(r.resources)) {
|
|
170
|
+
const { baseTexture: l } = R.from(i), f = Object.values(o);
|
|
167
171
|
e.#a[a.name] = {
|
|
168
|
-
aTex:
|
|
172
|
+
aTex: f.map(({ frame: { x: E, y: m, w: T, h: b } }) => new R(
|
|
169
173
|
l,
|
|
170
|
-
new A(E, m, T,
|
|
174
|
+
new A(E, m, T, b)
|
|
171
175
|
)),
|
|
172
176
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
173
177
|
meta: n
|
|
@@ -182,7 +186,7 @@ class e {
|
|
|
182
186
|
const s = new k(c.aTex);
|
|
183
187
|
return s.animationSpeed = c.meta.animationSpeed ?? 1, s.play(), s;
|
|
184
188
|
}
|
|
185
|
-
if (t in
|
|
189
|
+
if (t in w) return y.from(t);
|
|
186
190
|
const n = e.#t[t];
|
|
187
191
|
if (n) return y.from(n);
|
|
188
192
|
const o = a[t];
|
|
@@ -202,7 +206,7 @@ class e {
|
|
|
202
206
|
const n = "wv fn:" + a, o = H(t, "stop", !0), s = () => {
|
|
203
207
|
o && e.stopVideo(a);
|
|
204
208
|
};
|
|
205
|
-
return
|
|
209
|
+
return V.beginProc(n, s, !0, s), c.addEventListener("ended", () => V.notifyEndProc(n), { once: !0, passive: !0 }), !0;
|
|
206
210
|
}
|
|
207
211
|
static stopVideo(t) {
|
|
208
212
|
const a = e.#t[t];
|
|
@@ -215,8 +219,8 @@ class e {
|
|
|
215
219
|
const { fn: c = a } = t;
|
|
216
220
|
return e.#c[a] = {
|
|
217
221
|
fn: c,
|
|
218
|
-
dx:
|
|
219
|
-
dy:
|
|
222
|
+
dx: O(t, "dx", 0),
|
|
223
|
+
dy: O(t, "dy", 0),
|
|
220
224
|
blendmode: Y.getBlendmodeNum(t.blendmode ?? "")
|
|
221
225
|
}, !1;
|
|
222
226
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpritesMng.js","sources":["../src/sn/SpritesMng.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2023-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 {Config} from './Config';\nimport {type IEvtMng, argChk_Boolean, argChk_Num, getFn, int} from './CmnLib';\nimport type {T_Main, T_Variable, SYS_DEC_RET} from './CmnInterface';\nimport {DebugMng} from './DebugMng';\nimport {SEARCH_PATH_ARG_EXT} from './ConfigBase';\nimport type {SysBase} from './SysBase';\nimport type {SoundMng} from './SoundMng';\nimport type {TArg} from './Grammar';\nimport {Layer} from './Layer';\nimport {Reading} from './Reading';\n\nimport {Sprite, type Container, Texture, AnimatedSprite, LoaderResource, utils, Loader, Rectangle, BLEND_MODES} from 'pixi.js';\n\ntype IFncCompSpr = (sp: Sprite)=> void;\n\ntype Iface = {\n\tfn\t\t\t: string;\n\tdx\t\t\t: number;\n\tdy\t\t\t: number;\n\tblendmode\t: number;\n}\ntype Ihface = { [name: string]: Iface; }\n\ntype IResAniSpr = {\n\taTex\t: Texture[];\n\tmeta\t: {\n\t\tanimationSpeed? :number;\n\t};\n}\n\n\nexport class SpritesMng {\n\tstatic\t#cfg\t: Config;\n\tstatic\t#val\t: T_Variable;\n\tstatic\t#sys\t: SysBase;\n\tstatic\t#main\t: T_Main;\n\tstatic\tinit(cfg: Config, val: T_Variable, sys: SysBase, main: T_Main, sndMng: SoundMng) {\n\t\tSpritesMng.#cfg = cfg;\n\t\tSpritesMng.#val = val;\n\t\tSpritesMng.#sys = sys;\n\t\tSpritesMng.#main = main;\n\t\tif (sys.arg.crypto) {\n\t\t\tSpritesMng.#cachePicMov = (r, res, next)=> SpritesMng.#dec2cachePicMov(r, res, next);\n\t\t\tSpritesMng.#cacheAniSpr = (r, res, next)=> SpritesMng.#dec2cacheAniSpr(r, res, next);\n\t\t}\n\n\t\tconst fnc = ()=> {\n\t\t\tconst vol = SpritesMng.#glbVol * SpritesMng.#movVol;\n\t\t\tfor (const v of Object.values(SpritesMng.#hFn2hve)) v.volume = vol;\n\t\t};\n\t\tsndMng.setNoticeChgVolume(\n\t\t\tvol=> {SpritesMng.#glbVol = vol; fnc()},\n\t\t\tvol=> {SpritesMng.#movVol = vol; fnc()}\n\t\t);\n\t}\n\tstatic\t#movVol\t= 1;\n\tstatic\t#glbVol\t= 1;\n\n\tstatic\t#evtMng\t: IEvtMng;\n\tstatic\tsetEvtMng(evtMng: IEvtMng) {SpritesMng.#evtMng = evtMng}\n\n\n\tconstructor(readonly csvFn = '', readonly ctn?: Container, private fncFirstComp: IFncCompSpr = ()=> { /* empty */ }, private fncAllComp: (isStop: boolean)=> void = ()=> { /* empty */ }) {\n\t\tif (! csvFn) return;\n\n\t\tthis.#addChild = ctn ? sp=> {ctn.addChild(sp); this.#aSp.push(sp)} : ()=> { /* empty */ };\n\t\tthis.ret = SpritesMng.#csv2Sprites(\n\t\t\tcsvFn,\n\t\t\tsp=> this.fncFirstComp(sp),\t\t\t// 差し替え考慮\n\t\t\tisStop=> this.fncAllComp(isStop),\t// 差し替え考慮\n\t\t\tsp=> this.#addChild(sp)\t\t\t\t// 差し替え考慮\n\t\t);\n\t}\n\treadonly ret: boolean\t\t= false;\n\t#addChild\t: (sp: Sprite)=> void;\n\t#aSp\t\t: Container[]\t= [];\n\n\tdestroy() {\t\t// これをやるためのクラス、とすら云える\n\t\tthis.fncFirstComp\t= ()=> { /* empty */ };\n\t\tthis.fncAllComp\t\t= ()=> { /* empty */ };\n\t\tthis.#addChild\t\t= sp=> sp.destroy();\n\n\t\tfor (const sp of this.#aSp) {\n\t\t\tSpritesMng.stopVideo(sp.name);\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\t\tsp.parent?.removeChild(sp);\n\t\t\tsp.destroy();\n\t\t}\n\t\tthis.#aSp = [];\n\t}\n\n\tstatic\tdestroy() {\n\t\tSpritesMng.#hFace\t= {};\n\t\tSpritesMng.#hFn2ResAniSpr\t= {};\n\t\t//SpritesMng.#ldrHFn\t= {};\n\t\tSpritesMng.#hFn2hve\t= {};\n\t}\n\n\n\t//static #ldrHFn: {[fn: string]: 1} = {};\n\tstatic\t#csv2Sprites(csv: string, fncFirstComp: IFncCompSpr, fncAllComp: (isStop: boolean)=> void, addChild: (sp: Sprite)=> void): boolean {\n\t\tif (! csv) return false;\n\n\t\tlet needLoad = false;\n\t\tif (csv.startsWith('data:')) {\t// Data URI\n\t\t\tconst fnc = ()=> {\n\t\t\t\tconst sp = Sprite.from(csv);\n\t\t\t\taddChild(sp);\n\t\t\t\tfncFirstComp(sp);\n\t\t\t\tfncAllComp(needLoad);\n\t\t\t};\n\t\t\tif (csv in utils.TextureCache) fnc();\n\t\t\telse {needLoad = true; (new Loader).add(csv, csv).load(fnc)}\n\n\t\t\treturn needLoad;\n\t\t}\n\n\t\tconst aComp: {fn: string, fnc: IFncCompSpr}[] = [];\n\t\tconst ldr = new Loader;\n\t\tfor (const fn0 of csv.split(',')) {\n\t\t\tif (! fn0) throw 'face属性に空要素が含まれます';\n\n\t\t\t// 差分絵を重ねる\n\t\t\tconst {dx, dy, blendmode, fn} = SpritesMng.#hFace[fn0] ?? {\n\t\t\t\tfn\t: fn0,\n\t\t\t\tdx\t: 0,\n\t\t\t\tdy\t: 0,\n\t\t\t\tblendmode\t: BLEND_MODES.NORMAL\n\t\t\t};\n\t\t\taComp.push({fn, fnc: sp=> {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\t\t\tif (! sp.transform) return;\t// エラー予防\n\t\t\t\tsp.x = dx;\n\t\t\t\tsp.y = dy;\n\t\t\t\tsp.blendMode = blendmode;\n\t\t\t}});\n\n\t\t\tif (fn in SpritesMng.#hFn2ResAniSpr) continue;\n\t\t\tif (fn in utils.TextureCache) continue;\n\t\t\t//if (fn in utils.BaseTextureCache) continue;\t\t// 警告に変化なし\n\t\t\tif (fn in Loader.shared.resources) continue;\n\t\t\t//if (fn in SpritesMng.#ldrHFn) {\n\t\t\t\t// ここに来るという中途半端な状態がある。お陰で警告が出てしまう\n\t\t\t\t// (警告を消そうとする)以下の試みは効かない。直前の if でそもそもここに来ない\n\t\t\t\t//\tTexture.removeFromCache(fn);\n\t\t\t\t//\tdelete utils.TextureCache[fn];\n\t\t\t\t//\tdelete Loader.shared.resources[fn];\n\t\t\t\t// continue;\t// これは厳禁、御法度。\n\t\t\t\t\t// 画像ボタンや文字ボタン背景で同じ画像を、間を置かずロードした場合に最初一つしか表示されなくなる。以下は確認用ギャラリー\n\t\t\t\t\t// http://localhost:8082/index.html?cur=ch_button\n\t\t\t//}\n\t\t\t//SpritesMng.#ldrHFn[fn] = 1;\n\n\t\t\tneedLoad = true;\n\t\t\tconst url = SpritesMng.#cfg.searchPath(fn, SEARCH_PATH_ARG_EXT.SP_GSM);\n\t\t\tconst xt = this.#sys.arg.crypto\n\t\t\t? {xhrType: url.endsWith('.json')\n\t\t\t\t? LoaderResource.XHR_RESPONSE_TYPE.TEXT\n\t\t\t\t: LoaderResource.XHR_RESPONSE_TYPE.BUFFER}\n\t\t\t: {};\n\t\t\tldr.add({...xt, name: fn, url});\n\t\t}\n\t\tconst comp1 = aComp.at(0);\n\t\tif (comp1) comp1.fnc = fncFirstComp;\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tconst fncLoaded = (_: any, hRes: {[fn: string]: LoaderResource})=> {\n\t\t\tfor (const {fn, fnc} of aComp) {\n\t\t\t\tconst sp = SpritesMng.#mkSprite(fn, hRes);\n\t\t\t\tsp.name = fn;\t// 4 Debug?\n\t\t\t\taddChild(sp);\n\t\t\t\tfnc(sp);\n\t\t\t}\n\t\t\tfncAllComp(needLoad);\n\t\t}\n\t\tif (needLoad) {\n\t\t\tldr.use((res, next)=> {\n\t\t\t\ttry {\n\t\t\t\t\tif (res.extension === 'json') {\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\t\t\t\tvoid this.#sys.dec('json', res.data)\n\t\t\t\t\t\t.then(str=> SpritesMng.#cacheAniSpr(str, res, next));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\t\t\tvoid this.#sys.decAB(res.data).then(aiv=> SpritesMng.#cachePicMov(aiv, res, next));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconst mes = `画像/動画ロード失敗です fn:${res.name} ${String(e)}`;\n\t\t\t\t\tif (SpritesMng.#evtMng.isSkipping) console.warn(mes); else console.error('%c'+ mes, 'color:#FF3300;');\n\t\t\t\t}\n\t\t\t})\n\t\t\t.load(fncLoaded);\n\t\t}\n\t\telse queueMicrotask(()=> fncLoaded(0, {}));\n\n\t\treturn needLoad;\n\t}\n\tstatic\t#hFace\t\t\t: Ihface\t= {};\n\tstatic\t#hFn2ResAniSpr\t: {[fn: string]: IResAniSpr} = {};\n\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tstatic #cachePicMov = (_r: SYS_DEC_RET, {type, name, data}: any, next: ()=> void)=> {\n\t\tswitch (type) {\n\t\t\tcase LoaderResource.TYPE.VIDEO:{\n\t\t\t\tconst hve = <HTMLVideoElement>data;\n\t\t\t\thve.volume = SpritesMng.#glbVol;\n\t\t\t\tSpritesMng.#hFn2hve[name] = SpritesMng.#charmVideoElm(hve);\n\t\t\t}\n\t\t}\n\t\tnext();\n\t}\n\tstatic #sortAFrameName(aFn: string[]): string[] {\n\t\tconst a_base_name = /([^\\d]+)\\d+\\.(\\w+)/.exec(aFn[0] ?? '');\n\t\tif (! a_base_name) return [];\n\n\t\tconst [, d1='', d2=''] = a_base_name;\n\t\tconst is = d1.length;\n\t\tconst ie = -d2.length -1;\n\t\treturn aFn.sort((a, b)=> int(a.slice(is, ie)) > int(b.slice(is, ie)) ?1 :-1);\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tstatic #dec2cachePicMov(r: SYS_DEC_RET, res: any, next: ()=> void) {\n\t\tres.data = r;\n\t\tif (res.extension !== 'bin') next();\n\n\t\tif (r instanceof HTMLImageElement) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\tvoid Texture.fromLoader(r, res.url, res.name).then(r=> {\n\t\t\t\tres.texture = r;\n\t\t\t\t//Texture.addToCache(Texture.from(r), res.name);\n\t\t\t\t// res.texture = Texture.from(r);\n\t\t\t\t\t// でも良いが、キャッシュ追加と、それでcsv2Sprites()内で使用するので\n\t\t\t\tres.type = LoaderResource.TYPE.IMAGE;\n\t\t\t\t// URL.revokeObjectURL(r.src);\t// TODO: キャッシュ破棄\n\t\t\t});\n\t\t\tnext();\n\t\t\treturn;\n\t\t}\n\n\t\tif (r instanceof HTMLVideoElement) {\n\t\t\tr.volume = SpritesMng.#glbVol;\n\t\t\tSpritesMng.#hFn2hve[res.name] = SpritesMng.#charmVideoElm(r);\n\n\t\t\tres.type = LoaderResource.TYPE.VIDEO;\n//\t\t\tURL.revokeObjectURL(r.src);\n\t\t}\n\t\tnext();\n\t}\n\tstatic #charmVideoElm(hve: HTMLVideoElement): HTMLVideoElement {\n\t\t// 【PixiJS】iOSとChromeでAutoPlay可能なビデオSpriteの設定 - Qiita https://qiita.com/masato_makino/items/8316e7743acac514e361\n\t\tif (SpritesMng.#val.getVal('const.sn.needClick2Play')) {\n\t\t\t// ブラウザ実行で、クリックされるまで音声再生が差し止められている状態か。なにかクリックされれば falseになる\n\t\t\tDebugMng.trace_beforeNew(`[lay系] ${DebugMng.strPos()}未クリック状態で動画を自動再生します。音声はミュートされます`, 'W');\n\t\t\thve.muted = true;\t// Chrome対応:自動再生を許可させるため。ないと再開時に DOMException\n\t\t}\n\t\thve.setAttribute('playsinline', '');\t// iOS対応\n\t\treturn hve;\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tstatic #cacheAniSpr = (_r: string, {type, spritesheet, name, data}: any, next: ()=> void)=> {\n\t\tswitch (type) {\n\t\t\tcase LoaderResource.TYPE.JSON:{\t// switchは必須\n\t\t\t\tconst aFn = <string[]>spritesheet._frameKeys;\n\t\t\t\tSpritesMng.#sortAFrameName(aFn);\n\t\t\t\tSpritesMng.#hFn2ResAniSpr[name] = {\n\t\t\t\t\taTex: aFn.map(fn=> Texture.from(fn)),\n\t\t\t\t\tmeta: <IResAniSpr['meta']>data.meta,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\tnext();\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tstatic #dec2cacheAniSpr(r: string, res: any, next: ()=> void) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tconst {meta, frames} = res.data = JSON.parse(r);\n\t\tres.type = LoaderResource.TYPE.JSON;\n\t\tif (! meta?.image) {next(); return}\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\tconst fn = getFn(meta.image);\n\t\tconst url = SpritesMng.#cfg.searchPath(fn, SEARCH_PATH_ARG_EXT.SP_GSM);\n\t\t(new Loader)\n\t\t.use((res2, next2)=> {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\tthis.#sys.decAB(res2.data)\n\t\t\t.then(r2=> {\n\t\t\t\tres2.data = r2;\n\t\t\t\tif (r2 instanceof HTMLImageElement) {\n\t\t\t\t\tres2.type = LoaderResource.TYPE.IMAGE;\n\t\t\t\t\tURL.revokeObjectURL(r2.src);\n\t\t\t\t}\n\t\t\t\tnext2();\n\t\t\t})\n\t\t\t.catch((e: unknown)=> this.#main.errScript(`画像/動画ロード失敗です dec2res4Cripto fn:${res2.name} ${String(e)}`, false));\n\t\t})\n\t\t.add({name: fn, url, xhrType: LoaderResource.XHR_RESPONSE_TYPE.BUFFER})\n\t\t.load((ldr, _hRes)=> {\n\t\t\tfor (const {data} of Object.values(ldr.resources)) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\t\tconst {baseTexture} = Texture.from(data);\n\t\t\t\tconst aFr = Object.values(<{[nm: string]: {\n\t\t\t\t\tframe: {x: number; y: number; w: number; h: number;}\n\t\t\t\t}}>frames);\n\t\t\t\tSpritesMng.#hFn2ResAniSpr[res.name] = {\n\t\t\t\t\taTex: aFr.map(({frame: {x, y, w, h}})=> new Texture(\n\t\t\t\t\t\tbaseTexture,\n\t\t\t\t\t\tnew Rectangle(x, y, w, h),\n\t\t\t\t\t)),\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\t\tmeta,\n\t\t\t\t};\n\t\t\t}\n\t\t\tnext();\n\t\t});\n\t}\n\n\t\tstatic\t#mkSprite(fn: string, hRes: {[fn: string]: LoaderResource}): Sprite {\n\t\t\tconst ras = SpritesMng.#hFn2ResAniSpr[fn];\n\t\t\tif (ras) {\n\t\t\t\tconst asp = new AnimatedSprite(ras.aTex);\n\t\t\t\tasp.animationSpeed = ras.meta.animationSpeed ?? 1.0;\n\t\t\t\tasp.play();\n\t\t\t\treturn asp;\n\t\t\t}\n\t\t\tif (fn in utils.TextureCache) return Sprite.from(fn);\n\t\t\tconst hve = SpritesMng.#hFn2hve[fn];\n\t\t\tif (hve) return Sprite.from(hve);\n\n\t\t\tconst r = hRes[fn];\n\t\t\treturn r ?new Sprite(r.texture) :new Sprite;\n\t\t}\n\tstatic\t#hFn2hve\t: {[fn: string]: HTMLVideoElement} = {};\n\tstatic\tgetHFn2VElm(fn: string) {return SpritesMng.#hFn2hve[fn]}\n\n\tstatic\twv(hArg: TArg): boolean {\n\t\t// 動画ファイル名指定でいいかなと。なぜなら「ループで再生しつつ」\n\t\t// 同ファイル名の別の動画の再生は待ちたい、なんて状況は普通は無いだろうと\n\t\tconst {fn} = hArg;\n\t\tif (! fn) throw 'fnは必須です';\n\t\tconst hve = SpritesMng.#hFn2hve[fn];\n\t\tif (! hve || hve.loop) return false;\n\n\t\tif (SpritesMng.#evtMng.isSkipping || hve.ended) {SpritesMng.stopVideo(fn); return false}\n\n\t\tconst RPN_WV = 'wv fn:'+ fn;\n\t\tconst stop = argChk_Boolean(hArg, 'stop', true);\n\t\tconst fnc = ()=> {if (stop) SpritesMng.stopVideo(fn)};\n\t\tReading.beginProc(RPN_WV, fnc, true, fnc);\n\t\thve.addEventListener('ended', ()=> Reading.notifyEndProc(RPN_WV), {once: true, passive: true});\n\n\t\treturn true;\n\t}\n\n\tstatic\tstopVideo(fn: string) {\n\t\tconst hve = SpritesMng.#hFn2hve[fn];\n\t\tif (! hve) return;\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tdelete SpritesMng.#hFn2hve[fn];\n\t\thve.pause();\n\t\thve.currentTime = hve.duration;\n\t}\n\n\n\tstatic\tadd_face(hArg: TArg): boolean {\n\t\tconst {name} = hArg;\n\t\tif (! name) throw 'nameは必須です';\n\t\tif (name in SpritesMng.#hFace) throw '一つのname('+ name +')に対して同じ画像を複数割り当てられません';\n\n\t\tconst {fn = name} = hArg;\n\t\tSpritesMng.#hFace[name] = {\n\t\t\tfn,\n\t\t\tdx: argChk_Num(hArg, 'dx', 0),\n\t\t\tdy: argChk_Num(hArg, 'dy', 0),\n\t\t\tblendmode: Layer.getBlendmodeNum(hArg.blendmode ?? '')\n\t\t};\n\n\t\treturn false;\n\t}\n//\tstatic\tclearFace2Name(): void {SpritesMng.hFace = {}}\n\n}\n"],"names":["SpritesMng","csvFn","ctn","fncFirstComp","fncAllComp","#addChild","sp","#aSp","#csv2Sprites","isStop","#cfg","#val","#sys","#main","cfg","val","sys","main","sndMng","#cachePicMov","r","res","next","#dec2cachePicMov","#cacheAniSpr","#dec2cacheAniSpr","fnc","vol","#glbVol","#movVol","v","#hFn2hve","#evtMng","evtMng","#hFace","#hFn2ResAniSpr","csv","addChild","needLoad","Sprite","utils.TextureCache","Loader","aComp","ldr","fn0","dx","dy","blendmode","fn","BLEND_MODES","url","SEARCH_PATH_ARG_EXT","xt","LoaderResource","comp1","fncLoaded","_","hRes","#mkSprite","str","aiv","e","mes","_r","type","name","data","hve","#charmVideoElm","#sortAFrameName","aFn","a_base_name","d1","d2","is","ie","a","b","int","Texture","DebugMng","spritesheet","meta","frames","getFn","res2","next2","r2","_hRes","baseTexture","aFr","x","y","w","h","Rectangle","ras","asp","AnimatedSprite","hArg","RPN_WV","stop","argChk_Boolean","Reading","argChk_Num","Layer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SpritesMng.js","sources":["../src/sn/SpritesMng.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2023-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 {Config} from './Config';\nimport {type IEvtMng, argChk_Boolean, argChk_Num, getFn, int} from './CmnLib';\nimport type {T_Main, T_Variable, SYS_DEC_RET} from './CmnInterface';\nimport {DebugMng} from './DebugMng';\nimport {SEARCH_PATH_ARG_EXT} from './ConfigBase';\nimport type {SysBase} from './SysBase';\nimport type {SoundMng} from './SoundMng';\nimport type {TArg} from './Grammar';\nimport {Layer} from './Layer';\nimport {Reading} from './Reading';\n\nimport {Sprite, type Container, Texture, AnimatedSprite, LoaderResource, utils, Loader, Rectangle, BLEND_MODES} from 'pixi.js';\n\ntype IFncCompSpr = (sp: Sprite)=> void;\n\ntype Iface = {\n\tfn\t\t\t: string;\n\tdx\t\t\t: number;\n\tdy\t\t\t: number;\n\tblendmode\t: number;\n}\ntype Ihface = { [name: string]: Iface; }\n\ntype IResAniSpr = {\n\taTex\t: Texture[];\n\tmeta\t: {\n\t\tanimationSpeed? :number;\n\t};\n}\n\n\nexport class SpritesMng {\n\tstatic\t#cfg\t: Config;\n\tstatic\t#val\t: T_Variable;\n\tstatic\t#sys\t: SysBase;\n\tstatic\t#main\t: T_Main;\n\tstatic\tinit(cfg: Config, val: T_Variable, sys: SysBase, main: T_Main, sndMng: SoundMng) {\n\t\tSpritesMng.#cfg = cfg;\n\t\tSpritesMng.#val = val;\n\t\tSpritesMng.#sys = sys;\n\t\tSpritesMng.#main = main;\n\t\tif (sys.arg.crypto) {\n\t\t\tSpritesMng.#cachePicMov = (r, res, next)=> SpritesMng.#dec2cachePicMov(r, res, next);\n\t\t\tSpritesMng.#cacheAniSpr = (r, res, next)=> SpritesMng.#dec2cacheAniSpr(r, res, next);\n\t\t}\n\n\t\tconst fnc = ()=> {\n\t\t\tconst vol = SpritesMng.#glbVol * SpritesMng.#movVol;\n\t\t\tfor (const v of Object.values(SpritesMng.#hFn2hve)) v.volume = vol;\n\t\t};\n\t\tsndMng.setNoticeChgVolume(\n\t\t\tvol=> {SpritesMng.#glbVol = vol; fnc()},\n\t\t\tvol=> {SpritesMng.#movVol = vol; fnc()}\n\t\t);\n\t}\n\tstatic\t#movVol\t= 1;\n\tstatic\t#glbVol\t= 1;\n\n\tstatic\t#evtMng\t: IEvtMng;\n\tstatic\tsetEvtMng(evtMng: IEvtMng) {SpritesMng.#evtMng = evtMng}\n\n\n\tconstructor(readonly csvFn = '', readonly ctn?: Container, private fncFirstComp: IFncCompSpr = ()=> { /* empty */ }, private fncAllComp: (isStop: boolean)=> void = ()=> { /* empty */ }) {\n\t\tif (! csvFn) return;\n\n\t\tthis.#addChild = ctn ? sp=> {ctn.addChild(sp); this.#aSp.push(sp)} : ()=> { /* empty */ };\n\t\tthis.ret = SpritesMng.#csv2Sprites(\n\t\t\tcsvFn,\n\t\t\tsp=> this.fncFirstComp(sp),\t\t\t// 差し替え考慮\n\t\t\tisStop=> this.fncAllComp(isStop),\t// 差し替え考慮\n\t\t\tsp=> this.#addChild(sp)\t\t\t\t// 差し替え考慮\n\t\t);\n\t}\n\treadonly ret: boolean\t\t= false;\n\t#addChild\t: (sp: Sprite)=> void;\n\t#aSp\t\t: Container[]\t= [];\n\n\tdestroy() {\t\t// これをやるためのクラス、とすら云える\n\t\tthis.fncFirstComp\t= ()=> { /* empty */ };\n\t\tthis.fncAllComp\t\t= ()=> { /* empty */ };\n\t\tthis.#addChild\t\t= sp=> sp.destroy();\n\n\t\tfor (const sp of this.#aSp) {\n\t\t\tSpritesMng.stopVideo(sp.name);\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\t\tsp.parent?.removeChild(sp);\n\t\t\tsp.destroy();\n\t\t}\n\t\tthis.#aSp = [];\n\t}\n\n\tstatic\tdestroy() {\n\t\tSpritesMng.#hFace\t= {};\n\t\tSpritesMng.#hFn2ResAniSpr\t= {};\n\t\t//SpritesMng.#ldrHFn\t= {};\n\t\tSpritesMng.#hFn2hve\t= {};\n\t}\n\n\n\t//static #ldrHFn: {[fn: string]: 1} = {};\n\tstatic\t#csv2Sprites(csv: string, fncFirstComp: IFncCompSpr, fncAllComp: (isStop: boolean)=> void, addChild: (sp: Sprite)=> void): boolean {\n\t\tif (! csv) return false;\n\n\t\tlet needLoad = false;\n\t\tif (csv.startsWith('data:')) {\t// Data URI\n\t\t\tconst fnc = ()=> {\n\t\t\t\tconst sp = Sprite.from(csv);\n\t\t\t\taddChild(sp);\n\t\t\t\tfncFirstComp(sp);\n\t\t\t\tfncAllComp(needLoad);\n\t\t\t};\n\t\t\tif (csv in utils.TextureCache) fnc();\n\t\t\telse {needLoad = true; (new Loader).add(csv, csv).load(fnc)}\n\n\t\t\treturn needLoad;\n\t\t}\n\n\t\tconst aComp: {fn: string, fnc: IFncCompSpr}[] = [];\n\t\tconst ldr = new Loader;\n\t\tfor (const fn0 of csv.split(',')) {\n\t\t\tif (! fn0) throw 'face属性に空要素が含まれます';\n\n\t\t\t// 差分絵を重ねる\n\t\t\tconst {dx, dy, blendmode, fn} = SpritesMng.#hFace[fn0] ?? {\n\t\t\t\tfn\t: fn0,\n\t\t\t\tdx\t: 0,\n\t\t\t\tdy\t: 0,\n\t\t\t\tblendmode\t: BLEND_MODES.NORMAL\n\t\t\t};\n\t\t\taComp.push({fn, fnc: sp=> {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\t\t\tif (! sp.transform) return;\t// エラー予防\n\t\t\t\tsp.x = dx;\n\t\t\t\tsp.y = dy;\n\t\t\t\tsp.blendMode = blendmode;\n\t\t\t}});\n\n\t\t\tif (fn in SpritesMng.#hFn2ResAniSpr) continue;\n\t\t\tif (fn in utils.TextureCache) continue;\n\t\t\t//if (fn in utils.BaseTextureCache) continue;\t\t// 警告に変化なし\n\t\t\tif (fn in Loader.shared.resources) continue;\n\t\t\t//if (fn in SpritesMng.#ldrHFn) {\n\t\t\t\t// ここに来るという中途半端な状態がある。お陰で警告が出てしまう\n\t\t\t\t// (警告を消そうとする)以下の試みは効かない。直前の if でそもそもここに来ない\n\t\t\t\t//\tTexture.removeFromCache(fn);\n\t\t\t\t//\tdelete utils.TextureCache[fn];\n\t\t\t\t//\tdelete Loader.shared.resources[fn];\n\t\t\t\t// continue;\t// これは厳禁、御法度。\n\t\t\t\t\t// 画像ボタンや文字ボタン背景で同じ画像を、間を置かずロードした場合に最初一つしか表示されなくなる。以下は確認用ギャラリー\n\t\t\t\t\t// http://localhost:8082/index.html?cur=ch_button\n\t\t\t//}\n\t\t\t//SpritesMng.#ldrHFn[fn] = 1;\n\n\t\t\tneedLoad = true;\n\t\t\tconst url = SpritesMng.#cfg.searchPath(fn, SEARCH_PATH_ARG_EXT.SP_GSM);\n\t\t\tconst xt = this.#sys.arg.crypto\n\t\t\t? {xhrType: url.endsWith('.json')\n\t\t\t\t? LoaderResource.XHR_RESPONSE_TYPE.TEXT\n\t\t\t\t: LoaderResource.XHR_RESPONSE_TYPE.BUFFER}\n\t\t\t: {};\n\t\t\tldr.add({...xt, name: fn, url});\n\t\t}\n\t\tconst comp1 = aComp.at(0);\n\t\tif (comp1) comp1.fnc = fncFirstComp;\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tconst fncLoaded = (_: any, hRes: {[fn: string]: LoaderResource})=> {\n\t\t\tfor (const {fn, fnc} of aComp) {\n\t\t\t\tconst sp = SpritesMng.#mkSprite(fn, hRes);\n\t\t\t\tsp.name = fn;\t// 4 Debug?\n\t\t\t\taddChild(sp);\n\t\t\t\tfnc(sp);\n\t\t\t}\n\t\t\tfncAllComp(needLoad);\n\t\t}\n\t\tif (needLoad) {\n\t\t\tldr.use((res, next)=> {\n\t\t\t\ttry {\n\t\t\t\t\tif (res.extension === 'json') {\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\t\t\t\tvoid this.#sys.dec('json', res.data)\n\t\t\t\t\t\t.then(str=> SpritesMng.#cacheAniSpr(str, res, next));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\t\t\tvoid this.#sys.decAB(res.data).then(aiv=> SpritesMng.#cachePicMov(aiv, res, next));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconst mes = `画像/動画ロード失敗です fn:${res.name} ${String(e)}`;\n\t\t\t\t\tif (SpritesMng.#evtMng.isSkipping) console.warn(mes); else console.error('%c'+ mes, 'color:#FF3300;');\n\t\t\t\t}\n\t\t\t})\n\t\t\t.load(fncLoaded);\n\t\t}\n\t\telse queueMicrotask(()=> fncLoaded(0, {}));\n\n\t\treturn needLoad;\n\t}\n\tstatic\t#hFace\t\t\t: Ihface\t= {};\n\tstatic\t#hFn2ResAniSpr\t: {[fn: string]: IResAniSpr} = {};\n\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tstatic #cachePicMov = (_r: SYS_DEC_RET, {type, name, data}: any, next: ()=> void)=> {\n\t\tswitch (type) {\n\t\t\tcase LoaderResource.TYPE.VIDEO:{\n\t\t\t\tconst hve = <HTMLVideoElement>data;\n\t\t\t\thve.volume = SpritesMng.#glbVol;\n\t\t\t\tSpritesMng.#hFn2hve[name] = SpritesMng.#charmVideoElm(hve);\n\t\t\t}\n\t\t}\n\t\tnext();\n\t}\n\tstatic #sortAFrameName(aFn: string[]): string[] {\n\t\tconst a_base_name = /([^\\d]+)\\d+\\.(\\w+)/.exec(aFn[0] ?? '');\n\t\tif (! a_base_name) return [];\n\n\t\tconst [, d1='', d2=''] = a_base_name;\n\t\tconst is = d1.length;\n\t\tconst ie = -d2.length -1;\n\t\treturn aFn.sort((a, b)=> int(a.slice(is, ie)) > int(b.slice(is, ie)) ?1 :-1);\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tstatic #dec2cachePicMov(r: SYS_DEC_RET, res: any, next: ()=> void) {\n\t\tres.data = r;\n\t\tif (res.extension !== 'bin') next();\n\n\t\tif (r instanceof HTMLImageElement) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\tvoid Texture.fromLoader(r, res.url, res.name).then(r2=> {\n\t\t\t\tres.texture = r2;\n\t\t\t\t//Texture.addToCache(Texture.from(r), res.name);\n\t\t\t\t// res.texture = Texture.from(r);\n\t\t\t\t\t// でも良いが、キャッシュ追加と、それでcsv2Sprites()内で使用するので\n\t\t\t\tres.type = LoaderResource.TYPE.IMAGE;\n\t\t\t\tnext();\n// console.log(`fn:SpritesMng.ts line:253 res.url:${String(res.url)} res.name:${String(res.name)} src2:${r.src}`);\n\t\t\t\t// res.url:prj/bg/153385d5-24e0-5483-b779-b04f3ea4c901.bin res.name:市場_品物置き場2\n\t\t\t\tURL.revokeObjectURL(r.src);\n\n\t\t\t\t// これをするとタイトル画面から画面遷移でチラチラする\n\t\t\t\t// const fn = String(res.name);\n\t\t\t\t// Texture.removeFromCache(fn);\n\t\t\t\t// // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\t\t// delete utils.TextureCache[fn];\n\t\t\t\t// // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\t\t// delete Loader.shared.resources[fn];\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tif (r instanceof HTMLVideoElement) {\n\t\t\tr.volume = SpritesMng.#glbVol;\n\t\t\tSpritesMng.#hFn2hve[res.name] = SpritesMng.#charmVideoElm(r);\n\n\t\t\tres.type = LoaderResource.TYPE.VIDEO;\n\t\t\t// URL.revokeObjectURL(r.src);\t// 動作確認したい\n\t\t}\n\t\tnext();\n\t}\n\tstatic #charmVideoElm(hve: HTMLVideoElement): HTMLVideoElement {\n\t\t// 【PixiJS】iOSとChromeでAutoPlay可能なビデオSpriteの設定 - Qiita https://qiita.com/masato_makino/items/8316e7743acac514e361\n\t\tif (SpritesMng.#val.getVal('const.sn.needClick2Play')) {\n\t\t\t// ブラウザ実行で、クリックされるまで音声再生が差し止められている状態か。なにかクリックされれば falseになる\n\t\t\tDebugMng.trace_beforeNew(`[lay系] ${DebugMng.strPos()}未クリック状態で動画を自動再生します。音声はミュートされます`, 'W');\n\t\t\thve.muted = true;\t// Chrome対応:自動再生を許可させるため。ないと再開時に DOMException\n\t\t}\n\t\thve.setAttribute('playsinline', '');\t// iOS対応\n\t\treturn hve;\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tstatic #cacheAniSpr = (_r: string, {type, spritesheet, name, data}: any, next: ()=> void)=> {\n\t\tswitch (type) {\n\t\t\tcase LoaderResource.TYPE.JSON:{\t// switchは必須\n\t\t\t\tconst aFn = <string[]>spritesheet._frameKeys;\n\t\t\t\tSpritesMng.#sortAFrameName(aFn);\n\t\t\t\tSpritesMng.#hFn2ResAniSpr[name] = {\n\t\t\t\t\taTex: aFn.map(fn=> Texture.from(fn)),\n\t\t\t\t\tmeta: <IResAniSpr['meta']>data.meta,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\tnext();\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tstatic #dec2cacheAniSpr(r: string, res: any, next: ()=> void) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tconst {meta, frames} = res.data = JSON.parse(r);\n\t\tres.type = LoaderResource.TYPE.JSON;\n\t\tif (! meta?.image) {next(); return}\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\tconst fn = getFn(meta.image);\n\t\tconst url = SpritesMng.#cfg.searchPath(fn, SEARCH_PATH_ARG_EXT.SP_GSM);\n\t\t(new Loader)\n\t\t.use((res2, next2)=> {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\tvoid this.#sys.decAB(res2.data)\n\t\t\t.then(r2=> {\n\t\t\t\tres2.data = r2;\n\t\t\t\tif (r2 instanceof HTMLImageElement) {\n\t\t\t\t\tres2.type = LoaderResource.TYPE.IMAGE;\n\t\t\t\t\tnext2();\n\t\t\t\t\tURL.revokeObjectURL(r2.src);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tnext2();\n\t\t\t})\n\t\t\t.catch((e: unknown)=> this.#main.errScript(`画像/動画ロード失敗です dec2res4Cripto fn:${res2.name} ${String(e)}`, false));\n\t\t})\n\t\t.add({name: fn, url, xhrType: LoaderResource.XHR_RESPONSE_TYPE.BUFFER})\n\t\t.load((ldr, _hRes)=> {\n\t\t\tfor (const {data} of Object.values(ldr.resources)) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\t\tconst {baseTexture} = Texture.from(data);\n\t\t\t\tconst aFr = Object.values(<{[nm: string]: {\n\t\t\t\t\tframe: {x: number; y: number; w: number; h: number;}\n\t\t\t\t}}>frames);\n\t\t\t\tSpritesMng.#hFn2ResAniSpr[res.name] = {\n\t\t\t\t\taTex: aFr.map(({frame: {x, y, w, h}})=> new Texture(\n\t\t\t\t\t\tbaseTexture,\n\t\t\t\t\t\tnew Rectangle(x, y, w, h),\n\t\t\t\t\t)),\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\t\tmeta,\n\t\t\t\t};\n\t\t\t}\n\t\t\tnext();\n\t\t});\n\t}\n\n\t\tstatic\t#mkSprite(fn: string, hRes: {[fn: string]: LoaderResource}): Sprite {\n\t\t\tconst ras = SpritesMng.#hFn2ResAniSpr[fn];\n\t\t\tif (ras) {\n\t\t\t\tconst asp = new AnimatedSprite(ras.aTex);\n\t\t\t\tasp.animationSpeed = ras.meta.animationSpeed ?? 1.0;\n\t\t\t\tasp.play();\n\t\t\t\treturn asp;\n\t\t\t}\n\t\t\tif (fn in utils.TextureCache) return Sprite.from(fn);\n\t\t\tconst hve = SpritesMng.#hFn2hve[fn];\n\t\t\tif (hve) return Sprite.from(hve);\n\n\t\t\tconst r = hRes[fn];\n\t\t\treturn r ?new Sprite(r.texture) :new Sprite;\n\t\t}\n\tstatic\t#hFn2hve\t: {[fn: string]: HTMLVideoElement} = {};\n\tstatic\tgetHFn2VElm(fn: string) {return SpritesMng.#hFn2hve[fn]}\n\n\tstatic\twv(hArg: TArg): boolean {\n\t\t// 動画ファイル名指定でいいかなと。なぜなら「ループで再生しつつ」\n\t\t// 同ファイル名の別の動画の再生は待ちたい、なんて状況は普通は無いだろうと\n\t\tconst {fn} = hArg;\n\t\tif (! fn) throw 'fnは必須です';\n\t\tconst hve = SpritesMng.#hFn2hve[fn];\n\t\tif (! hve || hve.loop) return false;\n\n\t\tif (SpritesMng.#evtMng.isSkipping || hve.ended) {SpritesMng.stopVideo(fn); return false}\n\n\t\tconst RPN_WV = 'wv fn:'+ fn;\n\t\tconst stop = argChk_Boolean(hArg, 'stop', true);\n\t\tconst fnc = ()=> {if (stop) SpritesMng.stopVideo(fn)};\n\t\tReading.beginProc(RPN_WV, fnc, true, fnc);\n\t\thve.addEventListener('ended', ()=> Reading.notifyEndProc(RPN_WV), {once: true, passive: true});\n\n\t\treturn true;\n\t}\n\n\tstatic\tstopVideo(fn: string) {\n\t\tconst hve = SpritesMng.#hFn2hve[fn];\n\t\tif (! hve) return;\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tdelete SpritesMng.#hFn2hve[fn];\n\t\thve.pause();\n\t\thve.currentTime = hve.duration;\n\t}\n\n\n\tstatic\tadd_face(hArg: TArg): boolean {\n\t\tconst {name} = hArg;\n\t\tif (! name) throw 'nameは必須です';\n\t\tif (name in SpritesMng.#hFace) throw '一つのname('+ name +')に対して同じ画像を複数割り当てられません';\n\n\t\tconst {fn = name} = hArg;\n\t\tSpritesMng.#hFace[name] = {\n\t\t\tfn,\n\t\t\tdx: argChk_Num(hArg, 'dx', 0),\n\t\t\tdy: argChk_Num(hArg, 'dy', 0),\n\t\t\tblendmode: Layer.getBlendmodeNum(hArg.blendmode ?? '')\n\t\t};\n\n\t\treturn false;\n\t}\n//\tstatic\tclearFace2Name(): void {SpritesMng.hFace = {}}\n\n}\n"],"names":["SpritesMng","csvFn","ctn","fncFirstComp","fncAllComp","#addChild","sp","#aSp","#csv2Sprites","isStop","#cfg","#val","#sys","#main","cfg","val","sys","main","sndMng","#cachePicMov","r","res","next","#dec2cachePicMov","#cacheAniSpr","#dec2cacheAniSpr","fnc","vol","#glbVol","#movVol","v","#hFn2hve","#evtMng","evtMng","#hFace","#hFn2ResAniSpr","csv","addChild","needLoad","Sprite","utils.TextureCache","Loader","aComp","ldr","fn0","dx","dy","blendmode","fn","BLEND_MODES","url","SEARCH_PATH_ARG_EXT","xt","LoaderResource","comp1","fncLoaded","_","hRes","#mkSprite","str","aiv","e","mes","_r","type","name","data","hve","#charmVideoElm","#sortAFrameName","aFn","a_base_name","d1","d2","is","ie","a","b","int","Texture","r2","DebugMng","spritesheet","meta","frames","getFn","res2","next2","_hRes","baseTexture","aFr","x","y","w","h","Rectangle","ras","asp","AnimatedSprite","hArg","RPN_WV","stop","argChk_Boolean","Reading","argChk_Num","Layer"],"mappings":"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"}
|