@famibee/skynovel 1.64.22 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/Button.js +131 -163
- package/dist/Button.js.map +1 -1
- package/dist/CallStack.js +19 -22
- package/dist/CallStack.js.map +1 -1
- package/dist/CmnInterface.js +91 -0
- package/dist/CmnInterface.js.map +1 -0
- package/dist/CmnLib.js +94 -0
- package/dist/CmnLib.js.map +1 -0
- package/dist/Config.js +26 -0
- package/dist/Config.js.map +1 -0
- package/dist/ConfigBase.js +152 -0
- package/dist/ConfigBase.js.map +1 -0
- package/dist/DebugMng.js +89 -102
- package/dist/DebugMng.js.map +1 -1
- package/dist/EventListenerCtn.js +21 -0
- package/dist/EventListenerCtn.js.map +1 -0
- package/dist/EventMng.js +1435 -1577
- package/dist/EventMng.js.map +1 -1
- package/dist/Grammar.js +194 -0
- package/dist/Grammar.js.map +1 -0
- package/dist/GrpLayer.js +163 -195
- package/dist/GrpLayer.js.map +1 -1
- package/dist/Layer.js +260 -0
- package/dist/Layer.js.map +1 -0
- package/dist/LayerMng.js +810 -992
- package/dist/LayerMng.js.map +1 -1
- package/dist/Main.js +144 -393
- package/dist/Main.js.map +1 -1
- package/dist/PropParser.js +936 -834
- package/dist/PropParser.js.map +1 -1
- package/dist/Reading.js +918 -786
- package/dist/Reading.js.map +1 -1
- package/dist/RubySpliter.js +59 -89
- package/dist/RubySpliter.js.map +1 -1
- package/dist/ScriptIterator.js +805 -1035
- package/dist/ScriptIterator.js.map +1 -1
- package/dist/SndBuf.js +1097 -1326
- package/dist/SndBuf.js.map +1 -1
- package/dist/SoundMng.js +124 -135
- package/dist/SoundMng.js.map +1 -1
- package/dist/SpritesMng.js +220 -232
- package/dist/SpritesMng.js.map +1 -1
- package/dist/SysBase.js +1729 -0
- package/dist/SysBase.js.map +1 -0
- package/dist/TxtLayer.js +1212 -1398
- package/dist/TxtLayer.js.map +1 -1
- package/dist/Variable.js +398 -466
- package/dist/Variable.js.map +1 -1
- package/dist/chunk.js +18 -0
- package/dist/gamepad.js +723 -511
- package/dist/gamepad.js.map +1 -1
- package/dist/pixi.js +13422 -0
- package/dist/pixi.js.map +1 -0
- package/dist/platform.js +424 -369
- package/dist/platform.js.map +1 -1
- package/dist/sn/AnalyzeTagArg.d.ts +1 -1
- package/dist/sn/AnalyzeTagArg.d.ts.map +1 -1
- package/dist/sn/CmnInterface.d.ts +3 -1
- package/dist/sn/CmnInterface.d.ts.map +1 -1
- package/dist/sn/CmnLib.d.ts.map +1 -1
- package/dist/sn/CmnTween.d.ts +7 -7
- package/dist/sn/CmnTween.d.ts.map +1 -1
- package/dist/sn/EventMng.d.ts.map +1 -1
- package/dist/sn/FocusMng.d.ts.map +1 -1
- package/dist/sn/Grammar.d.ts +1 -1
- package/dist/sn/Grammar.d.ts.map +1 -1
- package/dist/sn/Log.d.ts.map +1 -1
- package/dist/sn/Main.d.ts.map +1 -1
- package/dist/sn/Pages.d.ts.map +1 -1
- package/dist/sn/PropParser.d.ts +2 -2
- package/dist/sn/PropParser.d.ts.map +1 -1
- package/dist/sn/Reading.d.ts +7 -0
- package/dist/sn/Reading.d.ts.map +1 -1
- package/dist/sn/RubySpliter.d.ts.map +1 -1
- package/dist/sn/ScriptIterator.d.ts.map +1 -1
- package/dist/sn/SndBuf.d.ts +27 -16
- package/dist/sn/SndBuf.d.ts.map +1 -1
- package/dist/sn/SoundMng.d.ts +4 -1
- package/dist/sn/SoundMng.d.ts.map +1 -1
- package/dist/sn/SysBase.d.ts.map +1 -1
- package/dist/sn/TxtStage.d.ts +4 -1
- package/dist/sn/TxtStage.d.ts.map +1 -1
- package/dist/test/ValTest.d.ts +1 -1
- package/dist/test/ValTest.d.ts.map +1 -1
- package/dist/web.js +653 -8
- package/dist/web.js.map +1 -1
- package/dist_app/Button.js +131 -163
- package/dist_app/Button.js.map +1 -1
- package/dist_app/CallStack.js +19 -22
- package/dist_app/CallStack.js.map +1 -1
- package/dist_app/CmnInterface.js +91 -0
- package/dist_app/CmnInterface.js.map +1 -0
- package/dist_app/CmnLib.js +94 -0
- package/dist_app/CmnLib.js.map +1 -0
- package/dist_app/Config.js +26 -0
- package/dist_app/Config.js.map +1 -0
- package/dist_app/ConfigBase.js +152 -0
- package/dist_app/ConfigBase.js.map +1 -0
- package/dist_app/DebugMng.js +92 -0
- package/dist_app/DebugMng.js.map +1 -0
- package/dist_app/EventListenerCtn.js +21 -0
- package/dist_app/EventListenerCtn.js.map +1 -0
- package/dist_app/EventMng.js +1435 -1577
- package/dist_app/EventMng.js.map +1 -1
- package/dist_app/Grammar.js +194 -0
- package/dist_app/Grammar.js.map +1 -0
- package/dist_app/GrpLayer.js +163 -195
- package/dist_app/GrpLayer.js.map +1 -1
- package/dist_app/Layer.js +260 -0
- package/dist_app/Layer.js.map +1 -0
- package/dist_app/LayerMng.js +810 -992
- package/dist_app/LayerMng.js.map +1 -1
- package/dist_app/Main.js +144 -392
- package/dist_app/Main.js.map +1 -1
- package/dist_app/PropParser.js +936 -834
- package/dist_app/PropParser.js.map +1 -1
- package/dist_app/Reading.js +918 -786
- package/dist_app/Reading.js.map +1 -1
- package/dist_app/RubySpliter.js +59 -89
- package/dist_app/RubySpliter.js.map +1 -1
- package/dist_app/ScriptIterator.js +805 -1034
- package/dist_app/ScriptIterator.js.map +1 -1
- package/dist_app/SndBuf.js +1097 -1326
- package/dist_app/SndBuf.js.map +1 -1
- package/dist_app/SoundMng.js +124 -135
- package/dist_app/SoundMng.js.map +1 -1
- package/dist_app/SpritesMng.js +220 -231
- package/dist_app/SpritesMng.js.map +1 -1
- package/dist_app/SysBase.js +1729 -0
- package/dist_app/SysBase.js.map +1 -0
- package/dist_app/TxtLayer.js +1212 -1397
- package/dist_app/TxtLayer.js.map +1 -1
- package/dist_app/Variable.js +398 -466
- package/dist_app/Variable.js.map +1 -1
- package/dist_app/app.js +211 -8
- package/dist_app/app.js.map +1 -1
- package/dist_app/appMain.js +20 -21
- package/dist_app/appMain.js.map +1 -1
- package/dist_app/chunk.js +18 -0
- package/dist_app/gamepad.js +723 -511
- package/dist_app/gamepad.js.map +1 -1
- package/dist_app/pixi.js +11181 -0
- package/dist_app/pixi.js.map +1 -0
- package/dist_app/platform.js +424 -369
- package/dist_app/platform.js.map +1 -1
- package/dist_app/preload.js +2 -2
- package/dist_app/preload.js.map +1 -1
- package/dist_app/sn/AnalyzeTagArg.d.ts +1 -1
- package/dist_app/sn/AnalyzeTagArg.d.ts.map +1 -1
- package/dist_app/sn/CmnInterface.d.ts +3 -1
- package/dist_app/sn/CmnInterface.d.ts.map +1 -1
- package/dist_app/sn/CmnLib.d.ts.map +1 -1
- package/dist_app/sn/CmnTween.d.ts +7 -7
- package/dist_app/sn/CmnTween.d.ts.map +1 -1
- package/dist_app/sn/EventMng.d.ts.map +1 -1
- package/dist_app/sn/FocusMng.d.ts.map +1 -1
- package/dist_app/sn/Grammar.d.ts +1 -1
- package/dist_app/sn/Grammar.d.ts.map +1 -1
- package/dist_app/sn/Log.d.ts.map +1 -1
- package/dist_app/sn/Main.d.ts.map +1 -1
- package/dist_app/sn/Pages.d.ts.map +1 -1
- package/dist_app/sn/PropParser.d.ts +2 -2
- package/dist_app/sn/PropParser.d.ts.map +1 -1
- package/dist_app/sn/Reading.d.ts +7 -0
- package/dist_app/sn/Reading.d.ts.map +1 -1
- package/dist_app/sn/RubySpliter.d.ts.map +1 -1
- package/dist_app/sn/ScriptIterator.d.ts.map +1 -1
- package/dist_app/sn/SndBuf.d.ts +27 -16
- package/dist_app/sn/SndBuf.d.ts.map +1 -1
- package/dist_app/sn/SoundMng.d.ts +4 -1
- package/dist_app/sn/SoundMng.d.ts.map +1 -1
- package/dist_app/sn/SysBase.d.ts.map +1 -1
- package/dist_app/sn/TxtStage.d.ts +4 -1
- package/dist_app/sn/TxtStage.d.ts.map +1 -1
- package/dist_app/test/ValTest.d.ts +1 -1
- package/dist_app/test/ValTest.d.ts.map +1 -1
- package/package.json +24 -14
- package/dist/CmnTween.js +0 -193
- package/dist/CmnTween.js.map +0 -1
- package/dist/web2.js +0 -21644
- package/dist/web2.js.map +0 -1
- package/dist_app/CmnTween.js +0 -193
- package/dist_app/CmnTween.js.map +0 -1
- package/dist_app/app2.js +0 -18547
- package/dist_app/app2.js.map +0 -1
package/dist/Main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Main.js","sources":["../src/sn/Config.ts","../src/sn/AnalyzeTagArg.ts","../src/sn/Grammar.ts","../src/sn/Main.ts"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {CmnLib} from './CmnLib';\nimport type {SysBase} from './SysBase';\nimport {ConfigBase, SEARCH_PATH_ARG_EXT, type T_CFG_RAW} from './ConfigBase';\n\nexport const PROTOCOL_USERDATA\t= 'userdata:/';\nexport const PROTOCOL_DL\t\t= 'downloads:/';\n\n\nexport class Config extends ConfigBase {\n\tstatic\tasync\tgenerate(sys: SysBase) {\n\t\tconst c = new Config(sys);\n\t\tconst fn = sys.arg.cur +'prj.json';\n\t\tconst res = await sys.fetch(fn);\n\t\tif (! res.ok) throw Error(res.statusText);\n\n\t\tconst dec = await sys.dec(fn, await res.text());\n\t\tawait c.load(<T_CFG_RAW>JSON.parse(dec));\n\t\treturn c;\n\t}\n\n\tprotected\tconstructor(override readonly sys: SysBase) {super(sys)}\n\n\tprotected\toverride\tasync load(oCfg: T_CFG_RAW) {\n\t\toCfg.window ??= {width: 300, height: 300};\n\t\tCmnLib.stageW = oCfg.window.width;\n\t\tCmnLib.stageH = oCfg.window.height;\n\t\tCmnLib.debugLog = oCfg.debug.debugLog;\n\t\tawait CmnLib.init();\n\n\t\treturn super.load(oCfg);\n\t}\n\n\toverride\tsearchPath(fn: string, extptn: SEARCH_PATH_ARG_EXT = SEARCH_PATH_ARG_EXT.DEFAULT): string {\n\t\tif (fn.startsWith(PROTOCOL_DL)) {\n\t\t\treturn this.sys.path_downloads + fn.slice(11);\n\t\t}\n\t\tif (fn.startsWith(PROTOCOL_USERDATA)) {\n\t\t\treturn this.sys.path_userdata + 'storage/'+ fn.slice(10);\n\t\t}\n\n\t\treturn super.searchPath(fn, extptn);\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\nexport type PRM = {\n\tval\t\t: string;\n\tdef?\t: string;\n}\nexport type HPRM = {\n\t[key: string]: PRM,\n}\n\nexport type PRM_RANGE = {\n\tk_ln\t: number;\n\tk_ch\t: number;\n\tv_ln\t: number;\n\tv_ch\t: number;\n\tv_len\t: number;\n}\n\nexport function idx2LnCol(sSn: string, idx: number, lenNm = 0, ln = 0, ch = 0): {ln: number; ch: number;} {\n\tconst sBefore = sSn.slice(0, idx);\n\tconst a = sBefore.split('\\n');\n\tconst len = a.length;\n\treturn {\n\t\tln\t: ln +len -1,\n\t\tch\t: len < 2 ?ch +1+lenNm +idx :a.at(-1)?.length ?? 0,\n\t};\n}\n\n\nexport class AnalyzeTagArg {\n\t// 87 match 2725 step(0.5ms) PCRE2 https://regex101.com/r/aeN57J/1\n\t/*\n;[^\\n]*\n|\t(?<key>[^\\s=\"'#|;]+)\n\t(?: \\s | ;[^\\n]*\\n)*\n\t=\n\t(?: \\s | ;[^\\n]*\\n)*\n\t(?:\t(?<val> [^\\s\"'#|;]+)\n\t|\t([\"'#]) (?<val2>.*?) \\3 )\n\t(?: \\|\n\t\t(?: (?<def> [^\\s\"'#;]+)\n\t|\t([\"'#]) (?<def2>.*?) \\6 ) )?\n|\t(?<literal>[^\\s;]+)\n\t*/\n\treadonly\t#REG_TAGARG\t= /;[^\\n]*|(?<key>[^\\s=\"'#|;]+)(?:\\s|;[^\\n]*\\n)*=(?:\\s|;[^\\n]*\\n)*(?:(?<val>[^\\s\"'#|;]+)|([\"'#])(?<val2>.*?)\\3)(?:\\|(?:(?<def>[^\\s\"'#;]+)|([\"'#])(?<def2>.*?)\\6))?|(?<literal>[^\\s;]+)/g;\n\n\t// 【属性 = 値 | 省略値】の分析\n\tparse(args: string): void {\n\t\tthis.#hPrm = {};\n\t\tthis.#isKomeParam = false;\n\t\tfor (const {groups} of args.matchAll(this.#REG_TAGARG)) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst {key, val, val2, def, def2, literal} = groups!;\n\t\t\tif (key) this.#hPrm[key] = {\n\t\t\t\tval: val ?? val2 ?? '',\n\t\t\t\tdef: def ?? def2\n\t\t\t};\n\t\t\telse if (literal) {\n\t\t\t\tif (literal === '*') this.#isKomeParam = true;\n\t\t\t\telse this.#hPrm[literal] = {val: '1'};\n\t\t\t}\n\t\t}\n\t}\n\n\t// 属性と値の位置をまとめて返す\n\tparseinDetail(token: string, lenNm: number, ln: number, ch: number): {[key: string]: PRM_RANGE} {\n\t\tconst hRng: {[key: string]: PRM_RANGE} = {};\n\n\t\tconst sSn = token.slice(1+lenNm, -1);\n\t\tfor (const {groups, index, 0: z} of sSn.matchAll(this.#REG_TAGARG)) {\n\t\t\tif (! index) continue;\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst {key, val, val2='', literal} = groups!;\n\t\t\tif (literal) {\n\t\t\t\tif (literal.endsWith('=')) {\n\t\t\t\t\tconst lenVnm = literal.length -1;\n\t\t\t\t\tconst {ch: k_ch} = idx2LnCol(sSn, index +lenVnm, lenNm, ln, ch);\n\t\t\t\t\thRng[literal.slice(0, -1)] = {\n\t\t\t\t\t\tk_ln: ln,\n\t\t\t\t\t\tk_ch: k_ch -lenVnm,\n\t\t\t\t\t\tv_ln: ln,\n\t\t\t\t\t\tv_ch: k_ch +1,\n\t\t\t\t\t//\tv_ch: ch +1+lenNm +literal.length +1,\n\t\t\t\t\t\tv_len: 0,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (! key) continue;\n\n\t\t\tconst {ln: k_ln, ch: k_ch} = idx2LnCol(sSn, index, lenNm, ln, ch);\n\t\t\tconst {ln: v_ln, ch: v_ch} = idx2LnCol(sSn, index +z.lastIndexOf(val ?? val2) -(val ?0 :1), lenNm, ln, ch);\n\t\t\thRng[key] = {k_ln, k_ch, v_ln, v_ch, v_len: val ?val.length :val2.length +2};\n\t\t}\n\n\t\treturn hRng;\n\t}\n\n\t#hPrm: HPRM\t= {};\n\tget hPrm() {return this.#hPrm}\n\n\t#isKomeParam\t= false;\n\tget isKomeParam() {return this.#isKomeParam}\n\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2019-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 {AnalyzeTagArg} from './AnalyzeTagArg';\nimport {getFn} from './CmnLib';\nimport {type T_Config, SEARCH_PATH_ARG_EXT} from './ConfigBase';\n\n\nexport type TArg = {\n\t':タグ名'?\t: string;\n\tcanskip?\t: boolean;\n\n\tlayer?\t: string;\t// レイヤ系\n\tclass?\t: string;\n\tindex?\t: number;\n\tdive?\t: string;\n\tpage?\t: string;\n\talpha?\t: number;\n\tpivot_x?: number;\n\tpivot_y?: number;\n\trotation?\t: number;\n\tscale_x?: number;\n\tscale_y?: number;\n\tvisible?: boolean;\n\tblendmode?\t: string;\n\n\tleft?\t: number;\n\ttop?\t: number;\n\twidth?\t: number;\n\theight?\t: number;\n\tpl?\t\t: number;\n\tpr?\t\t: number;\n\tpt?\t\t: number;\n\tpb?\t\t: number;\n\n\trotate?\t: number;\n\tin_style?\t: string;\n\tout_style?\t: string;\n\tffs?\t: string;\n\tnoffs?\t: string;\n\tkinsoku_sol?\t: string;\n\tkinsoku_eol?\t: string;\n\tkinsoku_dns?\t: string;\n\tkinsoku_bura?\t: string;\n\tbura?\t: boolean;\n\tbreak_fixed?\t\t: boolean;\n\tbreak_fixed_left?\t: number;\n\tbreak_fixed_top?\t: number;\n\n\ttime?\t: number;\n\trule?\t: string;\n\tglsl?\t: string;\n\trender?\t: boolean;\n\n\tpos?\t: string;\n\ttext?\t: string;\n\twait?\t: number;\n\trecord?\t: boolean;\n\tpic?\t: string;\n\tenabled?: boolean;\n\thint?\t\t: string;\n\thint_style?\t: string;\n\thint_opt?\t: string;\n\tclickse?\t: string;\n\tenterse?\t: string;\n\tleavese?\t: string;\n\tclicksebuf?\t: string;\n\tentersebuf?\t: string;\n\tleavesebuf?\t: string;\n\tonenter?\t: string;\n\tonleave?\t: string;\n\n\tt?\t: string;\n\tr?\t: string;\n\texp?\t: string;\n\tchar?\t: string;\n\tsesame?\t: string;\n\tcast?\t: string;\n\tval?\t: string;\n\tflags?\t: string;\n\treg?\t: string;\n\tlen?\t: string;\n\turl?\t: string;\n\tformat?\t: string;\n\tchain?\t: string;\n\tpath?\t: string;\n\n\tfn?\t\t: string;\n\tface?\t: string;\n\tlabel?\t: string;\n\tcall?\t: boolean;\n\tglobal?\t: boolean;\n\tname?\t: string;\n\tclear_local_event?\t: boolean;\n\n\tstyle?\t\t\t: string;\n\tstyle_hover?\t: string;\n\tstyle_clicked?\t: string;\n\tr_style?\t\t: string;\n\tr_style_hover?\t: string;\n\tr_style_clicked?: string;\n\tr_align?\t: string;\n\n\tb_width?\t: string;\n\tb_height?\t: string;\n\tb_color?\t: string;\n\tb_alpha?\t: number;\n\tb_alpha_isfixed?\t: boolean;\n\tb_pic?\t\t: string;\n\tback_clear?\t: string;\n\n\tmax_col?\t: string;\n\tmax_row?\t: string;\n\tbura_col?\t: string;\n\tchk_overrow?\t: string;\n\n\tdx?\t: number;\n\tdy?\t: number;\n\n\tkey?\t: string;\n\ttype?\t: string;\t// 3Dレイヤで使用\n\tcamera_target?\t: string;\n\n\targ?\t: TArg;\n\tfnc?\t: ()=> void;\n\n\tfilter?\t: string;\n\tmatrix?\t: string;\n\tclear_filter?\t: boolean;\n\tenable_filter?\t: boolean;\n\n\tease?\t: string;\n\n\tcentering?\t:boolean;\n\tx?\t\t: number | string;\n\ty?\t\t: number | string;\n\n\tid?\t\t\t: string;\n\tsrc?\t\t: string;\n\tvar_name?\t: string;\n\tset_fnc?\t: string;\n\tbreak_fnc?\t: string;\n\n\tfrom?\t: number;\n\tto?\t\t: number | string;\n\tplace?\t: number;\n\tadd?\t: string;\n\tdel?\t: string;\n\n\tbuf?\t: string;\t// 音系\n\tbuf2?\t: string;\n\tloop?\t: boolean;\n\tvolume?\t: number;\n\tret_ms?\t: number;\n\tend_ms?\t: number;\n\tjoin?\t: boolean;\n\tdo_rec?\t: boolean;\n\tpan?\t: number;\n\tstop?\t: boolean;\n\n\tclear?\t: boolean;\n\n\t// デザインモード\n\t':id_dc'?\t: string;\n\t':id_tag'?\t: string;\n\t':path'?\t: string;\n\t':ln'?\t\t: number;\n\t':col_s'?\t: number;\n\t':col_e'?\t: number;\n\t':idx_tkn'?\t: number;\n\t':token'?\t: string;\n\t':redraw'?\t: boolean;\n\tdesign_unit?: boolean;\t// デザインモードでこのマクロへの引数変更とするか(内部をサーチさせない)\n\n//\tstepin?\t\t: boolean;\t\t// 拡張機能のみ使用:false指定でステップインしない\n//\tnowarn_unused?\t: boolean;\t// 拡張機能のみ使用:未使用警告を出さない\n}\nexport type TTag = (hArg: TArg) => boolean;\nexport type T_HTag = {\n// 変数操作\n\tclearsysvar\t\t\t: TTag;\t// システム変数の全消去\n\tclearvar\t\t\t: TTag;\t// ゲーム変数の全消去\n\tlet_abs\t\t\t\t: TTag;\t// 絶対値\n\tlet_char_at\t\t\t: TTag;\t// 文字列から一字取りだし\n\tlet_index_of\t\t: TTag;\t// 文字列で検索\n\tlet_length\t\t\t: TTag;\t// 文字列の長さ\n\tlet_ml\t\t\t\t: TTag;\t// インラインテキスト代入\n\tlet_replace\t\t\t: TTag;\t// 正規表現で置換\n\tlet_round\t\t\t: TTag;\t// 四捨五入\n\tlet_search\t\t\t: TTag;\t// 正規表現で検索\n\tlet_substr\t\t\t: TTag;\t// 文字列から抜きだし\n\tlet\t\t\t\t\t: TTag;\t// 変数代入・演算\n\n// レイヤ共通\n\tadd_lay\t\t\t\t: TTag;\t// レイヤを追加する\n\tclear_lay\t\t\t: TTag;\t// レイヤ設定の消去\n\tfinish_trans\t\t: TTag;\t// トランス強制終了\n\tlay\t\t\t\t\t: TTag;\t// レイヤ設定\n\ttrans\t\t\t\t: TTag;\t// ページ裏表を交換\n\twt\t\t\t\t\t: TTag;\t// トランス終了待ち\n\tadd_filter\t\t\t: TTag;\t// フィルター追加\n\tclear_filter\t\t: TTag;\t// フィルター全削除\n\tenable_filter\t\t: TTag;\t// フィルター個別切替\n\n// トゥイーンアニメ\n\tpause_tsy\t\t\t: TTag;\t// 一時停止\n\tresume_tsy\t\t\t: TTag;\t// 一時停止再開\n\tstop_tsy\t\t\t: TTag;\t// トゥイーン中断\n\ttsy\t\t\t\t\t: TTag;\t// トゥイーン開始\n\twait_tsy\t\t\t: TTag;\t// トゥイーン終了待ち\n\n// 文字・文字レイヤ\n\tautowc\t\t\t\t: TTag;\t// 文字ごとのウェイト\n\tch\t\t\t\t\t: TTag;\t// 文字を追加する\n\tch_in_style\t\t\t: TTag;\t// 文字出現演出定義\n\tch_out_style\t\t: TTag;\t// 文字消去演出定義\n\tclear_text\t\t\t: TTag;\t// 文字消去\n\tcurrent\t\t\t\t: TTag;\t// デフォルト文字レイヤ設定\n\tendlet_ml\t\t\t: TTag;\t// インラインテキスト代入の終端\n\tendlink\t\t\t\t: TTag;\t// ハイパーリンクの終了\n\ter\t\t\t\t\t: TTag;\t// ページ両面の文字消去\n\tgraph\t\t\t\t: TTag;\t// インライン画像表示\n\tlink\t\t\t\t: TTag;\t// ハイパーリンク\n\tr\t\t\t\t\t: TTag;\t// 改行\n\trec_ch\t\t\t\t: TTag;\t// 履歴書き込み\n\trec_r\t\t\t\t: TTag;\t// 履歴改行\n\treset_rec\t\t\t: TTag;\t// 履歴リセット\n\truby2\t\t\t\t: TTag;\t// 文字列と複数ルビの追加\n\tset_focus\t\t\t: TTag;\t// フォーカス移動\n\tspan\t\t\t\t: TTag;\t// インラインスタイル設定\n\ttcy\t\t\t\t\t: TTag;\t// 縦中横を表示する\n\n// 画像・画像レイヤ\n\tadd_face\t\t\t: TTag;\t// 差分名称の定義\n\twv\t\t\t\t\t: TTag;\t// 動画再生終了待ち\n\n// HTMLフレーム\n\tadd_frame\t\t\t: TTag;\t// フレーム追加\n\tframe\t\t\t\t: TTag;\t// フレームに設定\n\tlet_frame\t\t\t: TTag;\t// フレーム変数を取得\n\tset_frame\t\t\t: TTag;\t// フレーム変数に設定\n\ttsy_frame\t\t\t: TTag;\t// フレームをトゥイーン開始\n\n// イベント\n\tclear_event\t\t\t: TTag;\t// イベントを全消去\n\tenable_event\t\t: TTag;\t// イベント有無の切替\n\tevent\t\t\t\t: TTag;\t// イベントを予約\n\tl\t\t\t\t\t: TTag;\t// 行末クリック待ち\n\tp\t\t\t\t\t: TTag;\t// 改ページクリック待ち\n\ts\t\t\t\t\t: TTag;\t// 停止する\n\tset_cancel_skip\t\t: TTag;\t// スキップ中断予約\n\twait\t\t\t\t: TTag;\t// ウェイトを入れる\n\twaitclick\t\t\t: TTag;\t// クリックを待つ\n\n// BGM・効果音\n\tfadebgm\t\t\t\t: TTag;\t// BGMのフェード\n\tfadeoutbgm\t\t\t: TTag;\t// BGMのフェードアウト\n\tfadeoutse\t\t\t: TTag;\t// 効果音のフェードアウト\n\tfadese\t\t\t\t: TTag;\t// 効果音のフェード\n\tplaybgm\t\t\t\t: TTag;\t// BGM の演奏\n\tplayse\t\t\t\t: TTag;\t// 効果音の再生\n\tstop_allse\t\t\t: TTag;\t// 全効果音再生の停止\n\tstopbgm\t\t\t\t: TTag;\t// BGM 演奏の停止\n\tstopfadese\t\t\t: TTag;\t// 音声フェードの停止\n\tstopse\t\t\t\t: TTag;\t// 効果音再生の停止\n\tvolume\t\t\t\t: TTag;\t// BGMや効果音の音量を指定\n\twb\t\t\t\t\t: TTag;\t// BGM フェードの終了待ち\n\twf\t\t\t\t\t: TTag;\t// 効果音フェードの終了待ち\n\twl\t\t\t\t\t: TTag;\t// BGM 再生の終了待ち\n\tws\t\t\t\t\t: TTag;\t// 効果音再生の終了待ち\n\txchgbuf\t\t\t\t: TTag;\t\t// サウンドバッファの交換\n\n// 条件分岐\n\telse\t\t\t\t: TTag;\t// その他ifブロック開始\n\telsif\t\t\t\t: TTag;\t// 別条件のifブロック開始\n\tendif\t\t\t\t: TTag;\t// ifブロックの終端\n\tif\t\t\t\t\t: TTag;\t// ifブロックの開始\n\n// ラベル・ジャンプ\n\tbutton\t\t\t\t: TTag;\t// ボタンを表示\n\tcall\t\t\t\t: TTag;\t// サブルーチンコール\n\tjump\t\t\t\t: TTag;\t// シナリオジャンプ\n\tpage\t\t\t\t: TTag;\t// ページ移動\n\tpop_stack\t\t\t: TTag;\t// コールスタック破棄\n\treturn\t\t\t\t: TTag;\t// サブルーチンから戻る\n\n// マクロ\n\tbracket2macro\t\t: TTag;\t// 括弧マクロの定義\n\tchar2macro\t\t\t: TTag;\t// 一文字マクロの定義\n\tendmacro\t\t\t: TTag;\t// マクロ定義の終了\n\tmacro\t\t\t\t: TTag;\t// マクロ定義の開始\n\n// しおり\n\tcopybookmark\t\t: TTag;\t// しおりの複写\n\terasebookmark\t\t: TTag;\t// しおりの消去\n\tload\t\t\t\t: TTag;\t// しおりの読込\n\trecord_place\t\t: TTag;\t// セーブポイント指定\n\treload_script\t\t: TTag;\t// スクリプト再読込\n\tsave\t\t\t\t: TTag;\t// しおりの保存\n\n// 画面揺らし\n\tquake\t\t\t\t: TTag;\t// 画面を揺らす\n\tstop_quake\t\t\t: TTag;\t// 画面揺らし中断\n\twq\t\t\t\t\t: TTag;\t// 画面揺らし終了待ち\n\n// システム\n\tclose\t\t\t\t: TTag;\t// アプリの終了\n\texport\t\t\t\t: TTag;\t// プレイデータをエクスポート\n\timport\t\t\t\t: TTag;\t// プレイデータをインポート\n\tloadplugin\t\t\t: TTag;\t// プラグインの読み込み\n\tnavigate_to\t\t\t: TTag;\t// URLを開く\n\tsnapshot\t\t\t: TTag;\t// スナップショット\n\ttitle\t\t\t\t: TTag;\t// タイトル指定\n\ttoggle_full_screen\t: TTag;\t// 全画面状態切替\n\tupdate_check\t\t: TTag;\t// 更新チェック機能\n\twindow\t\t\t\t: TTag;\t// アプリウインドウ設定\n\n// デバッグ・その他\n\tdump_lay\t\t\t: TTag;\t// レイヤのダンプ\n\tdump_script\t\t\t: TTag;\t// 外部へスクリプトを表示\n\tdump_stack\t\t\t: TTag;\t// スタックのダンプ\n\tdump_val\t\t\t: TTag;\t// 変数のダンプ\n\tlog\t\t\t\t\t: TTag;\t// ログ出力\n\ttrace\t\t\t\t: TTag;\t// デバッグ表示へ出力\n}\n\n\nexport type Script = {\n\taToken\t: string[];\t\t// トークン群\n\tlen\t\t: number;\t\t// トークン数\n\taLNum\t: number[];\t\t// トークンの行番号\n};\n\n\nexport const\tREG_TAG\t= /(?<name>[^\\s;\\]]+)/;\t// test用にexport\nexport function\ttagToken2Name_Args(token: string): [name: string, args: string] {\n\tconst e = REG_TAG.exec(token.slice(1, -1));\n\tconst g = e?.groups;\n\tif (! g) throw `タグ記述【${token}】異常です(タグ解析)`;\n\n\tconst nm = g.name!;\n\treturn [nm, token.slice(1 +nm.length, -1)];\n}\nexport function\ttagToken2Name(token: string): string {\n\tconst e = REG_TAG.exec(token.slice(1));\n\tconst g = e?.groups;\n\tif (! g) throw `タグ記述【${token}】異常です(タグ解析)`;\n\n\treturn g.name!;\n}\n\nexport function\tsplitAmpersand(token: string): {\n\t\tname: string;\n\t\ttext: string;\n\t\tcast: string | undefined;\n} {\t// テスト用にpublic\n\tconst equa = token.replaceAll('==', '=').replaceAll('!=', '≠').split('=');\n\t\t// != を弾けないので中途半端ではある\n\tconst cnt_equa = equa.length;\n\tif (cnt_equa < 2 || cnt_equa > 3) throw '「&計算」書式では「=」指定が一つか二つ必要です';\n\n\tconst [e0, e1, e2] = equa;\n\tif (e1!.startsWith('&')) throw '「&計算」書式では「&」指定が不要です';\n\treturn {\n\t\tname: e0!.replaceAll('=', '==').replaceAll('≠', '!='),\n\t\ttext: e1!.replaceAll('=', '==').replaceAll('≠', '!='),\n\t\tcast: cnt_equa === 3 ?e2!.trim() :undefined\n\t};\n}\n\n\nexport class Grammar {\n\tconstructor(private readonly cfg: T_Config) {this.setEscape('')}\n\n\t#REG_TOKEN\t: RegExp;\n\tsetEscape(ce: string) {\n\t\tif (this.#hC2M && ce in this.#hC2M) throw '[エスケープ文字] char【'+ ce +'】が登録済みの括弧マクロまたは一文字マクロです';\n\n\t\t// 1083 matches (14577 step, 9.9ms) https://regex101.com/r/dP0tAY/1\n\t\t/*\n\\\\\\S |\n \\n+\n| \\t+\n|\t\\[let_ml \\s+ [^\\]]+ ]\n\t.+? (?=\\[endlet_ml [\\]\\s])\n| \\[ (?: [^\"'#;\\]]+\n\t| ([\"'#]).*?\\1\n\t| ;[^\\n]* ) *? ]\n| ;[^\\n]*\n| &[^&\\n]+&\n| &&?(?: [^\"'#;\\n&]+ | ([\"'#]).*?\\2 )+\n| ^\\*[^\\s\\[&;\\\\]+\n| [^\\n\\t\\[;\\\\]+\n\t\t*/\n/*\n\t[^\"'#;\\]]++\n\t| ([\"'\\#]).*?\\1\n\t\t\t++ にしたいところだが、jsは未サポートらしい(2022/10/16)\n*/\n\t\t// (new RegExp(\"~\")) の場合は、バックスラッシュは2つ必要\n\t\t\t// https://qiita.com/ue5963/items/bd8e32ac9e6b12aa7fab\n\t\tthis.#REG_TOKEN = new RegExp(\n\t\t(ce\t?`\\\\${ce}\\\\S|` :'')+\t// エスケープシーケンス\n\t\t'\\\\n+'+\t\t\t\t// 改行\n\t\t'|\\\\t+'+\t\t\t// タブ文字\n\t\t'|\\\\[let_ml\\\\s+[^\\\\]]+\\\\]'+\n\t\t\t'.+?'+\t\t\t// [let_ml]〜[endlet_ml]間のテキスト\n\t\t'(?=\\\\[endlet_ml[\\\\]\\\\s])'+\n\t\t'|\\\\[(?:'+\n\t\t\t'[^\"\\'#;\\\\]]+|'+\t// タグ\n\t\t\t'([\"\\'#]).*?\\\\1' +\n\t\t\t\t// . は (?:\\\\${ ce??'\\\\' }.|[^\\\\1]) でなくてよさげ\n\t\t'|;[^\\\\n]*)*?]'+\n\t\t'|;[^\\\\n]*'+\t\t// コメント\n\t\t'|&[^&\\\\n]+&'+\t\t// &表示&\n\t\t'|&&?(?:[^\"\\'#;\\\\n&]+|([\"\\'#]).*?\\\\2)+'+\t// &代入\n\t\t'|^\\\\*[^\\\\s\\\\[&;\\\\\\\\]+'+\t// ラベル\n\t\t`|[^\\\\n\\\\t\\\\[;${ce ?`\\\\${ce}` :''}]+`,\t\t// 本文\n\t\t'gs');\n\t\tthis.#REG_CANTC2M = new RegExp(`[\\\\w\\\\s;[\\\\]*=&|《》${ce ?`\\\\${ce}` :''}]`);\n\t\tthis.#REG_TOKEN_NOTXT = new RegExp(`[\\\\n\\\\t;\\\\[*&${ce ?`\\\\${ce}` :''}]`);\n\t}\n\n\n\t// 括弧マクロの定義\n\tbracket2macro(hArg: TArg, hTag: T_HTag, scr: Script, start_idx: number) {\n\t\tconst {name, text} = hArg;\n\t\tif (! name) throw '[bracket2macro] nameは必須です';\n\t\tif (! text) throw '[bracket2macro] textは必須です';\n\t\tconst op = text.at(0);\n\t\tif (! op) throw '[bracket2macro] textは必須です';\n\t\tif (text.length !== 2) throw '[bracket2macro] textは括弧の前後を示す二文字を指定してください';\n\t\tif (! (name in hTag)) throw `[bracket2macro] 未定義のタグ又はマクロ[${name}]です`;\n\n\t\tthis.#hC2M ??= {};\n\t\tconst cl = text.charAt(1);\n\t\tif (op in this.#hC2M) throw '[bracket2macro] text【'+ op +'】が登録済みの括弧マクロまたは一文字マクロです';\n\t\tif (cl in this.#hC2M) throw '[bracket2macro] text【'+ cl +'】が登録済みの括弧マクロまたは一文字マクロです';\n\t\tif (this.#REG_CANTC2M.test(op)) throw '[bracket2macro] text【'+ op +'】は括弧マクロに使用できない文字です';\n\t\tif (this.#REG_CANTC2M.test(cl)) throw '[bracket2macro] text【'+ cl +'】は括弧マクロに使用できない文字です';\n\n\t\tthis.#hC2M[cl] = '0';\t// チェック用ダミー\n\t\tthis.#hC2M[op] = `[${name} text=`;\n\n\t\tthis.addC2M(`\\\\${op}[^\\\\${cl}]*\\\\${cl}`, `\\\\${op}\\\\${cl}`);\n\n\t\tthis.#replaceScr_C2M(scr, start_idx);\n\t}\n\t// 一文字マクロの定義\n\tchar2macro(hArg: TArg, hTag: T_HTag, scr: Script, start_idx: number) {\n\t\tconst {char, name} = hArg;\n\t\tif (! char) throw '[char2macro] charは必須です';\n\t\tthis.#hC2M ??= {};\n\t\tif (char in this.#hC2M) throw '[char2macro] char【'+ char +'】が登録済みの括弧マクロまたは一文字マクロです';\n\t\tif (this.#REG_CANTC2M.test(char)) throw '[char2macro] char【'+ char +'】は一文字マクロに使用できない文字です';\n\n\t\tif (! name) throw '[char2macro] nameは必須です';\n\t\tif (! (name in hTag)) throw `[char2macro] 未定義のタグ又はマクロ[${name}]です`;\n\n\t\tthis.#hC2M[char] = `[${name}]`;\n\n\t\tthis.addC2M(`\\\\${char}`, `\\\\${char}`);\n\n\t\tthis.#replaceScr_C2M(scr, start_idx);\n\t}\n\t#REG_CANTC2M\t: RegExp;\n\t#REGC2M\t\t\t= new RegExp('');\n\t#regStrC2M\t\t= '';\n\t#regStrC2M4not\t= '';\n\taddC2M(a: string, b: string) {\n\t\tthis.#regStrC2M += `${a}|`;\n\t\tthis.#regStrC2M4not += b;\n\t\tthis.#REGC2M = new RegExp(\n\t\t\t`(${this.#regStrC2M}[^${this.#regStrC2M4not}]+)`, 'g');\n\t}\n\n\n\tresolveScript(txt: string): Script {\n\t\tconst a: string[] = txt\n\t\t.replaceAll(/\\r\\n?/g, '\\n')\n\t\t.match(this.#REG_TOKEN)\n\t\t?.flatMap(tkn=> {\n\t\t\tif (! this.testTagLetml(tkn)) return tkn;\n\n\t\t\tconst r = /^([^\\]]+?])(.*)$/s.exec(tkn);\n\t\t\tif (! r) return tkn;\n\t\t\tconst [, a, b] = r;\n\t\t\treturn [a!, b!];\n\t\t}) ?? [];\n\n\t\tconst scr = {aToken: a, len: a.length, aLNum: []};\n\t\tthis.#replaceScr_C2M(scr);\n\n\t\tthis.#replaceScript_Wildcard(scr);\n\n\t\treturn scr;\n\t}\n\n\n\treadonly #REG_WILDCARD\t= /^\\[(call|loadplugin)\\s/;\n\treadonly #REG_WILDCARD2\t= /\\bfn\\s*=\\s*[^\\s\\]]+/;\n\t#replaceScript_Wildcard(scr: Script) {\n\t\tfor (let i=scr.len -1; i>=0; --i) {\n\t\t\tconst token = scr.aToken[i]!;\n\t\t\tif (! this.#REG_WILDCARD.test(token)) continue;\n\n\t\t\tconst [tag_name, args] = tagToken2Name_Args(token);\n\t\t\tthis.#alzTagArg.parse(args);\n\n\t\t\tconst p_fn = this.#alzTagArg.hPrm.fn;\n\t\t\tif (! p_fn) continue;\n\t\t\tconst {val: fn} = p_fn;\n\t\t\tif (! fn.endsWith('*')) continue;\n\n\t\t\tscr.aToken.splice(i, 1, '\\t', '; '+ token);\n\t\t\tscr.aLNum.splice(i, 1, NaN, NaN);\n\n\t\t\tconst ext = tag_name === 'loadplugin'\n\t\t\t\t? SEARCH_PATH_ARG_EXT.CSS\n\t\t\t\t: SEARCH_PATH_ARG_EXT.SN;\n\t\t\tconst a = this.cfg.matchPath('^'+ fn.slice(0, -1) +'.*', ext);\n\t\t\tfor (const v of a) {\n\t\t\t\tconst nt = token.replace(\n\t\t\t\t\tthis.#REG_WILDCARD2,\n\t\t\t\t\t'fn='+ decodeURIComponent(getFn(v[ext]!))\n\t\t\t\t);\n\t\t\t\t//console.log('\\t='+ nt +'=');\n\t\t\t\tscr.aToken.splice(i, 0, nt);\n\t\t\t\tscr.aLNum.splice(i, 0, NaN);\n\t\t\t}\n\t\t}\n\t\tscr.len = scr.aToken.length;\n\t}\n\t\treadonly\t#alzTagArg\t= new AnalyzeTagArg;\n\n\n\ttestTagLetml(tkn: string): boolean {return /^\\[let_ml\\s/.test(tkn)}\n\ttestTagEndLetml(tkn: string): boolean {return /^\\[endlet_ml\\s*]/.test(tkn)}\n\n\n\t#hC2M\t: {[char: string]: string} | undefined = undefined;\n\t#REG_TOKEN_NOTXT\t: RegExp;\n\t#replaceScr_C2M(scr: Script, start_idx = 0): void {\n\t\tif (! this.#hC2M) return;\n\n\t\tfor (let i=scr.len- 1; i >= start_idx; --i) {\n\t\t\tconst token = scr.aToken[i]!;\n\t\t\tif (this.testNoTxt(token.at(0) ?? '\\n')) continue;\n\t\t\t\t// 省略時は #REG_TOKEN_NOTXT に引っかかる \\n に\n\n\t\t\tconst lnum = scr.aLNum[i]!;\n\t\t\tconst a = token.match(this.#REGC2M);\n\t\t\tif (! a) continue;\n\t\t\tlet del = 1;\n\t\t\tfor (let j=a.length -1; j>=0; --j) {\n\t\t\t\tlet ch = a[j]!;\n\t\t\t\tconst macro = this.#hC2M[ch.at(0) ?? ' '];\n\t\t\t\t\t// 省略時は #REG_CANTC2M に引っかかる ' ' に\n\t\t\t\tif (macro) {\n\t\t\t\t\tch = macro +(macro.endsWith(']')\n\t\t\t\t\t\t? ''\n\t\t\t\t\t\t: `'${ch.slice(1, -1)}']`);\n\t\t\t\t\t// 文字列は半角空白を意識して''で囲むが、いずれ変えたい場合がある?\n\t\t\t\t}\n\t\t\t\tscr.aToken.splice(i, del, ch);\n\n\t\t\t\tscr.aLNum.splice(i, del, lnum);\n\t\t\t\tdel = 0;\n\t\t\t}\n\t\t}\n\t\tscr.len = scr.aToken.length;\n\t}\n\ttestNoTxt(ch: string): boolean {return this.#REG_TOKEN_NOTXT.test(ch)}\t//4tst\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 {CmnLib, argChk_Boolean, parseColor} from './CmnLib';\nimport type {T_HTag, TArg} from './Grammar';\nimport type {T_Main, Scope, T_VAL_BSNU, T_VAL_DATA} from './CmnInterface';\nimport type {SysBase} from './SysBase';\nimport {DebugMng} from './DebugMng';\nimport {Config} from './Config';\nimport {splitAmpersand, tagToken2Name_Args} from './Grammar';\nimport type {ScriptIterator} from './ScriptIterator';\nimport type {LayerMng} from './LayerMng';\nimport type {EventMng} from './EventMng';\n\nimport {type IApplicationOptions, Application, utils} from 'pixi.js';\n\n\nconst\tSN_ID\t= 'skynovel';\n\nexport class Main implements T_Main {\n\tstatic\tasync generate(sys: SysBase): Promise<Main> {\n\t\tutils.skipHello();\n\n\t\tconst m = new Main(sys);\n\t\tawait m.#init()\n\t\t.catch((e: unknown)=> console.error('Main.generate err e:%o', e));\n\n\t\treturn m;\n\t}\n\n\n\tcvs\t\t\t: HTMLCanvasElement;\n\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t#hTag\t\t: T_HTag\t\t= Object.create(null);\t// タグ処理辞書\n\n\t#scrItr\t\t: ScriptIterator;\n\t#layMng\t\t: LayerMng;\n\t#evtMng\t\t: EventMng;\n\n\t#aDest\t\t: (()=> void)[]\t\t= [];\n\n\n\tprivate constructor(private readonly sys: SysBase) {}\n\n\tasync #init() {\n\t\tconst cfg = await Config.generate(this.sys);\n\t\tthis.sys.setMain(this, cfg);\n\n\t\tconst hApp: IApplicationOptions = {\n\t\t\twidth\t\t\t: cfg.oCfg.window.width,\n\t\t\theight\t\t\t: cfg.oCfg.window.height,\n\t\t\tbackgroundColor\t: parseColor(String(cfg.oCfg.init.bg_color)),\n\t\t\t\t// このString()は後方互換性のため必須\n\t\t\tresolution\t\t: globalThis.devicePixelRatio,\n\t\t};\n\n\t\tconst cvs = <HTMLCanvasElement | null>document.getElementById(SN_ID);\n\t\tif (cvs) {\n\t\t\tconst clone_cvs = <HTMLCanvasElement>cvs.cloneNode(true);\n\t\t\tclone_cvs.id = SN_ID;\n\t\t\thApp.view = cvs;\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst p = cvs.parentNode!;\n\t\t\tthis.#aDest.unshift(()=> p.appendChild(clone_cvs));\n\t\t}\n\t\telse {\t// 自動的に作ってくれるが、どうも appendChild に遅延があるので\n\t\t\tconst c = document.createElement('canvas');\n\t\t\tc.id = SN_ID;\n\t\t\thApp.view = c;\n\t\t\tdocument.body.appendChild(c);\n\t\t\tthis.#aDest.unshift(()=> document.body.removeChild(c));\n\t\t}\n\n\t\tconst app = new Application(hApp);\n\t\tthis.#aDest.unshift(()=> {\n\t\t\tutils.clearTextureCache();\n\t\t\tthis.sys.destroy();\n\t\t\tapp.destroy(false);\t// remove canvas from DOM が非同期なのでウチがやる\n\t\t});\n\n\t\tthis.cvs = app.view;\n\t\tthis.cvs.id = SN_ID +'_act';\n\t\tif (! cvs) document.body.appendChild(this.cvs);\n\n\n\t\tconst cc = document.createElement('canvas').getContext('2d');\n\t\tif (! cc) throw '#init cc err';\n\t\tCmnLib.cc4ColorName = cc;\n\n\t\tconst [{Variable}, {PropParser}, {SoundMng}, {ScriptIterator}, {LayerMng}, {EventMng}, {Button}] = await Promise.all([\n\t\t\timport('./Variable'),\n\t\t\timport('./PropParser'),\n\t\t\timport('./SoundMng'),\n\t\t\timport('./ScriptIterator'),\n\t\t\timport('./LayerMng'),\n\t\t\timport('./EventMng'),\n\t\t\timport('./Button'),\n\t\t]);\n\n\t\tButton.init(cfg);\n\n\t\t// 変数\n\t\tconst val = new Variable(this.sys, cfg, this.#hTag);\n\t\tconst prpPrs = new PropParser(val, cfg.oCfg.init.escape);\n\t\tthis.#setVal_Nochk = (scope, nm, v, autocast)=> val.setVal_Nochk(scope, nm, v, autocast);\n\t\tthis.#getValAmpersand = v=> prpPrs.getValAmpersand(v);\n\t\tthis.#parse = s=> prpPrs.parse(s);\n\n\t\t// システム\n\t\tawait Promise.allSettled(this.sys.init(this.#hTag, app, val));\t// 変数準備完了\n\n\t\t// BGM・効果音\n\t\tconst sndMng = new SoundMng(cfg, this.#hTag, val, this, this.sys);\n\t\tthis.#aDest.unshift(()=> sndMng.destroy());\n\n\t\t// 条件分岐、ラベル・ジャンプ、マクロ、しおり\n\t\tthis.#scrItr = new ScriptIterator(cfg, this.#hTag, this, val, prpPrs, sndMng, this.sys);\n\t\tthis.#aDest.unshift(()=> this.#scrItr.destroy());\n\n\t\t// デバッグ・その他\n\t\tconst dbgMng = new DebugMng(this.sys, this.#hTag, this.#scrItr);\n\t\tthis.#aDest.unshift(()=> dbgMng.destroy());\n\t\tthis.errScript = (mes: string, isThrow = true)=> {\n\t\t\tthis.stop();\n\t\t\tDebugMng.myTrace(mes);\n\t\t\tif (CmnLib.debugLog) console.log('🍜 SKYNovel err!');\n\t\t\tif (isThrow) throw mes;\n\t\t}\n\n\t\t// レイヤ共通、文字レイヤ、画像レイヤ\n\t\tthis.#layMng = new LayerMng(cfg, this.#hTag, app, val, this, this.#scrItr, this.sys, sndMng, prpPrs);\n\t\tthis.#aDest.unshift(()=> this.#layMng.destroy());\n\n\t\t// イベント\n\t\tthis.#evtMng = new EventMng(cfg, this.#hTag, app, this, this.#layMng, val, sndMng, this.#scrItr, this.sys);\n\t\tthis.#aDest.unshift(()=> this.#evtMng.destroy());\n\n\t\tthis.#aDest.unshift(()=> {\n\t\t\tthis.stop();\n\t\t\tthis.#isLoop = false;\n\n\t\t\tconst fncDummy = ()=> true;\n\t\t\tfor (const key in this.#hTag) this.#hTag[<keyof T_HTag>key] = fncDummy;\n\t\t});\n\t}\n\n\n\tdestroy() {\n\t\tthis.resume = this.destroy = ()=> { /* empty */ };\t// destroy()連打対策\n\n\t\tthis.cvs.parentElement?.removeChild(this.cvs);\n\t\t\t// (ギャラリーで)document.body はエラーになる\n\t\tfor (const f of this.#aDest) f();\n\t\tthis.#aDest = [];\n\t}\n\n\n\terrScript = (_mes: string, _isThrow = true)=> { /* empty */ }\n\n\n\tresumeByJumpOrCall(hArg: TArg) {\n\t\tif (hArg.url) {\n\t\t\tthis.#hTag.navigate_to(hArg);\n\t\t\tthis.#scrItr.jumpJustBefore();\n\t\t\treturn;\n\t\t}\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-base-to-string\n\t\tthis.#setVal_Nochk('tmp', 'sn.eventArg', String(hArg.arg ?? ''));\n\t\tthis.#setVal_Nochk('tmp', 'sn.eventLabel', hArg.label ?? '');\n// console.log(`📜 %cresumeByJumpOrCall:%o`, 'color:#3B0;', hArg);\n\t\tif (argChk_Boolean(hArg, 'call', false)) {\n\t\t\tthis.#scrItr.subIdxToken();\t// 「コール元の次」に進めず、「コール元」に戻す\n\t\t\tif (this.#hTag.call(hArg)) return;\n\t\t}\n\t\telse {\n\t\t\tthis.#hTag.clear_event({});\n\t\t\tif (this.#hTag.jump(hArg)) return;\n\t\t}\n\t\tthis.resume();\n\t}\n\t\t#setVal_Nochk = (_scope: Scope, _nm: string, _val: T_VAL_BSNU, _autocast = false)=> { /* empty */ }\n\n\tresume() {\n// console.log(`📜🟢 resume!`);\n\t\t// スクリプトが動くとき、ブレイクマークなど消去\n\t\tthis.#layMng.clearBreak();\n\t\tthis.#scrItr.noticeBreak(false);\n\t\tthis.#evtMng.hideHint();\n\n\t\tqueueMicrotask(()=> {void this.#main()});\n\t}\n\treadonly stop = ()=> {\n// console.log(`📜🔴 stop!`);\n\t\tthis.#scrItr.noticeBreak(true);\n\t};\n\n\tsetLoop(isLoop: boolean, mes = '') {\n\t\t///console.log('setLoop:'+ (isLoop ?'resume!' :'stop!') +' mes:'+ mes);\n\t\t// eslint-disable-next-line no-cond-assign\n\t\tif (this.#isLoop = isLoop) this.resume(); else this.stop();\n\t\tthis.sys.setTitleInfo(mes ?` -- ${mes}中` :'');\n\t}\n\t// oxlint-disable-next-line no-unused-private-class-members\n\t#isLoop = true;\n\n\t//MARK: メイン処理(シナリオ解析)\n\tasync #main() {\n\t\tlet errHd = '';\n\t\ttry {\n\t\t\twhile (this.#isLoop) {\n\t\t\t\tlet token = this.#scrItr.nextToken();\n\t\t\t\tif (! token) return;\t// 初期化前に終了した場合向け\n\n\t\t\t\tconst uc = token.charCodeAt(0);\t// TokenTopUnicode\n\t\t\t\t// \\t タブ\n\t\t\t\tif (uc === 9) continue;\n\t\t\t\t// \\n 改行\n\t\t\t\tif (uc === 10) {this.#scrItr.addLineNum(token.length); continue}\n\t\t\t\t// [ タグ開始\n\t\t\t\tif (uc === 91) {\n\t\t\t\t\terrHd = 'タグ開始';\n\t\t\t\t\tif (this.#scrItr.isBreak(token)) return;\n\n\t\t\t\t\tconst [tag_name, args] = tagToken2Name_Args(token);\n\t\t\t\t\terrHd = `[${tag_name}]例外`;\n\n\t\t\t\t\tconst cl = (token.match(/\\n/g) ?? []).length;\n\t\t\t\t\tif (cl > 0) this.#scrItr.addLineNum(cl);\n\t\t\t\t\tif (await this.#scrItr.タグ解析(\n\t\t\t\t\t\t<keyof T_HTag>tag_name, args\n\t\t\t\t\t)) {this.stop(); return}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t// & 変数操作・変数表示\n\t\t\t\t// an時代・瀬戸愛羅さんより https://famibee.blog.fc2.com/blog-entry-245.html\n\t\t\t\tif (uc === 38) {\n\t\t\t\t\tif (! token.endsWith('&')) {\n\t\t\t\t\t\terrHd = '変数計算';\n\t\t\t\t\t\tif (this.#scrItr.isBreak(token)) return;\n\t\t\t\t\t\tconst o = splitAmpersand(token.slice(1));\n\t\t\t\t\t\to.name = this.#getValAmpersand(o.name);\n\t\t\t\t\t\to.text = String(this.#parse(o.text));\n\t\t\t\t\t\tthis.#hTag.let(o);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\terrHd = '変数操作';\n\t\t\t\t\tif (token.charAt(1) === '&') throw new Error('「&表示&」書式では「&」指定が不要です');\n\t\t\t\t\ttoken = String(this.#parse( token.slice(1, -1) ));\n\t\t\t\t\t\t// -> 文字表示 へ\n\t\t\t\t}\n\t\t\t\t// ; コメント\n\t\t\t\telse if (uc === 59) continue;\n\t\t\t\t// * ラベル\n\t\t\t\telse if (uc === 42 && token.length > 1) continue;\n\n\t\t\t\t// 文字表示\n\t\t\t\terrHd = '文字表示';\n\t\t\t\tthis.#layMng.setNormalChWait();\n\t\t\t\tconst tl = this.#layMng.currentTxtlayForeNeedErr;\n\t\t\t\ttl.tagCh(token);\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tthis.errScript(`${errHd} ${\n\t\t\t\te instanceof Error ?`mes=${e.message}(${e.name})` :String(e)\n\t\t\t}`, false);\n\t\t}\n\t}\n\t\t#getValAmpersand\t= (_v: string)=> '';\n\t\t#parse\t\t\t\t: (_s: string)=> T_VAL_DATA;\n\n}\n"],"names":["PROTOCOL_USERDATA","PROTOCOL_DL","Config","ConfigBase","sys","c","fn","res","dec","oCfg","CmnLib","extptn","SEARCH_PATH_ARG_EXT","idx2LnCol","sSn","idx","lenNm","ln","ch","len","AnalyzeTagArg","#REG_TAGARG","args","#hPrm","#isKomeParam","groups","key","val","val2","def","def2","literal","token","hRng","index","z","lenVnm","k_ch","k_ln","v_ln","v_ch","REG_TAG","tagToken2Name_Args","g","nm","tagToken2Name","splitAmpersand","equa","cnt_equa","e0","e1","e2","Grammar","cfg","#REG_TOKEN","ce","#hC2M","#REG_CANTC2M","#REG_TOKEN_NOTXT","hArg","hTag","scr","start_idx","name","text","op","cl","#replaceScr_C2M","char","#REGC2M","#regStrC2M","#regStrC2M4not","a","b","txt","tkn","r","#replaceScript_Wildcard","#REG_WILDCARD","#REG_WILDCARD2","i","tag_name","#alzTagArg","p_fn","ext","v","nt","getFn","lnum","del","j","macro","SN_ID","Main","utils.skipHello","m","#init","e","#hTag","#scrItr","#layMng","#evtMng","#aDest","hApp","parseColor","cvs","clone_cvs","p","app","Application","utils.clearTextureCache","cc","Variable","PropParser","SoundMng","ScriptIterator","LayerMng","EventMng","Button","prpPrs","#setVal_Nochk","scope","autocast","#getValAmpersand","#parse","s","sndMng","dbgMng","DebugMng","mes","isThrow","#isLoop","fncDummy","f","_mes","_isThrow","argChk_Boolean","_scope","_nm","_val","_autocast","#main","isLoop","errHd","uc","o","_v"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Main.js","names":["#init","sys: SysBase","hApp: IApplicationOptions","#aDest","#hTag","#setVal_Nochk","#getValAmpersand","#parse","#scrItr","#layMng","#evtMng","#isLoop","#main"],"sources":["../src/sn/Main.ts"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {CmnLib, argChk_Boolean, parseColor} from './CmnLib';\nimport type {T_HTag, TArg} from './Grammar';\nimport type {T_Main, Scope, T_VAL_BSNU, T_VAL_DATA} from './CmnInterface';\nimport type {SysBase} from './SysBase';\nimport {DebugMng} from './DebugMng';\nimport {Config} from './Config';\nimport {splitAmpersand, tagToken2Name_Args} from './Grammar';\nimport type {ScriptIterator} from './ScriptIterator';\nimport type {LayerMng} from './LayerMng';\nimport type {EventMng} from './EventMng';\n\nimport {type IApplicationOptions, Application, utils} from 'pixi.js';\n\n\nconst\tSN_ID\t= 'skynovel';\n\n\nexport class Main implements T_Main {\n\tstatic\tasync generate(sys: SysBase): Promise<Main> {\n\t\tutils.skipHello();\n\n\t\tconst m = new Main(sys);\n\t\tawait m.#init()\n\t\t.catch((e: unknown)=> console.error('Main.generate err e:%o', e));\n\n\t\treturn m;\n\t}\n\n\n\tcvs\t\t\t: HTMLCanvasElement;\n\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t#hTag\t\t: T_HTag\t\t= Object.create(null);\t// タグ処理辞書\n\n\t#scrItr\t\t: ScriptIterator;\n\t#layMng\t\t: LayerMng;\n\t#evtMng\t\t: EventMng;\n\n\t#aDest\t\t: (()=> void)[]\t\t= [];\n\n\n\tprivate constructor(private readonly sys: SysBase) {}\n\n\tasync #init() {\n\t\tconst cfg = await Config.generate(this.sys);\n\t\tthis.sys.setMain(this, cfg);\n\n\t\tconst hApp: IApplicationOptions = {\n\t\t\twidth\t\t\t: cfg.oCfg.window.width,\n\t\t\theight\t\t\t: cfg.oCfg.window.height,\n\t\t\tbackgroundColor\t: parseColor(String(cfg.oCfg.init.bg_color)),\n\t\t\t\t// このString()は後方互換性のため必須\n\t\t\tresolution\t\t: globalThis.devicePixelRatio,\n\t\t};\n\n\t\tconst cvs = <HTMLCanvasElement | null>document.getElementById(SN_ID);\n\t\tif (cvs) {\n\t\t\tconst clone_cvs = <HTMLCanvasElement>cvs.cloneNode(true);\n\t\t\tclone_cvs.id = SN_ID;\n\t\t\thApp.view = cvs;\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst p = cvs.parentNode!;\n\t\t\tthis.#aDest.unshift(()=> p.appendChild(clone_cvs));\n\t\t}\n\t\telse {\t// 自動的に作ってくれるが、どうも appendChild に遅延があるので\n\t\t\tconst c = document.createElement('canvas');\n\t\t\tc.id = SN_ID;\n\t\t\thApp.view = c;\n\t\t\tdocument.body.appendChild(c);\n\t\t\tthis.#aDest.unshift(()=> document.body.removeChild(c));\n\t\t}\n\n\t\tconst app = new Application(hApp);\n\t\tthis.#aDest.unshift(()=> {\n\t\t\tutils.clearTextureCache();\n\t\t\tthis.sys.destroy();\n\t\t\tapp.destroy(false);\t// remove canvas from DOM が非同期なのでウチがやる\n\t\t});\n\n\t\tthis.cvs = app.view;\n\t\tthis.cvs.id = SN_ID +'_act';\n\t\tif (! cvs) document.body.appendChild(this.cvs);\n\n\n\t\tconst cc = document.createElement('canvas').getContext('2d');\n\t\tif (! cc) throw '#init cc err';\n\t\tCmnLib.cc4ColorName = cc;\n\n\t\tconst [{Variable}, {PropParser}, {SoundMng}, {ScriptIterator}, {LayerMng}, {EventMng}, {Button}] = await Promise.all([\n\t\t\timport('./Variable'),\n\t\t\timport('./PropParser'),\n\t\t\timport('./SoundMng'),\n\t\t\timport('./ScriptIterator'),\n\t\t\timport('./LayerMng'),\n\t\t\timport('./EventMng'),\n\t\t\timport('./Button'),\n\t\t]);\n\n\t\tButton.init(cfg);\n\n\t\t// 変数\n\t\tconst val = new Variable(this.sys, cfg, this.#hTag);\n\t\tconst prpPrs = new PropParser(val, cfg.oCfg.init.escape);\n\t\tthis.#setVal_Nochk = (scope, nm, v, autocast)=> val.setVal_Nochk(scope, nm, v, autocast);\n\t\tthis.#getValAmpersand = v=> prpPrs.getValAmpersand(v);\n\t\tthis.#parse = s=> prpPrs.parse(s);\n\n\t\t// システム\n\t\tawait Promise.allSettled(this.sys.init(this.#hTag, app, val));\t// 変数準備完了\n\n\t\t// BGM・効果音\n\t\tconst sndMng = new SoundMng(cfg, this.#hTag, val, this, this.sys);\n\t\tthis.#aDest.unshift(()=> sndMng.destroy());\n\n\t\t// 条件分岐、ラベル・ジャンプ、マクロ、しおり\n\t\tthis.#scrItr = new ScriptIterator(cfg, this.#hTag, this, val, prpPrs, sndMng, this.sys);\n\t\tthis.#aDest.unshift(()=> this.#scrItr.destroy());\n\n\t\t// デバッグ・その他\n\t\tconst dbgMng = new DebugMng(this.sys, this.#hTag, this.#scrItr);\n\t\tthis.#aDest.unshift(()=> dbgMng.destroy());\n\t\tthis.errScript = (mes, isThrow)=> {\n\t\t\tthis.stop();\n\t\t\tDebugMng.myTrace(mes);\n\t\t\tif (CmnLib.debugLog) console.log('🍜 SKYNovel err!');\n\t\t\tif (isThrow) throw mes;\n\t\t}\n\n\t\t// レイヤ共通、文字レイヤ、画像レイヤ\n\t\tthis.#layMng = new LayerMng(cfg, this.#hTag, app, val, this, this.#scrItr, this.sys, sndMng, prpPrs);\n\t\tthis.#aDest.unshift(()=> this.#layMng.destroy());\n\n\t\t// イベント\n\t\tthis.#evtMng = new EventMng(cfg, this.#hTag, app, this, this.#layMng, val, sndMng, this.#scrItr, this.sys);\n\t\tthis.#aDest.unshift(()=> this.#evtMng.destroy());\n\n\t\tthis.#aDest.unshift(()=> {\n\t\t\tthis.stop();\n\t\t\tthis.#isLoop = false;\n\n\t\t\tconst fncDummy = ()=> true;\n\t\t\tfor (const key in this.#hTag) this.#hTag[<keyof T_HTag>key] = fncDummy;\n\t\t});\n\t}\n\n\n\tdestroy() {\n\t\tthis.resume = this.destroy = ()=> { /* empty */ };\t// destroy()連打対策\n\n\t\tthis.cvs.parentElement?.removeChild(this.cvs);\n\t\t\t// (ギャラリーで)document.body はエラーになる\n\t\tfor (const f of this.#aDest) f();\n\t\tthis.#aDest = [];\n\t}\n\n\n\terrScript = (_mes: string, _isThrow = true)=> { /* empty */ }\n\n\n\tresumeByJumpOrCall(hArg: TArg) {\n\t\tif (hArg.url) {\n\t\t\tthis.#hTag.navigate_to(hArg);\n\t\t\tthis.#scrItr.jumpJustBefore();\n\t\t\treturn;\n\t\t}\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-base-to-string\n\t\tthis.#setVal_Nochk('tmp', 'sn.eventArg', String(hArg.arg ?? ''));\n\t\tthis.#setVal_Nochk('tmp', 'sn.eventLabel', hArg.label ?? '');\n// console.log(`📜 %cresumeByJumpOrCall:%o`, 'color:#3B0;', hArg);\n\t\tif (argChk_Boolean(hArg, 'call', false)) {\n\t\t\tthis.#scrItr.subIdxToken();\t// 「コール元の次」に進めず、「コール元」に戻す\n\t\t\tif (this.#hTag.call(hArg)) return;\n\t\t}\n\t\telse {\n\t\t\tthis.#hTag.clear_event({});\n\t\t\tif (this.#hTag.jump(hArg)) return;\n\t\t}\n\t\tthis.resume();\n\t}\n\t\t#setVal_Nochk = (_scope: Scope, _nm: string, _val: T_VAL_BSNU, _autocast = false)=> { /* empty */ }\n\n\tresume() {\n// console.log(`📜🟢 resume!`);\n\t\t// スクリプトが動くとき、ブレイクマークなど消去\n\t\tthis.#layMng.clearBreak();\n\t\tthis.#scrItr.noticeBreak(false);\n\t\tthis.#evtMng.hideHint();\n\n\t\tqueueMicrotask(()=> {void this.#main()});\n\t}\n\treadonly stop = ()=> {\n// console.log(`📜🔴 stop!`);\n\t\tthis.#scrItr.noticeBreak(true);\n\t};\n\n\tsetLoop(isLoop: boolean, mes = '') {\n\t\t///console.log('setLoop:'+ (isLoop ?'resume!' :'stop!') +' mes:'+ mes);\n\t\t// eslint-disable-next-line no-cond-assign\n\t\tif (this.#isLoop = isLoop) this.resume(); else this.stop();\n\t\tthis.sys.setTitleInfo(mes ?` -- ${mes}中` :'');\n\t}\n\t// oxlint-disable-next-line no-unused-private-class-members\n\t#isLoop = true;\n\n\t//MARK: メイン処理(シナリオ解析)\n\tasync #main() {\n\t\tlet errHd = '';\n\t\ttry {\n\t\t\twhile (this.#isLoop) {\n\t\t\t\tlet token = this.#scrItr.nextToken();\n\t\t\t\tif (! token) return;\t// 初期化前に終了した場合向け\n\n\t\t\t\tconst uc = token.charCodeAt(0);\t// TokenTopUnicode\n\t\t\t\t// \\t タブ\n\t\t\t\tif (uc === 9) continue;\n\t\t\t\t// \\n 改行\n\t\t\t\tif (uc === 10) {this.#scrItr.addLineNum(token.length); continue}\n\t\t\t\t// [ タグ開始\n\t\t\t\tif (uc === 91) {\n\t\t\t\t\terrHd = 'タグ開始';\n\t\t\t\t\tif (this.#scrItr.isBreak(token)) return;\n\n\t\t\t\t\tconst [tag_name, args] = tagToken2Name_Args(token);\n\t\t\t\t\terrHd = `[${tag_name}]例外`;\n\n\t\t\t\t\tconst cl = (token.match(/\\n/g) ?? []).length;\n\t\t\t\t\tif (cl > 0) this.#scrItr.addLineNum(cl);\n\t\t\t\t\tif (await this.#scrItr.タグ解析(\n\t\t\t\t\t\t<keyof T_HTag>tag_name, args\n\t\t\t\t\t)) {this.stop(); return}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t// & 変数操作・変数表示\n\t\t\t\t// an時代・瀬戸愛羅さんより https://famibee.blog.fc2.com/blog-entry-245.html\n\t\t\t\tif (uc === 38) {\n\t\t\t\t\tif (! token.endsWith('&')) {\n\t\t\t\t\t\terrHd = '変数計算';\n\t\t\t\t\t\tif (this.#scrItr.isBreak(token)) return;\n\t\t\t\t\t\tconst o = splitAmpersand(token.slice(1));\n\t\t\t\t\t\to.name = this.#getValAmpersand(o.name);\n\t\t\t\t\t\to.text = String(this.#parse(o.text));\n\t\t\t\t\t\tthis.#hTag.let(o);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\terrHd = '変数操作';\n\t\t\t\t\tif (token.charAt(1) === '&') throw new Error('「&表示&」書式では「&」指定が不要です');\n\t\t\t\t\ttoken = String(this.#parse( token.slice(1, -1) ));\n\t\t\t\t\t\t// -> 文字表示 へ\n\t\t\t\t}\n\t\t\t\t// ; コメント\n\t\t\t\telse if (uc === 59) continue;\n\t\t\t\t// * ラベル\n\t\t\t\telse if (uc === 42 && token.length > 1) continue;\n\n\t\t\t\t// 文字表示\n\t\t\t\terrHd = '文字表示';\n\t\t\t\tthis.#layMng.setNormalChWait();\n\t\t\t\tconst tl = this.#layMng.currentTxtlayForeNeedErr;\n\t\t\t\ttl.tagCh(token);\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tthis.errScript(`${errHd} ${\n\t\t\t\te instanceof Error ?`mes=${e.message}(${e.name})` :String(e)\n\t\t\t}`, false);\n\t\t}\n\t}\n\t\t#getValAmpersand\t= (_v: string)=> '';\n\t\t#parse\t\t\t\t: (_s: string)=> T_VAL_DATA;\n\n}\n"],"mappings":"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"}
|