@famibee/skynovel 1.64.11 → 1.64.13

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 (75) hide show
  1. package/dist/CmnTween.js +118 -125
  2. package/dist/CmnTween.js.map +1 -1
  3. package/dist/EventMng.js +91 -92
  4. package/dist/EventMng.js.map +1 -1
  5. package/dist/GrpLayer.js +16 -11
  6. package/dist/GrpLayer.js.map +1 -1
  7. package/dist/LayerMng.js +92 -93
  8. package/dist/LayerMng.js.map +1 -1
  9. package/dist/Main.js.map +1 -1
  10. package/dist/PropParser.js +60 -58
  11. package/dist/PropParser.js.map +1 -1
  12. package/dist/Reading.js +5 -4
  13. package/dist/Reading.js.map +1 -1
  14. package/dist/ScriptIterator.js +97 -97
  15. package/dist/ScriptIterator.js.map +1 -1
  16. package/dist/SndBuf.js +37 -35
  17. package/dist/SndBuf.js.map +1 -1
  18. package/dist/Variable.js +89 -94
  19. package/dist/Variable.js.map +1 -1
  20. package/dist/sn/CmnTween.d.ts +4 -15
  21. package/dist/sn/CmnTween.d.ts.map +1 -1
  22. package/dist/sn/EventMng.d.ts.map +1 -1
  23. package/dist/sn/GrpLayer.d.ts +1 -1
  24. package/dist/sn/GrpLayer.d.ts.map +1 -1
  25. package/dist/sn/Layer.d.ts +1 -1
  26. package/dist/sn/Layer.d.ts.map +1 -1
  27. package/dist/sn/LayerMng.d.ts.map +1 -1
  28. package/dist/sn/Main.d.ts.map +1 -1
  29. package/dist/sn/PropParser.d.ts +7 -4
  30. package/dist/sn/PropParser.d.ts.map +1 -1
  31. package/dist/sn/Reading.d.ts +1 -1
  32. package/dist/sn/Reading.d.ts.map +1 -1
  33. package/dist/sn/ScriptIterator.d.ts.map +1 -1
  34. package/dist/sn/SndBuf.d.ts.map +1 -1
  35. package/dist/sn/Variable.d.ts.map +1 -1
  36. package/dist/web2.js +3 -3
  37. package/dist/web2.js.map +1 -1
  38. package/dist_app/CmnTween.js +118 -125
  39. package/dist_app/CmnTween.js.map +1 -1
  40. package/dist_app/EventMng.js +244 -245
  41. package/dist_app/EventMng.js.map +1 -1
  42. package/dist_app/GrpLayer.js +16 -11
  43. package/dist_app/GrpLayer.js.map +1 -1
  44. package/dist_app/LayerMng.js +59 -60
  45. package/dist_app/LayerMng.js.map +1 -1
  46. package/dist_app/Main.js.map +1 -1
  47. package/dist_app/PropParser.js +37 -35
  48. package/dist_app/PropParser.js.map +1 -1
  49. package/dist_app/Reading.js +5 -4
  50. package/dist_app/Reading.js.map +1 -1
  51. package/dist_app/ScriptIterator.js +151 -151
  52. package/dist_app/ScriptIterator.js.map +1 -1
  53. package/dist_app/SndBuf.js +37 -35
  54. package/dist_app/SndBuf.js.map +1 -1
  55. package/dist_app/Variable.js +89 -94
  56. package/dist_app/Variable.js.map +1 -1
  57. package/dist_app/app2.js +3 -3
  58. package/dist_app/app2.js.map +1 -1
  59. package/dist_app/sn/CmnTween.d.ts +4 -15
  60. package/dist_app/sn/CmnTween.d.ts.map +1 -1
  61. package/dist_app/sn/EventMng.d.ts.map +1 -1
  62. package/dist_app/sn/GrpLayer.d.ts +1 -1
  63. package/dist_app/sn/GrpLayer.d.ts.map +1 -1
  64. package/dist_app/sn/Layer.d.ts +1 -1
  65. package/dist_app/sn/Layer.d.ts.map +1 -1
  66. package/dist_app/sn/LayerMng.d.ts.map +1 -1
  67. package/dist_app/sn/Main.d.ts.map +1 -1
  68. package/dist_app/sn/PropParser.d.ts +7 -4
  69. package/dist_app/sn/PropParser.d.ts.map +1 -1
  70. package/dist_app/sn/Reading.d.ts +1 -1
  71. package/dist_app/sn/Reading.d.ts.map +1 -1
  72. package/dist_app/sn/ScriptIterator.d.ts.map +1 -1
  73. package/dist_app/sn/SndBuf.d.ts.map +1 -1
  74. package/dist_app/sn/Variable.d.ts.map +1 -1
  75. package/package.json +5 -5
package/dist/Variable.js CHANGED
@@ -1,7 +1,7 @@
1
- import { u as S, h as p, i as v, j as f, k as b, l as c, e as y } from "./web2.js";
2
- import { c as C } from "./CallStack.js";
3
- import { PropParser as w } from "./PropParser.js";
4
- import { R as N } from "./Reading.js";
1
+ import { u as b, h as p, i as w, j as f, k as N, l as r, e as S } from "./web2.js";
2
+ import { c as O } from "./CallStack.js";
3
+ import { PropParser as C } from "./PropParser.js";
4
+ import { R as W } from "./Reading.js";
5
5
  class m {
6
6
  #t = {};
7
7
  clear() {
@@ -61,17 +61,17 @@ class m {
61
61
  }
62
62
  class g {
63
63
  constructor(t, s, e) {
64
- this.sys = t, this.cfg = s, e.let = (i) => this.#i(i), e.let_abs = (i) => this.#V(i), e.let_char_at = (i) => this.#j(i), e.let_index_of = (i) => this.#P(i), e.let_length = (i) => this.#R(i), e.let_replace = (i) => this.#L(i), e.let_round = (i) => this.#K(i), e.let_search = (i) => this.#F(i), e.let_substr = (i) => this.#M(i), e.clearsysvar = () => this.#d(), e.clearvar = () => this.#D(), e.dump_val = () => this.#E(), e.copybookmark = (i) => this.#W(i), e.erasebookmark = (i) => this.#O(i), this.defTmp("const.sn.bookmark.json", () => {
64
+ this.sys = t, this.cfg = s, e.let = (i) => this.#i(i), e.let_abs = (i) => this.#V(i), e.let_char_at = (i) => this.#j(i), e.let_index_of = (i) => this.#P(i), e.let_length = (i) => this.#R(i), e.let_replace = (i) => this.#L(i), e.let_round = (i) => this.#K(i), e.let_search = (i) => this.#F(i), e.let_substr = (i) => this.#M(i), e.clearsysvar = () => this.#p(), e.clearvar = () => this.#D(), e.dump_val = () => this.#E(), e.copybookmark = (i) => this.#W(i), e.erasebookmark = (i) => this.#O(i), this.defTmp("const.sn.bookmark.json", () => {
65
65
  const i = [];
66
- for (const [r, n] of Object.entries(this.#e.mark)) {
67
- const o = { ...n.json };
68
- o.place = S(r), i.push(o);
66
+ for (const [c, n] of Object.entries(this.#e.mark)) {
67
+ const h = { ...n.json };
68
+ h.place = b(c), i.push(h);
69
69
  }
70
70
  return JSON.stringify(i);
71
71
  }), this.#o["const.sn.config.window.width"] = s.oCfg.window.width, this.#o["const.sn.config.window.height"] = s.oCfg.window.height, this.#o["const.sn.config.book.title"] = s.oCfg.book.title, this.#o["const.sn.config.book.version"] = s.oCfg.book.version;
72
72
  }
73
73
  #t = p();
74
- #o = v();
74
+ #o = w();
75
75
  #s = {
76
76
  sys: {},
77
77
  // clearsysvarを呼ぶので
@@ -88,10 +88,10 @@ class g {
88
88
  };
89
89
  #n;
90
90
  #a = {};
91
- #m;
91
+ #_;
92
92
  async init() {
93
93
  return this.sys.initVal(this.#o, (t) => {
94
- this.updateData(t), this.cfg.oCfg.debug.variable ? this.#N(this.sys) : this.flush = () => this.sys.flush(), this.flush(), this.#m = (e, i) => this.sys.callHook(e, i), this.sys.addHook((e, i) => this.#C[e]?.(e, i)), f(this.getVal("sys:sn.tagCh.msecWait", -1)) === -1 && this.#d(!0), this.#l = !!this.getVal("sys:sn.tagCh.doWait"), this.#f = !!this.getVal("sys:sn.tagCh.doWait_Kidoku"), this.#u = f(this.getVal("sys:sn.tagCh.msecWait")), this.#g = f(this.getVal("sys:sn.tagCh.msecWait_Kidoku")), this.#_();
94
+ this.updateData(t), this.cfg.oCfg.debug.variable ? this.#N(this.sys) : this.flush = () => this.sys.flush(), this.flush(), this.#_ = (e, i) => this.sys.callHook(e, i), this.sys.addHook((e, i) => this.#C[e]?.(e, i)), f(this.getVal("sys:sn.tagCh.msecWait", -1)) === -1 && this.#p(!0), this.#l = !!this.getVal("sys:sn.tagCh.doWait"), this.#f = !!this.getVal("sys:sn.tagCh.doWait_Kidoku"), this.#u = f(this.getVal("sys:sn.tagCh.msecWait")), this.#g = f(this.getVal("sys:sn.tagCh.msecWait_Kidoku")), this.#m();
95
95
  });
96
96
  }
97
97
  //MARK: SessionStorage で確認できるデバッグ機能
@@ -99,37 +99,37 @@ class g {
99
99
  sessionStorage.clear();
100
100
  const s = this.cfg.headNs;
101
101
  this.flush = () => {
102
- const e = b();
103
- for (const [h, a] of Object.entries(this.#n))
104
- a instanceof Function || (e[h] = a);
102
+ const e = N();
103
+ for (const [a, o] of Object.entries(this.#n))
104
+ o instanceof Function || (e[a] = o);
105
105
  sessionStorage[s + "sys"] = JSON.stringify(e);
106
106
  const i = p();
107
- for (const [h, a] of Object.entries(this.#t))
108
- i[h] = a;
107
+ for (const [a, o] of Object.entries(this.#t))
108
+ i[a] = o;
109
109
  sessionStorage[s + "save"] = JSON.stringify(i);
110
- const r = v();
111
- for (const [h, a] of Object.entries(this.#o))
112
- r[h] = a instanceof Function ? a() : a;
113
- sessionStorage[s + "tmp"] = JSON.stringify(r);
114
- const n = C();
115
- for (const [h, a] of Object.entries(this.#s.mp))
116
- n[h] = a;
110
+ const c = w();
111
+ for (const [a, o] of Object.entries(this.#o))
112
+ c[a] = o instanceof Function ? o() : o;
113
+ sessionStorage[s + "tmp"] = JSON.stringify(c);
114
+ const n = O();
115
+ for (const [a, o] of Object.entries(this.#s.mp))
116
+ n[a] = o;
117
117
  sessionStorage[s + "mp"] = JSON.stringify(n);
118
- const o = {};
119
- for (const [h, a] of Object.entries(this.#e.mark))
120
- o[f(h)] = a instanceof Function ? a() : a;
121
- sessionStorage[s + "mark"] = JSON.stringify(o), sessionStorage[s + "kidoku"] = structuredClone(this.#e.kidoku), t.flush();
118
+ const h = {};
119
+ for (const [a, o] of Object.entries(this.#e.mark))
120
+ h[f(a)] = o instanceof Function ? o() : o;
121
+ sessionStorage[s + "mark"] = JSON.stringify(h), sessionStorage[s + "kidoku"] = structuredClone(this.#e.kidoku), t.flush();
122
122
  };
123
123
  }
124
- #_() {
125
- N.playbackPage(
124
+ #m() {
125
+ W.playbackPage(
126
126
  String(this.getVal("sys:const.sn.aPageLog", "[]")),
127
- String(this.getVal("save:const.sn.styPaging", N.INI_STYPAGE))
127
+ String(this.getVal("save:const.sn.styPaging", W.INI_STYPAGE))
128
128
  );
129
129
  }
130
130
  #C = {
131
131
  // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access
132
- auth: (t, s) => this.#p(s.hBreakpoint.aData),
132
+ auth: (t, s) => this.#y(s.hBreakpoint.aData),
133
133
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access
134
134
  var: (t, s) => this.sys.send2Dbg(s.ri, { v: this.#s[s.scope] ?? {} }),
135
135
  set_var: (t, s) => {
@@ -139,14 +139,14 @@ class g {
139
139
  }
140
140
  },
141
141
  set_data_break: (t, s) => {
142
- this.#p(s.a), this.sys.send2Dbg(s.ri, {});
142
+ this.#y(s.a), this.sys.send2Dbg(s.ri, {});
143
143
  },
144
144
  disconnect: (t) => {
145
145
  g.#r = {};
146
146
  }
147
147
  };
148
148
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
149
- #p(t) {
149
+ #y(t) {
150
150
  g.#r = {};
151
151
  for (const s of t) g.#r[s.dataId] = 1;
152
152
  }
@@ -160,9 +160,9 @@ class g {
160
160
  flush = () => {
161
161
  };
162
162
  setDoRecProc(t) {
163
- this.#y = t;
163
+ this.#d = t;
164
164
  }
165
- #y = (t) => {
165
+ #d = (t) => {
166
166
  };
167
167
  // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access
168
168
  defTmp(t, s) {
@@ -206,7 +206,7 @@ class g {
206
206
  // // しおり
207
207
  // しおりの複写
208
208
  #W(t) {
209
- const s = c(t, "from", NaN), e = c(t, "to", NaN);
209
+ const s = r(t, "from", NaN), e = r(t, "to", NaN);
210
210
  if (s === e) return !1;
211
211
  const i = this.#e.mark[s];
212
212
  if (!i) throw `from:${String(s)} のセーブデータは存在しません`;
@@ -214,7 +214,7 @@ class g {
214
214
  }
215
215
  // しおりの消去
216
216
  #O(t) {
217
- const s = c(t, "place", NaN);
217
+ const s = r(t, "place", NaN);
218
218
  return delete this.#e.mark[s], this.flush(), this.sys.eraseBMFolder(s), !1;
219
219
  }
220
220
  // // 変数操作
@@ -225,16 +225,16 @@ class g {
225
225
  if (t.cast)
226
226
  switch (t.cast) {
227
227
  case "num":
228
- c(t, "text", NaN);
228
+ r(t, "text", NaN);
229
229
  break;
230
230
  case "int":
231
- t.text = String(f(c(t, "text", NaN)));
231
+ t.text = String(f(r(t, "text", NaN)));
232
232
  break;
233
233
  case "uint":
234
- t.text = String(S(c(t, "text", NaN)));
234
+ t.text = String(b(r(t, "text", NaN)));
235
235
  break;
236
236
  case "bool":
237
- y(t, "text", !1);
237
+ S(t, "text", !1);
238
238
  break;
239
239
  case "str":
240
240
  s = !1;
@@ -246,18 +246,18 @@ class g {
246
246
  }
247
247
  // 絶対値
248
248
  #V(t) {
249
- const s = c(t, "text", 0);
249
+ const s = r(t, "text", 0);
250
250
  return t.text = String(s < 0 ? -s : s), this.#i(t), !1;
251
251
  }
252
252
  // 文字列から一字取りだし
253
253
  #j(t) {
254
- return t.text = (t.text ?? "").charAt(c(t, "pos", 0)), this.#i(t), !1;
254
+ return t.text = (t.text ?? "").charAt(r(t, "pos", 0)), this.#i(t), !1;
255
255
  }
256
256
  // 文字列で検索
257
257
  #P(t) {
258
258
  const { val: s } = t;
259
259
  if (!s) throw "valは必須です";
260
- const e = c(t, "start", 0);
260
+ const e = r(t, "start", 0);
261
261
  return t.text = String((t.text ?? "").indexOf(s, e)), this.#i(t), !1;
262
262
  }
263
263
  // 文字列の長さ
@@ -272,7 +272,7 @@ class g {
272
272
  }
273
273
  // 四捨五入
274
274
  #K(t) {
275
- const s = c(t, "text", 0);
275
+ const s = r(t, "text", 0);
276
276
  return t.text = String(Math.round(s)), this.#i(t), !1;
277
277
  }
278
278
  // 正規表現で検索
@@ -283,16 +283,16 @@ class g {
283
283
  }
284
284
  // 文字列から抜きだし
285
285
  #M(t) {
286
- const s = c(t, "pos", 0);
287
- return t.text = t.len !== "all" ? (t.text ?? "").slice(s, s + f(c(t, "len", 1))) : (t.text ?? "").slice(s), this.#i(t), !1;
286
+ const s = r(t, "pos", 0);
287
+ return t.text = t.len !== "all" ? (t.text ?? "").slice(s, s + f(r(t, "len", 1))) : (t.text ?? "").slice(s), this.#i(t), !1;
288
288
  }
289
289
  // // デバッグ・その他
290
290
  // システム変数の全消去
291
- #d(t = !1) {
292
- const s = this.#n = this.#s.sys = this.#e.sys = b();
293
- typeof process < "u" || (this.setVal_Nochk("sys", "const.sn.window.x", 0), this.setVal_Nochk("sys", "const.sn.window.y", 0)), this.setVal_Nochk("sys", "sn.tagCh.msecWait", this.cfg.oCfg.init.tagch_msecwait), this.setVal_Nochk("sys", "sn.tagCh.msecWait_Kidoku", this.cfg.oCfg.init.tagch_msecwait), this.setVal_Nochk("sys", "sn.auto.msecPageWait", c(s, "sn.auto.msecPageWait", this.cfg.oCfg.init.auto_msecpagewait)), this.setVal_Nochk("sys", "sn.auto.msecPageWait_Kidoku", c(s, "sn.auto.msecPageWait", this.cfg.oCfg.init.auto_msecpagewait));
291
+ #p(t = !1) {
292
+ const s = this.#n = this.#s.sys = this.#e.sys = N();
293
+ typeof process < "u" || (this.setVal_Nochk("sys", "const.sn.window.x", 0), this.setVal_Nochk("sys", "const.sn.window.y", 0)), this.setVal_Nochk("sys", "sn.tagCh.msecWait", this.cfg.oCfg.init.tagch_msecwait), this.setVal_Nochk("sys", "sn.tagCh.msecWait_Kidoku", this.cfg.oCfg.init.tagch_msecwait), this.setVal_Nochk("sys", "sn.auto.msecPageWait", r(s, "sn.auto.msecPageWait", this.cfg.oCfg.init.auto_msecpagewait)), this.setVal_Nochk("sys", "sn.auto.msecPageWait_Kidoku", r(s, "sn.auto.msecPageWait", this.cfg.oCfg.init.auto_msecpagewait));
294
294
  for (const i of Object.values(this.#a)) i.clear();
295
- return this.#s.mark = this.#e.mark = {}, t || this.#_(), this.flush(), !1;
295
+ return this.#s.mark = this.#e.mark = {}, t || this.#m(), this.flush(), !1;
296
296
  }
297
297
  // ゲーム変数の全消去
298
298
  #D() {
@@ -302,28 +302,25 @@ class g {
302
302
  #S(t, s, e = !0) {
303
303
  if (!t) throw "[変数に値セット] nameは必須です";
304
304
  if (s === void 0) throw "[変数に値セット] textは必須です(空文字はOK)";
305
- const i = w.getValName(t);
305
+ const i = C.getValName(t);
306
306
  if (!i) throw `[変数参照] name(${t})が変数名として異常です`;
307
- const r = this.#s[i.scope];
308
- if (!r) throw `[変数に値セット] scopeが異常【${String(i.scope)}】です`;
309
- const n = i.name;
310
- if (n.startsWith("const.") && n in r)
307
+ const { scope: c, name: n } = i, h = this.#s[c];
308
+ if (n.startsWith("const.") && n in h)
311
309
  throw `[変数に値セット] 変数【${n}】は書き換え不可です`;
312
- this.setVal_Nochk(i.scope, n, s, e);
310
+ this.setVal_Nochk(c, n, s, e);
313
311
  }
314
312
  setVal_Nochk(t, s, e, i = !1) {
315
- const r = this.#s[t], n = i ? this.#c(e) : e, o = t + ":" + s;
316
- if (o in g.#r) {
317
- const h = r[s], a = n;
318
- h != a && this.#m("data_break", {
319
- dataId: o,
313
+ const c = this.#s[t], n = i ? this.#c(e) : e, h = t + ":" + s;
314
+ if (h in g.#r) {
315
+ const a = c[s];
316
+ a != n && this.#_("data_break", {
317
+ dataId: h,
318
+ old_v: a,
320
319
  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
321
- old_v: h,
322
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
323
- new_v: a
320
+ new_v: n
324
321
  });
325
322
  }
326
- r[s] = n, this.#v[o]?.(s, n ?? "");
323
+ c[s] = n, this.#v[h]?.(s, n ?? "");
327
324
  }
328
325
  // reload 再生成 Main に受け渡すため static
329
326
  static #r = {};
@@ -331,35 +328,33 @@ class g {
331
328
  // if (! arg_name) throw '[変数参照] nameは必須です';
332
329
  getVal(t, s, e = !1) {
333
330
  if (!t) throw "[変数参照] nameは必須です";
334
- const i = w.getValName(t);
331
+ const i = C.getValName(t);
335
332
  if (!i) throw "[変数参照] name(" + t + ")が変数名として異常です";
336
- const r = this.#s[i.scope];
337
- if (!r) throw `[変数参照] scopeが異常【${String(i.scope)}】です`;
338
- const n = i.name;
339
- let o = r[n];
340
- if (!(n in r)) {
333
+ const { scope: c, name: n, at: h } = i, a = this.#s[c];
334
+ let o = a[n];
335
+ if (!(n in a)) {
341
336
  if (o = s, e)
342
- return r[n] = s, i.at === "@str" ? o : this.#c(o);
343
- let h = "";
344
- const a = n.split("."), k = a.length;
345
- for (let u = 0; u < k; ++u, h += ".") {
346
- if (h += a[u], !(h in r)) continue;
347
- let l = JSON.parse(r[h]);
337
+ return a[n] = s, h === "@str" ? o : this.#c(o);
338
+ let k = "";
339
+ const y = n.split("."), _ = y.length;
340
+ for (let u = 0; u < _; ++u, k += ".") {
341
+ if (k += y[u], !(k in a)) continue;
342
+ let l = JSON.parse(a[k]);
348
343
  if (Object.prototype.toString.call(l) !== "[object Object]") {
349
- if (u + 1 === k) {
344
+ if (u + 1 === _) {
350
345
  o = l;
351
346
  break;
352
347
  }
353
348
  continue;
354
349
  }
355
- let _ = u;
356
- for (; ++_ < k; ) {
357
- const d = a[_];
358
- if (!(d in l)) {
350
+ let d = u;
351
+ for (; ++d < _; ) {
352
+ const v = y[d];
353
+ if (!(v in l)) {
359
354
  o = s;
360
355
  break;
361
356
  }
362
- if (l = l[d], Object.prototype.toString.call(l) !== "[object Object]" || _ + 1 === k) {
357
+ if (l = l[v], Object.prototype.toString.call(l) !== "[object Object]" || d + 1 === _) {
363
358
  o = l;
364
359
  break;
365
360
  }
@@ -368,7 +363,7 @@ class g {
368
363
  break;
369
364
  }
370
365
  }
371
- return o instanceof Function && (o = o()), i.at === "@str" ? o : this.#c(o);
366
+ return o instanceof Function && (o = o()), h === "@str" ? o : this.#c(o);
372
367
  }
373
368
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
374
369
  #c(t) {
@@ -385,8 +380,8 @@ class g {
385
380
  const t = { tmp: {}, sys: {}, save: {}, mp: {} };
386
381
  for (const s in t) {
387
382
  const e = this.#s[s], i = t[s];
388
- for (const [r, n] of Object.entries(e))
389
- n instanceof Function || (i[r] = n);
383
+ for (const [c, n] of Object.entries(e))
384
+ n instanceof Function || (i[c] = n);
390
385
  }
391
386
  return console.info("🥟 [dump_val]", t), !1;
392
387
  }
@@ -431,7 +426,7 @@ class g {
431
426
  "sys:sn.auto.msecLineWait_Kidoku": (t) => this.#w(t),
432
427
  // save
433
428
  "save:sn.doRecLog": (t) => {
434
- this.#y(
429
+ this.#d(
435
430
  this.#h = this.#J(t)
436
431
  );
437
432
  },
@@ -447,23 +442,23 @@ class g {
447
442
  defValTrg(t, s) {
448
443
  this.#v[t] = s;
449
444
  }
450
- #k = (t) => y(this.#n, t, !0);
451
- #I = (t) => c(this.#n, t, 10);
452
- #B = (t) => c(
445
+ #k = (t) => S(this.#n, t, !0);
446
+ #I = (t) => r(this.#n, t, 10);
447
+ #B = (t) => r(
453
448
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
454
449
  this.#n,
455
450
  t,
456
451
  this.cfg.oCfg.init.tagch_msecwait ?? 10
457
452
  );
458
- #b = (t) => c(
453
+ #b = (t) => r(
459
454
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
460
455
  this.#n,
461
456
  t,
462
457
  this.cfg.oCfg.init.auto_msecpagewait ?? 3500
463
458
  );
464
- #w = (t) => c(this.#n, t, 500);
459
+ #w = (t) => r(this.#n, t, 500);
465
460
  #J(t) {
466
- return y(this.#t, t, !0);
461
+ return S(this.#t, t, !0);
467
462
  }
468
463
  }
469
464
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"Variable.js","sources":["../src/sn/Areas.ts","../src/sn/Variable.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\nexport type T_H_Areas = {[begin: string]: number};\n\n\nexport class Areas {\n\t#hAreas\t: T_H_Areas\t= {};\n\n\tclear() {this.#hAreas = {}}\n\tstatic\tfrom(new_val: T_H_Areas): Areas {\n\t\tconst ar = new Areas;\n\t\tar.#hAreas = {...new_val};\n\t\treturn ar;\n\t}\n\tval(): T_H_Areas {return {...this.#hAreas}}\n\n\tsearch(idx: number): boolean {\n\t\treturn Object.entries(this.#hAreas)\n\t\t.some(([begin, v])=> idx >= parseInt(begin) && idx <= v);\n\t}\n\n\trecord(idx: number): void {\n\t\tif (this.search(idx)) return;\n\n\t\tfor (const [begin, v] of Object.entries(this.#hAreas)) {\n\t\t\t// 領域末尾+1とマッチ\n\t\t\tif (v +1 === idx) {\n\t\t\t\tif (String(idx +1) in this.#hAreas) {\n\t\t\t\t\t// 二つの領域がマージできる場合\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\t\tthis.#hAreas[begin] = this.#hAreas[idx +1]!;\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\t\t\tdelete this.#hAreas[idx +1]\n\t\t\t\t}\n\t\t\t\telse this.#hAreas[begin] = idx;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// 領域先頭-1とマッチ\n\t\tif (String(idx +1) in this.#hAreas) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tthis.#hAreas[idx] = this.#hAreas[idx +1]!;\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\tdelete this.#hAreas[idx +1];\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#hAreas[idx] = idx;\n\t}\n\n\terase(idx: number): void {\n\t\tif (! this.search(idx)) return;\n\n\t\t// 領域先頭とマッチ\n\t\tif (String(idx) in this.#hAreas) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tif (this.#hAreas[idx]! > idx) this.#hAreas[idx +1] = this.#hAreas[idx]!;\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\tdelete this.#hAreas[idx];\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const [begin, v] of Object.entries(this.#hAreas)) {\n\t\t\tif (idx < parseInt(begin) || v < idx) continue;\n\n\t\t\t// 領域末尾とマッチ\n\t\t\tif (this.#hAreas[begin] === idx) {\n\t\t\t\tthis.#hAreas[begin] = idx -1;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// 領域内とマッチ、二つの領域に分割\n\t\t\tthis.#hAreas[idx +1] = v;\n\t\t\tthis.#hAreas[begin] = idx -1;\n\t\t\treturn;\n\t\t}\n\t}\n\n\tget count(): number {return Object.keys(this.#hAreas).length}\t// 4tst\n\n\ttoString(): string {\n\t\tlet ret = '';\n\n\t\tfor (const k of Object.keys(this.#hAreas)\n\t\t.map(k=> parseInt(k))\n\t\t.sort((x, y)=> x-y)) {\n\t\t\tret += k === this.#hAreas[k]\n\t\t\t? ','+ String(k)\n\t\t\t: ','+ String(k) +'~'+ String(this.#hAreas[String(k)]);\n\t\t}\n\n\t\treturn ret;\t// 先頭に , が付いている。削除したいが、修正すると互換性に問題あり凍結\n\t}\n\n}\n","/* ***** 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 {uint, int, argChk_Boolean, argChk_Num} from './CmnLib';\nimport {creCSArg, type T_H_VAL_MP} from './CallStack';\nimport type {TArg, T_HTag} from './Grammar';\nimport type {T_Variable, T_fncSetVal, T_ProcVal, T_SysBase, T_Data4Vari, T_Mark, T_FncHook, Scope, T_H_TMP_DATA, T_H_VAL_MARK, T_H_SYS_DATA, T_VAL_DATA_FNC, T_VAL_DATA, T_VAL_BSNU, T_H_SAVE_DATA} from './CmnInterface';\nimport {creSAVEDATA, creSYS_DATA, creTMP_DATA} from './CmnInterface';\nimport type {Config} from './Config';\nimport {Areas} from './Areas';\nimport {PropParser} from './PropParser';\nimport {ReadingState} from './Reading';\n\n\nexport class Variable implements T_Variable {\n\t#hSave\t\t: T_H_SAVE_DATA\t= creSAVEDATA();\n\t#hTmp\t\t: T_H_TMP_DATA\t= creTMP_DATA();\n\t#hScopes\t= {\n\t\tsys\t\t: {},\t// clearsysvarを呼ぶので\n\t\tsave\t: this.#hSave,\n\t\ttmp\t\t: this.#hTmp,\n\t\tmp\t\t: <T_H_VAL_MP>{},\n\t\tmark\t: <T_H_VAL_MARK>{},\n\t};\n\n\n\tconstructor(private readonly sys: T_SysBase, private readonly cfg: Config, hTag: T_HTag) {\n\t\t//\t変数操作\n\t\thTag.let\t\t\t= o=> this.#let(o);\t\t\t// 変数代入・演算\n\t\thTag.let_abs\t\t= o=> this.#let_abs(o);\t\t// 絶対値\n\t\thTag.let_char_at\t= o=> this.#let_char_at(o);\t// 文字列から一字取りだし\n\t\thTag.let_index_of\t= o=> this.#let_index_of(o);// 文字列で検索\n\t\thTag.let_length\t\t= o=> this.#let_length(o);\t// 文字列の長さ\n\t\t// let_mlはScriptIteratorにて定義\t\t\t\t// インラインテキスト代入\n\t\thTag.let_replace\t= o=> this.#let_replace(o);\t// 正規表現で置換\n\t\thTag.let_round\t\t= o=> this.#let_round(o);\t// 四捨五入\n\t\thTag.let_search\t\t= o=> this.#let_search(o);\t// 正規表現で検索\n\t\thTag.let_substr\t\t= o=> this.#let_substr(o);\t// 文字列から抜きだし\n\n\t\t//\tデバッグ・その他\n\t\thTag.clearsysvar\t= ()=> this.#clearsysvar();\t// システム変数の全消去\n\t\thTag.clearvar\t\t= ()=> this.#clearvar();\t// ゲーム変数の全消去\n\t\thTag.dump_val\t\t= ()=> this.#dump_val();\t// 変数のダンプ\n\n\t\t// しおり\n\t\thTag.copybookmark\t= o=> this.#copybookmark(o);\t// しおりの複写\n\t\thTag.erasebookmark\t= o=> this.#erasebookmark(o);\t// しおりの消去\n\t\t//hTag.load\t\t\t// ScriptIterator.ts内で定義\t// しおりの読込\n\t\t//hTag.record_place\t// ScriptIterator.ts内で定義\t// セーブポイント指定\n\t\t//hTag.save\t\t\t// ScriptIterator.ts内で定義\t// しおりの保存\n\n\t\t// save:\n\t\tthis.defTmp('const.sn.bookmark.json', ()=> {\n\t\t\tconst a: TArg[] = [];\n\t\t\tfor (const [nm, mk] of Object.entries(this.#d4v.mark)) {\n\t\t\t\tconst o = {...mk.json};\n\t\t\t\to.place = uint(nm);\n\t\t\t\ta.push(o);\t// パスを searchPath() で展開してはいけない\n\t\t\t}\n\t\t\treturn JSON.stringify(a);\n\t\t});\n\n\t\t// tmp:\n\t\t/*\n\t\t\tthis.hTmp['const.Stage.supportsOrientationChange']\n\t\t\t\t= Stage.supportsOrientationChange;\n\t\t\tif (this.hTmp['const.Stage.supportsOrientationChange']) {\n\t\t\t\tthis.hTmp['const.Stage.orientation']\n\t\t\t\t\t= ()=> {return stage.orientation};\n\t\t\t\tthis.hTmp['const.Stage.deviceOrientation']\n\t\t\t\t\t= ()=> {return stage.deviceOrientation};\n\n\t\t\t\tconst lenSO:uint = stage.supportedOrientations.length;\n\t\t\t\tfor (let iSO:uint=0; iSO<lenSO; ++iSO) {\n\t\t\t\t\tthis.hTmp['const.Stage.supportedOrientations.'\n\t\t\t\t\t\t+ stage.supportedOrientations[iSO]\n\t\t\t\t\t] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t//\timport flash.display.StageOrientation;\n\t\t\t\tthis.hTmp['const.Stage.orientation'] =\n\t\t\t\tthis.hTmp['const.Stage.deviceOrientation'] =\n\t\t\t\t//\t\tStageOrientation.DEFAULT;\n\t\t\t\t\t'default';\n\t\t\t}\n\t\t*/\n\n\t\t// ・画面サイズ:screen.width ウインドウが表示されているディスプレイのサイズ\n\t\t//\t※ macOSなら【設定】-【ディスプレイ】-【使用形態】のイメージボタンにホバーすると出る数字と同じ\n// DebugMng.myTrace(`fn:Variable.ts 画面サイズ(${String(screen.width)} x ${String(screen.height)}) 利用可能領域(${String(screen.availWidth)} x ${String(screen.availHeight)})`, 'W');\n\n\t\t// prj.json\n\t\tthis.#hTmp['const.sn.config.window.width']\t= cfg.oCfg.window.width;\n\t\tthis.#hTmp['const.sn.config.window.height']\t= cfg.oCfg.window.height;\n\t\tthis.#hTmp['const.sn.config.book.title']\t= cfg.oCfg.book.title;\n\t\tthis.#hTmp['const.sn.config.book.version']\t= cfg.oCfg.book.version;\n\t}\n\n\n\t#d4v\t: T_Data4Vari\t= {\n\t\tsys\t\t: <T_H_SYS_DATA>{},\t// clearsysvarを呼ぶので\n\t\tmark\t: {},\n\t\tkidoku\t: {},\n\t};\n\t#hSys\t: T_H_SYS_DATA;\n\t#hAreaKidoku\t: {[fn: string]: Areas}\t= {};\n\t#callHook\t\t: T_FncHook;\n\tasync init() {return this.sys.initVal(this.#hTmp, data=> {\n\t\tthis.updateData(data);\n\n\t\tif (this.cfg.oCfg.debug.variable) this.#dbgVariable(this.sys);\n\t\telse this.flush = ()=> this.sys.flush();\n\t\tthis.flush();\n\n\t\tthis.#callHook = (type, o)=> this.sys.callHook(type, o);\n\t\tthis.sys.addHook((type, o)=> this.#hProcDbgRes[type]?.(type, o));\n\n\t\t// 初回の初期化と、v1.11.0 まで未初期化変数があった件の対策\n\t\tconst tm = int(this.getVal('sys:sn.tagCh.msecWait', -1));\n\t\tif (tm === -1) this.#clearsysvar(true);\n\n\t\tthis.#tagCh_doWait = Boolean(this.getVal('sys:sn.tagCh.doWait'));\n\t\tthis.#tagCh_doWait_Kidoku = Boolean(this.getVal('sys:sn.tagCh.doWait_Kidoku'));\n\t\tthis.#tagCh_msecWait = int(this.getVal('sys:sn.tagCh.msecWait'));\n\t\tthis.#tagCh_msecWait_Kidoku = int(this.getVal('sys:sn.tagCh.msecWait_Kidoku'));\n\n\t\tthis.#saPageLog();\n\t})}\n\n\t//MARK: SessionStorage で確認できるデバッグ機能\n\t#dbgVariable(sys: T_SysBase) {\n\t\tsessionStorage.clear();\n\t\tconst ns = this.cfg.headNs;\n\n\t\tthis.flush = () => {\n\t\t\tconst oSys = creSYS_DATA();\n\t\t\tfor (const [k, v] of Object.entries(this.#hSys)) {\n\t\t\t\tif (v instanceof Function) continue;\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n\t\t\t\t(<any>oSys)[k] = v;\n\t\t\t}\n\t\t\tsessionStorage[ns + 'sys'] = JSON.stringify(oSys);\n\n\t\t\tconst oSave = creSAVEDATA();\n\t\t\tfor (const [k, v] of Object.entries(this.#hSave)) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n\t\t\t\t(<any>oSave)[k] = v;\n\t\t\t}\n\t\t\tsessionStorage[ns + 'save'] = JSON.stringify(oSave);\n\n\t\t\tconst oTmp = creTMP_DATA();\n\t\t\tfor (const [k, v] of Object.entries(this.#hTmp)) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n\t\t\t\t(<any>oTmp)[k] = v instanceof Function ? v() : v;\n\t\t\t\t//TODO: 実行するのか無視するのか問題\n\t\t\t}\n\t\t\tsessionStorage[ns + 'tmp'] = JSON.stringify(oTmp);\n\n\t\t\tconst oMp = creCSArg();\n\t\t\tfor (const [k, v] of Object.entries(this.#hScopes.mp)) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n\t\t\t\t(<any>oMp)[k] = v;\n\t\t\t}\n\t\t\tsessionStorage[ns + 'mp'] = JSON.stringify(oMp);\n\n\t\t\tconst oMark: T_H_VAL_MARK = {};\n\t\t\tfor (const [k, v] of Object.entries(this.#d4v.mark)) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-assignment\n\t\t\t\toMark[int(k)] = v instanceof Function ? v() : v;\n\t\t\t}\n\t\t\tsessionStorage[ns + 'mark'] = JSON.stringify(oMark);\n\n\t\t\tsessionStorage[ns + 'kidoku'] = structuredClone(this.#d4v.kidoku);\n\n\t\t\tsys.flush();\n\t\t};\n\t}\n\n\n\t#saPageLog() {ReadingState.playbackPage(\n\t\tString(this.getVal('sys:const.sn.aPageLog', '[]')),\n\t\tString(this.getVal('save:const.sn.styPaging', ReadingState.INI_STYPAGE)),\n\t)}\n\treadonly\t#hProcDbgRes\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t: {[type: string]: (type: string, o: any)=> void}\t= {\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n\t\tauth: (_, o)=> this.#set_data_break(o.hBreakpoint.aData),\n\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n\t\tvar\t: (_,o)=> this.sys.send2Dbg(o.ri, {v: this.#hScopes[<Scope>o.scope] ?? {}}),\n\t\tset_var\t: (_, o)=> {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n\t\t\ttry {this.#setVal(o.nm, o.val); this.sys.send2Dbg(o.ri, {})} catch { /* empty */ }\n\t\t},\n\t\tset_data_break\t: (_, o)=> {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n\t\t\tthis.#set_data_break(o.a);\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n\t\t\tthis.sys.send2Dbg(o.ri, {});\n\t\t},\n\t\tdisconnect: _=> {Variable.#hSetEvent = {}},\n\t}\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t#set_data_break(a: any[]) {\t// o.a.length === 0 なら削除\n\t\tVariable.#hSetEvent = {};\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\tfor (const v of a) Variable.#hSetEvent[v.dataId] = 1;\n\t}\n\n\n\t//MARK: 外からのデータで保持データを更新\n\t//\t初期化時やインポートなどで使用\n\tupdateData(d4v: T_Data4Vari): void {\n\t\tthis.#d4v = d4v;\n\t\tthis.#hSys = this.#hScopes.sys = d4v.sys;\n\n\t\tthis.#hAreaKidoku = {};\n\t\tfor (const [fn, dk] of Object.entries(d4v.kidoku)) {\n\t\t\tthis.#hAreaKidoku[fn] = Areas.from(dk);\n\t\t}\n\t\t// this.flush();\t// saveKidoku() に任せる\n\t}\n\tflush\t= ()=> { /* empty */ };\n\n\tsetDoRecProc(fnc: (doRec: boolean)=> void) {this.#doRecProc = fnc}\n\t#doRecProc = (_doRec: boolean)=> { /* empty */ };\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n\tdefTmp(name: string, fnc: T_ProcVal) {(<any>this.#hTmp)[name] = fnc}\n\n\tcloneMp() {return {...this.#hScopes.mp}}\n\tsetMp(mp: T_H_VAL_MP) {this.#hScopes.mp = mp}\n\n\tsetMark(place: number, mark: T_Mark) {\n\t\tthis.#d4v.mark[place] = mark;\n\t\tthis.flush();\n\t}\n\tgetMark(place: number) {\n\t\tconst mark = this.#d4v.mark[place];\n\t\tif (! mark) throw `place【${String(place)}】は存在しません`;\n\t\treturn mark;\n\t}\n\n\tcloneSave() {return {...this.#hScopes.save}}\n\tmark2save(mark: T_Mark) {\n\t\tthis.#hSave = this.#hScopes.save = {...mark.hSave};\n\t\tthis.#doRecLog\t= this.#hSave['sn.doRecLog'];\n\t}\n\n\n\t// 既読系\n\ttouchAreaKidoku(fn: string): Areas {\n\t\tconst ar = this.#hAreaKidoku[fn];\n\t\tif (ar) return ar;\n\n\t\tthis.#d4v.kidoku[fn] = {};\n\t\tconst ret = this.#hAreaKidoku[fn] = new Areas;\n\t\treturn ret;\n\t}\n\tgetAreaKidoku(fn: string): Areas {\n\t\tconst ar = this.#hAreaKidoku[fn];\n\t\tif (! ar) throw `hAreaKidoku${fn}】は存在しません`;\n\t\treturn ar;\n\t}\n\tsaveKidoku() {\n\t\tfor (const [fn, ak] of Object.entries(this.#hAreaKidoku)) {\n\t\t\tthis.#d4v.kidoku[fn] = ak.val();\n\t\t}\n\t\tthis.flush();\n\t}\n\n\n//\t// しおり\n\t// しおりの複写\n\t#copybookmark(hArg: TArg) {\n\t\tconst from = argChk_Num(hArg, 'from', NaN);\n\t\tconst to = argChk_Num(hArg, 'to', NaN);\n\t\t// const from = hArg.from;\n\t\t// const to = hArg.to;\n\t\tif (from === to) return false;\n\n\t\tconst f = this.#d4v.mark[from];\n\t\tif (! f) throw `from:${String(from)} のセーブデータは存在しません`;\n\t\tthis.setMark(to, {...f});\n\t\tthis.sys.copyBMFolder(from, to);\n\n\t\treturn false;\n\t}\n\n\t// しおりの消去\n\t#erasebookmark(hArg: TArg) {\n\t\tconst place = argChk_Num(hArg, 'place', NaN);\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tdelete this.#d4v.mark[place];\n\t\tthis.flush();\n\n\t\tthis.sys.eraseBMFolder(place);\n\n\t\treturn false;\n\t}\n\n\n//\t//\t変数操作\n\t// 変数代入・演算\n\t#let(hArg: TArg) {\n\t\tif (! hArg.name) throw 'nameは必須です';\n\n\t\tlet autocast = true;\n\t\tif (hArg.cast) {\n\t\t\t//switch (trim(hArg.cast)) {\n\t\t\tswitch (hArg.cast) {\n\t\t\tcase 'num':\n\t\t\t\targChk_Num(hArg, 'text', NaN);\n\t\t\t\tbreak;\n\t\t\tcase 'int':\n\t\t\t\thArg.text = String(int(argChk_Num(hArg, 'text', NaN)));\n\t\t\t\tbreak;\n\t\t\tcase 'uint':\n\t\t\t\thArg.text = String(uint(argChk_Num(hArg, 'text', NaN)));\n\t\t\t\tbreak;\n\t\t\tcase 'bool':\n\t\t\t\targChk_Boolean(hArg, 'text', false);\n\t\t\t\tbreak;\n\t\t\tcase 'str':\n\t\t\t\tautocast = false;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow 'cast【'+ hArg.cast +'】は未定義です';\n\t\t\t}\n\t\t}\n\n\t\tthis.#setVal(hArg.name, hArg.text, autocast);\n\n\t\treturn false;\n\t}\n\n\t// 絶対値\n\t#let_abs(hArg: TArg) {\n\t\tconst n = argChk_Num(hArg, 'text', 0);\n\t\t//hArg.text = Math.abs(n);\n\t\thArg.text = String(n < 0 ?-n :n);\n\t\t\t// JavaScriptのMath.abs()で絶対値を取得しないほうが良い理由 | iwb.jp https://iwb.jp/javascript-math-abs-deprecated/\n\t\t\t// 数値以外だとほとんどがNaNを返し、booleanは0や1を返しているため使い方によってはバグの原因になることがある。\n\t\tthis.#let(hArg);\n\n\t\treturn false;\n\t}\n\n\t// 文字列から一字取りだし\n\t#let_char_at(hArg: TArg) {\n\t\thArg.text = (hArg.text ?? '').charAt(argChk_Num(hArg, 'pos', 0));\n\t\tthis.#let(hArg);\n\n\t\treturn false;\n\t}\n\n\t// 文字列で検索\n\t#let_index_of(hArg: TArg) {\n\t\tconst {val} = hArg;\n\t\tif (! val) throw 'valは必須です';\n\t\tconst start = argChk_Num(hArg, 'start', 0);\n\n\t\thArg.text = String((hArg.text ?? '').indexOf(val, start));\n\t\tthis.#let(hArg);\n\n\t\treturn false;\n\t}\n\n\t// 文字列の長さ\n\t#let_length(hArg: TArg) {\n\t\thArg.text = String((hArg.text ?? '').length);\n\t\tthis.#let(hArg);\n\n\t\treturn false;\n\t}\n\n\t// 正規表現で置換\n\t#let_replace(hArg: TArg) {\n\t\tif (! hArg.reg) throw 'regは必須です';\n\n\t\tconst {flags} = hArg;\n\t\tconst reg = ! flags\n\t\t\t? new RegExp(hArg.reg)\n\t\t\t: new RegExp(hArg.reg, flags);\n\t\thArg.text = (hArg.text ?? '').replace(reg, String(hArg.val));\n\t\tthis.#let(hArg);\n\n\t\treturn false;\n\t}\n\n\t// 四捨五入\n\t#let_round(hArg: TArg) {\n\t\tconst n = argChk_Num(hArg, 'text', 0);\n\t\thArg.text = String(Math.round(n));\n\t\tthis.#let(hArg);\n\n\t\treturn false;\n\t}\n\n\t// 正規表現で検索\n\t#let_search(hArg: TArg) {\n\t\tif (! hArg.reg) throw 'regは必須です';\n\n\t\tconst {flags} = hArg;\n\t\tconst reg = ! flags\n\t\t\t? new RegExp(hArg.reg)\n\t\t\t: new RegExp(hArg.reg, flags);\n\t\thArg.text = String((hArg.text ?? '').search(reg));\n\t\tthis.#let(hArg);\n\n\t\treturn false;\n\t}\n\n\t// 文字列から抜きだし\n\t#let_substr(hArg: TArg) {\n\t\tconst i = argChk_Num(hArg, 'pos', 0);\n\t\thArg.text = hArg.len !== 'all'\n\t\t\t? (hArg.text ?? '').slice(i, i +int(argChk_Num(hArg, 'len', 1)))\n\t\t\t: (hArg.text ?? '').slice(i);\n\t\tthis.#let(hArg);\n\n\t\treturn false;\n\t}\n\n\n//\t// デバッグ・その他\n\t// システム変数の全消去\n\t#clearsysvar(init = false) {\n\t\tconst sys = this.#hSys = this.#hScopes.sys = this.#d4v.sys = creSYS_DATA();\n\n\t\tconst is_nw = typeof process !== 'undefined';\n\t\tif (is_nw) {\n\t\t//\t//\tthis.setVal_Sub('sys:const.sn.window.x', stage.nativeWindow.x);\n\t\t//\t//\tthis.setVal_Sub('sys:const.sn.window.y', stage.nativeWindow.y);\n\t\t\t//NOTE: これは??\n\t\t}\n\t\telse {\n\t\t\tthis.setVal_Nochk('sys', 'const.sn.window.x', 0);\n\t\t\tthis.setVal_Nochk('sys', 'const.sn.window.y', 0);\n\t\t}\n\n\t\t// 文字表示Wait時間\n\t\tthis.setVal_Nochk('sys', 'sn.tagCh.msecWait', this.cfg.oCfg.init.tagch_msecwait);\n\t\tthis.setVal_Nochk('sys', 'sn.tagCh.msecWait_Kidoku', this.cfg.oCfg.init.tagch_msecwait);\n\n\t\t// 自動読みすすみモード時の改ページ時のウェイト\n\t\t//\t//\trunFirst_sys_an_auto_msecPageWait('sn.auto.msecPageWait', '');\n\t\tthis.setVal_Nochk('sys', 'sn.auto.msecPageWait', argChk_Num(sys, 'sn.auto.msecPageWait', this.cfg.oCfg.init.auto_msecpagewait));\n\t\tthis.setVal_Nochk('sys', 'sn.auto.msecPageWait_Kidoku', argChk_Num(sys, 'sn.auto.msecPageWait', this.cfg.oCfg.init.auto_msecpagewait));\n\n\t\t//\tSoundMixer.soundTransform = new SoundTransform(\n\t\t//\t\t(sys['flash.media.SoundMixer.soundTransform.volume'] = 1)\n\t\t//\t);\n\n\t\tfor (const ar of Object.values(this.#hAreaKidoku)) ar.clear();\n\t\t\t// this.#data.kidoku へのコピーは saveKidoku() に任せる\n\n\t\tthis.#hScopes.mark = this.#d4v.mark = {};\n\n\t\tif (! init) this.#saPageLog();\n\n\n\t\tthis.flush();\n\n\t\treturn false;\n\t}\n\n\t// ゲーム変数の全消去\n\t#clearvar() {\n\t\tconst mesLayer\t: string = this.#hSave['const.sn.mesLayer'];\n\t\tconst doRecLog\t: boolean= this.#hSave['sn.doRecLog'];\n\t\tconst sLog\t\t: string = this.#hSave['const.sn.sLog'];\n\t\tconst styPaging\t: string = this.#hSave['const.sn.styPaging'];\n\n\t\tthis.#hSave = this.#hScopes.save = creSAVEDATA();\n\n\t\tthis.setVal_Nochk('save', 'const.sn.mesLayer', mesLayer);\n\t\tthis.setVal_Nochk('save', 'sn.doRecLog', doRecLog);\n\t\tthis.setVal_Nochk('save', 'const.sn.sLog', sLog);\n\t\tthis.setVal_Nochk('save', 'const.sn.styPaging', styPaging);\n\n\t\treturn false;\n\t}\n\n\t#setVal(arg_name: string, val: T_VAL_BSNU, autocast = true) {\n\t\tif (! arg_name) throw '[変数に値セット] nameは必須です';\n\t\tif (val === undefined) throw '[変数に値セット] textは必須です(空文字はOK)';\n\n\t\tconst o = PropParser.getValName(arg_name);\n\t\tif (! o) throw `[変数参照] name(${arg_name})が変数名として異常です`;\n\n\t\tconst hScope = this.#hScopes[<Scope>o.scope];\n\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\tif (! hScope) throw `[変数に値セット] scopeが異常【${String(o.scope)}】です`;\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tconst nm = o.name!;\n\t\tif (nm.startsWith('const.') && nm in hScope) {\n\t\t\tthrow `[変数に値セット] 変数【${nm}】は書き換え不可です`;\n\t\t}\n\n\t\tthis.setVal_Nochk(<Scope>o.scope, nm, val, autocast);\n\t}\n\tsetVal_Nochk(scope: Scope, nm: string, ival: T_VAL_BSNU, autocast = false) {\n\t\tconst hScope = this.#hScopes[scope];\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tconst val = autocast ?this.#castAuto(ival) : ival;\n\n\t\tconst fullnm = scope +':'+ nm;\n\t\tif (fullnm in Variable.#hSetEvent) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n\t\t\tconst old_v = (<any>hScope)[nm];\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\tconst new_v = val;\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif (old_v != new_v) this.#callHook('data_break', {\n\t\t\t\tdataId: fullnm,\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\told_v,\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\tnew_v,\n\t\t\t});\n\t\t}\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment\n\t\t(<any>hScope)[nm] = val;\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\tthis.#hSetValTrg[fullnm]?.(nm, val ?? '');\n\n\t\t// if (scope === 'sys') this.flush()\n\t\t\t// 厳密にはここですべきだが、パフォーマンスに問題があるので\n\t\t\t// クリック待ちを期待できるwait、waitclick、s、l、pタグで\n\t\t\t// saveKidoku()をコール。(中で保存しているのでついでに)\n\n\t\t//console.log(`\\tlet s[${scope}] n[${nm}]='${val}' trg[${(trg)}]`);\n\t}\n\t// reload 再生成 Main に受け渡すため static\n\tstatic\t#hSetEvent: {[fullnm: string]: 1} = {};\n\n\n\t// readonly getVal_save = (arg_name: string, def?: number | string)=> {\n\t// \tif (! arg_name) throw '[変数参照] nameは必須です';\n\n\tgetVal(arg_name: string, def?: number | string, touch = false): T_VAL_DATA {\n\t\tif (! arg_name) throw '[変数参照] nameは必須です';\n\n\t\tconst o = PropParser.getValName(arg_name);\n\t\tif (! o) throw '[変数参照] name('+ arg_name +')が変数名として異常です';\n\n\t\tconst hScope = this.#hScopes[<Scope>o.scope];\n\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\tif (! hScope) throw `[変数参照] scopeが異常【${String(o.scope)}】です`;\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tconst val_name = o.name!;\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n\t\tlet val = <T_VAL_DATA_FNC>(<any>hScope)[val_name];\n\t\t// let val = (<any>hScope)[val_name];\n// console.log(`fn:Variable.ts ・getVal arg_name=${arg_name}= val_name=${val_name}= A:${String(! (val_name in hScope))} val:%o`, val);\n\t\tif (! (val_name in hScope)) {\t// 存在しない変数名の場合、刻んで調べていく\n\t\t\tval = def;\n\t\t\tif (touch) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n\t\t\t\t(<any>hScope)[val_name] = def;\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-return\n\t\t\t\treturn o.at === '@str' ?val :this.#castAuto(val);\n\t\t\t}\n\n\t\t\tlet nm = '';\n\t\t\tconst aNm = val_name.split('.');\n\t\t\tconst len = aNm.length;\n\t\t\tfor (let i=0; i<len; ++i, nm += '.') {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n\t\t\t\tnm += aNm[i];\n\t\t\t\tif (! (nm in hScope)) continue;\t// 存在しない変数名の場合、延ばす\n\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n\t\t\t\tlet v = JSON.parse((<any>hScope)[nm]);\n\t\t\t\tif (Object.prototype.toString.call(v) !== '[object Object]') {\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\t\tif (i +1 === len) {val = v; break}\t// 最下層ならそのまま返す\n\t\t\t\t\tcontinue;\n\t\t\t\t\t\t// 短い名前でヒットしたが、JSONでもなく\n\t\t\t\t\t\t// 変数名にはまだ続きがあるので探索続行\n\t\t\t\t}\n\n\t\t\t\tlet j = i;\t// JSONオブジェクトの階層を降りつつ探索\n\t\t\t\twhile (++j < len) {\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\t\tconst nj = aNm[j]!;\n\t\t\t\t\tif (! (nj in v)) {val = def; break}\n\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n\t\t\t\t\tv = v[nj];\n\t\t\t\t\tif (Object.prototype.toString.call(v) !== '[object Object]'\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\t\t\t|| j +1 === len) {val = v; break}// 最下層ならそのまま返す\n\t\t\t\t}\n\n\t\t\t\tif (val instanceof Object) val = JSON.stringify(val);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (val instanceof Function) val = val();\n// console.log(`\\tget [${arg_name}] -> s[${o.scope ?? 'tmp'}'] a[${o.at ?? ''}] n[${val_name}'] ret['${String(val)}']('${typeof val}')'`);\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-return\n\t\treturn o.at === '@str' ?val :this.#castAuto(val);\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t#castAuto(val: T_VAL_DATA): any {\n\t\tconst s_val = <string>val;\n\t\tif (s_val === 'true') return true;\n\t\tif (s_val === 'false') return false;\n\t\tif (s_val === 'null') return null;\n\t\tif (s_val === 'undefined') return undefined;\n\t\tif (this.#REG_NUMERICLITERAL.test(s_val)) return parseFloat(s_val);\n\n\t\treturn val;\n\t}\n\t#REG_NUMERICLITERAL\t\t= /^-?[\\d.]+$/;\n\n\n\t// 変数のダンプ\n\t#dump_val() {\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tconst val: any = {tmp:{}, sys:{}, save:{}, mp:{}};\n\t\tfor (const scope in val) {\n\t\t\tconst hVal = this.#hScopes[<Scope>scope];\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n\t\t\tconst hRet = val[scope];\n\t\t\tfor (const [key, v] of Object.entries(hVal)) {\n\t\t\t\tif (v instanceof Function) continue;\n\n\t\t\t\t// // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\t\t\t// hRet[key] = v instanceof Function ?v() :v;\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\t\t\thRet[key] = v;\n\t\t\t\t\t//TODO: 実行するのか無視するのか問題\n\t\t\t}\n\t\t}\n\t\tconsole.info('🥟 [dump_val]', val);\n\n\t\treturn false;\n\t}\n\n\t#doRecLog\t= false;\n\tdoRecLog() {return this.#doRecLog}\n\n\n\t#tagCh_doWait = false;\n\tget tagCh_doWait() {return this.#tagCh_doWait;}\n\t#tagCh_doWait_Kidoku = false;\n\tget tagCh_doWait_Kidoku() {return this.#tagCh_doWait_Kidoku;}\n\t#tagCh_msecWait\t\t= 0;\n\tget tagCh_msecWait() {return this.#tagCh_msecWait;}\n\t#tagCh_msecWait_Kidoku= 0;\n\tget tagCh_msecWait_Kidoku() {return this.#tagCh_msecWait_Kidoku;}\n\n\t#hSetValTrg\t: {[name: string]: T_fncSetVal}\t= {\n\t\t// sys\n\t\t'sys:sn.tagCh.doWait'\t\t\t: name=> {\n\t\t\tthis.#tagCh_doWait =\n\t\t\tthis.#runFirst_Bool_hSysVal_true(name);\n\t\t},\n\t\t'sys:sn.tagCh.doWait_Kidoku'\t: name=> {\n\t\t\tthis.#tagCh_doWait_Kidoku =\n\t\t\tthis.#runFirst_Bool_hSysVal_true(name);\n\t\t},\n\t\t'sys:sn.tagCh.msecWait'\t\t\t: name=> {\n\t\t\tthis.#tagCh_msecWait =\n\t\t\tthis.#runFirst_sys_an_tagCh_msecWait(name);\n\t\t},\n\t\t'sys:sn.tagCh.msecWait_Kidoku'\t: name=> {\n\t\t\tthis.#tagCh_msecWait_Kidoku =\n\t\t\tthis.#runFirst_sys_an_tagCh_msecWait_Kidoku(name);\n\t\t},\n\t\t'sys:sn.tagCh.canskip'\t\t\t: name=> this.#runFirst_Bool_hSysVal_true(name),\n\n\t\t'sys:sn.auto.msecPageWait'\t\t\t: name=>\n\t\t\tthis.#runFirst_sys_an_auto_msecPageWait(name),\n\t\t'sys:sn.auto.msecPageWait_Kidoku'\t: name=>\n\t\t\tthis.#runFirst_sys_an_auto_msecPageWait(name),\n\t\t'sys:sn.auto.msecLineWait'\t\t\t: name=>\n\t\t\tthis.#runFirst_sys_an_auto_msecLineWait(name),\n\t\t'sys:sn.auto.msecLineWait_Kidoku'\t: name=>\n\t\t\tthis.#runFirst_sys_an_auto_msecLineWait(name),\n\n\t\t// save\n\t\t'save:sn.doRecLog'\t\t: name=> {\n\t\t\tthis.#doRecProc(\n\t\t\t\tthis.#doRecLog = this.#runFirst_Bool_hSaveVal_true(name)\n\t\t\t);\n\t\t},\n\t\t'save:sn.userFnTail'\t: (_name, ival)=> {\n\t\t\tconst val = String(ival);\n\t\t\tif (val.includes('@')) throw 'この変数では文字「@」は禁止です';\n\t\t\tthis.cfg.userFnTail = val;\n\t\t},\n\n\t\t// tmp\n\t\t'tmp:flash.desktop.NativeApplication.nativeApplication.systemIdleMode'\t:\n\t\t\t()=> {\n\t\t\t//\tNativeApplication.nativeApplication.systemIdleMode = val;\n\t\t\t}\n\t\t,\n\t};\n\tdefValTrg(name: string, fnc: T_fncSetVal) {this.#hSetValTrg[name] = fnc}\n\treadonly\t#runFirst_Bool_hSysVal_true = (name: string)=> argChk_Boolean(this.#hSys, name, true);\n\treadonly\t#runFirst_sys_an_tagCh_msecWait = (name: string)=> argChk_Num(this.#hSys, name, 10);\n\treadonly\t#runFirst_sys_an_tagCh_msecWait_Kidoku = (name: string)=> argChk_Num(\n\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\tthis.#hSys, name, this.cfg.oCfg.init.tagch_msecwait ?? 10\n\t);\n\treadonly\t#runFirst_sys_an_auto_msecPageWait = (name: string)=> argChk_Num(\n\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\tthis.#hSys, name, this.cfg.oCfg.init.auto_msecpagewait ?? 3500\n\t);\n\treadonly\t#runFirst_sys_an_auto_msecLineWait = (name: string)=> argChk_Num(this.#hSys, name, 500);\n\n\t#runFirst_Bool_hSaveVal_true(name: string) {\n\t\treturn argChk_Boolean(this.#hSave, name, true);\n\t}\n\n}\n"],"names":["Areas","#hAreas","new_val","ar","idx","begin","v","ret","k","x","y","Variable","sys","cfg","hTag","o","#let","#let_abs","#let_char_at","#let_index_of","#let_length","#let_replace","#let_round","#let_search","#let_substr","#clearsysvar","#clearvar","#dump_val","#copybookmark","#erasebookmark","a","nm","mk","#d4v","uint","#hTmp","#hSave","creSAVEDATA","creTMP_DATA","#hScopes","#hSys","#hAreaKidoku","#callHook","data","#dbgVariable","type","#hProcDbgRes","int","#tagCh_doWait","#tagCh_doWait_Kidoku","#tagCh_msecWait","#tagCh_msecWait_Kidoku","#saPageLog","ns","oSys","creSYS_DATA","oSave","oTmp","oMp","creCSArg","oMark","ReadingState","_","#set_data_break","#setVal","#hSetEvent","d4v","fn","dk","fnc","#doRecProc","_doRec","name","mp","place","mark","#doRecLog","ak","hArg","from","argChk_Num","to","f","autocast","argChk_Boolean","n","val","start","flags","reg","i","init","mesLayer","doRecLog","sLog","styPaging","arg_name","PropParser","hScope","scope","ival","#castAuto","fullnm","old_v","new_v","#hSetValTrg","def","touch","val_name","aNm","len","j","nj","s_val","#REG_NUMERICLITERAL","hVal","hRet","key","#runFirst_Bool_hSysVal_true","#runFirst_sys_an_tagCh_msecWait","#runFirst_sys_an_tagCh_msecWait_Kidoku","#runFirst_sys_an_auto_msecPageWait","#runFirst_sys_an_auto_msecLineWait","#runFirst_Bool_hSaveVal_true","_name"],"mappings":"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"}
1
+ {"version":3,"file":"Variable.js","sources":["../src/sn/Areas.ts","../src/sn/Variable.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\nexport type T_H_Areas = {[begin: string]: number};\n\n\nexport class Areas {\n\t#hAreas\t: T_H_Areas\t= {};\n\n\tclear() {this.#hAreas = {}}\n\tstatic\tfrom(new_val: T_H_Areas): Areas {\n\t\tconst ar = new Areas;\n\t\tar.#hAreas = {...new_val};\n\t\treturn ar;\n\t}\n\tval(): T_H_Areas {return {...this.#hAreas}}\n\n\tsearch(idx: number): boolean {\n\t\treturn Object.entries(this.#hAreas)\n\t\t.some(([begin, v])=> idx >= parseInt(begin) && idx <= v);\n\t}\n\n\trecord(idx: number): void {\n\t\tif (this.search(idx)) return;\n\n\t\tfor (const [begin, v] of Object.entries(this.#hAreas)) {\n\t\t\t// 領域末尾+1とマッチ\n\t\t\tif (v +1 === idx) {\n\t\t\t\tif (String(idx +1) in this.#hAreas) {\n\t\t\t\t\t// 二つの領域がマージできる場合\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\t\tthis.#hAreas[begin] = this.#hAreas[idx +1]!;\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\t\t\tdelete this.#hAreas[idx +1]\n\t\t\t\t}\n\t\t\t\telse this.#hAreas[begin] = idx;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// 領域先頭-1とマッチ\n\t\tif (String(idx +1) in this.#hAreas) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tthis.#hAreas[idx] = this.#hAreas[idx +1]!;\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\tdelete this.#hAreas[idx +1];\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#hAreas[idx] = idx;\n\t}\n\n\terase(idx: number): void {\n\t\tif (! this.search(idx)) return;\n\n\t\t// 領域先頭とマッチ\n\t\tif (String(idx) in this.#hAreas) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tif (this.#hAreas[idx]! > idx) this.#hAreas[idx +1] = this.#hAreas[idx]!;\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\tdelete this.#hAreas[idx];\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const [begin, v] of Object.entries(this.#hAreas)) {\n\t\t\tif (idx < parseInt(begin) || v < idx) continue;\n\n\t\t\t// 領域末尾とマッチ\n\t\t\tif (this.#hAreas[begin] === idx) {\n\t\t\t\tthis.#hAreas[begin] = idx -1;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// 領域内とマッチ、二つの領域に分割\n\t\t\tthis.#hAreas[idx +1] = v;\n\t\t\tthis.#hAreas[begin] = idx -1;\n\t\t\treturn;\n\t\t}\n\t}\n\n\tget count(): number {return Object.keys(this.#hAreas).length}\t// 4tst\n\n\ttoString(): string {\n\t\tlet ret = '';\n\n\t\tfor (const k of Object.keys(this.#hAreas)\n\t\t.map(k=> parseInt(k))\n\t\t.sort((x, y)=> x-y)) {\n\t\t\tret += k === this.#hAreas[k]\n\t\t\t? ','+ String(k)\n\t\t\t: ','+ String(k) +'~'+ String(this.#hAreas[String(k)]);\n\t\t}\n\n\t\treturn ret;\t// 先頭に , が付いている。削除したいが、修正すると互換性に問題あり凍結\n\t}\n\n}\n","/* ***** 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 {uint, int, argChk_Boolean, argChk_Num} from './CmnLib';\nimport {creCSArg, type T_H_VAL_MP} from './CallStack';\nimport type {TArg, T_HTag} from './Grammar';\nimport type {T_Variable, T_fncSetVal, T_ProcVal, T_SysBase, T_Data4Vari, T_Mark, T_FncHook, Scope, T_H_TMP_DATA, T_H_VAL_MARK, T_H_SYS_DATA, T_VAL_DATA_FNC, T_VAL_DATA, T_VAL_BSNU, T_H_SAVE_DATA} from './CmnInterface';\nimport {creSAVEDATA, creSYS_DATA, creTMP_DATA} from './CmnInterface';\nimport type {Config} from './Config';\nimport {Areas} from './Areas';\nimport {PropParser} from './PropParser';\nimport {ReadingState} from './Reading';\n\n\nexport class Variable implements T_Variable {\n\t#hSave\t\t: T_H_SAVE_DATA\t= creSAVEDATA();\n\t#hTmp\t\t: T_H_TMP_DATA\t= creTMP_DATA();\n\t#hScopes\t= {\n\t\tsys\t\t: {},\t// clearsysvarを呼ぶので\n\t\tsave\t: this.#hSave,\n\t\ttmp\t\t: this.#hTmp,\n\t\tmp\t\t: <T_H_VAL_MP>{},\n\t\tmark\t: <T_H_VAL_MARK>{},\n\t};\n\n\n\tconstructor(private readonly sys: T_SysBase, private readonly cfg: Config, hTag: T_HTag) {\n\t\t//\t変数操作\n\t\thTag.let\t\t\t= o=> this.#let(o);\t\t\t// 変数代入・演算\n\t\thTag.let_abs\t\t= o=> this.#let_abs(o);\t\t// 絶対値\n\t\thTag.let_char_at\t= o=> this.#let_char_at(o);\t// 文字列から一字取りだし\n\t\thTag.let_index_of\t= o=> this.#let_index_of(o);// 文字列で検索\n\t\thTag.let_length\t\t= o=> this.#let_length(o);\t// 文字列の長さ\n\t\t// let_mlはScriptIteratorにて定義\t\t\t\t// インラインテキスト代入\n\t\thTag.let_replace\t= o=> this.#let_replace(o);\t// 正規表現で置換\n\t\thTag.let_round\t\t= o=> this.#let_round(o);\t// 四捨五入\n\t\thTag.let_search\t\t= o=> this.#let_search(o);\t// 正規表現で検索\n\t\thTag.let_substr\t\t= o=> this.#let_substr(o);\t// 文字列から抜きだし\n\t\t// ほぼ瀬戸愛羅さんの「変数代入強化プラグイン」の取り込みです。ありがとうございます!\n\t\t// an時代・瀬戸愛羅さんより https://famibee.blog.fc2.com/blog-entry-267.html\n\n\t\t//\tデバッグ・その他\n\t\thTag.clearsysvar\t= ()=> this.#clearsysvar();\t// システム変数の全消去\n\t\thTag.clearvar\t\t= ()=> this.#clearvar();\t// ゲーム変数の全消去\n\t\thTag.dump_val\t\t= ()=> this.#dump_val();\t// 変数のダンプ\n\n\t\t// しおり\n\t\thTag.copybookmark\t= o=> this.#copybookmark(o);\t// しおりの複写\n\t\thTag.erasebookmark\t= o=> this.#erasebookmark(o);\t// しおりの消去\n\t\t//hTag.load\t\t\t// ScriptIterator.ts内で定義\t// しおりの読込\n\t\t//hTag.record_place\t// ScriptIterator.ts内で定義\t// セーブポイント指定\n\t\t//hTag.save\t\t\t// ScriptIterator.ts内で定義\t// しおりの保存\n\n\t\t// save:\n\t\tthis.defTmp('const.sn.bookmark.json', ()=> {\n\t\t\tconst a: TArg[] = [];\n\t\t\tfor (const [nm, mk] of Object.entries(this.#d4v.mark)) {\n\t\t\t\tconst o = {...mk.json};\n\t\t\t\to.place = uint(nm);\n\t\t\t\ta.push(o);\t// パスを searchPath() で展開してはいけない\n\t\t\t}\n\t\t\treturn JSON.stringify(a);\n\t\t});\n\n\t\t// tmp:\n\t\t/*\n\t\t\tthis.hTmp['const.Stage.supportsOrientationChange']\n\t\t\t\t= Stage.supportsOrientationChange;\n\t\t\tif (this.hTmp['const.Stage.supportsOrientationChange']) {\n\t\t\t\tthis.hTmp['const.Stage.orientation']\n\t\t\t\t\t= ()=> {return stage.orientation};\n\t\t\t\tthis.hTmp['const.Stage.deviceOrientation']\n\t\t\t\t\t= ()=> {return stage.deviceOrientation};\n\n\t\t\t\tconst lenSO:uint = stage.supportedOrientations.length;\n\t\t\t\tfor (let iSO:uint=0; iSO<lenSO; ++iSO) {\n\t\t\t\t\tthis.hTmp['const.Stage.supportedOrientations.'\n\t\t\t\t\t\t+ stage.supportedOrientations[iSO]\n\t\t\t\t\t] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t//\timport flash.display.StageOrientation;\n\t\t\t\tthis.hTmp['const.Stage.orientation'] =\n\t\t\t\tthis.hTmp['const.Stage.deviceOrientation'] =\n\t\t\t\t//\t\tStageOrientation.DEFAULT;\n\t\t\t\t\t'default';\n\t\t\t}\n\t\t*/\n\n\t\t// ・画面サイズ:screen.width ウインドウが表示されているディスプレイのサイズ\n\t\t//\t※ macOSなら【設定】-【ディスプレイ】-【使用形態】のイメージボタンにホバーすると出る数字と同じ\n// DebugMng.myTrace(`fn:Variable.ts 画面サイズ(${String(screen.width)} x ${String(screen.height)}) 利用可能領域(${String(screen.availWidth)} x ${String(screen.availHeight)})`, 'W');\n\n\t\t// prj.json\n\t\tthis.#hTmp['const.sn.config.window.width']\t= cfg.oCfg.window.width;\n\t\tthis.#hTmp['const.sn.config.window.height']\t= cfg.oCfg.window.height;\n\t\tthis.#hTmp['const.sn.config.book.title']\t= cfg.oCfg.book.title;\n\t\tthis.#hTmp['const.sn.config.book.version']\t= cfg.oCfg.book.version;\n\t}\n\n\n\t#d4v\t: T_Data4Vari\t= {\n\t\tsys\t\t: <T_H_SYS_DATA>{},\t// clearsysvarを呼ぶので\n\t\tmark\t: {},\n\t\tkidoku\t: {},\n\t};\n\t#hSys\t: T_H_SYS_DATA;\n\t#hAreaKidoku\t: {[fn: string]: Areas}\t= {};\n\t#callHook\t\t: T_FncHook;\n\tasync init() {return this.sys.initVal(this.#hTmp, data=> {\n\t\tthis.updateData(data);\n\n\t\tif (this.cfg.oCfg.debug.variable) this.#dbgVariable(this.sys);\n\t\telse this.flush = ()=> this.sys.flush();\n\t\tthis.flush();\n\n\t\tthis.#callHook = (type, o)=> this.sys.callHook(type, o);\n\t\tthis.sys.addHook((type, o)=> this.#hProcDbgRes[type]?.(type, o));\n\n\t\t// 初回の初期化と、v1.11.0 まで未初期化変数があった件の対策\n\t\tconst tm = int(this.getVal('sys:sn.tagCh.msecWait', -1));\n\t\tif (tm === -1) this.#clearsysvar(true);\n\n\t\tthis.#tagCh_doWait = Boolean(this.getVal('sys:sn.tagCh.doWait'));\n\t\tthis.#tagCh_doWait_Kidoku = Boolean(this.getVal('sys:sn.tagCh.doWait_Kidoku'));\n\t\tthis.#tagCh_msecWait = int(this.getVal('sys:sn.tagCh.msecWait'));\n\t\tthis.#tagCh_msecWait_Kidoku = int(this.getVal('sys:sn.tagCh.msecWait_Kidoku'));\n\n\t\tthis.#saPageLog();\n\t})}\n\n\t//MARK: SessionStorage で確認できるデバッグ機能\n\t#dbgVariable(sys: T_SysBase) {\n\t\tsessionStorage.clear();\n\t\tconst ns = this.cfg.headNs;\n\n\t\tthis.flush = () => {\n\t\t\tconst oSys = creSYS_DATA();\n\t\t\tfor (const [k, v] of Object.entries(this.#hSys)) {\n\t\t\t\tif (v instanceof Function) continue;\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n\t\t\t\t(<any>oSys)[k] = v;\n\t\t\t}\n\t\t\tsessionStorage[ns + 'sys'] = JSON.stringify(oSys);\n\n\t\t\tconst oSave = creSAVEDATA();\n\t\t\tfor (const [k, v] of Object.entries(this.#hSave)) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n\t\t\t\t(<any>oSave)[k] = v;\n\t\t\t}\n\t\t\tsessionStorage[ns + 'save'] = JSON.stringify(oSave);\n\n\t\t\tconst oTmp = creTMP_DATA();\n\t\t\tfor (const [k, v] of Object.entries(this.#hTmp)) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n\t\t\t\t(<any>oTmp)[k] = v instanceof Function ? v() : v;\n\t\t\t\t//TODO: 実行するのか無視するのか問題\n\t\t\t}\n\t\t\tsessionStorage[ns + 'tmp'] = JSON.stringify(oTmp);\n\n\t\t\tconst oMp = creCSArg();\n\t\t\tfor (const [k, v] of Object.entries(this.#hScopes.mp)) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n\t\t\t\t(<any>oMp)[k] = v;\n\t\t\t}\n\t\t\tsessionStorage[ns + 'mp'] = JSON.stringify(oMp);\n\n\t\t\tconst oMark: T_H_VAL_MARK = {};\n\t\t\tfor (const [k, v] of Object.entries(this.#d4v.mark)) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-assignment\n\t\t\t\toMark[int(k)] = v instanceof Function ? v() : v;\n\t\t\t}\n\t\t\tsessionStorage[ns + 'mark'] = JSON.stringify(oMark);\n\n\t\t\tsessionStorage[ns + 'kidoku'] = structuredClone(this.#d4v.kidoku);\n\n\t\t\tsys.flush();\n\t\t};\n\t}\n\n\n\t#saPageLog() {ReadingState.playbackPage(\n\t\tString(this.getVal('sys:const.sn.aPageLog', '[]')),\n\t\tString(this.getVal('save:const.sn.styPaging', ReadingState.INI_STYPAGE)),\n\t)}\n\treadonly\t#hProcDbgRes\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t: {[type: string]: (type: string, o: any)=> void}\t= {\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n\t\tauth: (_, o)=> this.#set_data_break(o.hBreakpoint.aData),\n\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n\t\tvar\t: (_,o)=> this.sys.send2Dbg(o.ri, {v: this.#hScopes[<Scope>o.scope] ?? {}}),\n\t\tset_var\t: (_, o)=> {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n\t\t\ttry {this.#setVal(o.nm, o.val); this.sys.send2Dbg(o.ri, {})} catch { /* empty */ }\n\t\t},\n\t\tset_data_break\t: (_, o)=> {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n\t\t\tthis.#set_data_break(o.a);\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n\t\t\tthis.sys.send2Dbg(o.ri, {});\n\t\t},\n\t\tdisconnect: _=> {Variable.#hSetEvent = {}},\n\t}\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t#set_data_break(a: any[]) {\t// o.a.length === 0 なら削除\n\t\tVariable.#hSetEvent = {};\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\tfor (const v of a) Variable.#hSetEvent[v.dataId] = 1;\n\t}\n\n\n\t//MARK: 外からのデータで保持データを更新\n\t//\t初期化時やインポートなどで使用\n\tupdateData(d4v: T_Data4Vari): void {\n\t\tthis.#d4v = d4v;\n\t\tthis.#hSys = this.#hScopes.sys = d4v.sys;\n\n\t\tthis.#hAreaKidoku = {};\n\t\tfor (const [fn, dk] of Object.entries(d4v.kidoku)) {\n\t\t\tthis.#hAreaKidoku[fn] = Areas.from(dk);\n\t\t}\n\t\t// this.flush();\t// saveKidoku() に任せる\n\t}\n\tflush\t= ()=> { /* empty */ };\n\n\tsetDoRecProc(fnc: (doRec: boolean)=> void) {this.#doRecProc = fnc}\n\t#doRecProc = (_doRec: boolean)=> { /* empty */ };\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n\tdefTmp(name: string, fnc: T_ProcVal) {(<any>this.#hTmp)[name] = fnc}\n\n\tcloneMp() {return {...this.#hScopes.mp}}\n\tsetMp(mp: T_H_VAL_MP) {this.#hScopes.mp = mp}\n\n\tsetMark(place: number, mark: T_Mark) {\n\t\tthis.#d4v.mark[place] = mark;\n\t\tthis.flush();\n\t}\n\tgetMark(place: number) {\n\t\tconst mark = this.#d4v.mark[place];\n\t\tif (! mark) throw `place【${String(place)}】は存在しません`;\n\t\treturn mark;\n\t}\n\n\tcloneSave() {return {...this.#hScopes.save}}\n\tmark2save(mark: T_Mark) {\n\t\tthis.#hSave = this.#hScopes.save = {...mark.hSave};\n\t\tthis.#doRecLog\t= this.#hSave['sn.doRecLog'];\n\t}\n\n\n\t// 既読系\n\ttouchAreaKidoku(fn: string): Areas {\n\t\tconst ar = this.#hAreaKidoku[fn];\n\t\tif (ar) return ar;\n\n\t\tthis.#d4v.kidoku[fn] = {};\n\t\tconst ret = this.#hAreaKidoku[fn] = new Areas;\n\t\treturn ret;\n\t}\n\tgetAreaKidoku(fn: string): Areas {\n\t\tconst ar = this.#hAreaKidoku[fn];\n\t\tif (! ar) throw `hAreaKidoku${fn}】は存在しません`;\n\t\treturn ar;\n\t}\n\tsaveKidoku() {\n\t\tfor (const [fn, ak] of Object.entries(this.#hAreaKidoku)) {\n\t\t\tthis.#d4v.kidoku[fn] = ak.val();\n\t\t}\n\t\tthis.flush();\n\t}\n\n\n//\t// しおり\n\t// しおりの複写\n\t#copybookmark(hArg: TArg) {\n\t\tconst from = argChk_Num(hArg, 'from', NaN);\n\t\tconst to = argChk_Num(hArg, 'to', NaN);\n\t\t// const from = hArg.from;\n\t\t// const to = hArg.to;\n\t\tif (from === to) return false;\n\n\t\tconst f = this.#d4v.mark[from];\n\t\tif (! f) throw `from:${String(from)} のセーブデータは存在しません`;\n\t\tthis.setMark(to, {...f});\n\t\tthis.sys.copyBMFolder(from, to);\n\n\t\treturn false;\n\t}\n\n\t// しおりの消去\n\t#erasebookmark(hArg: TArg) {\n\t\tconst place = argChk_Num(hArg, 'place', NaN);\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tdelete this.#d4v.mark[place];\n\t\tthis.flush();\n\n\t\tthis.sys.eraseBMFolder(place);\n\n\t\treturn false;\n\t}\n\n\n//\t//\t変数操作\n\t// 変数代入・演算\n\t#let(hArg: TArg) {\n\t\tif (! hArg.name) throw 'nameは必須です';\n\n\t\t// 自動で数値型変換しない(≒文字変換する)機能\n\t\t// an時代・瀬戸愛羅さんより https://famibee.blog.fc2.com/blog-entry-108.html\n\t\tlet autocast = true;\n\t\tif (hArg.cast) {\n\t\t\tswitch (hArg.cast) {\n\t\t\tcase 'num':\n\t\t\t\targChk_Num(hArg, 'text', NaN);\n\t\t\t\tbreak;\n\t\t\tcase 'int':\n\t\t\t\thArg.text = String(int(argChk_Num(hArg, 'text', NaN)));\n\t\t\t\tbreak;\n\t\t\tcase 'uint':\n\t\t\t\thArg.text = String(uint(argChk_Num(hArg, 'text', NaN)));\n\t\t\t\tbreak;\n\t\t\tcase 'bool':\n\t\t\t\targChk_Boolean(hArg, 'text', false);\n\t\t\t\tbreak;\n\t\t\tcase 'str':\n\t\t\t\tautocast = false;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow 'cast【'+ hArg.cast +'】は未定義です';\n\t\t\t}\n\t\t}\n\n\t\tthis.#setVal(hArg.name, hArg.text, autocast);\n\n\t\treturn false;\n\t}\n\n\t// 絶対値\n\t#let_abs(hArg: TArg) {\n\t\tconst n = argChk_Num(hArg, 'text', 0);\n\t\t//hArg.text = Math.abs(n);\n\t\thArg.text = String(n < 0 ?-n :n);\n\t\t\t// JavaScriptのMath.abs()で絶対値を取得しないほうが良い理由 | iwb.jp https://iwb.jp/javascript-math-abs-deprecated/\n\t\t\t// 数値以外だとほとんどがNaNを返し、booleanは0や1を返しているため使い方によってはバグの原因になることがある。\n\t\tthis.#let(hArg);\n\n\t\treturn false;\n\t}\n\n\t// 文字列から一字取りだし\n\t#let_char_at(hArg: TArg) {\n\t\thArg.text = (hArg.text ?? '').charAt(argChk_Num(hArg, 'pos', 0));\n\t\tthis.#let(hArg);\n\n\t\treturn false;\n\t}\n\n\t// 文字列で検索\n\t#let_index_of(hArg: TArg) {\n\t\tconst {val} = hArg;\n\t\tif (! val) throw 'valは必須です';\n\t\tconst start = argChk_Num(hArg, 'start', 0);\n\n\t\thArg.text = String((hArg.text ?? '').indexOf(val, start));\n\t\tthis.#let(hArg);\n\n\t\treturn false;\n\t}\n\n\t// 文字列の長さ\n\t#let_length(hArg: TArg) {\n\t\thArg.text = String((hArg.text ?? '').length);\n\t\tthis.#let(hArg);\n\n\t\treturn false;\n\t}\n\n\t// 正規表現で置換\n\t#let_replace(hArg: TArg) {\n\t\tif (! hArg.reg) throw 'regは必須です';\n\n\t\tconst {flags} = hArg;\n\t\tconst reg = ! flags\n\t\t\t? new RegExp(hArg.reg)\n\t\t\t: new RegExp(hArg.reg, flags);\n\t\thArg.text = (hArg.text ?? '').replace(reg, String(hArg.val));\n\t\tthis.#let(hArg);\n\n\t\treturn false;\n\t}\n\n\t// 四捨五入\n\t#let_round(hArg: TArg) {\n\t\tconst n = argChk_Num(hArg, 'text', 0);\n\t\thArg.text = String(Math.round(n));\n\t\tthis.#let(hArg);\n\n\t\treturn false;\n\t}\n\n\t// 正規表現で検索\n\t#let_search(hArg: TArg) {\n\t\tif (! hArg.reg) throw 'regは必須です';\n\n\t\tconst {flags} = hArg;\n\t\tconst reg = ! flags\n\t\t\t? new RegExp(hArg.reg)\n\t\t\t: new RegExp(hArg.reg, flags);\n\t\thArg.text = String((hArg.text ?? '').search(reg));\n\t\tthis.#let(hArg);\n\n\t\treturn false;\n\t}\n\n\t// 文字列から抜きだし\n\t#let_substr(hArg: TArg) {\n\t\tconst i = argChk_Num(hArg, 'pos', 0);\n\t\thArg.text = hArg.len !== 'all'\n\t\t\t? (hArg.text ?? '').slice(i, i +int(argChk_Num(hArg, 'len', 1)))\n\t\t\t: (hArg.text ?? '').slice(i);\n\t\tthis.#let(hArg);\n\n\t\treturn false;\n\t}\n\n\n//\t// デバッグ・その他\n\t// システム変数の全消去\n\t#clearsysvar(init = false) {\n\t\tconst sys = this.#hSys = this.#hScopes.sys = this.#d4v.sys = creSYS_DATA();\n\n\t\tconst is_nw = typeof process !== 'undefined';\n\t\tif (is_nw) {\n\t\t//\t//\tthis.setVal_Sub('sys:const.sn.window.x', stage.nativeWindow.x);\n\t\t//\t//\tthis.setVal_Sub('sys:const.sn.window.y', stage.nativeWindow.y);\n\t\t\t//NOTE: これは??\n\t\t}\n\t\telse {\n\t\t\tthis.setVal_Nochk('sys', 'const.sn.window.x', 0);\n\t\t\tthis.setVal_Nochk('sys', 'const.sn.window.y', 0);\n\t\t}\n\n\t\t// 文字表示Wait時間\n\t\tthis.setVal_Nochk('sys', 'sn.tagCh.msecWait', this.cfg.oCfg.init.tagch_msecwait);\n\t\tthis.setVal_Nochk('sys', 'sn.tagCh.msecWait_Kidoku', this.cfg.oCfg.init.tagch_msecwait);\n\n\t\t// 自動読みすすみモード時の改ページ時のウェイト\n\t\t//\t//\trunFirst_sys_an_auto_msecPageWait('sn.auto.msecPageWait', '');\n\t\tthis.setVal_Nochk('sys', 'sn.auto.msecPageWait', argChk_Num(sys, 'sn.auto.msecPageWait', this.cfg.oCfg.init.auto_msecpagewait));\n\t\tthis.setVal_Nochk('sys', 'sn.auto.msecPageWait_Kidoku', argChk_Num(sys, 'sn.auto.msecPageWait', this.cfg.oCfg.init.auto_msecpagewait));\n\n\t\t//\tSoundMixer.soundTransform = new SoundTransform(\n\t\t//\t\t(sys['flash.media.SoundMixer.soundTransform.volume'] = 1)\n\t\t//\t);\n\n\t\tfor (const ar of Object.values(this.#hAreaKidoku)) ar.clear();\n\t\t\t// this.#data.kidoku へのコピーは saveKidoku() に任せる\n\n\t\tthis.#hScopes.mark = this.#d4v.mark = {};\n\n\t\tif (! init) this.#saPageLog();\n\n\n\t\tthis.flush();\n\n\t\treturn false;\n\t}\n\n\t// ゲーム変数の全消去\n\t#clearvar() {\n\t\tconst mesLayer\t: string = this.#hSave['const.sn.mesLayer'];\n\t\tconst doRecLog\t: boolean= this.#hSave['sn.doRecLog'];\n\t\tconst sLog\t\t: string = this.#hSave['const.sn.sLog'];\n\t\tconst styPaging\t: string = this.#hSave['const.sn.styPaging'];\n\n\t\tthis.#hSave = this.#hScopes.save = creSAVEDATA();\n\n\t\tthis.setVal_Nochk('save', 'const.sn.mesLayer', mesLayer);\n\t\tthis.setVal_Nochk('save', 'sn.doRecLog', doRecLog);\n\t\tthis.setVal_Nochk('save', 'const.sn.sLog', sLog);\n\t\tthis.setVal_Nochk('save', 'const.sn.styPaging', styPaging);\n\n\t\treturn false;\n\t}\n\n\t#setVal(arg_name: string, val: T_VAL_BSNU, autocast = true) {\n\t\tif (! arg_name) throw '[変数に値セット] nameは必須です';\n\t\tif (val === undefined) throw '[変数に値セット] textは必須です(空文字はOK)';\n\n\t\tconst o = PropParser.getValName(arg_name);\n\t\tif (! o) throw `[変数参照] name(${arg_name})が変数名として異常です`;\n\n\t\tconst {scope, name} = o;\n\t\tconst hScope = this.#hScopes[scope];\n\t\tif (name.startsWith('const.') && name in hScope) {\n\t\t\tthrow `[変数に値セット] 変数【${name}】は書き換え不可です`;\n\t\t}\n\n\t\tthis.setVal_Nochk(scope, name, val, autocast);\n\t}\n\tsetVal_Nochk(scope: Scope, nm: string, ival: T_VAL_BSNU, autocast = false) {\n\t\tconst hScope = this.#hScopes[scope];\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tconst new_v = autocast ?this.#castAuto(ival) : ival;\n\n\t\tconst fullnm = scope +':'+ nm;\n\t\tif (fullnm in Variable.#hSetEvent) {\n\t\t\tconst old_v = hScope[<keyof typeof hScope>nm];\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif (old_v != new_v) this.#callHook('data_break', {\n\t\t\t\tdataId: fullnm,\n\t\t\t\told_v,\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\tnew_v,\n\t\t\t});\n\t\t}\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment\n\t\t(<any>hScope)[nm] = new_v;\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\tthis.#hSetValTrg[fullnm]?.(nm, new_v ?? '');\n\n\t\t// if (scope === 'sys') this.flush()\n\t\t\t// 厳密にはここですべきだが、パフォーマンスに問題があるので\n\t\t\t// クリック待ちを期待できるwait、waitclick、s、l、pタグで\n\t\t\t// saveKidoku()をコール。(中で保存しているのでついでに)\n\n\t\t//console.log(`\\tlet s[${scope}] n[${nm}]='${new_v}' trg[${(trg)}]`);\n\t}\n\t// reload 再生成 Main に受け渡すため static\n\tstatic\t#hSetEvent: {[fullnm: string]: 1} = {};\n\n\n\t// readonly getVal_save = (arg_name: string, def?: number | string)=> {\n\t// \tif (! arg_name) throw '[変数参照] nameは必須です';\n\n\tgetVal(arg_name: string, def?: number | string, touch = false): T_VAL_DATA {\n\t\tif (! arg_name) throw '[変数参照] nameは必須です';\n\n\t\tconst o = PropParser.getValName(arg_name);\n\t\tif (! o) throw '[変数参照] name('+ arg_name +')が変数名として異常です';\n\n\t\tconst {scope, name, at} = o;\n\t\tconst hScope = this.#hScopes[scope];\n\n\t\tlet val = <T_VAL_DATA_FNC>hScope[<keyof typeof hScope>name];\n// console.log(`getVal arg_name=${arg_name}= nm=${name}= A:${String(! (name in hScope))} val:${String(val)}`);\n\t\tif (! (name in hScope)) {\t// 存在しない変数名の場合、刻んで調べていく\n\t\t\tval = def;\n\t\t\tif (touch) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n\t\t\t\t(<any>hScope)[name] = def;\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-return\n\t\t\t\treturn at === '@str' ?val :this.#castAuto(val);\n\t\t\t}\n\n\t\t\tlet n = '';\n\t\t\tconst aNm = name.split('.');\n\t\t\tconst len = aNm.length;\n\t\t\tfor (let i=0; i<len; ++i, n += '.') {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n\t\t\t\tn += aNm[i];\n\t\t\t\tif (! (n in hScope)) continue;\t// 存在しない変数名の場合、延ばす\n\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\tlet v = JSON.parse(hScope[<keyof typeof hScope>n]);\n\t\t\t\tif (Object.prototype.toString.call(v) !== '[object Object]') {\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\t\tif (i +1 === len) {val = v; break}\t// 最下層ならそのまま返す\n\t\t\t\t\tcontinue;\n\t\t\t\t\t\t// 短い名前でヒットしたが、JSONでもなく\n\t\t\t\t\t\t// 変数名にはまだ続きがあるので探索続行\n\t\t\t\t}\n\n\t\t\t\tlet j = i;\t// JSONオブジェクトの階層を降りつつ探索\n\t\t\t\twhile (++j < len) {\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\t\tconst nj = aNm[j]!;\n\t\t\t\t\tif (! (nj in v)) {val = def; break}\n\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n\t\t\t\t\tv = v[nj];\n\t\t\t\t\tif (Object.prototype.toString.call(v) !== '[object Object]'\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\t\t\t|| j +1 === len) {val = v; break}// 最下層ならそのまま返す\n\t\t\t\t}\n\n\t\t\t\tif (val instanceof Object) val = JSON.stringify(val);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (val instanceof Function) val = val();\n// console.log(`\\tget [${arg_name}] -> s[${scope ?? 'tmp'}'] a[${at ?? ''}] n[${name}'] ret['${String(val)}']('${typeof val}')'`);\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-return\n\t\treturn at === '@str' ?val :this.#castAuto(val);\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t#castAuto(val: T_VAL_DATA): any {\n\t\tconst s_val = <string>val;\n\t\tif (s_val === 'true') return true;\n\t\tif (s_val === 'false') return false;\n\t\tif (s_val === 'null') return null;\n\t\tif (s_val === 'undefined') return undefined;\n\t\tif (this.#REG_NUMERICLITERAL.test(s_val)) return parseFloat(s_val);\n\n\t\treturn val;\n\t}\n\t#REG_NUMERICLITERAL\t= /^-?[\\d.]+$/;\n\n\n\t// 変数のダンプ\n\t#dump_val() {\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tconst val: any = {tmp:{}, sys:{}, save:{}, mp:{}};\n\t\tfor (const scope in val) {\n\t\t\tconst hVal = this.#hScopes[<Scope>scope];\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n\t\t\tconst hRet = val[scope];\n\t\t\tfor (const [key, v] of Object.entries(hVal)) {\n\t\t\t\tif (v instanceof Function) continue;\n\n\t\t\t\t// // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\t\t\t// hRet[key] = v instanceof Function ?v() :v;\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\t\t\thRet[key] = v;\n\t\t\t\t\t//TODO: 実行するのか無視するのか問題\n\t\t\t}\n\t\t}\n\t\tconsole.info('🥟 [dump_val]', val);\n\n\t\treturn false;\n\t}\n\n\t#doRecLog\t= false;\n\tdoRecLog() {return this.#doRecLog}\n\n\n\t#tagCh_doWait = false;\n\tget tagCh_doWait() {return this.#tagCh_doWait;}\n\t#tagCh_doWait_Kidoku = false;\n\tget tagCh_doWait_Kidoku() {return this.#tagCh_doWait_Kidoku;}\n\t#tagCh_msecWait\t\t= 0;\n\tget tagCh_msecWait() {return this.#tagCh_msecWait;}\n\t#tagCh_msecWait_Kidoku= 0;\n\tget tagCh_msecWait_Kidoku() {return this.#tagCh_msecWait_Kidoku;}\n\n\t#hSetValTrg\t: {[name: string]: T_fncSetVal}\t= {\n\t\t// sys\n\t\t'sys:sn.tagCh.doWait'\t\t\t: name=> {\n\t\t\tthis.#tagCh_doWait =\n\t\t\tthis.#runFirst_Bool_hSysVal_true(name);\n\t\t},\n\t\t'sys:sn.tagCh.doWait_Kidoku'\t: name=> {\n\t\t\tthis.#tagCh_doWait_Kidoku =\n\t\t\tthis.#runFirst_Bool_hSysVal_true(name);\n\t\t},\n\t\t'sys:sn.tagCh.msecWait'\t\t\t: name=> {\n\t\t\tthis.#tagCh_msecWait =\n\t\t\tthis.#runFirst_sys_an_tagCh_msecWait(name);\n\t\t},\n\t\t'sys:sn.tagCh.msecWait_Kidoku'\t: name=> {\n\t\t\tthis.#tagCh_msecWait_Kidoku =\n\t\t\tthis.#runFirst_sys_an_tagCh_msecWait_Kidoku(name);\n\t\t},\n\t\t'sys:sn.tagCh.canskip'\t\t\t: name=> this.#runFirst_Bool_hSysVal_true(name),\n\n\t\t'sys:sn.auto.msecPageWait'\t\t\t: name=>\n\t\t\tthis.#runFirst_sys_an_auto_msecPageWait(name),\n\t\t'sys:sn.auto.msecPageWait_Kidoku'\t: name=>\n\t\t\tthis.#runFirst_sys_an_auto_msecPageWait(name),\n\t\t'sys:sn.auto.msecLineWait'\t\t\t: name=>\n\t\t\tthis.#runFirst_sys_an_auto_msecLineWait(name),\n\t\t'sys:sn.auto.msecLineWait_Kidoku'\t: name=>\n\t\t\tthis.#runFirst_sys_an_auto_msecLineWait(name),\n\n\t\t// save\n\t\t'save:sn.doRecLog'\t\t: name=> {\n\t\t\tthis.#doRecProc(\n\t\t\t\tthis.#doRecLog = this.#runFirst_Bool_hSaveVal_true(name)\n\t\t\t);\n\t\t},\n\t\t'save:sn.userFnTail'\t: (_name, ival)=> {\n\t\t\tconst val = String(ival);\n\t\t\tif (val.includes('@')) throw 'この変数では文字「@」は禁止です';\n\t\t\tthis.cfg.userFnTail = val;\n\t\t},\n\n\t\t// tmp\n\t\t'tmp:flash.desktop.NativeApplication.nativeApplication.systemIdleMode'\t:\n\t\t\t()=> {\n\t\t\t//\tNativeApplication.nativeApplication.systemIdleMode = val;\n\t\t\t}\n\t\t,\n\t};\n\tdefValTrg(name: string, fnc: T_fncSetVal) {this.#hSetValTrg[name] = fnc}\n\treadonly\t#runFirst_Bool_hSysVal_true = (name: string)=> argChk_Boolean(this.#hSys, name, true);\n\treadonly\t#runFirst_sys_an_tagCh_msecWait = (name: string)=> argChk_Num(this.#hSys, name, 10);\n\treadonly\t#runFirst_sys_an_tagCh_msecWait_Kidoku = (name: string)=> argChk_Num(\n\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\tthis.#hSys, name, this.cfg.oCfg.init.tagch_msecwait ?? 10\n\t);\n\treadonly\t#runFirst_sys_an_auto_msecPageWait = (name: string)=> argChk_Num(\n\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\tthis.#hSys, name, this.cfg.oCfg.init.auto_msecpagewait ?? 3500\n\t);\n\treadonly\t#runFirst_sys_an_auto_msecLineWait = (name: string)=> argChk_Num(this.#hSys, name, 500);\n\n\t#runFirst_Bool_hSaveVal_true(name: string) {\n\t\treturn argChk_Boolean(this.#hSave, name, true);\n\t}\n\n}\n"],"names":["Areas","#hAreas","new_val","ar","idx","begin","v","ret","k","x","y","Variable","sys","cfg","hTag","o","#let","#let_abs","#let_char_at","#let_index_of","#let_length","#let_replace","#let_round","#let_search","#let_substr","#clearsysvar","#clearvar","#dump_val","#copybookmark","#erasebookmark","a","nm","mk","#d4v","uint","#hTmp","#hSave","creSAVEDATA","creTMP_DATA","#hScopes","#hSys","#hAreaKidoku","#callHook","data","#dbgVariable","type","#hProcDbgRes","int","#tagCh_doWait","#tagCh_doWait_Kidoku","#tagCh_msecWait","#tagCh_msecWait_Kidoku","#saPageLog","ns","oSys","creSYS_DATA","oSave","oTmp","oMp","creCSArg","oMark","ReadingState","_","#set_data_break","#setVal","#hSetEvent","d4v","fn","dk","fnc","#doRecProc","_doRec","name","mp","place","mark","#doRecLog","ak","hArg","from","argChk_Num","to","f","autocast","argChk_Boolean","n","val","start","flags","reg","i","init","mesLayer","doRecLog","sLog","styPaging","arg_name","PropParser","scope","hScope","ival","new_v","#castAuto","fullnm","old_v","#hSetValTrg","def","touch","at","aNm","len","j","nj","s_val","#REG_NUMERICLITERAL","hVal","hRet","key","#runFirst_Bool_hSysVal_true","#runFirst_sys_an_tagCh_msecWait","#runFirst_sys_an_tagCh_msecWait_Kidoku","#runFirst_sys_an_auto_msecPageWait","#runFirst_sys_an_auto_msecLineWait","#runFirst_Bool_hSaveVal_true","_name"],"mappings":"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"}