dsh-plugin-beyond-simulator 2.2.0 → 2.2.2
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 +83 -132
- package/dsh-plugin/dist/client.js +28 -6
- package/dsh-plugin/dist/index.js +26 -23
- package/dsh-plugin/dist/play-renderer.js +108 -107
- package/dsh-plugin/dist/worker.js +20 -17
- package/dsh-plugin/lib/play.html +2 -2
- package/dsh-plugin/presets/wonderland-lua-builder/README.md +1 -1
- package/dsh-plugin/presets/wonderland-lua-builder/evals/agent-behavior.md +4 -4
- package/dsh-plugin/presets/wonderland-lua-builder/skills/qxqy-game-studio/references/07-device-validation.md +4 -4
- package/dsh-plugin/skill.md +12 -4
- package/package.json +1 -1
|
@@ -1,4 +1,27 @@
|
|
|
1
|
-
(()=>{var Ye={"\u5F53\u524D\u540E\u53F0\u5C1A\u672A\u52A0\u8F7D\u5B57\u4F53\u8BBE\u7F6E\u529F\u80FD\uFF0C\u8BF7\u91CD\u542F Web \u6216 Harness \u5BBF\u4E3B\u540E\u91CD\u8BD5\u3002":"The running backend does not support font settings yet. Restart the Web or Harness host, then retry.","\u5F53\u524D\u540E\u53F0\u5C1A\u672A\u52A0\u8F7D\u68C0\u67E5\u66F4\u65B0\u529F\u80FD\uFF0C\u8BF7\u91CD\u542F Web \u6216 Harness \u5BBF\u4E3B\u540E\u91CD\u8BD5\u3002":"The running backend does not support update checks yet. Restart the Web or Harness host, then retry.","\u8BF7\u8F93\u5165\u516D\u4F4D\u989C\u8272\uFF0C\u4F8B\u5982 #FF8800":"Enter a six-digit color, e.g. #FF8800","\u900F\u660E\u5EA6\u8BF7\u8F93\u5165 0\u2013100 \u7684\u6574\u6570":"Enter an integer from 0 to 100 for opacity","Alpha\uFF1A0% \u5B8C\u5168\u900F\u660E\uFF0C100% \u5B8C\u5168\u4E0D\u900F\u660E":"Alpha: 0% is transparent; 100% is opaque","{0}\u4E0E\u900F\u660E\u5EA6":"{0} and opacity",\u6253\u5F00\u53D6\u8272\u5668:"Open color picker","{0}\u53D6\u8272\u5668":"{0} color picker",\u900F\u660E\u5EA6:"Opacity","{0}\u900F\u660E\u5EA6\u6ED1\u5757":"{0} opacity slider","{0}\u900F\u660E\u5EA6":"{0} opacity","Lua \u7D22\u5F15\u5F85\u540C\u6B65\uFF08{0} \u9879\uFF09\xB7 \u5C55\u5F00":"Lua index references need updating ({0}) \xB7 Expand","Lua \u7D22\u5F15\u540C\u6B65":"Update Lua Index References","\u4E0B\u4E00\u6B65\uFF1A\u540C\u6B65 Lua \u7D22\u5F15\u5F15\u7528\uFF08{0} \u9879\uFF09":"Next: Update Lua index references ({0})",\u811A\u672C\u5168\u91CF\u66FF\u6362\u5DF2\u5B8C\u6210:"Script index replacement completed",\u5173\u95ED\u7D22\u5F15\u540C\u6B65\u63D0\u793A:"Close index update notice","\u6536\u8D77\u63D0\u793A\uFF0C\u4FDD\u7559\u5F85\u540C\u6B65\u8BB0\u5F55":"Collapse notice and keep pending changes",\u5173\u95ED:"Close","\u540C\u6B65\u4EFB\u52A1\uFF08\u7C98\u8D34\u7ED9\u5F53\u524D\u9879\u76EE\u7684 AI\uFF09":"Update task (paste into this project's AI chat)","AI \u7D22\u5F15\u540C\u6B65\u4EFB\u52A1":"AI task: Update index references","AI \u5DF2\u5904\u7406\uFF0C\u91CD\u65B0\u8F7D\u5165\u5B58\u6863":"AI finished \u2014 reload the save","\u63A7\u4EF6\u7D22\u5F15\u5DF2\u4FEE\u6539\uFF0C\u8BF7\u9009\u62E9\u4E00\u79CD\u65B9\u5F0F\u540C\u6B65\u811A\u672C\u3002":"Control indices changed. Choose how to update script references.","\u8BF7\u68C0\u67E5\u66FF\u6362\u7ED3\u679C\u5E76\u4FDD\u5B58\u5B58\u6863\uFF0C\u518D\u5230\u300CLua \u811A\u672C \u2192 \u5B9E\u673A\u811A\u672C\u540C\u6B65\u300D\u66F4\u65B0\u6E38\u620F\u91CC\u7684\u6587\u4EF6\u5E76\u91CD\u65B0\u8BD5\u73A9\u3002":"Review the replacements and save. Then use Lua Scripts \u2192 Sync Scripts to Game and test again in the game.",\u7D22\u5F15\u540C\u6B65\u65B9\u5F0F:"Update method",\u5168\u91CF\u66FF\u6362\u811A\u672C\u7D22\u5F15:"Replace All Script Indices","\u53EF\u80FD\u9519\u8BEF\u5730\u66FF\u6362\u975E\u7D22\u5F15\u5185\u5BB9\u3002":"This may replace numbers unrelated to control indices.","\u6309\u5B8C\u6574\u5341\u8FDB\u5236\u6570\u5B57\u66FF\u6362\u6240\u6709\u5DF2\u767B\u8BB0\u811A\u672C\uFF0C\u5305\u62EC\u914D\u7F6E\u8868\u3001\u5B57\u7B26\u4E32\u548C\u6CE8\u91CA\uFF1B\u540C\u65F6\u66F4\u65B0\u5185\u5BB9\u4E00\u81F4\u7684\u5DE5\u4F5C\u533A\u6E90\u6587\u4EF6\uFF0C\u66FF\u6362\u524D\u81EA\u52A8\u5907\u4EFD\u3002":"Replace whole decimal numbers in all registered scripts, including tables, strings, and comments. Matching workspace source files are updated too, with backups.","\u590D\u5236\u63D0\u793A\u8BCD\u7ED9 AI":"Copy Task for AI","\u5148\u4FDD\u5B58\u6700\u65B0\u5B58\u6863\uFF0C\u518D\u590D\u5236\u5305\u542B\u6620\u5C04\u8BFB\u53D6\u65B9\u5F0F\u548C\u811A\u672C\u4F4D\u7F6E\u7684\u63D0\u793A\u8BCD\uFF0C\u7531 AI \u5224\u65AD\u54EA\u4E9B\u5F15\u7528\u9700\u8981\u66F4\u65B0\u3002":"Save first, then copy the index mapping instructions and script locations so the AI can identify references to update.","\u67E5\u770B\u7D22\u5F15\u53D8\u66F4\uFF08{0} \u9879\uFF09":"View index changes ({0})","\u8FD9\u91CC\u663E\u793A\u524D 20 \u9879\uFF1B\u5B8C\u6574\u6620\u5C04\u968F\u5B58\u6863\u4FDD\u5B58\uFF0C\u590D\u5236\u7684\u4EFB\u52A1\u4F1A\u5F15\u5BFC AI \u8BFB\u53D6\u5168\u90E8\u3002":"Showing the first 20 changes. The save includes the complete mapping; the copied task tells the AI how to read it.","Lua \u7D22\u5F15\u540C\u6B65\u95EE\u9898":"Lua index update issues","\u6E90\u7801\u6587\u4EF6\u6216\u7D22\u5F15\u6620\u5C04\u5B58\u5728\u51B2\u7A81\uFF0C\u672C\u6B21\u6CA1\u6709\u4FEE\u6539\u811A\u672C\u3002\u53EF\u590D\u5236\u63D0\u793A\u8BCD\u7ED9 AI \u5904\u7406\u3002":"Source files or index mappings conflict. No scripts were changed. You can copy a task for the AI.",\u5185\u8054\u811A\u672C:"Inline script","\u7B2C {0} \u884C\uFF1A":"Line {0}:","\u5176\u4F59\u95EE\u9898\u8BF7\u7531 AI \u6838\u5BF9\u3002":"Ask the AI to review the remaining issues.","\u5DF2\u66FF\u6362 {0} \u4E2A\u811A\u672C\u7684 {1} \u5904\u6587\u672C\uFF0C\u66F4\u65B0 {2} \u4E2A\u9879\u76EE\u6587\u4EF6\u3002\u5907\u4EFD\uFF1A{3}":"Replaced {1} occurrences in {0} scripts and updated {2} project files. Backups: {3}","\u524D\u5F80 Lua \u811A\u672C":"Open Lua Scripts",\u65E0\u6CD5\u8BFB\u53D6\u5B57\u4F53\u8BBE\u7F6E:"Unable to read font settings","\u627E\u5230\u5B57\u4F53\uFF1A{0}\u3002":"Font found: {0}.","\u9ED8\u8BA4\u4F4D\u7F6E\u672A\u627E\u5230\u5B57\u4F53\uFF0C\u5C06\u4F7F\u7528\u7CFB\u7EDF\u5B57\u4F53\u3002":"No font found in the default locations. The system font will be used.","\u5DF2\u4FDD\u5B58\u3002{0}\u91CD\u542F Web\u3001MCP \u6216 Harness \u5BBF\u4E3B\u540E\uFF0C\u5237\u65B0\u7F16\u8F91\u5668\u53CA\u8BD5\u73A9\u9875\u751F\u6548\u3002":"Saved. {0}Restart the Web, MCP, or Harness host, then refresh the editor and playtest pages to apply.",\u5B57\u4F53\u8BBE\u7F6E:"Font Settings","\u7528\u4E8E\u6574\u4E2A\u6A21\u62DF\u5668\u754C\u9762\u3001\u7F16\u8F91\u753B\u5E03\u3001\u8BD5\u73A9\u53CA\u622A\u56FE\u3002\u8BBE\u7F6E\u4EC5\u4FDD\u5B58\u5728\u672C\u673A\uFF0C\u91CD\u542F\u5BBF\u4E3B\u540E\u751F\u6548\u3002":"Used throughout the simulator interface, editing canvas, playtests, and screenshots. Settings stay on this machine and apply after restarting the host.","\u5F53\u524D\u5B57\u4F53\uFF1A{0}":"Active font: {0}",\u7CFB\u7EDF\u5B57\u4F53:"System font","\u5F53\u524D\u7531\u73AF\u5883\u53D8\u91CF QXQY_FONT_PATH \u6307\u5B9A\u3002\u79FB\u9664\u8BE5\u53D8\u91CF\u5E76\u91CD\u542F\u5BBF\u4E3B\u540E\uFF0C\u53EF\u5728\u8FD9\u91CC\u4FEE\u6539\u3002":"QXQY_FONT_PATH currently overrides these settings. Remove it and restart the host to edit them here.",\u5B57\u4F53\u6765\u6E90:"Font source",\u81EA\u52A8\u5C1D\u8BD5\u539F\u795E\u7684\u9ED8\u8BA4\u5B89\u88C5\u4F4D\u7F6E:"Look in Genshin Impact's default installation locations",\u6307\u5B9A\u672C\u673A\u5B57\u4F53\u6587\u4EF6:"Use a local font file",\u4F7F\u7528\u7CFB\u7EDF\u5B57\u4F53:"Use the system font",\u5B57\u4F53\u6587\u4EF6\u8DEF\u5F84:"Font file path","\u586B\u5199 TTF / OTF \u7684\u7EDD\u5BF9\u8DEF\u5F84\uFF0C\u6700\u5927 32 MiB\uFF1B\u53EF\u4EE5\u76F4\u63A5\u7C98\u8D34\u5E26\u5F15\u53F7\u7684 Windows \u8DEF\u5F84\u3002":"Enter an absolute TTF / OTF path (up to 32 MiB). Quoted Windows paths are accepted.","\u6309\u987A\u5E8F\u5C1D\u8BD5\u4EE5\u4E0B\u4F4D\u7F6E\uFF1B\u90FD\u672A\u627E\u5230\u65F6\u4F7F\u7528\u7CFB\u7EDF\u5B57\u4F53\u3002\u5B89\u88C5\u5728\u5176\u4ED6\u76D8\u7B26\u65F6\u8BF7\u9009\u62E9\u201C\u6307\u5B9A\u672C\u673A\u5B57\u4F53\u6587\u4EF6\u201D\u3002":"These locations are checked in order. If none contains a font, the system font is used. For another drive, select \u201CUse a local font file\u201D.","\u5F53\u524D\u7CFB\u7EDF\u4E0D\u81EA\u52A8\u67E5\u627E\uFF0C\u8BF7\u6307\u5B9A\u5B57\u4F53\u6587\u4EF6\u3002":"Automatic font discovery is unavailable on this system. Specify a font file.","\u6709\u5DF2\u4FDD\u5B58\u7684\u5B57\u4F53\u8BBE\u7F6E\uFF0C\u91CD\u542F\u5BBF\u4E3B\u5E76\u5237\u65B0\u9875\u9762\u540E\u751F\u6548\u3002":"Font settings have been saved. Restart the host and refresh the pages to apply them.","\u6B63\u5728\u8BFB\u53D6\u8BBE\u7F6E\u2026":"Loading settings\u2026","\u4FDD\u5B58\u4E2D\u2026":"Saving...",\u4FDD\u5B58\u8BBE\u7F6E:"Save Settings","\u56FE\u7247 {0} \u52A0\u8F7D\u5931\u8D25":"Failed to load image {0}","\u52A0\u8F7D\u56FE\u7247 {0}\u2026":"Loading image {0}\u2026","\u56FE\u7247 {0}":"Image {0}",\u56FE\u7247\u7C7B\u578B:"Image Type",\u5143\u6570\u636E\u52A0\u8F7D\u5931\u8D25:"Failed to load image metadata","\u8BFB\u53D6\u7D20\u6750\u8FB9\u754C\u2026":"Loading asset borders\u2026",\u57FA\u7840:"Basic",\u62C9\u4F38:"Stretch",\u5BA2\u6237\u7AEF\u63A7\u4EF6\u5BB9\u5668:"Client Control Container",\u5BB9\u5668\u8282\u70B9:"Container Control",\u6587\u672C\u6846:"Text Box",\u5149\u6807\u68C0\u6D4B\u533A\u57DF:"CursorEventArea",\u6A21\u677F\u5F15\u7528\u63A7\u4EF6:"Reference Control",\u7F51\u683C\u89C6\u7A97:"Grid Scroller",\u56FE\u7247:"Image",\u9884\u8BBE\u6309\u94AE:"Preset Button",\u6587\u672C\u89C6\u7A97:"Text Window",\u6309\u952E\u63D0\u793A:"Key Hint",\u754C\u9762\u52A8\u6548:"UI Animation",\u5168\u5C4F\u52A8\u6548:"Fullscreen UI Animation",\u5149\u6807\u68C0\u6D4B:"CursorEventArea",\u6A21\u677F\u5F15\u7528:"Reference Control","\u5BFC\u51FA\u5185\u5BB9\u89E3\u7801\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u6216\u5237\u65B0\u9875\u9762":"Unable to decode the export. Retry or refresh the page.","PC KEYBOARD \u753B\u5E03\uFF1A1600\xD7900 / 2100\xD7900":"PC KEYBOARD canvas: 1600\xD7900 / 2100\xD7900",\u624B\u673A:"Mobile","\u624B\u673A TOUCHSCREEN \u753B\u5E03\uFF1A1280\xD7720 / 1560\xD7720 / 1280\xD7960":"Mobile TOUCHSCREEN canvas: 1280\xD7720 / 1560\xD7720 / 1280\xD7960",\u5C1A\u65E0\u53EF\u7F16\u8F91\u503C:"No editable value available","\u672A\u8BC6\u522B\u9009\u9879 {0}\uFF08\u4FDD\u7559\u539F\u503C\uFF09":"Unknown option {0} (original value preserved)",\u7A7A:"None","\u65B0\u5EFA\u5E76\u7ED1\u5B9A{0}\u56FE\u7247":"Create and assign a {0} image",\u7FBD\u5316\u5BBD\u5EA6:"Soft Edge Width",\u7FBD\u5316\u8303\u56F4:"Soft Edge Range",\u56FE\u7247\u8BBE\u7F6E:"Image Settings",\u906E\u7F69\u8BBE\u7F6E:"Mask Settings",\u6587\u672C\u6846\u8BBE\u7F6E:"Text Box Settings",\u6309\u94AE\u8BBE\u7F6E:"Button Settings","{0}\u8BBE\u7F6E":"{0} Settings",\u8282\u70B9\u4FE1\u606F:"Node Information",\u53D8\u6362:"Transform",\u4F4D\u7F6E:"Location",\u5927\u5C0F:"Size",\u4E2D\u5FC3:"Pivot",\u521B\u5EFA\u8BBE\u7F6E:"Create Settings",\u624B\u67C4\u5BFC\u822A:"Controller Navigation",\u5B9E\u73B0\u72B6\u6001:"Support Status","\u5B58\u6863\u5185 Lua \u811A\u672C\uFF08{0}\uFF09":"Lua Scripts in This Save ({0})","\uFF0B \u65B0\u5EFA\u811A\u672C":"\uFF0B New Script","(\u672A\u547D\u540D\u811A\u672C)":"(Unnamed script)","\u6302\u8F7D\uFF1A{0} \xB7 {1}":"Attached to: {0} \xB7 {1}","\u672A\u6302\u8F7D\uFF08\u4EC5\u53EF\u88AB require\uFF09":"Not attached (available through require only)","\u4E0B\u8F7D\u8BE5\u811A\u672C .lua":"Download this script as .lua",\u5220\u9664\u8BE5\u811A\u672C:"Delete this script","\u8FD8\u6CA1\u6709\u811A\u672C\uFF0C\u70B9\u51FB\u201C\u65B0\u5EFA\u811A\u672C\u201D\u5F00\u59CB":"No scripts yet. Click \u201CNew Script\u201D to begin.","\u5C5E\u4E8E\u5B58\u6863\u201C{0}\u201D \xB7 Lua \u811A\u672C\u662F\u5B58\u6863\u5185\u72EC\u7ACB\u8D44\u4EA7":"Save: \u201C{0}\u201D \xB7 Lua scripts are separate assets within the save",\u672A\u547D\u540D\u5B58\u6863:"Untitled Save","\u811A\u672C {0}":"Script {0}","\u811A\u672C\u8DEF\u5F84\uFF08\u5DE5\u4F5C\u533A\u76F8\u5BF9\u8DEF\u5F84\uFF09":"Script path (relative to the workspace)","\u6302\u8F7D\u76EE\u6807\uFF08\u5BA2\u6237\u7AEF\u63A7\u4EF6 / \u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\uFF09":"Attach to (client control / client control template)","\u672A\u6302\u8F7D\uFF08\u4E0D\u751F\u6548\uFF0C\u4EC5\u53EF\u88AB require\uFF09":"Not attached (does not run automatically; require only)","\u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F \xB7 \u5BA2\u6237\u7AEF\u63A7\u4EF6\u5BB9\u5668\u5185":"Server Control Template \xB7 Inside the Client Control Container",\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F:"Client Control Template","Lua \u6E90\u7801":"Lua Source","-- \u5728\u8FD9\u91CC\u8F93\u5165\u5BA2\u6237\u7AEF Lua\uFF1B\u811A\u672C\u53EA\u6709\u6302\u8F7D\u5230\u5BA2\u6237\u7AEF\u63A7\u4EF6\u540E\u624D\u4F1A\u5728\u8BD5\u73A9\u65F6\u751F\u6548":"-- Enter client-side Lua here; attach the script to a client control to run it in playtests",\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539:"Unsaved changes","\u5DF2\u6302\u8F7D\uFF1A{0}":"Attached to: {0}","\u5F53\u524D\u672A\u6302\u8F7D\uFF0C\u8BD5\u73A9\u65F6\u4E0D\u4F1A\u81EA\u52A8\u8FD0\u884C":"Not attached; it will not run automatically in playtests","\u21E9 \u811A\u672C\u5305 JSON":"\u21E9 Script Bundle JSON","\u21E9 \u811A\u672C\u5305 GIA":"\u21E9 Script Bundle GIA",\u4FDD\u5B58\u811A\u672C:"Save Script",\u8BF7\u65B0\u5EFA\u6216\u9009\u62E9\u4E00\u4E2A\u811A\u672C:"Create or select a script","PlayerSelf \u5F53\u524D\u73A9\u5BB6":"PlayerSelf \u2014 Current Player","AllPlayers \u5168\u90E8\u73A9\u5BB6":"AllPlayers \u2014 All Players","Level \u5173\u5361":"Level \u2014 Stage","Player1 \u73A9\u5BB61":"Player1 \u2014 Player 1","Player2 \u73A9\u5BB62":"Player2 \u2014 Player 2","Player3 \u73A9\u5BB63":"Player3 \u2014 Player 3","Player4 \u73A9\u5BB64":"Player4 \u2014 Player 4","Player5 \u73A9\u5BB65":"Player5 \u2014 Player 5","Player6 \u73A9\u5BB66":"Player6 \u2014 Player 6","Player7 \u73A9\u5BB67":"Player7 \u2014 Player 7","Player8 \u73A9\u5BB68":"Player8 \u2014 Player 8","\u89C4\u5219 {0} \u9700\u8981\u76D1\u542C\u4FE1\u53F7\u540D":"Rule {0} needs a signal name to listen for","\u89C4\u5219 {0} \u81F3\u5C11\u9700\u8981\u4E00\u4E2A\u52A8\u4F5C":"Rule {0} needs at least one action","\u89C4\u5219 {0} \u52A8\u4F5C {1} \u9700\u8981\u5BA2\u6237\u7AEF\u4FE1\u53F7\u540D":"Rule {0}, action {1} needs a client signal name","\u89C4\u5219 {0} \u52A8\u4F5C {1} \u9700\u8981\u53D8\u91CF\u540D":"Rule {0}, action {1} needs a variable name","{0}\u6765\u6E90":"{0} source","\u5B57\u9762\u91CF\uFF08JSON\uFF09":"Literal (JSON)",\u5F15\u7528\u76D1\u542C\u4FE1\u53F7\u53C2\u6570:"Use a received signal argument","{0}\u53C2\u6570\u5E8F\u53F7":"{0} argument index","{0}\u5B57\u9762\u91CF":"{0} literal","\u5BA2\u6237\u7AEF\u4FE1\u53F7\u53C2\u6570\uFF08\u6309\u6DFB\u52A0\u987A\u5E8F\uFF09":"Client signal arguments (in order)","\u53C2\u6570 {0}":"Argument {0}",\u5220\u9664\u53C2\u6570:"Remove argument","\u6682\u65E0\u53C2\u6570\uFF0C\u53EF\u53D1\u9001\u7A7A\u53C2\u6570\u5217\u8868":"No arguments; an empty argument list can be sent","\uFF0B \u6DFB\u52A0\u53C2\u6570":"\uFF0B Add Argument",\u670D\u52A1\u7AEF\u903B\u8F91:"Server Logic","\u5C5E\u4E8E\u5B58\u6863\u201C{0}\u201D \xB7 \u76D1\u542C\u5BA2\u6237\u7AEF\u4FE1\u53F7\u540E\u8BBE\u7F6E Level / \u73A9\u5BB6\u53D8\u91CF\uFF0C\u6216\u5411\u6307\u5B9A\u73A9\u5BB6\u53D1\u9001\u5BA2\u6237\u7AEF\u811A\u672C\u4FE1\u53F7":"Save: \u201C{0}\u201D \xB7 Listen for client signals to set Level / player variables or send client script signals to selected players",\u4FDD\u5B58\u670D\u52A1\u7AEF\u903B\u8F91:"Save Server Logic","\u8FD9\u662F\u6A21\u62DF\u5668\u5B58\u6863\u683C\u5F0F\uFF0C\u4E0D\u662F\u5B98\u65B9\u8282\u70B9\u56FE\u3002PlayerSelf \u8868\u793A\u53D1\u4FE1\u53F7\u7684\u90A3\u4F4D\u73A9\u5BB6\uFF1BPlayer1\u20138 \u662F\u56FA\u5B9A\u5EA7\u4F4D\uFF1BAllPlayers \u5411\u672C\u5C40\u5168\u90E8\u8BD5\u73A9\u73A9\u5BB6\u5E7F\u64AD\u3002":"This uses the simulator's save format. PlayerSelf is the player who sent the signal; Player1\u20138 are fixed slots; AllPlayers broadcasts to every player in this playtest.","\u89C4\u5219 {0}":"Rule {0}",\u76D1\u542C\u4FE1\u53F7\u540D:"Signal to listen for","\u89C4\u5219 {0} \u76D1\u542C\u4FE1\u53F7\u540D":"Rule {0}: signal to listen for",\u5220\u9664\u89C4\u5219:"Remove rule","\u52A8\u4F5C {0}":"Action {0}","\u89C4\u5219 {0} \u52A8\u4F5C {1} \u7C7B\u578B":"Rule {0}, action {1}: type",\u8BBE\u7F6E\u81EA\u5B9A\u4E49\u53D8\u91CF:"Set Custom Variable",\u53D1\u9001\u5BA2\u6237\u7AEF\u811A\u672C\u4FE1\u53F7:"Send Client Script Signal","\u53D1\u7ED9\u5F53\u524D\u73A9\u5BB6\u3001\u6307\u5B9A\u73A9\u5BB6\u6216\u5168\u90E8\u73A9\u5BB6":"Send to the current player, a selected player, or all players","\u5199\u5165 Level / \u5F53\u524D\u73A9\u5BB6 / \u73A9\u5BB61-8":"Write to Level / current player / Player1\u20138",\u5220\u9664\u52A8\u4F5C:"Remove action",\u53D1\u9001\u76EE\u6807:"Send to",\u5BA2\u6237\u7AEF\u4FE1\u53F7\u540D:"Client signal name",\u5B9E\u4F53:"Entity",\u53D8\u91CF\u540D:"Variable name",\u53D8\u91CF\u503C:"Variable value","\uFF0B \u8BBE\u7F6E\u81EA\u5B9A\u4E49\u53D8\u91CF":"\uFF0B Set Custom Variable","\uFF0B \u53D1\u9001\u5BA2\u6237\u7AEF\u811A\u672C\u4FE1\u53F7":"\uFF0B Send Client Script Signal","\u8FD8\u6CA1\u6709\u76D1\u542C\u89C4\u5219\u3002\u8BD5\u73A9\u65F6\u5BA2\u6237\u7AEF SendSignal \u4E0D\u4F1A\u81EA\u52A8\u6539\u53D8\u91CF\u6216\u56DE\u4F20\u4FE1\u53F7\u3002":"No signal rules yet. In a playtest, client SendSignal calls do not automatically change variables or send signals back.","\uFF0B \u6DFB\u52A0\u76D1\u542C\u89C4\u5219":"\uFF0B Add Signal Rule","\u4FDD\u5B58\u540E\u4F1A\u5199\u5165\u5F53\u524D\u5B58\u6863\uFF0C\u4E0B\u6B21\u8BD5\u73A9\u751F\u6548":"Saved to the current save; applies on the next playtest","\u8BF7\u8F93\u5165 1\u20132147483647 \u4E4B\u95F4\u7684\u6574\u6570\u7D22\u5F15\u3002":"Enter an integer index from 1 to 2147483647.",\u5BA2\u6237\u7AEF\u63A7\u4EF6\u7D22\u5F15:"Client Control Index",\u4FDD\u5B58\u4E2D:"Saving",\u4FEE\u6539:"Edit",\u81EA\u52A8\u4FEE\u6539\u5176\u4ED6\u5BA2\u6237\u7AEF\u7D22\u5F15\u503C:"Automatically fill other client control indices",\u81EA\u52A8\u586B\u5145\u7D22\u5F15\u9884\u89C8:"Index Autofill Preview","\u4EE5\u5F53\u524D\u63A7\u4EF6\u4E3A\u57FA\u51C6\uFF0C\u6309 GIA \u5BFC\u5165\u987A\u5E8F\u586B\u5145 {0} \u4E2A\u63A7\u4EF6\uFF08{1} \u4E2A\u6A21\u677F\u53CA\u5176\u5B50\u63A7\u4EF6\uFF09\u3002":"Using this control as the anchor, assign indices in GIA import order to {0} controls ({1} templates and their children).","\u7D22\u5F15\u8303\u56F4\uFF1A{0}\u2013{1}":"Index range: {0}\u2013{1}","\u7D22\u5F15\u8303\u56F4\u8D85\u51FA\u6709\u6548\u8303\u56F4\uFF0C\u8BF7\u68C0\u67E5\u8F93\u5165\u3002":"Index range exceeds the valid bounds. Check your input.","\u9002\u7528\u4E8E\u6574\u6279\u5BFC\u5165\u540E\u672A\u589E\u5220\u3001\u91CD\u6392\u7684\u6A21\u677F\u3002\u670D\u52A1\u7AEF\u754C\u9762\u548C\u811A\u672C\u7D22\u5F15\u9700\u5355\u72EC\u586B\u5199\u3002":"For templates imported together without structural changes or reordering. Server UI and script indices must be entered separately.","\u586B\u5199 GIA \u5BFC\u5165\u540E\u5B9E\u9645\u663E\u793A\u7684\u7D22\u5F15\uFF1B\u4FEE\u6539\u540E\u4ECE\u9875\u9762\u4E0A\u65B9\u7EE7\u7EED\u540C\u6B65 Lua\u3002":"Enter the actual index shown after importing the GIA. Then update Lua references using the notice above.",\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6\u7684\u811A\u672C:"Scripts Attached to This Control","\u89E3\u9664\u6302\u8F7D\uFF08\u4FDD\u7559\u811A\u672C\uFF09":"Detach (keep script)","\u8BE5\u63A7\u4EF6\u5C1A\u672A\u6302\u8F7D\u811A\u672C\u3002\u811A\u672C\u6302\u8F7D\u5230\u5BA2\u6237\u7AEF\u63A7\u4EF6\u540E\u624D\u4F1A\u5728\u8BD5\u73A9\u65F6\u751F\u6548\u3002":"No script is attached to this control. Attach a script to a client control to run it in playtests.",\u6302\u8F7D\u5DF2\u6709\u811A\u672C:"Attach an Existing Script",\u9009\u62E9\u811A\u672C\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6:"Choose a script to attach to this control","\u9009\u62E9\u811A\u672C\u2026":"Select a script\u2026","\uFF08\u5F53\u524D\u6302\u8F7D\u4E8E {0} \xB7 {1}\uFF0C\u5C06\u79FB\u52A8\u5230\u6B64\u63A7\u4EF6\uFF09":"(currently on {0} \xB7 {1}; will move to this control)","\uFF08\u672A\u6302\u8F7D\uFF09":"(not attached)","\u5B58\u6863\u5185\u8FD8\u6CA1\u6709\u5176\u4ED6\u811A\u672C\uFF0C\u53EF\u70B9\u51FB\u4E0B\u65B9\u6309\u94AE\u65B0\u5EFA\u3002":"No other scripts in this save. Create one using the button below.","\uFF0B \u65B0\u5EFA\u811A\u672C\u5E76\u6302\u8F7D\u5230\u6B64\u63A7\u4EF6":"\uFF0B Create and Attach a Script","\u7F3A\u5C11\u56FE\u7247 {0}":"Missing image {0}",\u672C\u5730\u5B57\u4F53\u52A0\u8F7D\u5931\u8D25:"Failed to load the local font","\u5F53\u524D\u8D44\u4EA7\u5DF2\u5207\u6362\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9\u63A7\u4EF6\u540E\u4FEE\u6539\u7D22\u5F15":"The active asset changed. Select the control again before changing its index.","\u63A7\u4EF6\u7D22\u5F15\u5DF2\u4FEE\u6539\u3002\u8BF7\u9009\u62E9\u4E0A\u65B9\u300C\u5168\u91CF\u66FF\u6362\u811A\u672C\u7D22\u5F15\u300D\u6216\u300C\u590D\u5236\u63D0\u793A\u8BCD\u7ED9 AI\u300D\u3002":"Control indices changed. Choose \u201CReplace All Script Indices\u201D or \u201CCopy Task for AI\u201D above.","\u8BF7\u5148\u4FDD\u5B58\u5B8C\u6574\u5B58\u6863\uFF0C\u518D\u590D\u5236\u63D0\u793A\u8BCD\uFF1BAI \u9700\u8981\u8BFB\u53D6\u8FD9\u6B21\u5B9E\u9645\u4FEE\u6539\u7684\u5B58\u6863\u3002":"Save the complete project before copying the task. The AI needs the save containing these changes.","\u8BF7\u5B8C\u6210\u6A21\u62DF\u5668\u63A7\u4EF6\u7D22\u5F15\u4E0E Lua \u5F15\u7528\u540C\u6B65\u3002":"Update the simulator's control indices and Lua references.","\u5DE5\u4F5C\u533A\uFF1A{0}":"Workspace: {0}",\u8BF7\u5148\u6838\u5BF9\u5DE5\u4F5C\u533A:"Verify the workspace first","\u6700\u65B0\u5B8C\u6574\u5B58\u6863\uFF1A{0}\uFF08\u7F16\u8F91\u5668\u5DF2\u4FDD\u5B58\uFF09":"Latest complete save: {0} (saved by the editor)","Lua \u6587\u4EF6\uFF1A{0}":"Lua files: {0}","\u5185\u8054\u811A\u672C {0}":"Inline script {0}",\u6682\u65E0:"None","\u5148\u4ECE\u4E0A\u8FF0\u6587\u4EF6\u91CD\u65B0\u52A0\u8F7D\u6700\u65B0\u5B58\u6863\uFF0C\u4E0D\u8981\u4F7F\u7528\u53E6\u4E00\u4E2A MCP/Web \u8FDB\u7A0B\u91CC\u7684\u65E7\u5DE5\u7A0B\u3002":"Reload the latest save from the file above. Do not use an older project from another MCP/Web process.","\u83B7\u53D6\u65B0\u65E7\u6620\u5C04\uFF1A\u8BFB\u53D6\u8BE5 JSON \u9876\u5C42\u7684 controlGuidChanges \u6570\u7EC4\uFF0C\u5F53\u524D\u5171 {0} \u6761\uFF0C\u5FC5\u987B\u8BFB\u53D6\u5168\u90E8\u8BB0\u5F55\u3002oldGuid \u662F\u65E7\u7D22\u5F15\uFF0CnewGuid \u662F\u65B0\u7D22\u5F15\uFF1BcontrolAsset + controlId \u6807\u8BC6\u63A7\u4EF6\uFF0CcontrolName \u662F\u540D\u79F0\uFF0Cid \u662F\u8BB0\u5F55\u7F16\u53F7\uFF0CbatchId \u662F\u6279\u6B21\u3002":"Read all {0} entries in the save's top-level controlGuidChanges array. oldGuid/newGuid are the old/new indices. controlAsset + controlId identifies the control; controlName is its name; id identifies the change; batchId identifies the batch.","\u83B7\u53D6\u811A\u672C\uFF1A\u8BFB\u53D6 assets.scripts \u6570\u7EC4\uFF1B\u6BCF\u9879\u7684 source \u662F\u5B58\u6863\u5185\u6E90\u7801\uFF0Cpath \u662F\u811A\u672C\u6587\u4EF6\u8DEF\u5F84\uFF08\u76F8\u5BF9\u8DEF\u5F84\u4EE5\u5DE5\u4F5C\u533A\u4E3A\u57FA\u51C6\uFF09\u3002":"Read scripts from assets.scripts. Each source contains the saved code; path identifies its file, relative to the workspace where applicable.","\u6309\u63A7\u4EF6\u8EAB\u4EFD\u548C\u53D8\u66F4\u987A\u5E8F\u6838\u5BF9\u5168\u90E8 Lua \u811A\u672C\u7684\u7D22\u5F15\u5E38\u91CF\u3001\u914D\u7F6E\u8868\u4E0E\u8C03\u7528\uFF0C\u4FEE\u6539\u5B58\u6863\u4E2D\u7684 source \u53CA\u76F8\u5173 Lua \u6E90\u6587\u4EF6\u548C\u751F\u6210\u5668\u6620\u5C04\uFF0C\u907F\u514D\u91CD\u5EFA\u540E\u8986\u76D6\u3002\u4E0D\u8981\u5168\u5C40\u66FF\u6362\u540C\u503C\u6570\u5B57\uFF0C\u4E5F\u4E0D\u8981\u6539\u8FD0\u884C\u65F6\u5B9E\u4F8B ID \u6216\u56FE\u7247\u8D44\u6E90 ID\u3002":"Review index constants, tables, and calls in all Lua scripts by control identity and change order. Update saved source, related Lua files, and generator mappings. Do not globally replace equal numbers or alter runtime instance IDs or image resource IDs.","\u540C\u4E00 batchId \u662F\u540C\u65F6\u6620\u5C04\uFF0C\u987B\u6309\u539F\u503C\u4E00\u6B21\u6027\u5E94\u7528\uFF0C\u4E0D\u80FD\u9010\u6761\u66FF\u6362\u5BFC\u81F4\u7D22\u5F15\u4E32\u6539\u3002":"Changes sharing batchId form one simultaneous mapping. Apply them to original values together to avoid cascading replacements.","\u68C0\u67E5\u65E7\u7D22\u5F15\u5F15\u7528\u5E76\u91CD\u65B0\u8BD5\u73A9\uFF1B\u4EC5\u5728\u5F15\u7528\u5168\u90E8\u540C\u6B65\u6216\u660E\u786E\u6CA1\u6709\u5F15\u7528\u540E\uFF0C\u7528 acknowledgeControlGuidChanges \u7684 changeIds \u6E05\u9664\u5DF2\u6838\u5BF9\u8BB0\u5F55\uFF0C\u4FDD\u5B58\u5B8C\u6574\u5B58\u6863\u3002\u672A\u5224\u65AD\u7684\u8BB0\u5F55\u7EE7\u7EED\u4FDD\u7559\u3002":"Check old references and playtest again. Only after updating every reference or confirming none exist, acknowledge reviewed changeIds with acknowledgeControlGuidChanges and save. Keep unreviewed changes.","\u5B8C\u6210\u540E\u544A\u77E5\u7528\u6237\u91CD\u65B0\u8F7D\u5165\u8FD9\u4E2A\u5B58\u6863\uFF0C\u518D\u901A\u8FC7\u300CLua \u811A\u672C \u2192 \u5B9E\u673A\u811A\u672C\u540C\u6B65\u300D\u66F4\u65B0\u6E38\u620F\u6587\u4EF6\uFF1B\u4E0D\u8981\u91CD\u65B0\u5BFC\u5165 GIA\uFF0C\u4E5F\u4E0D\u8981\u64C5\u81EA\u590D\u5236\u5230\u6E38\u620F\u76EE\u5F55\u3002":"Tell the user to reload this save and use Lua Scripts \u2192 Sync Scripts to Game. Do not reimport GIA or copy files into the game directory without authorization.","\u5B58\u6863\u5DF2\u4FDD\u5B58\uFF0C\u63D0\u793A\u8BCD\u5DF2\u590D\u5236\uFF0C\u5305\u542B\u5B8C\u6574\u6620\u5C04\u7684\u8BFB\u53D6\u65B9\u5F0F\u3002\u7C98\u8D34\u7ED9 AI\uFF1B\u5904\u7406\u540E\u91CD\u65B0\u8F7D\u5165\u5B58\u6863\u3002":"Save written and task copied, including instructions for reading the full mapping. Paste it into the AI chat, then reload the save when finished.","\u5B58\u6863\u5DF2\u4FDD\u5B58\u3002\u526A\u8D34\u677F\u4E0D\u53EF\u7528\uFF0C\u53EF\u4ECE\u4E0B\u65B9\u6587\u672C\u6846\u624B\u52A8\u590D\u5236\u63D0\u793A\u8BCD\u3002":"Save written. Clipboard access is unavailable; copy the task from the text box below.","\u56FE\u7247 {0} \u5DF2\u91CD\u65B0\u4E0B\u8F7D\uFF1B\u540C\u6E90\u8BD5\u73A9\u9875\u4F1A\u540C\u6B65\u5237\u65B0\u3002":"Image {0} downloaded again. Playtest pages on this origin will refresh it too.","{0}\u56FE\u7247":"{0} Image","{0}\u5DF2\u521B\u5EFA\u5E76\u7ED1\u5B9A\uFF1B\u53EF\u5728\u63A7\u4EF6\u6811\u4E2D\u7EE7\u7EED\u7F16\u8F91\u56FE\u7247\u3002":"Created and assigned {0}. Edit the image in the control tree.","Lua \u811A\u672C\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863":"Lua script saved to the current save",\u670D\u52A1\u7AEF\u903B\u8F91\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863:"Server logic saved to the current save",\u5DF2\u65B0\u5EFA\u811A\u672C\u5E76\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6:"Script created and attached to this control","\u5DF2\u65B0\u5EFA\u811A\u672C\uFF0C\u53EF\u7F16\u8F91\u8DEF\u5F84\u3001\u6E90\u7801\u548C\u6302\u8F7D\u76EE\u6807":"Script created. Edit its path, source, and attachment target.",\u811A\u672C\u5DF2\u5220\u9664:"Script deleted","\u5DF2\u89E3\u9664\u6302\u8F7D\uFF0C\u811A\u672C\u4ECD\u4FDD\u7559\u5728\u5B58\u6863\u4E2D":"Script detached and kept in the save",\u5DF2\u6302\u8F7D\u5230\u5F53\u524D\u63A7\u4EF6:"Attached to the current control","\u5DF2\u5207\u6362\u5230\u5B58\u6863\u5185\u7684{0}":"Switched to {0} in this save","{0}\u6A21\u677F":"{0} Template","\u5DF2\u65B0\u589E{0}\u6A21\u677F":"Created a {0} template","\u5DF2\u6DFB\u52A0{0}\u5B50\u63A7\u4EF6":"Added a {0} child control","\u5DF2\u5BFC\u51FA {0} \u4E2A GIA \u6587\u4EF6\uFF08{1}\uFF09\uFF1B\u82E5\u6D4F\u89C8\u5668\u62E6\u622A\u591A\u6587\u4EF6\u4E0B\u8F7D\uFF0C\u8BF7\u5141\u8BB8\u540E\u91CD\u8BD5\u3002":"Exported {0} GIA files ({1}). If downloads are blocked, allow multiple downloads and retry.","\u5DF2\u5BFC\u51FA {0}\uFF1B\u8BF7\u67E5\u770B\u4E0A\u65B9\u5BFC\u51FA\u8BF4\u660E\u3002":"Exported {0}. Review the export notes above.","\u5DF2\u5BFC\u51FA {0}":"Exported {0}","\u5DF2\u4ECE\u5DE5\u4F5C\u533A\u62C9\u53D6 {0}":"Loaded {0} from the workspace","\u4EC5\u652F\u6301 .json\u3001.gia \u6216 .lua \u6587\u4EF6":"Only .json, .gia, and .lua files are supported","\u5DF2\u5BFC\u5165 {0}":"Imported {0}","\u5DF2\u4FDD\u5B58\u5230 {0}":"Saved to {0}","\u6B63\u5728\u8F7D\u5165\u5343\u661F\u6C99\u7BB1\u2026":"Loading Miliastra Sandbox\u2026","\u5DF2\u5207\u6362\u5230{0}":"Switched to {0}",\u4FDD\u5B58\u5230\u5DE5\u4F5C\u533A:"Save to Workspace",\u5B58\u6863\u76F8\u5BF9\u8DEF\u5F84:"Save path (relative to workspace)",\u53D6\u6D88:"Cancel",\u4FDD\u5B58:"Save",\u5DE5\u4F5C\u533A\u672A\u7ED1\u5B9A:"No workspace bound",\u5C1A\u672A\u5BFC\u5165\u6587\u4EF6:"No file imported","\u5B58\u6863\uFF1A{0}":"Save: {0}","\u5DE5\u4F5C\u533A\uFF1A{0} \xB7 \u5F53\u524D\u8D44\u4EA7\uFF1A{1}":"Workspace: {0} \xB7 Active asset: {1}",\u672A\u7ED1\u5B9A:"Unbound",UI\u63A7\u4EF6:"UI Controls",\u76EE\u6807\u8BBE\u5907:"Target device",\u5C4F\u5E55\u6BD4\u4F8B:"Aspect ratio",\u753B\u5E03\u7F29\u653E:"Canvas zoom",\u9002\u5E94:"Fit","\u670D\u52A1\u7AEF\u903B\u8F91\uFF1A\u76D1\u542C\u4FE1\u53F7 / \u81EA\u5B9A\u4E49\u53D8\u91CF / \u73A9\u5BB61-8 \u56DE\u4F20":"Server logic: signals / custom variables / Player1\u20138 responses","Lua \u811A\u672C\u8D44\u4EA7\u7F16\u8F91":"Lua script asset editor",\u4FDD\u5B58\u5B8C\u6574\u5B58\u6863\u5230\u5DE5\u4F5C\u533A:"Save the complete project to the workspace",\u4FDD\u5B58\u5B58\u6863:"Save Project",\u4ECE\u5DE5\u4F5C\u533A\u62C9\u53D6\u5B58\u6863:"Load a save from the workspace","\u2913 \u5DE5\u4F5C\u533A\u5B58\u6863":"\u2913 Workspace Saves","\u672A\u53D1\u73B0 qxqy-simulator-save":"No qxqy-simulator-save found",\u5148\u7ED1\u5B9A\u4F1A\u8BDD\u5DE5\u4F5C\u533A:"Bind a session workspace first","\u5BFC\u5165\u5B58\u6863\u3001\u5355\u9879 UI \u8D44\u4EA7\u6216 Lua":"Import a save, individual UI asset, or Lua script","\u21E7 \u5BFC\u5165":"\u21E7 Import",\u5BFC\u51FA\u683C\u5F0F:"Export format","\u21E9 \u5BFC\u51FA":"\u21E9 Export","\u8D44\u4EA7\u5305 JSON\uFF08\u4E09\u7C7B\u5408\u4E00\uFF09":"Complete Save JSON (all three asset types)","\u8D44\u4EA7\u5305 GIA\uFF08\u5DF2\u6539\u52A8\u9879\uFF09":"Asset Bundle GIA (modified assets)","\u8D44\u4EA7\u5305 GIA \u6574\u5408\u5305\uFF08\u63A7\u4EF6+\u811A\u672C\uFF09":"Combined GIA (controls + scripts)","\u5F53\u524D\u754C\u9762\uFF08\u5DE6\u680F\u6B63\u5728\u770B\u7684\u90A3\u68F5\u6811\uFF09":"Current UI (the tree shown on the left)","\u5F53\u524D\u754C\u9762 Authoring JSON":"Current UI Authoring JSON","\u5F53\u524D\u754C\u9762 GIA":"Current UI GIA",\u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F:"Server Control Template","\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\uFF08\u4EC5\u5F53\u5DE6\u680F\u5207\u5230\u300CUI\u63A7\u4EF6-\u5BA2\u6237\u7AEF\u300D\u65F6\u624D\u662F\u9875\u9762\u5185\u5BB9\uFF09":"Client Control Templates (shown in the Client UI tab)","Lua \u811A\u672C":"Lua Scripts","\u811A\u672C\u5305 JSON\uFF08\u5168\u90E8\u811A\u672C\uFF09":"Script Bundle JSON (all scripts)","\u811A\u672C\u5305 GIA\uFF08\u5168\u90E8\u811A\u672C\uFF09":"Script Bundle GIA (all scripts)","\u6253\u5F00\u8BD5\u73A9\uFF1B\u65B0\u7A97\u53E3\u4E0D\u53EF\u7528\u65F6\u5728\u5E94\u7528\u5185\u8BD5\u73A9":"Open a playtest; use an embedded view if new windows are unavailable","\u6B63\u5728\u51C6\u5907\u2026":"Preparing\u2026","\u25B7 \u8BD5\u73A9 \u2197":"\u25B7 Playtest \u2197",\u91CD\u65B0\u8F7D\u5165:"Reload",\u7F16\u8F91\u9875\u9762:"Editor page","UI \u7F16\u8F91":"UI Editor","\u4E00\u4E2A\u5B58\u6863 \xB7 \u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F + \u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F + Lua \u811A\u672C + \u670D\u52A1\u7AEF\u903B\u8F91":"One save \xB7 Server Control Templates + Client Control Templates + Lua Scripts + Server Logic","\u4E0A\u6B21\u5BFC\u51FA\u8BF4\u660E\uFF08{0} \u9879\uFF0C\u8BF7\u6838\u5BF9\u5BFC\u5165\u540E\u7684\u6548\u679C\uFF09":"Export notes ({0}; verify the result after import)",\u5173\u95ED\u5BFC\u51FA\u8BF4\u660E:"Close export notes",\u7F16\u8F91\u8D44\u6E90\u7C7B\u578B:"Asset type","\u7F16\u8F91\u5B58\u6863\u5185\u7684\u670D\u52A1\u7AEF UI \u63A7\u4EF6":"Edit the save's server UI controls","UI\u63A7\u4EF6-\u670D\u52A1\u7AEF":"Server UI",\u7F16\u8F91\u5B58\u6863\u5185\u7684\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F:"Edit the save's client control templates","UI\u63A7\u4EF6-\u5BA2\u6237\u7AEF":"Client UI",\u6A21\u677F\u4E0E\u5B50\u63A7\u4EF6:"Templates and Children",\u63A7\u4EF6\u6811:"Control Tree","{0} \u4E2A\u6A21\u677F \xB7 {1} \u4E2A\u63A7\u4EF6":"{0} templates \xB7 {1} controls","{0} \u4E2A\u8282\u70B9":"{0} nodes",\u641C\u7D22\u6A21\u677F\u6216\u63A7\u4EF6:"Search templates or controls",\u641C\u7D22\u63A7\u4EF6:"Search controls",\u6A21\u677F:"Template",\u6682\u4E0D\u652F\u6301:"Not supported yet","\u5728\u753B\u5E03\u4E0A\u663E\u793A\uFF08\u4E0D\u5F71\u54CD\u63A7\u4EF6\u521D\u59CB\u53EF\u89C1\u6027\uFF09":"Show on canvas (does not change initial visibility)","\u5728\u753B\u5E03\u4E0A\u9690\u85CF\uFF08\u4E0D\u5F71\u54CD\u63A7\u4EF6\u521D\u59CB\u53EF\u89C1\u6027\uFF09":"Hide on canvas (does not change initial visibility)","{0}\u753B\u5E03\u53EF\u89C1\u6027":"Canvas visibility: {0}",\u6CA1\u6709\u5339\u914D\u7684\u63A7\u4EF6:"No matching controls",\u5C42\u7EA7\u4E0E\u6A21\u677F\u8FB9\u754C:"Hierarchy and Templates",\u7236\u7EA7\u63A7\u4EF6:"Parent control",\u5DF2\u63D0\u5347\u4E3A\u53EF\u5B9E\u4F8B\u5316\u9876\u5C42\u6A21\u677F:"Promoted to an instantiable top-level template",\u5DF2\u8C03\u6574\u63A7\u4EF6\u7236\u7EA7:"Control parent changed","\u9876\u5C42\u6A21\u677F\uFF08\u53EF\u5B9E\u4F8B\u5316\uFF09":"Top-level template (instantiable)",\u5728\u540C\u7EA7\u4E2D\u4E0A\u79FB:"Move up among siblings",\u5728\u540C\u7EA7\u4E2D\u4E0B\u79FB:"Move down among siblings","\u8BE5\u8282\u70B9\u4F1A\u5199\u5165\u72EC\u7ACB UIControlTemplate\uFF0C\u53EF\u76F4\u63A5\u4F5C\u4E3A prefabId\u3002":"This node exports as a separate UIControlTemplate and can be used directly as prefabId.","\u5F53\u524D\u4E3A\u7B2C {0} \u5C42\u5B50\u63A7\u4EF6\uFF0C\u4E0D\u4F1A\u5355\u72EC\u6210\u4E3A prefabId\u3002":"This is a depth-{0} child control, not a standalone template for prefabId instantiation.",\u65B0\u589E\u72EC\u7ACB\u53EF\u5B9E\u4F8B\u5316\u6A21\u677F:"Create a separate instantiable template","\u6DFB\u52A0\u5230{0}":"Add to {0}",\u5F53\u524D\u63A7\u4EF6:"Current control",\u65B0\u589E\u9876\u5C42\u6A21\u677F:"Create a top-level template",\u9876\u5C42:"Top Level",\u5B50\u63A7\u4EF6:"Child",\u65B0\u589E:"New",\u6DFB\u52A0:"Add","Lua \u6A21\u677F\u9884\u89C8":"Lua Template Preview",\u754C\u9762\u63A7\u4EF6\u7EC4:"UI Control Group","{0} \xB7 {1}\xD7{2} \xB7 \u5DE6\u4E0B\u539F\u70B9":"{0} \xB7 {1}\xD7{2} \xB7 Bottom-left origin","\u25CF {0}\u7F16\u8F91":"\u25CF Editing {0}",\u63A7\u4EF6:"Control","\u5F53\u524D\uFF1A{0}":"Selected: {0}","GIA \u5BFC\u51FA\u540E\u53EF\u5728 Lua \u4E2D\u6309 prefabId \u5B9E\u4F8B\u5316":"After exporting GIA, instantiate in Lua using prefabId","\u5B57\u6BB5\u5728\u5931\u7126\u6216 Enter \u65F6\u63D0\u4EA4":"Commit fields on blur or Enter","\u4F5C\u8005 B\u7AD9\u4E3B\u9875":"Author's Bilibili profile",\u4F5C\u8005B\u7AD9:"Bilibili",\u53EF\u5B9E\u4F8B\u5316:"Instantiable","\u6A21\u677F\u7D22\u5F15 ":"Template index ","\u63A7\u4EF6 GUID ":"Control GUID ",\u8282\u70B9:"Node",\u57FA\u7840\u5C5E\u6027:"Properties",\u811A\u672C:"Script","\u6B63\u5728\u5237\u65B0\u7D20\u6750\u2026":"Refreshing asset\u2026","\u21BB \u91CD\u65B0\u4E0B\u8F7D\u6B64\u7D20\u6750":"\u21BB Download This Asset Again","\u767D\u540D\u5355\u56FE\u7247\u6309\u9700\u7F13\u5B58\uFF1B\u5237\u65B0\u4F1A\u91CD\u65B0\u8BBF\u95EE\u7D20\u6750\u6E90\u3002":"Supported images are cached on demand. Refreshing downloads them from the asset source.","\u232B \u5220\u9664\u5F53\u524D\u6A21\u677F":"\u232B Delete Template","\u232B \u5220\u9664\u5F53\u524D\u63A7\u4EF6":"\u232B Delete Control",\u8BF7\u9009\u62E9\u4E00\u4E2A\u63A7\u4EF6:"Select a control",'<!doctype html><meta charset="utf-8"><title>\u6B63\u5728\u51C6\u5907\u8BD5\u73A9\u2026</title><p>\u6B63\u5728\u4FDD\u5B58\u9879\u76EE\u5E76\u51C6\u5907\u8BD5\u73A9\u2026</p>':'<!doctype html><meta charset="utf-8"><title>Preparing playtest\u2026</title><p>Saving the project and preparing the playtest\u2026</p>',"\u505C\u6B62\u8BD5\u73A9\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\uFF1A{0}":"Could not stop the playtest. Retry: {0}","\u8BD5\u73A9\u9875\u672A\u80FD\u52A0\u8F7D\uFF0C\u8BF7\u8FD4\u56DE\u7F16\u8F91\u540E\u91CD\u8BD5\u3002":"The playtest page could not load. Return to the editor and retry.",\u8BD5\u73A9\u6B63\u5728\u5173\u95ED:"Closing playtest",\u5185\u5D4C\u8BD5\u73A9:"Embedded Playtest","\u6B63\u5728\u505C\u6B62\u8BD5\u73A9\u2026":"Stopping playtest\u2026","\u6B63\u5728\u8F7D\u5165\u8BD5\u73A9\u2026":"Loading playtest\u2026",\u5173\u95ED\u8BD5\u73A9:"Close Playtest",\u5343\u661F\u6C99\u7BB1\u8BD5\u73A9:"Miliastra Sandbox Playtest",\u672A\u53D8\u5316:"Unchanged","\u3010\u5343\u661F\u6C99\u7BB1\u811A\u672C\u6587\u4EF6\u5939\u3011":"[Miliastra Sandbox Script Folder]",\u65B0\u589E\u6587\u4EF6:"New file",\u66F4\u65B0\u5DF2\u6709\u6587\u4EF6:"Update existing file","\u5185\u5BB9\u76F8\u540C\uFF0C\u65E0\u9700\u66F4\u65B0":"Identical; no update needed",\u65E0\u6CD5\u590D\u5236:"Cannot copy",\u5B58\u6863\u91CC\u7F16\u8F91\u7684\u4EE3\u7801:"Code edited in the save","\u9879\u76EE\u4E2D\u7684 .lua \u6587\u4EF6":"Project .lua file","\u5B9E\u673A\u811A\u672C\u540C\u6B65 \xB7 {0}":"Sync Scripts to Game \xB7 {0}",\u5DF2\u8BBE\u7F6E\u6587\u4EF6\u5939:"Folders configured",\u5148\u8BBE\u7F6E\u6587\u4EF6\u5939:"Configure folders first","\u628A\u5F53\u524D\u5B58\u6863\u91CC\u7684 Lua \u811A\u672C\u590D\u5236\u5230\u5343\u661F\u6C99\u7BB1\uFF0C\u7528\u4E8E\u6E38\u620F\u5185\u6D4B\u8BD5\u3002\u64CD\u4F5C\u987A\u5E8F\uFF1A\u586B\u5199\u811A\u672C\u4F4D\u7F6E \u2192 \u4FDD\u5B58\u8BBE\u7F6E \u2192 \u4FDD\u5B58\u5B58\u6863\u5E76\u67E5\u770B\u66F4\u65B0 \u2192 \u786E\u8BA4\u590D\u5236\u3002":"Copy this save's Lua scripts into Miliastra Sandbox for in-game testing. Set folders \u2192 Save Settings \u2192 Save and Preview Changes \u2192 Confirm Copy.",\u9879\u76EE\u811A\u672C\u6587\u4EF6\u5939:"Project script folder","\u4F8B\u5982 workspace/my-game\uFF1B\u4E5F\u53EF\u4EE5\u7559\u7A7A":"e.g. workspace/my-game; may be left blank","\u586B\u5199\u5728\u5DE5\u4F5C\u533A\u91CC\u7684\u4F4D\u7F6E\uFF0C\u4F8B\u5982 workspace/my-game\uFF1B\u7559\u7A7A\u8868\u793A\u4F7F\u7528\u5DE5\u4F5C\u533A\u672C\u8EAB\u3002":"Enter a workspace-relative folder, e.g. workspace/my-game. Leave blank to use the workspace root.",\u5343\u661F\u6C99\u7BB1\u811A\u672C\u6587\u4EF6\u5939:"Miliastra Sandbox script folder","\u7C98\u8D34\u4EE5 default_import_file \u7ED3\u5C3E\u7684\u5B8C\u6574\u8DEF\u5F84":"Paste the full path ending in default_import_file","\u5173\u5361\u5B58\u653E\u5916\u90E8 Lua \u811A\u672C\u7684\u6587\u4EF6\u5939\uFF0C\u53EF\u70B9\u51FB\u300C\u53D1\u73B0\u672C\u673A\u76EE\u5F55\u300D\u67E5\u627E\u3002\u8BF7\u586B\u5199\u8FD0\u884C\u6A21\u62DF\u5668\u90A3\u53F0\u7535\u8111\u4E0A\u7684\u5B8C\u6574\u8DEF\u5F84\u3002":"The stage's folder for external Lua scripts. Use \u201CFind Local Folders\u201D to locate it. Enter the full path on the simulator host machine.",\u6E38\u620F\u91CC\u7684\u9879\u76EE\u5B50\u6587\u4EF6\u5939:"Project subfolder in the game","\u4E00\u822C\u548C\u201C\u9879\u76EE\u811A\u672C\u6587\u4EF6\u5939\u201D\u586B\u4E00\u6837\u7684\u5185\u5BB9\uFF0C\u4FDD\u7559\u539F\u6765\u7684\u6587\u4EF6\u4F4D\u7F6E\u3002\u7559\u7A7A\u5219\u76F4\u63A5\u653E\u8FDB\u5343\u661F\u6C99\u7BB1\u811A\u672C\u6587\u4EF6\u5939\u3002":"Usually matches the project script folder to preserve file locations. Leave blank to place files directly in the Miliastra Sandbox script folder.",\u590D\u5236\u8DEF\u5F84\u793A\u4F8B:"Copy Path Example","\u590D\u5236\u793A\u4F8B\uFF1A":"Example destination:","\u6E38\u620F\u8D26\u53F7 UID\uFF1A{0} \xB7 \u5173\u5361\u76EE\u5F55\u7F16\u53F7\uFF1A{1}":"Game account UID: {0} \xB7 Stage folder ID: {1}",\u53D1\u73B0\u672C\u673A\u76EE\u5F55:"Find Local Folders","\u6CA1\u6709\u627E\u5230\u6E38\u620F\u811A\u672C\u6587\u4EF6\u5939\u3002\u53EF\u4EE5\u624B\u52A8\u7C98\u8D34 default_import_file \u6587\u4EF6\u5939\u7684\u5B8C\u6574\u8DEF\u5F84\uFF1B\u5982\u679C\u8FD8\u6CA1\u5BFC\u5165\u811A\u672C\uFF0C\u8BF7\u5148\u5728\u5343\u661F\u6C99\u7BB1\u5B8C\u6210\u5BFC\u5165\u3002":"No game script folder found. Paste the full default_import_file path manually. If you have not imported scripts yet, do so in Miliastra Sandbox first.","\u627E\u5230 {0} \u4E2A\u6E38\u620F\u811A\u672C\u6587\u4EF6\u5939\uFF0C\u8BF7\u9009\u62E9\u8981\u66F4\u65B0\u7684\u8D26\u53F7\u548C\u5173\u5361\u3002":"Found {0} game script folders. Select the account and stage to update.","\u811A\u672C\u4F4D\u7F6E\u5DF2\u4FDD\u5B58\u3002\u4E0B\u4E00\u6B65\u70B9\u51FB\u300C\u4FDD\u5B58\u5B58\u6863\u5E76\u67E5\u770B\u66F4\u65B0\u300D\u3002":"Script folders saved. Next, click \u201CSave and Preview Changes\u201D.",\u6E05\u9664\u8BBE\u7F6E:"Clear Settings","\u5DF2\u6E05\u9664\u811A\u672C\u4F4D\u7F6E\u8BBE\u7F6E\u3002\u6E38\u620F\u91CC\u7684\u811A\u672C\u6587\u4EF6\u4ECD\u7136\u4FDD\u7559\u3002":"Script folder settings cleared. Existing files in the game are kept.",\u9009\u62E9\u8981\u66F4\u65B0\u7684\u8D26\u53F7\u548C\u5173\u5361:"Select the Account and Stage","\u8BF7\u9009\u62E9\u6E38\u620F\u8D26\u53F7\u548C\u5173\u5361\u6587\u4EF6\u5939\u2026":"Select a game account and stage folder\u2026","\u8D26\u53F7 {0} / \u5173\u5361\u76EE\u5F55 {1} \xB7 {2}":"Account {0} / Stage folder {1} \xB7 {2}",\u6A21\u62DF\u5668\u5B58\u6863\u6587\u4EF6:"Simulator save file","\u4F8B\u5982 my-game.save.json":"e.g. my-game.save.json","\u586B\u5199\u5DE5\u4F5C\u533A\u91CC\u7684\u5B58\u6863\u6587\u4EF6\u540D\u6216\u8DEF\u5F84\u3002\u4FDD\u5B58\u8BBE\u7F6E\u65F6\u4F1A\u4E00\u8D77\u4FDD\u5B58\u9879\u76EE\uFF0C\u4E0B\u6B21\u6253\u5F00\u5B58\u6863\u5373\u53EF\u590D\u7528\u3002":"Enter a save filename or path within the workspace. Saving these settings also saves the project so they are available next time.",\u4FDD\u5B58\u5B58\u6863\u5E76\u67E5\u770B\u66F4\u65B0:"Save and Preview Changes","\u8BF7\u5148\u586B\u5199\u5343\u661F\u6C99\u7BB1\u811A\u672C\u6587\u4EF6\u5939\uFF0C\u5E76\u70B9\u51FB\u300C\u4FDD\u5B58\u8BBE\u7F6E\u300D\u3002":"Enter the Miliastra Sandbox script folder and click \u201CSave Settings\u201D first.","\u811A\u672C\u4F4D\u7F6E\u5DF2\u6539\u52A8\uFF0C\u8BF7\u5148\u70B9\u51FB\u300C\u4FDD\u5B58\u8BBE\u7F6E\u300D\u3002":"Script folders changed. Click \u201CSave Settings\u201D first.","\u8BF7\u5148\u586B\u5199\u6A21\u62DF\u5668\u5B58\u6863\u6587\u4EF6\u540D\u3002":"Enter a simulator save filename first.","\u6B63\u5728\u5904\u7406\uFF0C\u8BF7\u7A0D\u5019\u2026":"Working, please wait\u2026",\u811A\u672C\u540C\u6B65\u786E\u8BA4:"Confirm Script Copy","\u672C\u6B21\u66F4\u65B0\u5230\uFF1A{0}":"Destination: {0}","\u8FD9\u4E2A\u5B58\u6863\u8FD8\u6CA1\u6709 Lua \u811A\u672C\u3002\u8BF7\u5148\u5728\u4E0B\u65B9\u6DFB\u52A0\u811A\u672C\uFF0C\u518D\u67E5\u770B\u66F4\u65B0\u3002":"This save has no Lua scripts. Add a script below, then preview the changes.","\u6240\u6709\u811A\u672C\u90FD\u4E0E\u6E38\u620F\u6587\u4EF6\u5939\u91CC\u7684\u5185\u5BB9\u76F8\u540C\uFF0C\u65E0\u9700\u590D\u5236\u3002":"All scripts match the game folder. Nothing to copy.","\u6709\u63A7\u4EF6\u7D22\u5F15\u5C1A\u672A\u540C\u6B65\u5230 Lua\u3002\u8BF7\u5148\u5728\u4E0A\u65B9\u300C\u5168\u91CF\u66FF\u6362\u811A\u672C\u7D22\u5F15\u300D\uFF0C\u6216\u300C\u590D\u5236\u63D0\u793A\u8BCD\u7ED9 AI\u300D\uFF1B\u5904\u7406\u5B8C\u6210\u540E\u518D\u67E5\u770B\u6E38\u620F\u811A\u672C\u66F4\u65B0\u3002":"Some control index changes are not reflected in Lua. Use \u201CReplace All Script Indices\u201D or \u201CCopy Task for AI\u201D above before previewing game script changes.","\u590D\u5236\u7684\u4EE3\u7801\u6765\u81EA\uFF1A{0}":"Code source: {0}","\u65E0\u6CD5\u590D\u5236\uFF1A{0}":"Cannot copy: {0}","\u590D\u5236\u5230\uFF1A{0}":"Copy to: {0}","\u8FD9\u4E2A\u811A\u672C\u5728\u5B58\u6863\u91CC\u548C\u9879\u76EE\u6587\u4EF6\u91CC\u7684\u4EE3\u7801\u4E0D\u540C\u3002\u672C\u6B21\u4F1A\u590D\u5236\u5B58\u6863\u91CC\u7684\u4EE3\u7801\uFF1B\u5982\u679C\u8981\u4F7F\u7528\u9879\u76EE\u6587\u4EF6\uFF0C\u8BF7\u70B9\u51FB\u300C\u6539\u7528\u9879\u76EE\u6587\u4EF6\u91CC\u7684\u4EE3\u7801\u300D\uFF0C\u7136\u540E\u91CD\u65B0\u67E5\u770B\u66F4\u65B0\u3002":"The saved script differs from its project file. This copy uses the saved code. To use the project file instead, choose \u201CUse Project File Code\u201D, then preview changes again.",\u67E5\u770B\u9879\u76EE\u6587\u4EF6\u91CC\u7684\u4EE3\u7801:"View Project File Code",\u6539\u7528\u9879\u76EE\u6587\u4EF6\u91CC\u7684\u4EE3\u7801:"Use Project File Code",\u5BF9\u6BD4\u66F4\u65B0\u524D\u540E\u7684\u4EE3\u7801:"Compare Changes",\u6E38\u620F\u91CC\u73B0\u5728\u7684\u4EE3\u7801:"Current Code in the Game","\uFF08\u6E38\u620F\u91CC\u8FD8\u6CA1\u6709\u8FD9\u4E2A\u6587\u4EF6\uFF09":"(This file does not exist in the game yet)",\u672C\u6B21\u8981\u590D\u5236\u7684\u4EE3\u7801:"Code to Copy","\u65B0\u589E\u811A\u672C\u590D\u5236\u540E\uFF0C\u8FD8\u9700\u8981\u5728\u5343\u661F\u6C99\u7BB1\u91CC\u5173\u8054\u5BF9\u5E94\u7684\u811A\u672C\u6587\u4EF6\uFF1B\u9700\u8981\u76F4\u63A5\u8FD0\u884C\u7684\u811A\u672C\u8FD8\u8981\u6302\u5230\u63A7\u4EF6\u4E0A\u3002":"After copying new scripts, link their files in Miliastra Sandbox. Scripts that should run directly must also be attached to controls.","\u5DF2\u9009 {0} \u4E2A\u811A\u672C\uFF0C\u5176\u4E2D {1} \u4E2A\u4F1A\u66FF\u6362\u6E38\u620F\u91CC\u7684\u65E7\u6587\u4EF6\u3002\u66FF\u6362\u524D\u4F1A\u81EA\u52A8\u5907\u4EFD\u65E7\u6587\u4EF6\uFF0C\u6E38\u620F\u91CC\u7684\u5176\u4ED6\u6587\u4EF6\u4F1A\u4FDD\u7559\u3002":"Selected {0} scripts; {1} will replace existing game files. Replaced files are backed up. Other files are kept.",\u8986\u76D6:"Replace",\u6682\u4E0D\u590D\u5236:"Cancel","\u786E\u8BA4\u590D\u5236 {0} \u4E2A\u811A\u672C":"Confirm Copy of {0} Scripts",\u811A\u672C\u5DF2\u590D\u5236\u5230\u5343\u661F\u6C99\u7BB1:"Scripts Copied to Miliastra Sandbox",\u6709\u4E9B\u811A\u672C\u672A\u590D\u5236\u6210\u529F:"Some Scripts Could Not Be Copied","\u4E0B\u4E00\u6B65\uFF1A\u56DE\u5230\u5343\u661F\u6C99\u7BB1\uFF0C\u4FDD\u5B58\u5173\u5361\u5E76\u91CD\u65B0\u8BD5\u73A9\uFF0C\u8BA9\u6E38\u620F\u52A0\u8F7D\u66F4\u65B0\u540E\u7684\u811A\u672C\u3002":"Next: Return to Miliastra Sandbox, save the stage, and start a new playtest to load the updated scripts.","\u8BF7\u6309\u4E0B\u65B9\u63D0\u793A\u5904\u7406\u5931\u8D25\u7684\u6587\u4EF6\uFF0C\u518D\u91CD\u65B0\u67E5\u770B\u66F4\u65B0\u5E76\u590D\u5236\u3002":"Resolve the failed files using the notes below, then preview and copy again.","\u590D\u5236\u65F6\u95F4\uFF1A{0} \xB7 \u65E7\u6587\u4EF6\u5907\u4EFD\u4FDD\u5B58\u5728\uFF1A{1}":"Copied at: {0} \xB7 Backups: {1}",\u6210\u529F:"Success",\u5DF2\u590D\u5236:"Copied",\u672A\u590D\u5236:"Not copied",\u5207\u6362\u5230\u4EAE\u8272\u4E3B\u9898:"Switch to light theme",\u5207\u6362\u5230\u6697\u8272\u4E3B\u9898:"Switch to dark theme",\u5F53\u524D\u5B58\u6863:"Current save","\u5F53\u524D\u8D44\u4EA7\u6CA1\u6709\u63A7\u4EF6\u3002":"This asset has no controls.","\u6253\u5F00\u5B58\u6863\u540E\u663E\u793A\u63A7\u4EF6\u7ED3\u6784\u3002":"Open a save to view its control structure.",\u672A\u9009\u62E9:"None selected",\u7C7B\u578B:"Type",\u6811\u6DF1\u5EA6:"Tree depth",\u7236\u8282\u70B9:"Parent node","\u8BD5\u73A9\u542F\u52A8\u540E\u663E\u793A Lua \u65E5\u5FD7\u3002":"Lua logs appear after starting a playtest.",\u5B58\u6863\u52A0\u8F7D\u5931\u8D25:"Failed to Load Save",\u7B49\u5F85\u5DE5\u4F5C\u533A\u5B58\u6863:"Waiting for a Workspace Save","\u6B63\u5728\u76D1\u542C {0}\u3002":"Watching {0}.","{0}Codex \u4FDD\u5B58 qxqy-simulator-save JSON \u540E\u4F1A\u81EA\u52A8\u51FA\u73B0\u5728\u8FD9\u91CC\u3002":"{0}Saves appear here automatically when Codex writes a qxqy-simulator-save JSON file.",\u8BD5\u73A9\u5C1A\u672A\u542F\u52A8:"Playtest Not Started","\u9009\u62E9\u8BBE\u5907\u5E76\u70B9\u51FB\u201C\u542F\u52A8\u201D\uFF0C\u5373\u53EF\u8FD0\u884C Lua \u548C\u4EA4\u4E92\u903B\u8F91\u3002":"Select a device and click \u201CStart\u201D to run Lua scripts and interactions.",\u7B49\u5F85\u5B58\u6863:"Waiting for a Save",\u5C1A\u672A\u6253\u5F00\u5B58\u6863:"No save open"," \xB7 \u5DF2\u6682\u505C":" \xB7 Paused","\u7B49\u5F85\u542F\u52A8 Runtime":"Waiting to start Runtime","\u7F16\u8F91\u5668\u9759\u6001\u9884\u89C8 \xB7 \u78C1\u76D8\u81EA\u52A8\u5237\u65B0":"Static editor preview \xB7 Refreshes from disk automatically","\u7F16\u8F91\u5668\u753B\u9762\u52A0\u8F7D\u5931\u8D25\u3002":"Failed to load the editor preview.","\u670D\u52A1\u7248\u672C\u672A\u77E5\uFF0C\u8BF7\u66F4\u65B0 Web":"Unknown server version. Update the Web package.",\u5B9E\u65F6\u76D1\u542C\u4E2D:"Live",\u8FDE\u63A5\u4E2D\u65AD:"Disconnected",\u5F00\u542F\u58F0\u97F3:"Enable Sound",\u58F0\u97F3\u5DF2\u5173\u95ED:"Sound Off",\u58F0\u97F3\u5DF2\u5F00\u542F:"Sound On",\u70B9\u51FB\u6216\u5728\u753B\u5E03\u5185\u64CD\u4F5C\u4EE5\u89E3\u9501\u97F3\u6548:"Click or interact with the canvas to enable audio",\u5207\u6362\u9759\u97F3:"Toggle mute","\u952E\u4F4D\u54CD\u5E94\uFF1A\u5F00":"Key Input: On","\u952E\u4F4D\u54CD\u5E94\uFF1A\u5173":"Key Input: Off",\u5DF2\u6253\u5F00\u5B58\u6863:"Save opened",\u5DF2\u91CD\u65B0\u8BFB\u53D6\u78C1\u76D8\u5B58\u6863:"Save reloaded from disk","\u65E5\u5FD7\u5DF2\u5728\u5F53\u524D\u89C6\u56FE\u6E05\u7A7A\u3002":"Logs cleared in this view.",\u6B63\u5728\u91CD\u8FDE:"Reconnecting","\u68C0\u6D4B\u5230\u5B58\u6863\u53D8\u5316\uFF0C\u9884\u89C8\u5DF2\u66F4\u65B0":"Save changed; preview updated",\u9884\u89C8\u5B58\u6863\u5DF2\u6253\u5F00:"Preview save opened","\u624B\u673A 1280\xD7720":"Mobile 1280\xD7720","\u624B\u673A 1560\xD7720":"Mobile 1560\xD7720","\u624B\u673A 1280\xD7960":"Mobile 1280\xD7960",\u540D\u79F0:"Name",\u521D\u59CB\u6FC0\u6D3B:"Initially Active",\u521D\u59CB\u53EF\u89C1\u6027:"Initially Visible",\u53EF\u88AB\u624B\u67C4\u6447\u6746\u5BFC\u822A\u9009\u4E2D:"Selectable by Controller Navigation","\u4F4D\u7F6E X":"Location X","\u4F4D\u7F6E Y":"Location Y","\u5927\u5C0F W":"Width","\u5927\u5C0F H":"Height","\u65CB\u8F6C X":"Rotation X","\u65CB\u8F6C Y":"Rotation Y","\u65CB\u8F6C Z":"Rotation Z",\u540C\u6B65\u4FE1\u606F\u81F3\u6240\u6709\u8BBE\u5907:"Sync Layout Across Devices",\u951A\u70B9\u7C7B\u578B:"Anchor Preset",\u5C45\u4E2D:"Center",\u5DE6\u4E0A:"Top Left",\u4E0A\u65B9:"Top",\u53F3\u4E0A:"Top Right",\u5DE6\u4FA7:"Left",\u53F3\u4FA7:"Right",\u5DE6\u4E0B:"Bottom Left",\u4E0B\u65B9:"Bottom",\u53F3\u4E0B:"Bottom Right",\u53CC\u5411\u62C9\u4F38:"Stretch Both Axes",\u6C34\u5E73\u62C9\u4F38:"Stretch Horizontally",\u5782\u76F4\u62C9\u4F38:"Stretch Vertically",\u81EA\u5B9A\u4E49:"Custom","\u951A\u70B9 Min X":"Anchor Min X","\u951A\u70B9 Min Y":"Anchor Min Y","\u951A\u70B9 Max X":"Anchor Max X","\u951A\u70B9 Max Y":"Anchor Max Y","\u4E2D\u5FC3 X":"Pivot X","\u4E2D\u5FC3 Y":"Pivot Y",\u9694\u79BB\u624B\u67C4\u5BFC\u822A:"Isolate Controller Navigation",\u5C4F\u853D\u6309\u952E\u4E8B\u4EF6\u7A7F\u900F:"Block Key Event Passthrough",\u5C4F\u853D\u533A\u57DF\u5185\u70B9\u51FB\u4E8B\u4EF6\u7A7F\u900F:"Block Click Event Passthrough in Area",\u663E\u793A\u5E38\u9A7B\u5149\u6807:"Show Persistent Cursor",\u5B57\u53F7:"Font Size",\u5B57\u53F7\u81EA\u9002\u5E94:"Auto Font Size",\u6700\u5C0F\u5B57\u53F7:"Minimum Font Size",\u6587\u672C\u8272:"Text Color",\u80CC\u666F\u8272:"Background Color",\u542F\u7528\u63CF\u8FB9:"Enable Outline",\u63CF\u8FB9\u8272:"Outline Color",\u6C34\u5E73\u5BF9\u9F50:"Horizontal Alignment",\u5DE6\u5BF9\u9F50:"Left",\u53F3\u5BF9\u9F50:"Right",\u5782\u76F4\u5BF9\u9F50:"Vertical Alignment",\u9876\u90E8:"Top",\u5E95\u90E8:"Bottom",\u6587\u672C:"Text",\u56FE\u7247\u6E90:"Image Source",\u9759\u6001\u5F15\u7528:"Static Reference",\u5143\u4EF6:"Prefab",\u586B\u5145\u8272:"Fill Color",\u5F00\u542F\u906E\u7F69:"Enable Mask",\u8FB9\u7F18\u7FBD\u5316:"Soft Edge",\u7FBD\u5316\u6A21\u5F0F:"Soft Edge Mode",\u767E\u5206\u6BD4:"Percentage",\u50CF\u7D20:"Pixels","\u7FBD\u5316\u5BBD\u5EA6 X":"Soft Edge Width X","\u7FBD\u5316\u5BBD\u5EA6 Y":"Soft Edge Width Y",\u6C34\u5E73\u7FBD\u5316\u8303\u56F4:"Horizontal Soft Edge Range",\u5782\u76F4\u7FBD\u5316\u8303\u56F4:"Vertical Soft Edge Range",\u6309\u8FDB\u5EA6\u586B\u5145:"Fill by Progress",\u5F62\u72B6:"Shape",\u6A2A\u5411:"Horizontal",\u7EB5\u5411:"Vertical","90\u5EA6\u73AF\u7ED5":"Radial90","180\u5EA6\u73AF\u7ED5":"Radial180","360\u5EA6\u73AF\u7ED5":"Radial360",\u65B9\u5411:"Direction",\u4ECE\u5DE6\u81F3\u53F3:"From Left to Right",\u4ECE\u53F3\u81F3\u5DE6:"From Right to Left",\u4ECE\u4E0B\u81F3\u4E0A:"From Bottom to Top",\u4ECE\u4E0A\u81F3\u4E0B:"From Top to Bottom",\u8D77\u70B9:"Origin",\u8FDB\u5EA6:"Progress",\u906E\u7F69\u533A\u57DF\u53CD\u8F6C:"Invert Mask Area",\u672A\u8BBE\u7F6E:"Not set",\u53EF\u88AB\u5149\u6807\u5C04\u7EBF\u68C0\u6D4B:"Raycast Target",\u6309\u94AE\u662F\u5426\u53EF\u7528:"Interactable",\u4E0D\u53EF\u7528\u72B6\u6001\u8282\u70B9:"Unavailable Status Nodes",\u60AC\u505C\u72B6\u6001\u8282\u70B9:"Hover Status Nodes",\u6309\u4E0B\u72B6\u6001\u8282\u70B9:"Pressed Status Nodes",\u9009\u4E2D\u72B6\u6001\u8282\u70B9:"Selected Status Nodes",\u70B9\u51FB\u97F3\u6548:"Click Sound",\u5F15\u7528\u63A7\u4EF6\u6A21\u677F\u7D22\u5F15:"Referenced Control Template Index",\u5141\u8BB8\u6EDA\u52A8\u4EA4\u4E92:"Enable Scrolling",\u663E\u793A\u6EDA\u52A8\u6761:"Show Scrollbar",\u5217\u8868\u9879\u6A21\u677F\u7D22\u5F15:"Item Template Index",\u6EDA\u52A8\u65B9\u5411:"Scroll Direction",\u6392\u5217\u9650\u5236:"Layout Constraint",\u81EA\u52A8\u6362\u884C:"Automatic Wrapping",\u56FA\u5B9A\u884C\u5217\u6570:"Fixed Row / Column Count",\u6BCF\u884C\u6216\u6BCF\u5217\u6570\u91CF:"Items per Row / Column","\u5217\u8868\u9879\u5927\u5C0F W":"Item Width","\u5217\u8868\u9879\u5927\u5C0F H":"Item Height","\u5217\u8868\u9879\u95F4\u9694 X":"Item Spacing X","\u5217\u8868\u9879\u95F4\u9694 Y":"Item Spacing Y","\u8FB9\u8DDD\u5411\u91CF 1 X":"Padding 1 X","\u8FB9\u8DDD\u5411\u91CF 1 Y":"Padding 1 Y","\u8FB9\u8DDD\u5411\u91CF 2 X":"Padding 2 X","\u8FB9\u8DDD\u5411\u91CF 2 Y":"Padding 2 Y",\u9884\u89C8\u6570\u91CF:"Preview Count",\u952E\u9F20\u6309\u952E:"Keyboard / Mouse Key",\u624B\u67C4\u6309\u952E:"Controller Button",\u52A8\u6548\u7D22\u5F15:"Animation Index",\u5168\u5C4F\u52A8\u6548\u7D22\u5F15:"Fullscreen Animation Index",\u5B8C\u6574\u5EA6:"Support Status","\u8BD5\u73A9\u652F\u6301\u57FA\u7840\u6EDA\u52A8\uFF1B\u6EDA\u52A8\u4EA4\u4E92\u3001\u6EDA\u52A8\u6761\u53CA\u5217\u8868\u914D\u7F6E\u4EE5 JSON/Lua \u4E3A\u51C6\uFF0C\u76F8\u5173 GIA \u5F00\u5173\u6620\u5C04\u5C1A\u672A\u6838\u5B9E\u3002":"Basic scrolling is supported in playtests. Configure interaction, scrollbars, and lists through JSON/Lua; the related GIA flags are not yet verified.","\u672C\u9636\u6BB5\u4EC5\u516C\u5171\u53D8\u6362\uFF0C\u4E1A\u52A1\u69FD\u4E0D\u5B8C\u6574":"Only common transforms are supported at this stage; control-specific fields are incomplete.",\u5173\u5361:"Stage",\u5F53\u524D\u73A9\u5BB6:"Current Player",\u5F53\u524D\u89D2\u8272:"Current Character","\u73A9\u5BB6{0}":"Player {0}","\u89D2\u8272{0}":"Character {0}","\u63A7\u4EF6\u7D22\u5F15\u5FC5\u987B\u662F 1\u20132147483647 \u8303\u56F4\u5185\u7684\u6574\u6570":"Control indices must be integers from 1 to 2147483647","controlGuidChanges \u5FC5\u987B\u662F\u6570\u7EC4":"controlGuidChanges must be an array","controlGuidChanges \u5305\u542B\u65E0\u6548\u6216\u91CD\u590D\u7684\u53D8\u66F4\u8BB0\u5F55":"controlGuidChanges contains invalid or duplicate changes","controlGuidChanges \u5305\u542B\u65E0\u6548\u7684 batchId":"controlGuidChanges contains an invalid batchId","controlGuidChanges \u5305\u542B\u65E0\u6548\u7684 scriptSignature":"controlGuidChanges contains an invalid scriptSignature",\u672A\u547D\u540D\u754C\u9762:"Untitled UI",\u672A\u547D\u540D\u754C\u9762\u63A7\u4EF6\u7EC4:"Untitled UI Control Group",\u6574\u5408\u5305\u9700\u8981\u670D\u52A1\u7AEF\u5BA2\u6237\u7AEF\u63A7\u4EF6\u5BB9\u5668\u4E0B\u81F3\u5C11\u6709\u4E00\u4E2A\u6839\u63A7\u4EF6:"A combined bundle requires at least one root control inside the server-side Client Control Container","{0} \xB7 \u6574\u5408\u5305.gia":"{0} \xB7 Combined.gia",\u6302\u8F7D\u76EE\u6807\u5FC5\u987B\u662F\u5B58\u6863\u5185\u7684\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6216\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F:"Attachment targets must be client controls or client control templates in the save","\u811A\u672C\u4E0D\u5B58\u5728: {0}":"Script not found: {0}",\u4EC5\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6216\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\u5141\u8BB8\u4FEE\u6539\u7D22\u5F15:"Only client controls and client control templates support index changes","autoFillClientGuids \u5FC5\u987B\u662F\u5E03\u5C14\u503C":"autoFillClientGuids must be a boolean","\u81EA\u52A8\u586B\u5145\u4EC5\u652F\u6301\u5BA2\u6237\u7AEF\u6A21\u677F\u5217\u8868\uFF1B\u670D\u52A1\u7AEF\u754C\u9762\u7684\u7D22\u5F15\u9700\u5355\u72EC\u586B\u5199":"Autofill is only available for client templates. Enter server UI indices separately.","\u5BA2\u6237\u7AEF\u6A21\u677F\u5B58\u5728\u91CD\u590D\u65E7\u7D22\u5F15\uFF0C\u65E0\u6CD5\u81EA\u52A8\u586B\u5145\uFF1B\u8BF7\u5148\u6D88\u9664\u6B67\u4E49":"Client templates contain duplicate old indices. Resolve the ambiguity before using autofill.","\u63A7\u4EF6\u7D22\u5F15 {0} \u5DF2\u88AB\u300C{1}\u300D\u5360\u7528\uFF1B\u8BF7\u5148\u586B\u5199\u5B83\u7684\u5B9E\u9645\u7D22\u5F15\u3002\u672C\u6B21\u672A\u4FEE\u6539\u4EFB\u4F55\u7D22\u5F15\u3002":"Control index {0} is already used by \u201C{1}\u201D. Enter its actual index first. No indices were changed.","\u65E7\u7D22\u5F15 {0} \u5728\u591A\u68F5\u8D44\u4EA7\u6811\u4E2D\u91CD\u590D\uFF0C\u65E0\u6CD5\u786E\u5B9A\u6A21\u677F\u5F15\u7528\u5F52\u5C5E\uFF1B\u8BF7\u5148\u6D88\u9664\u6B67\u4E49\u540E\u4FEE\u6539":"Old index {0} appears in multiple asset trees, so the template reference is ambiguous. Resolve it before making changes.","\u8BF7\u660E\u786E\u6307\u5B9A\u5DF2\u6838\u5BF9 Lua \u5F15\u7528\u7684\u6709\u6548\u7D22\u5F15\u53D8\u66F4\u8BB0\u5F55 changeIds":"Specify valid changeIds whose Lua references have been reviewed",\u5B58\u6863\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A:"The save name cannot be empty","\u63A7\u4EF6\u7D22\u5F15\u5F85\u6838\u5BF9 Lua \u5F15\u7528\uFF1A{0} / {1} ({2})\uFF1A{3} \u2192 {4}\u3002\u8BF7\u6309\u8BED\u4E49\u66F4\u65B0\u811A\u672C\u4E2D\u7684\u63A7\u4EF6\u7D22\u5F15\u5F15\u7528\uFF0C\u6838\u5BF9\u540E\u786E\u8BA4\u53D8\u66F4\u8BB0\u5F55 {5}\uFF1B\u4E0D\u8981\u5168\u5C40\u66FF\u6362\u540C\u503C\u6570\u5B57\u3002":"Review Lua references for control index change: {0} / {1} ({2}): {3} \u2192 {4}. Update references by meaning, then acknowledge change {5}. Do not globally replace equal numbers.","{0} \xB7 \u8D44\u4EA7\u5305.json":"{0} \xB7 Assets.json","\u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F\u4ECD\u662F\u9ED8\u8BA4\u6A71\u7A97\uFF0C\u672A\u6539\u52A8\u4E14\u5F53\u524D\u672A\u663E\u793A\uFF0C\u5DF2\u4ECE\u8D44\u4EA7\u5305 GIA \u4E2D\u7701\u7565\u3002":"The unchanged, hidden default server UI was omitted from the asset bundle GIA.","\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\u4ECD\u662F\u9ED8\u8BA4\u300CLua\u5B9E\u4F8B\u5316\u9762\u677F\u300D\uFF0C\u672A\u6539\u52A8\u4E14\u5F53\u524D\u672A\u663E\u793A\uFF0C\u5DF2\u4ECE\u8D44\u4EA7\u5305 GIA \u4E2D\u7701\u7565\u3002":"The unchanged, hidden default client control template was omitted from the asset bundle GIA.","\u8D44\u4EA7\u5305 GIA \u6CA1\u6709\u53EF\u5BFC\u51FA\u7684\u5DF2\u6539\u52A8\u9879\uFF1B\u8BF7\u5148\u7F16\u8F91\u5F53\u524D\u754C\u9762\uFF0C\u6216\u6539\u7528\u300C\u5F53\u524D\u754C\u9762 GIA\u300D\u3002":"There are no modified assets to export. Edit the UI first, or use \u201CCurrent UI GIA\u201D.","{0} \xB7 \u811A\u672C.json":"{0} \xB7 Scripts.json","{0} \xB7 \u811A\u672C.gia":"{0} \xB7 Scripts.gia","\u6CA1\u6709\u53EF\u5BFC\u51FA\u7684 Lua \u811A\u672C\uFF0C\u8BF7\u5148\u5728\u201CLua \u811A\u672C\u201D\u9875\u521B\u5EFA":"No Lua scripts to export. Create one on the Lua Scripts page first.","\u5F53\u524D\u670D\u52A1\u5668\u63A7\u4EF6 GIA \u4E0D\u5305\u542B {0} \u4E2A Lua \u811A\u672C\u7684\u6E90\u7801\uFF1B\u8BF7\u4F7F\u7528\u300C\u8D44\u4EA7\u5305 GIA \u6574\u5408\u5305\u300D\uFF0C\u6216\u53E6\u884C\u5BFC\u5165\u811A\u672C\u5305\u5E76\u6838\u5BF9\u6302\u8F7D\u3002":"This server UI GIA does not contain source for {0} Lua scripts. Use \u201CCombined GIA\u201D or import the script bundle separately and check attachments.","JSON \u6587\u4EF6\u65E0\u6548":"Invalid JSON file","\u6574\u5408\u5305\u5DF2\u62C6\u56DE\u300CUI\u63A7\u4EF6-\u670D\u52A1\u7AEF\u300D\u4E0E\u300CUI\u63A7\u4EF6-\u5BA2\u6237\u7AEF\u300D\uFF1B\u5BA2\u6237\u7AEF\u6A21\u677F\u8FB9\u754C\u5DF2\u4FDD\u7559\u3002":"Combined bundle split back into Server UI and Client UI. Client template boundaries were preserved.","\u811A\u672C GUID {0} \u540C\u65F6\u6302\u8F7D\u5230\u591A\u4E2A\u63A7\u4EF6\uFF0C\u5DF2\u4FDD\u7559\u201C{1}\u201D\u76EE\u6807\u3002":"Script GUID {0} was attached to multiple controls. The \u201C{1}\u201D target was kept.",\u670D\u52A1\u7AEF:"Server",\u5BA2\u6237\u7AEF:"Client","\u5355\u8D44\u4EA7 JSON \u7684\u7D22\u5F15\u53D8\u66F4\u8BB0\u5F55\u5FC5\u987B\u5C5E\u4E8E\u5F53\u524D\u5BFC\u5165\u8D44\u4EA7":"Index change records in a single-asset JSON must belong to the imported asset","\u811A\u672C {0} \u8BFB\u53D6\u5931\u8D25: {1}":"Failed to read script {0}: {1}","\u5343\u661F\u6C99\u7BB1 \xB7 \u72EC\u7ACB\u8BD5\u73A9":"Miliastra Sandbox \xB7 Standalone Playtest",\u6A21\u62DF\u5668:"Simulator",\u5207\u6362\u8BBE\u5907\u753B\u5E03:"Switch Device Canvas","\u5207\u6362\u8BBE\u5907\u753B\u5E03\uFF1A\u4EE5\u65B0\u753B\u5E03\u91CD\u5EFA\u8FD0\u884C\u65F6\uFF0CGetUICanvasSize \u4E0E\u9884\u8BBE\u50CF\u7D20\u4E00\u81F4":"Rebuild the runtime for the selected canvas. GetUICanvasSize matches the preset's pixel dimensions.",\u8BD5\u73A9\u4EBA\u6570:"Player count","\u8BD5\u73A9\u4EBA\u6570\uFF1A\u6700\u591A 8 \u4EBA\uFF0C\u6BCF\u4EBA\u4E00\u4EFD\u72EC\u7ACB\u5BA2\u6237\u7AEF":"Up to 8 players, each with a separate client instance",\u5F53\u524D\u73A9\u5BB6\u89C6\u89D2:"Current player view","\u5207\u6362\u5F53\u524D\u73A9\u5BB6\u89C6\u89D2\uFF1A\u8F93\u5165\u3001\u753B\u9762\u548C PlayerSelf \u90FD\u8DDF\u968F\u8BE5\u73A9\u5BB6":"Change the active player for input, rendering, and PlayerSelf",\u8BBE\u5907:"Device","\u51C6\u5907\u4E2D\u2026":"Preparing...",\u8BD5\u73A9\u9875\u9762:"Playtest page",\u8BD5\u73A9:"Playtest",\u65E5\u5FD7:"Logs","\u8F6C\u53D1\u5B98\u65B9\u952E\u4F4D\u7684\u6309\u4E0B/\u62AC\u8D77\u4E8B\u4EF6\uFF08\u542B\u9F20\u6807\u5DE6\u53F3\u952E\uFF09\uFF1B\u5173\u95ED\u4E0D\u5F71\u54CD\u753B\u5E03\u70B9\u51FB":"Forward supported key/button down and up events, including mouse buttons. Turning this off does not disable canvas clicks.",\u70B9\u51FB\u89E3\u9501\u6D4F\u89C8\u5668\u97F3\u6548:"Click to enable browser audio","\u2161 \u6682\u505C\u8FD0\u884C":"\u2161 Pause",\u6682\u505C\u540E\u53EF\u5355\u5E27\u8C03\u8BD5:"Pause to step through individual frames","\u25B7 \u5355\u5E27\u8C03\u8BD5":"\u25B7 Step One Frame","\u25A0 \u7ED3\u675F\u8BD5\u73A9":"\u25A0 Stop Playtest","\u21BB \u91CD\u65B0\u5F00\u59CB":"\u21BB Restart",\u5207\u6362\u4EAE\u6697\u4E3B\u9898:"Toggle light / dark theme",\u8FD4\u56DE\u7F16\u8F91:"Back to Editor","\u6B63\u5728\u51C6\u5907\u8BD5\u73A9\u2026":"Preparing playtest\u2026",\u8FD0\u884C\u65F6\u573A\u666F\u6811:"Runtime Scene Tree","0 \u8282\u70B9":"0 nodes",\u670D\u52A1\u7AEF\u53D8\u91CF:"Server Variables","0 \u9879":"0 items",\u5BA2\u6237\u7AEF\u811A\u672C\u65E5\u5FD7:"Client Script Logs","\u6700\u8FD1 100 \u6761":"Latest 100 entries",\u670D\u52A1\u7AEF\u65E5\u5FD7:"Server Logs","\u53D8\u91CF / \u4FE1\u53F7":"Variables / signals",\u81EA\u52A8\u6D4B\u7528\u4F8B:"Automated Test Case","\u5148\u8BD5\u73A9\uFF0C\u518D\u4FDD\u5B58\u56DE\u653E":"Play first, then save a replay",'\u65AD\u8A00 JSON \u6570\u7EC4\uFF0C\u4F8B\u5982 [{"kind":"log","contains":"clicked"}]':'JSON assertion array, e.g. [{"kind":"log","contains":"clicked"}]',\u4FDD\u5B58\u7528\u4F8B:"Save Test Case",\u56DE\u653E\u7528\u4F8B:"Replay Test Case","\u25CF \u6B63\u5728\u542F\u52A8":"\u25CF Starting","\u9875\u9762\uFF1A\u8BD5\u73A9":"View: Playtest","\u9875\u9762\uFF1A\u65E5\u5FD7":"View: Logs",\u8BD5\u73A9\u8BF7\u6C42\u5931\u8D25:"Playtest request failed"," \u9879":" items","\u6682\u65E0\u81EA\u5B9A\u4E49\u53D8\u91CF\u3002\u811A\u672C Get/Set \u6216 serverSet \u4E4B\u540E\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\u3002":"No custom variables yet. They appear after script Get/Set calls or serverSet.","\u5B8C\u6574\u8FD0\u884C\u6811\u8BF7\u7528 Agent \u7684 inspect \u5FEB\u7167\u3002\u821E\u53F0\u6309\u5DE6\u6811\u4E0A\u65B9\u76D6\u4F4F\u4E0B\u65B9\u7ED8\u5236\u3002":"Use an Agent inspect snapshot for the full runtime tree. Items higher in the left tree draw over those below."," \u4E2A\u53EF\u89C1\u56FE\u5143":" visible primitives","\u25B6 \u7EE7\u7EED\u8FD0\u884C":"\u25B6 Resume"," \u4EBA":" players",\u73A9\u5BB6:"Player"," \xB7 \u73A9\u5BB6":" \xB7 Player "," \xB7 \u70B9\u51FB\u8F93\u5165":" \xB7 Click to focus","\u26A0 \u811A\u672C\u6302\u8F7D\u5931\u8D25":"\u26A0 Script attachment failed","\u2161 \u5DF2\u6682\u505C":"\u2161 Paused","\u25CF \u8BD5\u73A9\u8FD0\u884C\u4E2D":"\u25CF Playtest running","\u5DF2\u8BB0\u5F55 ":"Recorded "," \u6B65":" steps","\u26A0 \u8BD5\u73A9\u9519\u8BEF":"\u26A0 Playtest error","\u25A0 \u8BD5\u73A9\u5DF2\u7ED3\u675F\uFF0C\u53EF\u91CD\u65B0\u5F00\u59CB\u6216\u8FD4\u56DE\u7F16\u8F91":"\u25A0 Playtest stopped. Restart or return to the editor.","\u65AD\u8A00\u5FC5\u987B\u662F JSON \u6570\u7EC4":"Assertions must be a JSON array","\u5DF2\u4FDD\u5B58 ":"Saved "," \u6B65 / ":" steps / "," \u6761\u65AD\u8A00":" assertions",\u56DE\u653E\u901A\u8FC7:"Replay passed","\u56DE\u653E\u5931\u8D25 @":"Replay failed @","\u7F3A\u5C11\u4F1A\u8BDD ID":"Missing session ID","\u5343\u661F\u6A21\u62DF\u5668 \xB7 Live Preview":"Miliastra Simulator \xB7 Live Preview","\u5343\u661F\u6A21\u62DF\u5668 \xB7 \u7F16\u8F91\u5DE5\u4F5C\u53F0":"Miliastra Simulator \xB7 Editor","Web Preview \xB7 \u5B9E\u65F6\u9884\u89C8":"Web Preview \xB7 Live Preview",\u5DE5\u4F5C\u533A\u5B58\u6863:"Workspace Saves",\u91CD\u65B0\u8BFB\u53D6\u5B58\u6863:"Reload save from disk","\u7F16\u8F91\u5DE5\u4F5C\u53F0 \u2197":"Open Editor \u2197",\u6B63\u5728\u8FDE\u63A5:"Connecting",\u9884\u89C8\u6A21\u5F0F:"Preview mode",\u7F16\u8F91\u5668:"Editor",\u8D44\u4EA7:"Asset","\u670D\u52A1\u7AEF UI":"Server UI",\u5BA2\u6237\u7AEF\u6A21\u677F:"Client Templates","\u25B6 \u542F\u52A8":"\u25B6 Start","\u2161 \u6682\u505C":"\u2161 Pause","\u25B7 \u7EE7\u7EED":"\u25B7 Resume","+ 1 \u5E27":"+ 1 Frame","\u25A0 \u505C\u6B62":"\u25A0 Stop",\u6A21\u62DF\u5668\u9884\u89C8\u753B\u5E03:"Simulator preview canvas","Codex \u4FDD\u5B58 qxqy-simulator-save JSON \u540E\u4F1A\u81EA\u52A8\u51FA\u73B0\u5728\u8FD9\u91CC\u3002":"Saves appear here automatically when Codex writes a qxqy-simulator-save JSON file.","\u6B63\u5728\u66F4\u65B0\u753B\u9762\u2026":"Updating preview\u2026",\u7F16\u8F91\u5668\u9759\u6001\u9884\u89C8:"Static Editor Preview",\u9884\u89C8\u4FE1\u606F:"Preview Details",\u5F53\u524D\u8282\u70B9:"Selected Node",\u753B\u5E03:"Canvas",\u6E05\u7A7A:"Clear",\u9884\u89C8\u8FDE\u63A5:"Preview Connection","\u6B63\u5728\u8FDE\u63A5\u670D\u52A1\u2026":"Connecting to the service\u2026","\u5F53\u524D\u5B58\u6863\u4FDD\u5B58\u540E\u81EA\u52A8\u5237\u65B0\uFF1B\u9996\u6B21\u5B58\u6863\u4F1A\u81EA\u52A8\u53D1\u73B0\u3002\u5207\u6362\u5176\u4ED6\u5B58\u6863\u8BF7\u4F7F\u7528\u9876\u90E8\u5217\u8868\u6216 MCP \u9884\u89C8\u5DE5\u5177\u3002":"Refreshes automatically when the current save changes, and discovers the first save. Switch saves using the list above or the MCP preview tool.","\u68C0\u67E5\u66F4\u65B0\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5\u540E\u91CD\u8BD5\u3002":"Update check failed. Check your network connection and retry.",\u53D1\u73B0\u65B0\u7248\u672C:"A new version is available",\u5F53\u524D\u5DF2\u662F\u6700\u65B0\u7248\u672C:"You are up to date",\u5F53\u524D\u7248\u672C\u6BD4\u516C\u5F00\u7248\u672C\u66F4\u65B0:"Your version is newer than the public release",\u6682\u672A\u627E\u5230\u6B64\u5B89\u88C5\u5305\u7684\u6B63\u5F0F\u7248\u672C:"No stable release found for this package",\u754C\u9762\u8BED\u8A00:"Interface language","\u81EA\u52A8\uFF08\u7CFB\u7EDF\u8BED\u8A00\uFF09":"Auto (system language)","\u6B63\u5728\u68C0\u67E5\u66F4\u65B0\u2026":"Checking for updates\u2026",\u68C0\u67E5\u66F4\u65B0:"Check for Updates",\u8054\u7CFB\u4F5C\u8005:"Contact Author",QQ\u7FA4\u53F71007538100:"QQ Group: 1007538100","\u4F5C\u8005\u90AE\u7BB1 ":"Email: ","\u5F00\u6E90\u4ED3\u5E93 ":"Source repository: ","\u5F53\u524D\u7248\u672C\uFF1A{0}":"Current version: {0}","\u516C\u5F00\u7248\u672C\uFF1A{0}":"Public version: {0}","\u66F4\u65B0\u540E\u8BF7\u91CD\u542F\u5BBF\u4E3B\u5E76\u5237\u65B0\u7F16\u8F91\u5668\u4E0E\u8BD5\u73A9\u9875\u3002":"After updating, restart the host and refresh the editor and playtest pages.",\u67E5\u770B\u66F4\u65B0\u8BF4\u660E:"View Release Notes",\u4E0B\u8F7D\u66F4\u65B0\u5305:"Download Update",\u91CD\u8BD5:"Retry","\u8BF7\u9009\u62E9\u81EA\u52A8\u67E5\u627E\u3001\u6307\u5B9A\u6587\u4EF6\u6216\u7CFB\u7EDF\u5B57\u4F53":"Choose automatic discovery, a local file, or the system font",\u5B57\u4F53\u8DEF\u5F84\u8FC7\u957F:"The font path is too long",\u8BF7\u586B\u5199\u5B57\u4F53\u6587\u4EF6\u7684\u7EDD\u5BF9\u8DEF\u5F84:"Enter an absolute font file path","\u672C\u673A\u5B57\u4F53\u8BBE\u7F6E\u65E0\u6CD5\u8BFB\u53D6\uFF0C\u8BF7\u5728\u300C\u5B57\u4F53\u8BBE\u7F6E\u300D\u4E2D\u91CD\u65B0\u4FDD\u5B58":"Unable to read local font settings. Save them again in Font Settings.","\u65E0\u6CD5\u4FDD\u5B58\u672C\u673A\u5B57\u4F53\u8BBE\u7F6E\uFF0C\u8BF7\u68C0\u67E5\u914D\u7F6E\u76EE\u5F55\u7684\u5199\u5165\u6743\u9650":"Unable to save local font settings. Check write permissions for the configuration directory.","\u5F53\u524D\u5B57\u4F53\u7531 QXQY_FONT_PATH \u56FA\u5B9A\uFF0C\u8BF7\u79FB\u9664\u8BE5\u73AF\u5883\u53D8\u91CF\u5E76\u91CD\u542F\u540E\u518D\u4F7F\u7528\u524D\u7AEF\u8BBE\u7F6E":"QXQY_FONT_PATH overrides font settings. Remove it and restart before editing settings here.",\u5B57\u4F53\u8BBE\u7F6E\u4EC5\u9650\u672C\u673A\u76F4\u63A5\u8BBF\u95EE:"Font settings require a direct connection from this machine",\u5B57\u4F53\u8BBE\u7F6E\u8FC7\u5927:"Font settings exceed the size limit",\u5343\u661F\u6C99\u7BB1:"Miliastra Sandbox",\u5343\u661F\u5947\u57DF:"Miliastra Wonderland",\u670D\u52A1\u7AEF\u63A7\u4EF6\u6A21\u677F:"Server Control Template",\u670D\u52A1\u7AEF\u63A7\u4EF6:"Server Controls",\u5BA2\u6237\u7AEF\u63A7\u4EF6:"Client Controls","1 \u4EBA":"1 player","{0} \u4EBA":"{0} players"};var yt="qxqy-ui-language",Xe="qxqy-ui-language-change",ke=new Set,Ht=a=>["auto","zh","en"].includes(a);function wt(){try{let a=globalThis.localStorage?.getItem(yt);return Ht(a)?a:"auto"}catch{return"auto"}}var Me=wt(),Yt=null;function ci(a="auto",i="zh-CN",p=""){return a==="zh"||a==="en"?a:/^(?:zh|cmn|yue|wuu|hak|nan|gan|hsn)(?:[-_]|$)/i.test(p||i)?"zh":"en"}var Vt=()=>Me,Je=()=>Yt||{language:typeof window>"u"?"zh-CN":globalThis.navigator?.language||globalThis.navigator?.languages?.[0]||Intl.DateTimeFormat().resolvedOptions().locale||"en",source:"browser"},Xt=()=>ci(Me,Je().language);async function Jt(a,i=globalThis.fetch){try{let p=await i(a,{method:"POST",mode:"same-origin",credentials:"same-origin",cache:"no-store",headers:{"content-type":"application/json"},body:"{}",signal:AbortSignal.timeout(4e3)});if(p.ok){let s=await p.json(),d=s.ok?s.value:null;if(typeof d?.language=="string"&&d.language.length<=80){let t=Intl.getCanonicalLocales(d.language.replaceAll("_","-"))[0];if(t){Yt={language:t,source:d.source||"host"};for(let g of ke)g()}}}}catch{}return Je()}function Le(a){if(!(a?.type==="storage"&&a.key!==yt&&a.key!==null)){Me=a?.type===Xe?a.detail:wt();for(let i of ke)i()}}function Kt(a){if(Ht(a)){Me=a;try{globalThis.localStorage?.setItem(yt,a)}catch{}if(typeof window<"u")window.dispatchEvent(new CustomEvent(Xe,{detail:a}));else for(let i of ke)i()}}function St(a){return!ke.size&&typeof window<"u"&&(Me=wt(),window.addEventListener("storage",Le),window.addEventListener(Xe,Le),window.addEventListener("languagechange",Le)),ke.add(a),()=>{ke.delete(a),!ke.size&&typeof window<"u"&&(window.removeEventListener("storage",Le),window.removeEventListener(Xe,Le),window.removeEventListener("languagechange",Le))}}function Ke(a){return()=>{let[,i]=a.useReducer(p=>p+1,0);return a.useEffect(()=>{let p=St(i);return i(),p},[]),Xt()}}var Ve=(a,i)=>a.replace(/\{(\d+)\}/g,(p,s)=>s<i.length?String(i[s]??""):p),di=Object.entries(Ye).filter(([a])=>/\{\d+\}/.test(a)).map(([a,i])=>{let p=[],s=a.split(/(\{\d+\})/).map(d=>{let t=d.match(/^\{(\d+)\}$/);return t?(p.push(Number(t[1])),"([\\s\\S]*?)"):d.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}).join("");return{expression:new RegExp(`^${s}$`),value:i,slots:p}});function pi(a,i,...p){if(Array.isArray(i)&&Object.hasOwn(i,"raw")&&(i=i.reduce((s,d,t)=>s+(t?`{${t-1}}`:"")+d,"")),typeof i!="string")return i;if(a!=="en")return Ve(i,p);if(Object.hasOwn(Ye,i))return Ve(Ye[i],p);if(!p.length&&/[\p{Script=Han}]/u.test(i))for(let s of di){let d=s.expression.exec(i);if(!d)continue;let t=[];return s.slots.forEach((g,v)=>{t[g]=d[v+1]}),Ve(s.value,t)}return Ve(i,p)}var e=(a,...i)=>pi(Xt(),a,...i);function Qt(a){let i=a.createElement;return function({snap:s,request:d,patch:t,prepare:g,refresh:v}){let S={version:1,workspaceDir:"",clientImportRoot:"",clientSubdir:""},[I,y]=a.useState(s.scriptSync||S),[k,L]=a.useState(s.storage?.path||"qxqy-simulator.save.json"),[$,T]=a.useState([]),[U,N]=a.useState(null),[P,_]=a.useState([]),[A,M]=a.useState(null),[w,B]=a.useState(""),[z,Z]=a.useState(""),[E,V]=a.useState(!1),oe=a.useId();a.useEffect(()=>{y(s.scriptSync||S),N(null)},[JSON.stringify(s.scriptSync),s.storage?.path]),a.useEffect(()=>{N(null)},[s.version,s.asset?.type]),a.useEffect(()=>{s.storage?.path&&L(s.storage.path)},[s.storage?.path]);let se=async m=>{V(!0),Z(""),B("");try{await m()}catch(ne){Z(ne.message||String(ne))}finally{V(!1)}},ie=(m,ne={})=>d("script-sync",{action:m,args:ne});async function be(){N(null),M(null);let m=await g();await d("save",{path:k,expectedRevision:m.version}),await v();let ne=await ie("preview");N(ne),_(ne.rows.filter(ce=>!ce.error&&ce.status!=="\u672A\u53D8\u5316").map(ce=>ce.id))}let pe=JSON.stringify(I)!==JSON.stringify(s.scriptSync||S),de=(m,ne,ce,Ue)=>i("label",{className:"qxsim-field",key:m},i("span",null,ne),i("input",{type:"text",value:I[m],placeholder:ce,"aria-label":ne,"aria-describedby":`${oe}-${m}`,disabled:E,onChange:ze=>{y({...I,[m]:ze.target.value}),N(null),B("")}}),i("small",{id:`${oe}-${m}`},Ue)),ee=I.clientImportRoot.replaceAll("\\","/").match(/BeyondLocal\/([^/]+)\/Beyond_Local_Save_Level\/([^/]+)/),te=m=>m.trim().replaceAll("\\","/").replace(/^\.$/,""),ve=te(I.workspaceDir)?`${te(I.workspaceDir)}/`:"",ae=s.scripts?.find(m=>m.path.replaceAll("\\","/").startsWith(ve)&&m.path.toLowerCase().endsWith(".lua"))?.path.replaceAll("\\","/")||`${ve}main.lua`,at=[I.clientImportRoot.trim().replaceAll("\\","/").replace(/\/+$/,"")||e("\u3010\u5343\u661F\u6C99\u7BB1\u811A\u672C\u6587\u4EF6\u5939\u3011"),te(I.clientSubdir),ae.slice(ve.length)].filter(Boolean).join("/"),it={\u65B0\u589E:e("\u65B0\u589E\u6587\u4EF6"),\u8986\u76D6:e("\u66F4\u65B0\u5DF2\u6709\u6587\u4EF6"),\u672A\u53D8\u5316:e("\u5185\u5BB9\u76F8\u540C\uFF0C\u65E0\u9700\u66F4\u65B0"),\u9519\u8BEF:e("\u65E0\u6CD5\u590D\u5236")},nt={\u5B58\u6863\u6E90\u7801:e("\u5B58\u6863\u91CC\u7F16\u8F91\u7684\u4EE3\u7801"),\u5DE5\u4F5C\u533A\u6587\u4EF6:e("\u9879\u76EE\u4E2D\u7684 .lua \u6587\u4EF6")},me=(m,ne,ce=!1)=>i("button",{type:"button",className:"qxsim-action",disabled:E||ce,onClick:()=>void se(ne)},m);return i("details",{className:"qxsim-section",style:{flexShrink:0,maxHeight:"55%",overflow:"auto",margin:"5px 10px"}},i("summary",null,e`实机脚本同步 · ${s.scriptSync?e("\u5DF2\u8BBE\u7F6E\u6587\u4EF6\u5939"):e("\u5148\u8BBE\u7F6E\u6587\u4EF6\u5939")}`),i("div",{className:"qxsim-section-body"},i("p",null,e("\u628A\u5F53\u524D\u5B58\u6863\u91CC\u7684 Lua \u811A\u672C\u590D\u5236\u5230\u5343\u661F\u6C99\u7BB1\uFF0C\u7528\u4E8E\u6E38\u620F\u5185\u6D4B\u8BD5\u3002\u64CD\u4F5C\u987A\u5E8F\uFF1A\u586B\u5199\u811A\u672C\u4F4D\u7F6E \u2192 \u4FDD\u5B58\u8BBE\u7F6E \u2192 \u4FDD\u5B58\u5B58\u6863\u5E76\u67E5\u770B\u66F4\u65B0 \u2192 \u786E\u8BA4\u590D\u5236\u3002")),de("workspaceDir",e("\u9879\u76EE\u811A\u672C\u6587\u4EF6\u5939"),e("\u4F8B\u5982 workspace/my-game\uFF1B\u4E5F\u53EF\u4EE5\u7559\u7A7A"),e("\u586B\u5199\u5728\u5DE5\u4F5C\u533A\u91CC\u7684\u4F4D\u7F6E\uFF0C\u4F8B\u5982 workspace/my-game\uFF1B\u7559\u7A7A\u8868\u793A\u4F7F\u7528\u5DE5\u4F5C\u533A\u672C\u8EAB\u3002")),de("clientImportRoot",e("\u5343\u661F\u6C99\u7BB1\u811A\u672C\u6587\u4EF6\u5939"),e("\u7C98\u8D34\u4EE5 default_import_file \u7ED3\u5C3E\u7684\u5B8C\u6574\u8DEF\u5F84"),e("\u5173\u5361\u5B58\u653E\u5916\u90E8 Lua \u811A\u672C\u7684\u6587\u4EF6\u5939\uFF0C\u53EF\u70B9\u51FB\u300C\u53D1\u73B0\u672C\u673A\u76EE\u5F55\u300D\u67E5\u627E\u3002\u8BF7\u586B\u5199\u8FD0\u884C\u6A21\u62DF\u5668\u90A3\u53F0\u7535\u8111\u4E0A\u7684\u5B8C\u6574\u8DEF\u5F84\u3002")),de("clientSubdir",e("\u6E38\u620F\u91CC\u7684\u9879\u76EE\u5B50\u6587\u4EF6\u5939"),e("\u4F8B\u5982 workspace/my-game\uFF1B\u4E5F\u53EF\u4EE5\u7559\u7A7A"),i(a.Fragment,null,e("\u4E00\u822C\u548C\u201C\u9879\u76EE\u811A\u672C\u6587\u4EF6\u5939\u201D\u586B\u4E00\u6837\u7684\u5185\u5BB9\uFF0C\u4FDD\u7559\u539F\u6765\u7684\u6587\u4EF6\u4F4D\u7F6E\u3002\u7559\u7A7A\u5219\u76F4\u63A5\u653E\u8FDB\u5343\u661F\u6C99\u7BB1\u811A\u672C\u6587\u4EF6\u5939\u3002"),i("span",{"aria-label":e("\u590D\u5236\u8DEF\u5F84\u793A\u4F8B"),style:{display:"block",overflowWrap:"anywhere"}},e("\u590D\u5236\u793A\u4F8B\uFF1A"),i("code",null,ae)," \u2192 ",i("code",null,at)))),ee?i("p",null,e`游戏账号 UID:${ee[1]} · 关卡目录编号:${ee[2]}`):null,i("div",{style:{display:"flex",gap:6,flexWrap:"wrap"}},me(e("\u53D1\u73B0\u672C\u673A\u76EE\u5F55"),async()=>{let m=await ie("discover");T(m.candidates),m.candidates.length?B(e`找到 ${m.candidates.length} 个游戏脚本文件夹,请选择要更新的账号和关卡。`):Z(e("\u6CA1\u6709\u627E\u5230\u6E38\u620F\u811A\u672C\u6587\u4EF6\u5939\u3002\u53EF\u4EE5\u624B\u52A8\u7C98\u8D34 default_import_file \u6587\u4EF6\u5939\u7684\u5B8C\u6574\u8DEF\u5F84\uFF1B\u5982\u679C\u8FD8\u6CA1\u5BFC\u5165\u811A\u672C\uFF0C\u8BF7\u5148\u5728\u5343\u661F\u6C99\u7BB1\u5B8C\u6210\u5BFC\u5165\u3002"))}),me(e("\u4FDD\u5B58\u8BBE\u7F6E"),async()=>{await g();let m=await t({op:"setScriptSync",config:I});await d("save",{path:k,expectedRevision:m.version}),await v(),N(null),M(null),B(e("\u811A\u672C\u4F4D\u7F6E\u5DF2\u4FDD\u5B58\u3002\u4E0B\u4E00\u6B65\u70B9\u51FB\u300C\u4FDD\u5B58\u5B58\u6863\u5E76\u67E5\u770B\u66F4\u65B0\u300D\u3002"))},!I.clientImportRoot.trim()||!k.trim()),me(e("\u6E05\u9664\u8BBE\u7F6E"),async()=>{await g();let m=await t({op:"setScriptSync",config:null});await d("save",{path:k,expectedRevision:m.version}),await v(),N(null),M(null),B(e("\u5DF2\u6E05\u9664\u811A\u672C\u4F4D\u7F6E\u8BBE\u7F6E\u3002\u6E38\u620F\u91CC\u7684\u811A\u672C\u6587\u4EF6\u4ECD\u7136\u4FDD\u7559\u3002"))},!s.scriptSync||!k.trim())),$.length?i("label",{className:"qxsim-field"},e("\u9009\u62E9\u8981\u66F4\u65B0\u7684\u8D26\u53F7\u548C\u5173\u5361"),i("select",{value:"",disabled:E,onChange:m=>{y({...I,clientImportRoot:m.target.value}),N(null),B("")}},i("option",{value:""},e("\u8BF7\u9009\u62E9\u6E38\u620F\u8D26\u53F7\u548C\u5173\u5361\u6587\u4EF6\u5939\u2026")),$.map(m=>i("option",{key:m.path,value:m.path},e`账号 ${m.uid} / 关卡目录 ${m.editorId} · ${m.path}`)))):null,i("label",{className:"qxsim-field",style:{marginTop:8}},i("span",null,e("\u6A21\u62DF\u5668\u5B58\u6863\u6587\u4EF6")),i("input",{type:"text",value:k,placeholder:e("\u4F8B\u5982 my-game.save.json"),"aria-label":e("\u6A21\u62DF\u5668\u5B58\u6863\u6587\u4EF6"),"aria-describedby":`${oe}-archive`,disabled:E,onChange:m=>{L(m.target.value),N(null),B("")}}),i("small",{id:`${oe}-archive`},e("\u586B\u5199\u5DE5\u4F5C\u533A\u91CC\u7684\u5B58\u6863\u6587\u4EF6\u540D\u6216\u8DEF\u5F84\u3002\u4FDD\u5B58\u8BBE\u7F6E\u65F6\u4F1A\u4E00\u8D77\u4FDD\u5B58\u9879\u76EE\uFF0C\u4E0B\u6B21\u6253\u5F00\u5B58\u6863\u5373\u53EF\u590D\u7528\u3002"))),me(e("\u4FDD\u5B58\u5B58\u6863\u5E76\u67E5\u770B\u66F4\u65B0"),be,!s.scriptSync||pe||!k.trim()),s.scriptSync?pe?i("p",null,e("\u811A\u672C\u4F4D\u7F6E\u5DF2\u6539\u52A8\uFF0C\u8BF7\u5148\u70B9\u51FB\u300C\u4FDD\u5B58\u8BBE\u7F6E\u300D\u3002")):k.trim()?null:i("p",null,e("\u8BF7\u5148\u586B\u5199\u6A21\u62DF\u5668\u5B58\u6863\u6587\u4EF6\u540D\u3002")):i("p",null,e("\u8BF7\u5148\u586B\u5199\u5343\u661F\u6C99\u7BB1\u811A\u672C\u6587\u4EF6\u5939\uFF0C\u5E76\u70B9\u51FB\u300C\u4FDD\u5B58\u8BBE\u7F6E\u300D\u3002")),E?i("p",{role:"status"},e("\u6B63\u5728\u5904\u7406\uFF0C\u8BF7\u7A0D\u5019\u2026")):w?i("p",{role:"status"},w):null,z?i("p",{role:"alert",style:{color:"var(--danger)"}},e(z)):null,U?i("section",{"aria-label":e("\u811A\u672C\u540C\u6B65\u786E\u8BA4")},i("p",{style:{overflowWrap:"anywhere"}},e`本次更新到:${U.root}`),U.rows.length?U.rows.every(m=>m.status==="\u672A\u53D8\u5316")?i("p",{role:"status"},e("\u6240\u6709\u811A\u672C\u90FD\u4E0E\u6E38\u620F\u6587\u4EF6\u5939\u91CC\u7684\u5185\u5BB9\u76F8\u540C\uFF0C\u65E0\u9700\u590D\u5236\u3002")):null:i("p",null,e("\u8FD9\u4E2A\u5B58\u6863\u8FD8\u6CA1\u6709 Lua \u811A\u672C\u3002\u8BF7\u5148\u5728\u4E0B\u65B9\u6DFB\u52A0\u811A\u672C\uFF0C\u518D\u67E5\u770B\u66F4\u65B0\u3002")),U.pendingGuidChanges?i("p",{role:"alert"},e("\u6709\u63A7\u4EF6\u7D22\u5F15\u5C1A\u672A\u540C\u6B65\u5230 Lua\u3002\u8BF7\u5148\u5728\u4E0A\u65B9\u300C\u5168\u91CF\u66FF\u6362\u811A\u672C\u7D22\u5F15\u300D\uFF0C\u6216\u300C\u590D\u5236\u63D0\u793A\u8BCD\u7ED9 AI\u300D\uFF1B\u5904\u7406\u5B8C\u6210\u540E\u518D\u67E5\u770B\u6E38\u620F\u811A\u672C\u66F4\u65B0\u3002")):null,U.rows.map(m=>i("div",{key:m.id,style:{borderTop:"1px solid var(--line)",padding:6}},i("label",{style:{overflowWrap:"anywhere"}},i("input",{type:"checkbox",disabled:E||!!m.error||m.status==="\u672A\u53D8\u5316",checked:P.includes(m.id),onChange:ne=>_(ne.target.checked?[...P,m.id]:P.filter(ce=>ce!==m.id))}),` ${m.path} \xB7 ${it[m.status]||m.status}`),i("div",null,e`复制的代码来自:${nt[m.sourceKind]||m.sourceKind}`),i("div",{style:{overflowWrap:"anywhere"}},m.error?e`无法复制:${m.error}`:e`复制到:${m.target}`),m.sourceMismatch?i("div",{className:"qxsim-note"},e("\u8FD9\u4E2A\u811A\u672C\u5728\u5B58\u6863\u91CC\u548C\u9879\u76EE\u6587\u4EF6\u91CC\u7684\u4EE3\u7801\u4E0D\u540C\u3002\u672C\u6B21\u4F1A\u590D\u5236\u5B58\u6863\u91CC\u7684\u4EE3\u7801\uFF1B\u5982\u679C\u8981\u4F7F\u7528\u9879\u76EE\u6587\u4EF6\uFF0C\u8BF7\u70B9\u51FB\u300C\u6539\u7528\u9879\u76EE\u6587\u4EF6\u91CC\u7684\u4EE3\u7801\u300D\uFF0C\u7136\u540E\u91CD\u65B0\u67E5\u770B\u66F4\u65B0\u3002"),i("details",null,i("summary",null,e("\u67E5\u770B\u9879\u76EE\u6587\u4EF6\u91CC\u7684\u4EE3\u7801")),i("pre",{style:{maxHeight:200,overflow:"auto"}},m.diskSource)),me(e("\u6539\u7528\u9879\u76EE\u6587\u4EF6\u91CC\u7684\u4EE3\u7801"),async()=>{await g(),await t({op:"updateScript",id:m.id,source:m.diskSource}),N(null)})):null,!m.error&&m.status!=="\u672A\u53D8\u5316"?i("details",null,i("summary",null,e("\u5BF9\u6BD4\u66F4\u65B0\u524D\u540E\u7684\u4EE3\u7801")),i("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:8}},i("div",{style:{minWidth:0}},e("\u6E38\u620F\u91CC\u73B0\u5728\u7684\u4EE3\u7801"),i("pre",{style:{maxHeight:240,overflow:"auto"}},m.status==="\u65B0\u589E"?e("\uFF08\u6E38\u620F\u91CC\u8FD8\u6CA1\u6709\u8FD9\u4E2A\u6587\u4EF6\uFF09"):m.beforeSource)),i("div",{style:{minWidth:0}},e("\u672C\u6B21\u8981\u590D\u5236\u7684\u4EE3\u7801"),i("pre",{style:{maxHeight:240,overflow:"auto"}},m.source)))):null)),U.rows.some(m=>m.status==="\u65B0\u589E")?i("p",null,e("\u65B0\u589E\u811A\u672C\u590D\u5236\u540E\uFF0C\u8FD8\u9700\u8981\u5728\u5343\u661F\u6C99\u7BB1\u91CC\u5173\u8054\u5BF9\u5E94\u7684\u811A\u672C\u6587\u4EF6\uFF1B\u9700\u8981\u76F4\u63A5\u8FD0\u884C\u7684\u811A\u672C\u8FD8\u8981\u6302\u5230\u63A7\u4EF6\u4E0A\u3002")):null,P.length?i("p",null,e`已选 ${P.length} 个脚本,其中 ${U.rows.filter(m=>P.includes(m.id)&&m.status==="\u8986\u76D6").length} 个会替换游戏里的旧文件。替换前会自动备份旧文件,游戏里的其他文件会保留。`):null,i("div",{style:{display:"flex",gap:6}},me(e("\u6682\u4E0D\u590D\u5236"),async()=>N(null)),me(e`确认复制 ${P.length} 个脚本`,async()=>{let m=U;N(null),await g(),M(await d("script-sync-apply",{planId:m.id,scriptIds:P,confirmed:!0}))},!P.length||!!U.pendingGuidChanges))):null,A?i("div",{role:"status"},i("strong",null,A.completed?e("\u811A\u672C\u5DF2\u590D\u5236\u5230\u5343\u661F\u6C99\u7BB1"):e("\u6709\u4E9B\u811A\u672C\u672A\u590D\u5236\u6210\u529F")),i("p",null,A.completed?e("\u4E0B\u4E00\u6B65\uFF1A\u56DE\u5230\u5343\u661F\u6C99\u7BB1\uFF0C\u4FDD\u5B58\u5173\u5361\u5E76\u91CD\u65B0\u8BD5\u73A9\uFF0C\u8BA9\u6E38\u620F\u52A0\u8F7D\u66F4\u65B0\u540E\u7684\u811A\u672C\u3002"):e("\u8BF7\u6309\u4E0B\u65B9\u63D0\u793A\u5904\u7406\u5931\u8D25\u7684\u6587\u4EF6\uFF0C\u518D\u91CD\u65B0\u67E5\u770B\u66F4\u65B0\u5E76\u590D\u5236\u3002")),i("p",{style:{overflowWrap:"anywhere"}},e`复制时间:${new Date(A.at).toLocaleString()} · 旧文件备份保存在:${A.backupRoot}`),i("ul",{style:{overflowWrap:"anywhere"}},A.results.map(m=>i("li",{key:m.id},`${m.target}\uFF1A${m.status==="\u6210\u529F"?e("\u5DF2\u590D\u5236"):e("\u672A\u590D\u5236")}${m.error?` \xB7 ${m.error}`:""}`)))):null))}}function Zt(a){let i=a.createElement;return function({snap:s,prepare:d,patch:t,copy:g,onScripts:v,onError:S,reloadArchive:I}){let[y,k]=a.useState(!1),[L,$]=a.useState(null),[T,U]=a.useState(null),[N,P]=a.useState(""),[_,A]=a.useState(!1),M=a.useRef(null),w=s.controlGuidChanges||[],B=w.at(-1)?.id||"";a.useEffect(()=>{$(null),P("")},[s.version,s.save?.name]),a.useEffect(()=>{A(!1)},[B,s.save?.name]),a.useLayoutEffect(()=>{N&&M.current&&(M.current.scrollTop=0)},[N]);let z=E=>async()=>{k(!0);try{await E()}catch(V){S(V?.message||String(V))}finally{k(!1)}},Z=z(async()=>{P(await g()),$(null),M.current&&(M.current.scrollTop=0)});return!w.length&&!T?null:_?i("div",{style:{flexShrink:0,padding:"2px 10px"}},i("button",{className:"qxsim-action",onClick:()=>A(!1)},e`Lua 索引待同步(${w.length} 项)· 展开`)):i("section",{ref:M,className:"qxsim-note","aria-label":e("Lua \u7D22\u5F15\u540C\u6B65"),style:{flexShrink:0,maxHeight:270,overflow:"auto",overflowWrap:"anywhere"}},i("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8}},i("strong",null,w.length?e`下一步:同步 Lua 索引引用(${w.length} 项)`:e("\u811A\u672C\u5168\u91CF\u66FF\u6362\u5DF2\u5B8C\u6210")),i("button",{className:"qxsim-action","aria-label":e("\u5173\u95ED\u7D22\u5F15\u540C\u6B65\u63D0\u793A"),title:e("\u6536\u8D77\u63D0\u793A\uFF0C\u4FDD\u7559\u5F85\u540C\u6B65\u8BB0\u5F55"),disabled:y,onClick:()=>{w.length?A(!0):U(null)}},e("\u5173\u95ED"))),N?i("details",{open:!0},i("summary",null,e("\u540C\u6B65\u4EFB\u52A1\uFF08\u7C98\u8D34\u7ED9\u5F53\u524D\u9879\u76EE\u7684 AI\uFF09")),i("textarea",{"aria-label":e("AI \u7D22\u5F15\u540C\u6B65\u4EFB\u52A1"),readOnly:!0,value:N,rows:5,style:{width:"100%",boxSizing:"border-box"}}),i("button",{className:"qxsim-action",disabled:y,onClick:z(I)},e("AI \u5DF2\u5904\u7406\uFF0C\u91CD\u65B0\u8F7D\u5165\u5B58\u6863"))):null,i("div",null,w.length?e("\u63A7\u4EF6\u7D22\u5F15\u5DF2\u4FEE\u6539\uFF0C\u8BF7\u9009\u62E9\u4E00\u79CD\u65B9\u5F0F\u540C\u6B65\u811A\u672C\u3002"):e("\u8BF7\u68C0\u67E5\u66FF\u6362\u7ED3\u679C\u5E76\u4FDD\u5B58\u5B58\u6863\uFF0C\u518D\u5230\u300CLua \u811A\u672C \u2192 \u5B9E\u673A\u811A\u672C\u540C\u6B65\u300D\u66F4\u65B0\u6E38\u620F\u91CC\u7684\u6587\u4EF6\u5E76\u91CD\u65B0\u8BD5\u73A9\u3002")),w.length?i(a.Fragment,null,i("div",{role:"group","aria-label":e("\u7D22\u5F15\u540C\u6B65\u65B9\u5F0F"),style:{display:"flex",gap:12,flexWrap:"wrap",marginTop:5}},i("div",{style:{flex:"1 1 280px"}},i("button",{className:"qxsim-action",disabled:y,onClick:z(async()=>{await d();let V=(await t({op:"previewControlGuidSync"})).controlGuidSyncPreview;if(U(null),P(""),!V.canApply){$(V);return}let oe=await t({op:"syncControlGuidReferences",planId:V.id});U(oe.controlGuidSyncResult),$(null)})},e("\u5168\u91CF\u66FF\u6362\u811A\u672C\u7D22\u5F15")),i("div",null,i("strong",null,e("\u53EF\u80FD\u9519\u8BEF\u5730\u66FF\u6362\u975E\u7D22\u5F15\u5185\u5BB9\u3002")),e("\u6309\u5B8C\u6574\u5341\u8FDB\u5236\u6570\u5B57\u66FF\u6362\u6240\u6709\u5DF2\u767B\u8BB0\u811A\u672C\uFF0C\u5305\u62EC\u914D\u7F6E\u8868\u3001\u5B57\u7B26\u4E32\u548C\u6CE8\u91CA\uFF1B\u540C\u65F6\u66F4\u65B0\u5185\u5BB9\u4E00\u81F4\u7684\u5DE5\u4F5C\u533A\u6E90\u6587\u4EF6\uFF0C\u66FF\u6362\u524D\u81EA\u52A8\u5907\u4EFD\u3002"))),i("div",{style:{flex:"1 1 280px"}},i("button",{className:"qxsim-action",disabled:y,onClick:Z},e("\u590D\u5236\u63D0\u793A\u8BCD\u7ED9 AI")),i("div",null,e("\u5148\u4FDD\u5B58\u6700\u65B0\u5B58\u6863\uFF0C\u518D\u590D\u5236\u5305\u542B\u6620\u5C04\u8BFB\u53D6\u65B9\u5F0F\u548C\u811A\u672C\u4F4D\u7F6E\u7684\u63D0\u793A\u8BCD\uFF0C\u7531 AI \u5224\u65AD\u54EA\u4E9B\u5F15\u7528\u9700\u8981\u66F4\u65B0\u3002")))),i("details",null,i("summary",null,e`查看索引变更(${w.length} 项)`),i("ul",null,w.slice(0,20).map(E=>i("li",{key:E.id},`${E.controlName}\uFF1A${E.oldGuid} \u2192 ${E.newGuid}`))),w.length>20?i("div",null,e("\u8FD9\u91CC\u663E\u793A\u524D 20 \u9879\uFF1B\u5B8C\u6574\u6620\u5C04\u968F\u5B58\u6863\u4FDD\u5B58\uFF0C\u590D\u5236\u7684\u4EFB\u52A1\u4F1A\u5F15\u5BFC AI \u8BFB\u53D6\u5168\u90E8\u3002")):null)):null,L?i("div",{"aria-label":e("Lua \u7D22\u5F15\u540C\u6B65\u95EE\u9898")},i("p",null,e("\u6E90\u7801\u6587\u4EF6\u6216\u7D22\u5F15\u6620\u5C04\u5B58\u5728\u51B2\u7A81\uFF0C\u672C\u6B21\u6CA1\u6709\u4FEE\u6539\u811A\u672C\u3002\u53EF\u590D\u5236\u63D0\u793A\u8BCD\u7ED9 AI \u5904\u7406\u3002")),L.issues.map((E,V)=>i("div",{key:V},E)),L.rows.filter(E=>E.issues.length).map(E=>i("details",{key:E.id,open:!0},i("summary",null,E.path||e("\u5185\u8054\u811A\u672C")),E.issues.slice(0,12).map((V,oe)=>i("div",{key:`i${oe}`},`${V.line?e`第 ${V.line} 行:`:""}${V.reason}`)),E.issues.length>12?i("div",null,e("\u5176\u4F59\u95EE\u9898\u8BF7\u7531 AI \u6838\u5BF9\u3002")):null))):null,T&&!w.length?i(a.Fragment,null,i("div",null,e`已替换 ${T.scripts} 个脚本的 ${T.replacements} 处文本,更新 ${T.projectFiles} 个项目文件。备份:${T.backupRoot}`),i("button",{className:"qxsim-action",onClick:v},e("\u524D\u5F80 Lua \u811A\u672C"))):null)}}function Qe(a){try{a?.close()}catch{}}function ui(){if(window.location.protocol==="dsh-app:")return null;let a;try{return a=window.open("about:blank","_blank"),!a||a.closed?null:(a.document.write(e('<!doctype html><meta charset="utf-8"><title>\u6B63\u5728\u51C6\u5907\u8BD5\u73A9\u2026</title><p>\u6B63\u5728\u4FDD\u5B58\u9879\u76EE\u5E76\u51C6\u5907\u8BD5\u73A9\u2026</p>')),a)}catch{return Qe(a),null}}function ea(a){let i=a.createElement,p=new Map;function s({entry:d,api:t,onClosed:g}){let v=a.useRef(null),S=a.useRef(null),[I,y]=a.useState(!1),[k,L]=a.useState(""),[$,T]=a.useState(!1);a.useLayoutEffect(()=>{let N={closing:!1,stopped:!1,pending:null,controller:null,requests:new Set};S.current=N;let P=v.current,_=P.querySelector("iframe"),A=!0,M=()=>{if(N.stopped)return Promise.resolve();if(N.closing=!0,!N.controller)return N.stopped=!0,Promise.resolve();if(!N.pending){let z=(async()=>{N.controller?.quiesce(),await Promise.allSettled([...N.requests]),await t(d.sessionId,"play",{action:"stop",args:{}}),N.stopped=!0})().finally(()=>{N.pending=null,p.get(d.sessionId)===z&&p.delete(d.sessionId)});N.pending=z,p.set(d.sessionId,z)}return N.pending};N.close=async()=>{if(!(N.pending||N.stopped)){y(!0),L("");try{await M(),A&&g()}catch(z){A&&(L(e`停止试玩失败,请重试:${z?.message||z}`),y(!1))}}};let w=z=>{z.source!==_.contentWindow||z.data?.type!=="qxqy-play-close"||z.data.sessionId!==d.sessionId||N.close()},B=z=>{z.preventDefault(),N.close()};return window.addEventListener("message",w),P.addEventListener("cancel",B),P.showModal(),()=>{A=!1,window.removeEventListener("message",w),P.removeEventListener("cancel",B),P.close(),M().catch(z=>console.error("Embedded play cleanup failed",z)),d.returnFocus?.isConnected&&d.returnFocus.focus()}},[d,t,g]);function U(N){let P=S.current;if(!P.closing)try{let _=N.currentTarget,A=_.contentWindow?.qxqyEmbeddedPlay;if(!A)throw new Error(e("\u8BD5\u73A9\u9875\u672A\u80FD\u52A0\u8F7D\uFF0C\u8BF7\u8FD4\u56DE\u7F16\u8F91\u540E\u91CD\u8BD5\u3002"));P.controller=A,T(!0),_.focus(),A.focus();let M=(w,B={})=>{if(P.closing)return Promise.reject(new Error(e("\u8BD5\u73A9\u6B63\u5728\u5173\u95ED")));let z=t(d.sessionId,"play",{action:w,args:B});return P.requests.add(z),z.then(()=>P.requests.delete(z),()=>P.requests.delete(z)),z};A.start(M).catch(w=>{P.closing||L(w?.message||String(w))})}catch(_){L(_?.message||String(_))}}return i("dialog",{ref:v,className:"qxsim-play-overlay","aria-label":e("\u5185\u5D4C\u8BD5\u73A9"),"aria-modal":!0},i("header",{className:"qxsim-play-header"},i("span",{role:"status"},I?e("\u6B63\u5728\u505C\u6B62\u8BD5\u73A9\u2026"):$?e("\u5185\u5D4C\u8BD5\u73A9"):e("\u6B63\u5728\u8F7D\u5165\u8BD5\u73A9\u2026")),i("button",{className:"qxsim-action",type:"button",disabled:I,onClick:()=>void S.current?.close?.()},e("\u5173\u95ED\u8BD5\u73A9"))),k?i("div",{className:"qxsim-play-error",role:"alert"},e(k)):null,i("iframe",{title:e("\u5343\u661F\u6C99\u7BB1\u8BD5\u73A9"),src:d.url,onLoad:U,tabIndex:0}))}return function({sessionId:t,api:g,playUrl:v,onError:S}){let I=a.useRef(null),[y,k]=a.useState(!1),[L,$]=a.useState(null),T=a.useCallback(()=>$(null),[]);a.useEffect(()=>{let N={active:!0,pending:!1,popup:null};return I.current=N,k(!1),$(null),()=>{N.active=!1,Qe(N.popup)}},[t]);async function U(N){let P=I.current;if(!P?.active||P.pending||L)return;P.pending=!0;let _=document.activeElement;k(!0);try{let A=ui();if(P.popup=A,await p.get(t),!P.active||(await N(),!P.active))return;let M=new URL(v(t),window.location.href);if(A){try{if(A.closed)throw new Error("Play window closed");A.location.replace(M.href)}catch{Qe(A),A=null}P.popup=null}A||(M.searchParams.set("embedded","1"),$({sessionId:t,url:M.href,returnFocus:_}))}catch(A){Qe(P.popup),P.popup=null,P.active&&S(A?.message||String(A))}finally{P.pending=!1,P.active&&k(!1)}}return{open:U,opening:y,overlay:L?.sessionId===t?i(s,{key:t,entry:L,api:g,onClosed:T}):null}}}var ta="prefab-v1",mi=[[10003004,10003004],[10005001,10005142],[10006001,10006002],[10007002,10007002],[10008001,10008001],[10009001,10009011],[20001001,20001074],[20001076,20001121],[20001123,20001156],[20001158,20001302],[20001304,20001568],[20001570,20001999],[20002001,20002755],[20002757,20002999],[20003001,20003455],[30001001,30001016],[30002001,30002017],[30003001,30003011],[30004001,30004001],[30005001,30005020],[30006001,30006026],[30007001,30007013],[30008001,30008011]];function aa(a){return!Number.isSafeInteger(a)||!mi.some(([i,p])=>a>=i&&a<=p)?null:a===10003004||a===10008001?128:256}var gi="sprite-v1",fi="/qxqy-assets/",hi=[[100001,100006],[100101,100213],[101001,101018],[101020,101028],[101030,101046],[101048,101048],[101050,101054],[101056,101080],[102001,102052],[103001,103148],[104001,104010],[105001,105140],[105142,105219],[105221,105317],[106001,106047],[106049,106096],[107001,107007],[107010,107020],[107031,107092],[107094,107180],[107183,107201],[107203,107205],[107207,107228],[107231,107278],[107280,107402],[108001,108017],[108019,108020],[109001,109031],[109033,109034],[109036,109075],[110001,110053],[111001,111139],[112001,112042]];function Ce(a){return a==null||a===""?"StaticReference":typeof a=="string"?a:typeof a.Name=="string"?a.Name:"Unknown"}function ge(a,i){return`${Ce(i)}:${a}`}function Ee(a,i){let p=Ce(i);return p==="Prefab"?aa(a)!==null:p==="StaticReference"&&Number.isSafeInteger(a)&&a>100006&&hi.some(([s,d])=>a>=s&&a<=d)}function qt(a,i=0,p){let s=Ce(p);if(!["StaticReference","Prefab"].includes(s))throw new Error(`Unsupported image source: ${s}`);return`${fi}${s==="Prefab"?ta:gi}/${a}.png${i?`?refresh=${i}`:""}`}function ia(a,i=0,p){return qt(a,i,p).replace(".png",".json")}var kt="qxqy-image-refresh",xe=new Map,Oe=new Map,$e=new Map,Ct=new Set,xi=16777216,na=!1;function oa(a,i){$e.set(a,i),xe.delete(a),Oe.delete(a);for(let p of Ct)p(a)}var ra=a=>/^\d+$/.test(a)?ge(Number(a)):a;function Ze(){if(!(na||typeof window>"u")){na=!0;try{for(let[a,i]of Object.entries(JSON.parse(localStorage.getItem(kt)||"{}")))$e.set(ra(a),i)}catch{}window.addEventListener("storage",a=>{if(a.key===kt)try{for(let[i,p]of Object.entries(JSON.parse(a.newValue||"{}"))){let s=ra(i);$e.get(s)!==p&&oa(s,p)}}catch{}})}}function Nt(a){return Ze(),Ct.add(a),()=>Ct.delete(a)}function sa(a,i){Ze(),oa(ge(a,i),Date.now());try{localStorage.setItem(kt,JSON.stringify(Object.fromEntries($e)))}catch{}}function It(a,i){if(Ze(),Ce(i)!=="StaticReference"||!Ee(a,i))return Promise.resolve(null);let p=ge(a,i),s=Oe.get(p);if(s)return s;let d=fetch(ia(a,$e.get(p),i),{signal:AbortSignal.timeout(3e4)}).then(async t=>{if(!t.ok)throw new Error(`\u56FE\u7247 ${a} \u5143\u6570\u636E\u52A0\u8F7D\u5931\u8D25\uFF1AHTTP ${t.status}`);return t.json()}).catch(t=>{throw Oe.get(p)===d&&Oe.delete(p),t});return Oe.set(p,d),d}async function la(a,i){let[p,s]=await Promise.all([bi(a,i),It(a,i).then(d=>({meta:d,error:""}),d=>({meta:void 0,error:d.message}))]);return{image:p,...s}}function bi(a,i){if(Ze(),!Ee(a,i))return Promise.reject(new Error("Image source/ID is not in the preview allowlist"));let p=ge(a,i),s=xe.get(p);if(s&&(!s.failed||Date.now()<s.retryAt))return xe.delete(p),xe.set(p,s),s.promise;let d={pixels:0,failed:!1};return d.promise=new Promise((t,g)=>{let v=new Image,S=setTimeout(()=>{v.src="",I(new Error("\u56FE\u7247\u52A0\u8F7D\u8D85\u65F6"))},45e3);function I(y){if(clearTimeout(S),v.onload=v.onerror=null,y){d.failed=!0,d.retryAt=Date.now()+6e4,g(y);return}d.pixels=v.width*v.height;let k=[...xe.values()].reduce((L,$)=>L+$.pixels,0);for(let[L,$]of xe){if(k<=xi&&xe.size<=128)break;L!==p&&(!$.pixels&&!$.failed||(xe.delete(L),k-=$.pixels))}t(v)}v.onload=()=>I(),v.onerror=()=>I(new Error(`\u56FE\u7247 ${a} \u52A0\u8F7D\u5931\u8D25\uFF0C\u53EF\u5728\u5C5E\u6027\u9762\u677F\u5237\u65B0\u7D20\u6750`)),v.src=qt(a,$e.get(p),i)}),xe.set(p,d),d.promise}function ca(a,i,p){let s=Number(i??4294967295)>>>0;if((s&16777215)===16777215)return a;let d=p(a.width,a.height),t=d.getContext("2d");t.drawImage(a,0,0);let g=t.getImageData(0,0,d.width,d.height),v=s>>>16&255,S=s>>>8&255,I=s&255;for(let y=0;y<g.data.length;y+=4)g.data[y]=Math.round(g.data[y]*v/255),g.data[y+1]=Math.round(g.data[y+1]*S/255),g.data[y+2]=Math.round(g.data[y+2]*I/255);return t.putImageData(g,0,0),d}function At(a){return!!a?.border&&Object.values(a.border).some(i=>Number.isFinite(i)&&i>0)}function et(a,i){let p=typeof i=="object"?i?.Name:i;return At(a)&&p!=="Basic"?"Stretch":"Basic"}function vi(a,i,p,s){i=Number.isFinite(i)?Math.max(0,i):0,p=Number.isFinite(p)?Math.max(0,p):0;let d=Math.min(1,a/(i+p||1));i*=d,p*=d;let t=Math.min(1,s/(i+p||1));return{source:[0,i,a-p,a],target:[0,i*t,s-p*t,s]}}var da=new WeakMap;function pa(a,i,p,s,d){let t=Math.max(0,p),g=Math.max(0,s),v=Math.min(1,4096/Math.max(1,t),4096/Math.max(1,g)),S=Math.max(1,Math.round(t*v)),I=Math.max(1,Math.round(g*v)),y=d(S,I),k=y.getContext("2d");if(!t||!g)return y;let L=da.get(a);if(!L){let _=d(a.width,a.height),A=_.getContext("2d");A.drawImage(a,0,0),L=A.getImageData(0,0,a.width,a.height),da.set(a,L)}let $=k.createImageData(S,I),T=L.data,U=(_,A,M,w,B,z)=>{let{source:Z,target:E}=vi(A,M,w,B);return Array.from({length:z},(V,oe)=>{let se=(oe+.5)*B/z,ie=se<E[1]?0:se<E[2]?1:2,be=E[ie+1]>E[ie]?(se-E[ie])/(E[ie+1]-E[ie]):0,pe=Math.max(0,Math.min(_-1,(Z[ie]+be*(Z[ie+1]-Z[ie]))*_/A-.5)),de=Math.floor(pe);return[de,Math.min(_-1,de+1),pe-de]})},N=U(a.width,i.width,i.border.left,i.border.right,t,S),P=U(a.height,i.height,i.border.top,i.border.bottom,g,I);for(let _=0;_<I;_++)for(let A=0;A<S;A++){let[M,w,B]=N[A],[z,Z,E]=P[_],V=(z*a.width+M)*4,oe=(z*a.width+w)*4,se=(Z*a.width+M)*4,ie=(Z*a.width+w)*4,be=T[V+3]*(1-B)*(1-E),pe=T[oe+3]*B*(1-E),de=T[se+3]*(1-B)*E,ee=T[ie+3]*B*E,te=be+pe+de+ee,ve=(_*S+A)*4;$.data[ve+3]=Math.round(te);for(let ae=0;ae<3;ae++)$.data[ve+ae]=te?Math.round((T[V+ae]*be+T[oe+ae]*pe+T[se+ae]*de+T[ie+ae]*ee)/te):0}return k.putImageData($,0,0),y}function ua(a,i,p){if(a.fillType!=="Horizontal"&&a.fillType!=="Vertical")return null;let s=Number(a.fillAmount??1),d=Number.isFinite(s)?Math.max(0,Math.min(1,s)):1;if(a.fillType==="Horizontal"){let g=i*d;return{x:a.fillHorizontalType==="Right"?i/2-g:-i/2,y:-p/2,width:g,height:p}}let t=p*d;return{x:-i/2,y:a.fillVerticalType==="Top"?-p/2:p/2-t,width:i,height:t}}function ma(a,i){let p=document.createElement("canvas");return p.width=a,p.height=i,p}function ga(a){let i=a.createElement;return function({item:s}){let d=ge(s.imageId,s.imageSource),t=a.useRef(null),[g,v]=a.useState({image:null,meta:null,error:""}),[S,I]=a.useState(0);return a.useEffect(()=>Nt(y=>{y===d&&I(k=>k+1)}),[d]),a.useEffect(()=>{let y=!0;return v({image:null,error:""}),la(s.imageId,s.imageSource).then(({image:k,meta:L,error:$})=>{y&&v({image:k,meta:L,error:$})},k=>{y&&v({image:null,error:k.message})}),()=>{y=!1}},[d,S]),a.useEffect(()=>{let y=t.current;if(!g.image||!y)return;let k=et(g.meta,s.imageType)==="Stretch"?pa(g.image,g.meta,s.width,s.height,ma):g.image,L=ca(k,s.imageColor,ma);y.width=L.width,y.height=L.height;let $=y.getContext("2d"),T=s.enableFill?ua(s,y.width,y.height):null;T&&($.beginPath(),$.rect(T.x+y.width/2,T.y+y.height/2,T.width,T.height),$.clip()),$.globalAlpha=(Number(s.imageColor??4294967295)>>>24&255)/255,$.drawImage(L,0,0)},[g.image,g.meta,s.imageType,s.width,s.height,s.imageColor,s.enableFill,s.fillType,s.fillHorizontalType,s.fillVerticalType,s.fillAmount]),g.image?i("canvas",{ref:t,title:g.error,"data-image-id":s.imageId,"data-image-source":Ce(s.imageSource),"data-image-type":et(g.meta,s.imageType),"aria-label":e`图片 ${s.imageId}`,style:{display:"block",position:"absolute",inset:0,width:"100%",height:"100%"}}):i("span",{className:"qxsim-box-label",title:g.error,role:g.error?"status":void 0},g.error?e`图片 ${s.imageId} 加载失败`:e`加载图片 ${s.imageId}…`)}}function fa(a){let i=a.createElement;return function({imageId:s,imageSource:d,value:t,commit:g}){let v=ge(s,d),[S,I]=a.useState({key:"",meta:void 0,error:""}),[y,k]=a.useState(0);a.useEffect(()=>Nt(T=>{T===v&&k(U=>U+1)}),[v]),a.useEffect(()=>{let T=!0;return I({key:v,meta:void 0,error:""}),It(s,d).then(U=>{T&&I({key:v,meta:U,error:""})},U=>{T&&I({key:v,meta:void 0,error:U.message})}),()=>{T=!1}},[v,y]);let L=S.key===v&&S.meta!==void 0,$=L&&At(S.meta);return i("label",{className:"qxsim-field"},i("span",{className:"qxsim-field-label"},e("\u56FE\u7247\u7C7B\u578B")),i("select",{"aria-label":e("\u56FE\u7247\u7C7B\u578B"),disabled:!$,value:L?et(S.meta,t):"",onChange:T=>g("imageType",T.target.value)},L?i("option",{value:"Basic"},e("\u57FA\u7840")):i("option",{value:""},S.error?e("\u5143\u6570\u636E\u52A0\u8F7D\u5931\u8D25"):e("\u8BFB\u53D6\u7D20\u6750\u8FB9\u754C\u2026")),$?i("option",{value:"Stretch"},e("\u62C9\u4F38")):null),S.error?i("small",{role:"status"},S.error):null)}}var yi=a=>`#${(Number(a)&16777215).toString(16).padStart(6,"0").toUpperCase()}`,ha=a=>String(Math.round(a/255*100));function xa(a){let i=a.createElement;return function({field:s,commit:d}){let t=yi(s.value),g=Number(s.value)>>>24,v=ha(g),[S,I]=a.useState(t),[y,k]=a.useState(v),L=a.useRef(!1),[$,T]=a.useState(""),[U,N]=a.useState("");a.useEffect(()=>{I(t),T("")},[t]),a.useEffect(()=>{L.current||(k(v),N(""))},[v]);function P(w){let B=w.trim().replace(/^#/,"");if(!/^[0-9a-f]{6}$/i.test(B)){T(e("\u8BF7\u8F93\u5165\u516D\u4F4D\u989C\u8272\uFF0C\u4F8B\u5982 #FF8800"));return}let z=`#${B.toUpperCase()}`;I(z),T(""),d(s.key,Z=>(Number(Z)&4278190080|parseInt(B,16))>>>0)}function _(w){let B=Number(w);if(!String(w).trim()||!Number.isInteger(B)||B<0||B>100){N(e("\u900F\u660E\u5EA6\u8BF7\u8F93\u5165 0\u2013100 \u7684\u6574\u6570"));return}let z=Math.round(B/100*255);L.current=!1,k(ha(z)),N(""),d(s.key,Z=>(z<<24|Number(Z)&16777215)>>>0)}let A=e("Alpha\uFF1A0% \u5B8C\u5168\u900F\u660E\uFF0C100% \u5B8C\u5168\u4E0D\u900F\u660E"),M=y.trim()&&Number.isFinite(Number(y))?Math.max(0,Math.min(100,Number(y))):Number(v);return i("div",{className:"qxsim-color-editor",role:"group","aria-label":e`${e(s.label)}与透明度`},i("div",{className:"qxsim-field"},i("span",{className:"qxsim-field-label"},e(s.label)),i("span",{className:"qxsim-color-row"},i("span",{className:"qxsim-color-swatch",title:e("\u6253\u5F00\u53D6\u8272\u5668")},i("input",{type:"color",value:/^#[0-9a-f]{6}$/i.test(S)?S:t,disabled:!!s.readonly,"aria-label":e`${e(s.label)}取色器`,onInput:w=>P(w.target.value)})),i("input",{type:"text",value:S,spellCheck:!1,disabled:!!s.readonly,placeholder:"#RRGGBB","aria-label":`${e(s.label)} RGB`,"aria-invalid":!!$,onChange:w=>{I(w.target.value),T("")},onBlur:()=>P(S),onKeyDown:w=>{w.key==="Enter"&&w.currentTarget.blur(),w.key==="Escape"&&(I(t),T(""))}})),$?i("small",{className:"qxsim-color-error",role:"alert"},$):null),i("div",{className:"qxsim-field"},i("span",{className:"qxsim-field-label",title:A},e("\u900F\u660E\u5EA6")),i("span",{className:"qxsim-alpha-row"},i("input",{type:"range",min:0,max:100,step:1,value:M,disabled:!!s.readonly,title:A,"aria-label":e`${e(s.label)}透明度滑块`,onInput:w=>_(w.target.value)}),i("span",{className:"qxsim-alpha-value"},i("input",{type:"number",min:0,max:100,step:1,inputMode:"numeric",value:y,disabled:!!s.readonly,title:A,"aria-label":e`${e(s.label)}透明度`,"aria-invalid":!!U,onChange:w=>{L.current=!0,k(w.target.value),N("")},onBlur:()=>{L.current&&_(y)},onKeyDown:w=>{w.key==="Enter"&&w.currentTarget.blur(),w.key==="Escape"&&(L.current=!1,k(v),N(""))}}),i("span",{"aria-hidden":!0},"%"))),U?i("small",{className:"qxsim-color-error",role:"alert"},U):null))}}function ba(a,i,p){let s=a.renderMatrix;if(!s)return{};let d=s.a*a.centerX+s.c*a.centerY+s.tx,t=s.b*a.centerX+s.d*a.centerY+s.ty;return{left:`${(d-a.width/2)/i*100}%`,bottom:`${(t-a.height/2)/p*100}%`,width:`${a.width/i*100}%`,height:`${a.height/p*100}%`,transform:`matrix(${s.a},${-s.b},${-s.c},${s.d},0,0)`}}var tt='"Microsoft YaHei UI","Microsoft YaHei","HarmonyOS Sans SC","Noto Sans CJK SC",sans-serif',Pt="/qxqy-font";var Lt=a=>`QxqyLocal_${a}`,va=a=>a?`"${Lt(a)}",${tt}`:tt;function ya(a,i,p){let s=a.textLayout;return{flex:"0 0 auto",width:`${(s?.textWidth??Math.max(0,a.width-4))*i}px`,margin:`0 ${2*i}px`,whiteSpace:"pre",fontFamily:p||tt,fontSize:`${(s?.fontSize??a.fontSize??20)*i}px`,lineHeight:`${(s?.lineHeight??(a.fontSize??20)*1.2)*i}px`,textAlign:a.horizontalAlignment==="Right"?"right":a.horizontalAlignment==="Middle"?"center":"left"}}var Et;function wa(){return Et||=Si().catch(a=>{throw Et=null,a}),Et}async function Si(){let a={cache:"no-store",credentials:"same-origin",mode:"same-origin",signal:AbortSignal.timeout(1e4)},i=await fetch(`${Pt}/manifest`,a);if(!i.ok)throw new Error("\u65E0\u6CD5\u8BFB\u53D6\u672C\u5730\u5B57\u4F53\u914D\u7F6E\uFF0C\u8BF7\u68C0\u67E5\u5BBF\u4E3B\u914D\u7F6E\u53CA\u672C\u673A\u8FDE\u63A5");let{id:p}=await i.json();if(p===null)return null;if(typeof p!="string"||!/^[a-f0-9]{64}$/.test(p))throw new Error("\u672C\u5730\u5B57\u4F53\u6807\u8BC6\u65E0\u6548");let s=await fetch(`${Pt}/file/${p}`,a);if(!s.ok)throw new Error("\u672C\u5730\u5B57\u4F53\u52A0\u8F7D\u5931\u8D25\uFF0C\u8BF7\u91CD\u542F\u5BBF\u4E3B\u5E76\u5237\u65B0\u9875\u9762");let d=await s.arrayBuffer();if(!d.byteLength||d.byteLength>33554432)throw new Error("\u672C\u5730\u5B57\u4F53\u5927\u5C0F\u65E0\u6548");let t=new FontFace(Lt(p),d);await t.load(),document.fonts.add(t);let g=va(p),v="qxqy-local-font-style",S=document.getElementById(v);return S||(S=document.createElement("style"),S.id=v,document.head.appendChild(S)),S.textContent=`[data-qxqy-font-ui], [data-qxqy-font-ui] * { font-family: ${g} !important; }`,g}var qi="/qxqy-font/settings";async function Sa(a){let i=await fetch(qi,{credentials:"same-origin",mode:"same-origin",cache:"no-store",signal:AbortSignal.timeout(1e4),...a?{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(a)}:{}});if(i.status===404)throw new Error("\u5F53\u524D\u540E\u53F0\u5C1A\u672A\u52A0\u8F7D\u5B57\u4F53\u8BBE\u7F6E\u529F\u80FD\uFF0C\u8BF7\u91CD\u542F Web \u6216 Harness \u5BBF\u4E3B\u540E\u91CD\u8BD5\u3002");if(!i.ok)throw new Error(await i.text()||e("\u65E0\u6CD5\u8BFB\u53D6\u5B57\u4F53\u8BBE\u7F6E"));return i.json()}function qa(a){let i=a.createElement;return function({onClose:s}){let[d,t]=a.useState(null),[g,v]=a.useState("auto"),[S,I]=a.useState(""),[y,k]=a.useState(!1),[L,$]=a.useState(""),[T,U]=a.useState(""),[N,P]=a.useState(0);a.useEffect(()=>{let M=!0;return $(""),Sa().then(w=>{M&&(t(w),v(w.mode),I(w.environmentPath||w.path||w.active.path||w.defaultPaths[0]||""))},w=>{M&&$(w.message)}),()=>{M=!1}},[N]);async function _(M){M.preventDefault(),k(!0),$(""),U("");try{let w=await Sa({mode:g,path:S});t(w);let B=g==="auto"?w.nextFont.path?e`找到字体:${w.nextFont.path}。`:e("\u9ED8\u8BA4\u4F4D\u7F6E\u672A\u627E\u5230\u5B57\u4F53\uFF0C\u5C06\u4F7F\u7528\u7CFB\u7EDF\u5B57\u4F53\u3002"):"";U(e`已保存。${B}重启 Web、MCP 或 Harness 宿主后,刷新编辑器及试玩页生效。`)}catch(w){$(w.message)}finally{k(!1)}}let A=!!d?.environmentPath;return i("div",{className:"qxsim-save-overlay",onKeyDown:M=>{M.key==="Escape"&&(M.stopPropagation(),y||s())}},i("form",{className:"qxsim-save-dialog qxsim-font-dialog",role:"dialog","aria-modal":!0,"aria-label":e("\u5B57\u4F53\u8BBE\u7F6E"),onSubmit:_,style:{width:"min(680px, 94%)",maxHeight:"90%",overflow:"auto"}},i("h2",null,e("\u5B57\u4F53\u8BBE\u7F6E")),i("p",null,e("\u7528\u4E8E\u6574\u4E2A\u6A21\u62DF\u5668\u754C\u9762\u3001\u7F16\u8F91\u753B\u5E03\u3001\u8BD5\u73A9\u53CA\u622A\u56FE\u3002\u8BBE\u7F6E\u4EC5\u4FDD\u5B58\u5728\u672C\u673A\uFF0C\u91CD\u542F\u5BBF\u4E3B\u540E\u751F\u6548\u3002")),d?i(a.Fragment,null,i("p",{style:{overflowWrap:"anywhere"}},e`当前字体:${d.active.path||e("\u7CFB\u7EDF\u5B57\u4F53")}`),A?i("p",{role:"status"},e("\u5F53\u524D\u7531\u73AF\u5883\u53D8\u91CF QXQY_FONT_PATH \u6307\u5B9A\u3002\u79FB\u9664\u8BE5\u53D8\u91CF\u5E76\u91CD\u542F\u5BBF\u4E3B\u540E\uFF0C\u53EF\u5728\u8FD9\u91CC\u4FEE\u6539\u3002")):null,d.error?i("p",{role:"alert"},e(d.error)):null,i("label",{className:"qxsim-field"},e("\u5B57\u4F53\u6765\u6E90"),i("select",{autoFocus:!0,"aria-label":e("\u5B57\u4F53\u6765\u6E90"),value:g,disabled:y||A,onChange:M=>{v(M.target.value),U("")}},i("option",{value:"auto"},e("\u81EA\u52A8\u5C1D\u8BD5\u539F\u795E\u7684\u9ED8\u8BA4\u5B89\u88C5\u4F4D\u7F6E")),i("option",{value:"custom"},e("\u6307\u5B9A\u672C\u673A\u5B57\u4F53\u6587\u4EF6")),i("option",{value:"system"},e("\u4F7F\u7528\u7CFB\u7EDF\u5B57\u4F53")))),g==="custom"||A?i("label",{className:"qxsim-field"},e("\u5B57\u4F53\u6587\u4EF6\u8DEF\u5F84"),i("input",{type:"text","aria-label":e("\u5B57\u4F53\u6587\u4EF6\u8DEF\u5F84"),value:S,required:g==="custom",disabled:y||A,spellCheck:!1,placeholder:d.defaultPaths[0]||"/path/to/font.ttf",onChange:M=>{I(M.target.value),U("")}}),i("small",null,e("\u586B\u5199 TTF / OTF \u7684\u7EDD\u5BF9\u8DEF\u5F84\uFF0C\u6700\u5927 32 MiB\uFF1B\u53EF\u4EE5\u76F4\u63A5\u7C98\u8D34\u5E26\u5F15\u53F7\u7684 Windows \u8DEF\u5F84\u3002"))):null,g==="auto"&&!A?i("div",null,i("p",null,e("\u6309\u987A\u5E8F\u5C1D\u8BD5\u4EE5\u4E0B\u4F4D\u7F6E\uFF1B\u90FD\u672A\u627E\u5230\u65F6\u4F7F\u7528\u7CFB\u7EDF\u5B57\u4F53\u3002\u5B89\u88C5\u5728\u5176\u4ED6\u76D8\u7B26\u65F6\u8BF7\u9009\u62E9\u201C\u6307\u5B9A\u672C\u673A\u5B57\u4F53\u6587\u4EF6\u201D\u3002")),d.defaultPaths.length?i("ul",{style:{paddingLeft:20,overflowWrap:"anywhere"}},d.defaultPaths.map(M=>i("li",{key:M},M))):i("p",null,e("\u5F53\u524D\u7CFB\u7EDF\u4E0D\u81EA\u52A8\u67E5\u627E\uFF0C\u8BF7\u6307\u5B9A\u5B57\u4F53\u6587\u4EF6\u3002"))):null,d.restartRequired&&!T?i("p",{role:"status"},e("\u6709\u5DF2\u4FDD\u5B58\u7684\u5B57\u4F53\u8BBE\u7F6E\uFF0C\u91CD\u542F\u5BBF\u4E3B\u5E76\u5237\u65B0\u9875\u9762\u540E\u751F\u6548\u3002")):null):L?null:i("p",null,e("\u6B63\u5728\u8BFB\u53D6\u8BBE\u7F6E\u2026")),L?i("p",{role:"alert"},e(L)):null,L&&!d?i("button",{type:"button",className:"qxsim-action",onClick:()=>P(M=>M+1)},e("\u91CD\u8BD5")):null,T?i("p",{role:"status",style:{overflowWrap:"anywhere"}},T):null,i("footer",null,i("button",{type:"button",className:"qxsim-action",disabled:y,onClick:s},e("\u5173\u95ED")),i("button",{type:"submit",className:"qxsim-action primary",disabled:y||!d||A},y?e("\u4FDD\u5B58\u4E2D\u2026"):e("\u4FDD\u5B58\u8BBE\u7F6E")))))}}var $t="https://github.com/1475505/miliastra-beyond-simulator";function ka(a){let i=a.createElement,p=Ke(a);function s({title:d,children:t,onClose:g}){let v=a.useRef(null);return a.useEffect(()=>{let S=document.activeElement;return v.current.showModal(),()=>{v.current?.close(),S?.focus?.()}},[]),i("dialog",{ref:v,className:"qxsim-modal","aria-label":d,onCancel:S=>{S.preventDefault(),g()}},i("h2",null,d),t,i("footer",null,i("button",{className:"qxsim-action",onClick:g},e("\u5173\u95ED"))))}return function({request:t,version:g}){p();let[v,S]=a.useState(""),[I,y]=a.useState(!1),[k,L]=a.useState(null),[$,T]=a.useState("");async function U(){S("updates"),y(!0),T(""),L(null);try{L(await t("updates"))}catch(P){T(/^unknown (?:editor )?action\b/i.test(P?.message||"")?"\u5F53\u524D\u540E\u53F0\u5C1A\u672A\u52A0\u8F7D\u68C0\u67E5\u66F4\u65B0\u529F\u80FD\uFF0C\u8BF7\u91CD\u542F Web \u6216 Harness \u5BBF\u4E3B\u540E\u91CD\u8BD5\u3002":"\u68C0\u67E5\u66F4\u65B0\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5\u540E\u91CD\u8BD5\u3002")}finally{y(!1)}}let N={available:e("\u53D1\u73B0\u65B0\u7248\u672C"),current:e("\u5F53\u524D\u5DF2\u662F\u6700\u65B0\u7248\u672C"),ahead:e("\u5F53\u524D\u7248\u672C\u6BD4\u516C\u5F00\u7248\u672C\u66F4\u65B0"),unavailable:e("\u6682\u672A\u627E\u5230\u6B64\u5B89\u88C5\u5305\u7684\u6B63\u5F0F\u7248\u672C")};return i(a.Fragment,null,i("footer",{className:"qxsim-footer"},g?i("span",{className:"qxsim-muted"},`v${g}`):null,i("span",{className:"spacer"}),i("button",{onClick:U,disabled:I},I?e("\u6B63\u5728\u68C0\u67E5\u66F4\u65B0\u2026"):e("\u68C0\u67E5\u66F4\u65B0")),i("a",{href:"https://space.bilibili.com/23358791",target:"_blank",rel:"noreferrer"},e("\u4F5C\u8005B\u7AD9")),i("button",{onClick:()=>S("contact")},e("\u8054\u7CFB\u4F5C\u8005"))),v==="contact"?i(s,{title:e("\u8054\u7CFB\u4F5C\u8005"),onClose:()=>S("")},i("div",null,i("p",null,e("QQ\u7FA4\u53F71007538100")),i("p",null,e("\u4F5C\u8005\u90AE\u7BB1 "),i("a",{href:"mailto:725230880@qq.com"},"725230880@qq.com")),i("p",null,e("\u5F00\u6E90\u4ED3\u5E93 "),i("a",{href:$t,target:"_blank",rel:"noreferrer"},$t)))):null,v==="updates"?i(s,{title:e("\u68C0\u67E5\u66F4\u65B0"),onClose:()=>S("")},i("div",{role:"status"},I?i("p",null,e("\u6B63\u5728\u68C0\u67E5\u66F4\u65B0\u2026")):null,$?i("p",{role:"alert"},e($)):null,!I&&!$&&k?i(a.Fragment,null,i("p",null,e(N[k.status])),i("p",null,e`当前版本:${k.currentVersion}`),k.latestVersion?i("p",null,e`公开版本:${k.latestVersion}`):null,i("p",null,e("\u66F4\u65B0\u540E\u8BF7\u91CD\u542F\u5BBF\u4E3B\u5E76\u5237\u65B0\u7F16\u8F91\u5668\u4E0E\u8BD5\u73A9\u9875\u3002")),i("a",{href:k.url,target:"_blank",rel:"noreferrer"},e("\u67E5\u770B\u66F4\u65B0\u8BF4\u660E")),k.status==="available"&&k.downloadUrl?i("p",null,i("a",{href:k.downloadUrl,target:"_blank",rel:"noreferrer"},e("\u4E0B\u8F7D\u66F4\u65B0\u5305"))):null):null,$?i(a.Fragment,null,i("button",{className:"qxsim-action",onClick:U,disabled:I},e("\u91CD\u8BD5")),i("p",null,i("a",{href:$t+"/releases",target:"_blank",rel:"noreferrer"},e("\u67E5\u770B\u66F4\u65B0\u8BF4\u660E")))):null)):null)}}function Ca(a,{api:i,playUrl:p,saveToWorkspace:s=!1,version:d=""}){let t=a.createElement,g=Qt(a),v=Zt(a),S=ea(a),I=ga(a),y=fa(a),k=xa(a),L=qa(a),$=ka(a),T=Ke(a),U="qxqy-simulator-style",N=`
|
|
1
|
+
(()=>{var et={"\u611F\u8C22@xiaomol444\u63D0\u4F9B\u7684\u56FE\u7247\u3001\u97F3\u6548\u3001\u754C\u9762\u52A8\u6548\u7D20\u6750":"Thanks to @xiaomol444 for providing the image, sound effect, and UI animation assets.",\u64AD\u653E\u52A8\u6548\u97F3\u6548:"Play effect sound",\u52A8\u6548\u5C42\u7EA7:"Effect layer",\u6240\u6709\u63A7\u4EF6\u4E4B\u4E0A:"Above all controls",\u6240\u6709\u63A7\u4EF6\u4E4B\u4E0B:"Below all controls","\u652F\u6301\u6D4F\u89C8\u5668\u52A8\u6548\u64AD\u653E\uFF1B\u975E\u7A7A\u52A8\u6548 GIA \u914D\u7F6E\u5C1A\u672A\u6838\u5B9E\u3002":"Browser effect playback is supported; nonempty effect settings in GIA remain unverified.",\u8BF7\u9009\u62E9\u52A8\u6548\u7D20\u6750:"Choose an effect","\u753B\u5E03\u9884\u89C8\u9759\u97F3\uFF1B\u52A0\u8F7D\u5931\u8D25\u53EA\u8DF3\u8FC7\u5F53\u524D\u52A8\u6548\u3002":"Canvas preview is muted. Unavailable effects are skipped.",\u9009\u62E9\u7D20\u6750:"Choose effect","\u91CD\u64AD / \u91CD\u8BD5":"Replay / retry",\u505C\u6B62\u9884\u89C8:"Stop Preview","\u641C\u7D22 ID / \u540D\u79F0":"Search ID / name",\u641C\u7D22\u52A8\u6548:"Search effects","\u52A8\u6548\u52A0\u8F7D\u5931\u8D25\uFF08{0}\uFF09":"Effects unavailable ({0})","\u5F53\u524D\u540E\u53F0\u5C1A\u672A\u52A0\u8F7D\u5B57\u4F53\u8BBE\u7F6E\u529F\u80FD\uFF0C\u8BF7\u91CD\u542F Web \u6216 Harness \u5BBF\u4E3B\u540E\u91CD\u8BD5\u3002":"The running backend does not support font settings yet. Restart the Web or Harness host, then retry.","\u5F53\u524D\u540E\u53F0\u5C1A\u672A\u52A0\u8F7D\u68C0\u67E5\u66F4\u65B0\u529F\u80FD\uFF0C\u8BF7\u91CD\u542F Web \u6216 Harness \u5BBF\u4E3B\u540E\u91CD\u8BD5\u3002":"The running backend does not support update checks yet. Restart the Web or Harness host, then retry.","\u8BF7\u8F93\u5165\u516D\u4F4D\u989C\u8272\uFF0C\u4F8B\u5982 #FF8800":"Enter a six-digit color, e.g. #FF8800","\u900F\u660E\u5EA6\u8BF7\u8F93\u5165 0\u2013100 \u7684\u6574\u6570":"Enter an integer from 0 to 100 for opacity","Alpha\uFF1A0% \u5B8C\u5168\u900F\u660E\uFF0C100% \u5B8C\u5168\u4E0D\u900F\u660E":"Alpha: 0% is transparent; 100% is opaque","{0}\u4E0E\u900F\u660E\u5EA6":"{0} and opacity",\u6253\u5F00\u53D6\u8272\u5668:"Open color picker","{0}\u53D6\u8272\u5668":"{0} color picker",\u900F\u660E\u5EA6:"Opacity","{0}\u900F\u660E\u5EA6\u6ED1\u5757":"{0} opacity slider","{0}\u900F\u660E\u5EA6":"{0} opacity","Lua \u7D22\u5F15\u5F85\u540C\u6B65\uFF08{0} \u9879\uFF09\xB7 \u5C55\u5F00":"Lua index references need updating ({0}) \xB7 Expand","Lua \u7D22\u5F15\u540C\u6B65":"Update Lua Index References","\u4E0B\u4E00\u6B65\uFF1A\u540C\u6B65 Lua \u7D22\u5F15\u5F15\u7528\uFF08{0} \u9879\uFF09":"Next: Update Lua index references ({0})",\u811A\u672C\u5168\u91CF\u66FF\u6362\u5DF2\u5B8C\u6210:"Script index replacement completed",\u5173\u95ED\u7D22\u5F15\u540C\u6B65\u63D0\u793A:"Close index update notice","\u6536\u8D77\u63D0\u793A\uFF0C\u4FDD\u7559\u5F85\u540C\u6B65\u8BB0\u5F55":"Collapse notice and keep pending changes",\u5173\u95ED:"Close","\u540C\u6B65\u4EFB\u52A1\uFF08\u7C98\u8D34\u7ED9\u5F53\u524D\u9879\u76EE\u7684 AI\uFF09":"Update task (paste into this project's AI chat)","AI \u7D22\u5F15\u540C\u6B65\u4EFB\u52A1":"AI task: Update index references","AI \u5DF2\u5904\u7406\uFF0C\u91CD\u65B0\u8F7D\u5165\u5B58\u6863":"AI finished \u2014 reload the save","\u63A7\u4EF6\u7D22\u5F15\u5DF2\u4FEE\u6539\uFF0C\u8BF7\u9009\u62E9\u4E00\u79CD\u65B9\u5F0F\u540C\u6B65\u811A\u672C\u3002":"Control indices changed. Choose how to update script references.","\u8BF7\u68C0\u67E5\u66FF\u6362\u7ED3\u679C\u5E76\u4FDD\u5B58\u5B58\u6863\uFF0C\u518D\u5230\u300CLua \u811A\u672C \u2192 \u5B9E\u673A\u811A\u672C\u540C\u6B65\u300D\u66F4\u65B0\u6E38\u620F\u91CC\u7684\u6587\u4EF6\u5E76\u91CD\u65B0\u8BD5\u73A9\u3002":"Review the replacements and save. Then use Lua Scripts \u2192 Sync Scripts to Game and test again in the game.",\u7D22\u5F15\u540C\u6B65\u65B9\u5F0F:"Update method",\u5168\u91CF\u66FF\u6362\u811A\u672C\u7D22\u5F15:"Replace All Script Indices","\u53EF\u80FD\u9519\u8BEF\u5730\u66FF\u6362\u975E\u7D22\u5F15\u5185\u5BB9\u3002":"This may replace numbers unrelated to control indices.","\u6309\u5B8C\u6574\u5341\u8FDB\u5236\u6570\u5B57\u66FF\u6362\u6240\u6709\u5DF2\u767B\u8BB0\u811A\u672C\uFF0C\u5305\u62EC\u914D\u7F6E\u8868\u3001\u5B57\u7B26\u4E32\u548C\u6CE8\u91CA\uFF1B\u540C\u65F6\u66F4\u65B0\u5185\u5BB9\u4E00\u81F4\u7684\u5DE5\u4F5C\u533A\u6E90\u6587\u4EF6\uFF0C\u66FF\u6362\u524D\u81EA\u52A8\u5907\u4EFD\u3002":"Replace whole decimal numbers in all registered scripts, including tables, strings, and comments. Matching workspace source files are updated too, with backups.","\u590D\u5236\u63D0\u793A\u8BCD\u7ED9 AI":"Copy Task for AI","\u5148\u4FDD\u5B58\u6700\u65B0\u5B58\u6863\uFF0C\u518D\u590D\u5236\u5305\u542B\u6620\u5C04\u8BFB\u53D6\u65B9\u5F0F\u548C\u811A\u672C\u4F4D\u7F6E\u7684\u63D0\u793A\u8BCD\uFF0C\u7531 AI \u5224\u65AD\u54EA\u4E9B\u5F15\u7528\u9700\u8981\u66F4\u65B0\u3002":"Save first, then copy the index mapping instructions and script locations so the AI can identify references to update.","\u67E5\u770B\u7D22\u5F15\u53D8\u66F4\uFF08{0} \u9879\uFF09":"View index changes ({0})","\u8FD9\u91CC\u663E\u793A\u524D 20 \u9879\uFF1B\u5B8C\u6574\u6620\u5C04\u968F\u5B58\u6863\u4FDD\u5B58\uFF0C\u590D\u5236\u7684\u4EFB\u52A1\u4F1A\u5F15\u5BFC AI \u8BFB\u53D6\u5168\u90E8\u3002":"Showing the first 20 changes. The save includes the complete mapping; the copied task tells the AI how to read it.","Lua \u7D22\u5F15\u540C\u6B65\u95EE\u9898":"Lua index update issues","\u6E90\u7801\u6587\u4EF6\u6216\u7D22\u5F15\u6620\u5C04\u5B58\u5728\u51B2\u7A81\uFF0C\u672C\u6B21\u6CA1\u6709\u4FEE\u6539\u811A\u672C\u3002\u53EF\u590D\u5236\u63D0\u793A\u8BCD\u7ED9 AI \u5904\u7406\u3002":"Source files or index mappings conflict. No scripts were changed. You can copy a task for the AI.",\u5185\u8054\u811A\u672C:"Inline script","\u7B2C {0} \u884C\uFF1A":"Line {0}:","\u5176\u4F59\u95EE\u9898\u8BF7\u7531 AI \u6838\u5BF9\u3002":"Ask the AI to review the remaining issues.","\u5DF2\u66FF\u6362 {0} \u4E2A\u811A\u672C\u7684 {1} \u5904\u6587\u672C\uFF0C\u66F4\u65B0 {2} \u4E2A\u9879\u76EE\u6587\u4EF6\u3002\u5907\u4EFD\uFF1A{3}":"Replaced {1} occurrences in {0} scripts and updated {2} project files. Backups: {3}","\u524D\u5F80 Lua \u811A\u672C":"Open Lua Scripts",\u65E0\u6CD5\u8BFB\u53D6\u5B57\u4F53\u8BBE\u7F6E:"Unable to read font settings","\u627E\u5230\u5B57\u4F53\uFF1A{0}\u3002":"Font found: {0}.","\u9ED8\u8BA4\u4F4D\u7F6E\u672A\u627E\u5230\u5B57\u4F53\uFF0C\u5C06\u4F7F\u7528\u7CFB\u7EDF\u5B57\u4F53\u3002":"No font found in the default locations. The system font will be used.","\u5DF2\u4FDD\u5B58\u3002{0}\u91CD\u542F Web\u3001MCP \u6216 Harness \u5BBF\u4E3B\u540E\uFF0C\u5237\u65B0\u7F16\u8F91\u5668\u53CA\u8BD5\u73A9\u9875\u751F\u6548\u3002":"Saved. {0}Restart the Web, MCP, or Harness host, then refresh the editor and playtest pages to apply.",\u5B57\u4F53\u8BBE\u7F6E:"Font Settings","\u81EA\u5B9A\u4E49\u5B57\u4F53\u53EF\u7528\u4E8E\u6E38\u620F\u5185\u6587\u672C\u6216\u6574\u4F53 UI\u3002\u8BBE\u7F6E\u4EC5\u4FDD\u5B58\u5728\u672C\u673A\uFF0C\u91CD\u542F\u5BBF\u4E3B\u540E\u751F\u6548\u3002":"Apply the custom font to in-game text or the entire UI. Settings stay on this machine and apply after restarting the host.",\u5E94\u7528\u8303\u56F4:"Apply to",\u4EC5\u6E38\u620F\u5185\u6587\u672C:"In-game text only","\u6574\u4F53 UI":"Entire UI","\u4EC5\u6E38\u620F\u5185\u6587\u672C\uFF1A\u7528\u4E8E\u753B\u5E03\u3001\u8BD5\u73A9\u548C\u622A\u56FE\uFF1B\u6574\u4F53 UI\uFF1A\u540C\u65F6\u66FF\u6362\u5DE5\u5177\u680F\u3001\u9762\u677F\u3001\u4EE3\u7801\u548C\u65E5\u5FD7\u5B57\u4F53\u3002":"In-game text only: canvas, playtests, and screenshots. Entire UI: also changes fonts in toolbars, panels, code, and logs.",\u8BF7\u9009\u62E9\u5B57\u4F53\u5E94\u7528\u8303\u56F4:"Choose where to apply the font","\u5F53\u524D\u5B57\u4F53\uFF1A{0}":"Active font: {0}",\u7CFB\u7EDF\u5B57\u4F53:"System font","\u5B57\u4F53\u6587\u4EF6\u7531\u73AF\u5883\u53D8\u91CF QXQY_FONT_PATH \u6307\u5B9A\uFF0C\u4ECD\u53EF\u8C03\u6574\u5E94\u7528\u8303\u56F4\u3002":"QXQY_FONT_PATH selects the font file. You can still change where it applies.",\u5B57\u4F53\u6765\u6E90:"Font source",\u81EA\u52A8\u5C1D\u8BD5\u539F\u795E\u7684\u9ED8\u8BA4\u5B89\u88C5\u4F4D\u7F6E:"Look in Genshin Impact's default installation locations",\u6307\u5B9A\u672C\u673A\u5B57\u4F53\u6587\u4EF6:"Use a local font file",\u4F7F\u7528\u7CFB\u7EDF\u5B57\u4F53:"Use the system font",\u5B57\u4F53\u6587\u4EF6\u8DEF\u5F84:"Font file path","\u586B\u5199 TTF / OTF \u7684\u7EDD\u5BF9\u8DEF\u5F84\uFF0C\u6700\u5927 32 MiB\uFF1B\u53EF\u4EE5\u76F4\u63A5\u7C98\u8D34\u5E26\u5F15\u53F7\u7684 Windows \u8DEF\u5F84\u3002":"Enter an absolute TTF / OTF path (up to 32 MiB). Quoted Windows paths are accepted.","\u6309\u987A\u5E8F\u5C1D\u8BD5\u4EE5\u4E0B\u4F4D\u7F6E\uFF1B\u90FD\u672A\u627E\u5230\u65F6\u4F7F\u7528\u7CFB\u7EDF\u5B57\u4F53\u3002\u5B89\u88C5\u5728\u5176\u4ED6\u76D8\u7B26\u65F6\u8BF7\u9009\u62E9\u201C\u6307\u5B9A\u672C\u673A\u5B57\u4F53\u6587\u4EF6\u201D\u3002":"These locations are checked in order. If none contains a font, the system font is used. For another drive, select \u201CUse a local font file\u201D.","\u5F53\u524D\u7CFB\u7EDF\u4E0D\u81EA\u52A8\u67E5\u627E\uFF0C\u8BF7\u6307\u5B9A\u5B57\u4F53\u6587\u4EF6\u3002":"Automatic font discovery is unavailable on this system. Specify a font file.","\u6709\u5DF2\u4FDD\u5B58\u7684\u5B57\u4F53\u8BBE\u7F6E\uFF0C\u91CD\u542F\u5BBF\u4E3B\u5E76\u5237\u65B0\u9875\u9762\u540E\u751F\u6548\u3002":"Font settings have been saved. Restart the host and refresh the pages to apply them.","\u6B63\u5728\u8BFB\u53D6\u8BBE\u7F6E\u2026":"Loading settings\u2026","\u4FDD\u5B58\u4E2D\u2026":"Saving...",\u4FDD\u5B58\u8BBE\u7F6E:"Save Settings","\u56FE\u7247 {0} \u52A0\u8F7D\u5931\u8D25":"Failed to load image {0}","\u52A0\u8F7D\u56FE\u7247 {0}\u2026":"Loading image {0}\u2026","\u56FE\u7247 {0}":"Image {0}",\u56FE\u7247\u7C7B\u578B:"Image Type",\u5143\u6570\u636E\u52A0\u8F7D\u5931\u8D25:"Failed to load image metadata","\u8BFB\u53D6\u7D20\u6750\u8FB9\u754C\u2026":"Loading asset borders\u2026",\u57FA\u7840:"Basic",\u62C9\u4F38:"Stretch",\u5BA2\u6237\u7AEF\u63A7\u4EF6\u5BB9\u5668:"Client Control Container",\u5BB9\u5668\u8282\u70B9:"Container Control",\u6587\u672C\u6846:"Text Box",\u5149\u6807\u68C0\u6D4B\u533A\u57DF:"CursorEventArea",\u6A21\u677F\u5F15\u7528\u63A7\u4EF6:"Reference Control",\u7F51\u683C\u89C6\u7A97:"Grid Scroller",\u56FE\u7247:"Image",\u9884\u8BBE\u6309\u94AE:"Preset Button",\u6587\u672C\u89C6\u7A97:"Text Window",\u6309\u952E\u63D0\u793A:"Key Hint",\u754C\u9762\u52A8\u6548:"UI Animation",\u5168\u5C4F\u52A8\u6548:"Fullscreen UI Animation",\u5149\u6807\u68C0\u6D4B:"CursorEventArea",\u6A21\u677F\u5F15\u7528:"Reference Control","\u5BFC\u51FA\u5185\u5BB9\u89E3\u7801\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u6216\u5237\u65B0\u9875\u9762":"Unable to decode the export. Retry or refresh the page.","PC KEYBOARD \u753B\u5E03\uFF1A1600\xD7900 / 2100\xD7900":"PC KEYBOARD canvas: 1600\xD7900 / 2100\xD7900",\u624B\u673A:"Mobile","\u624B\u673A TOUCHSCREEN \u753B\u5E03\uFF1A1280\xD7720 / 1560\xD7720 / 1280\xD7960":"Mobile TOUCHSCREEN canvas: 1280\xD7720 / 1560\xD7720 / 1280\xD7960",\u5C1A\u65E0\u53EF\u7F16\u8F91\u503C:"No editable value available","\u672A\u8BC6\u522B\u9009\u9879 {0}\uFF08\u4FDD\u7559\u539F\u503C\uFF09":"Unknown option {0} (original value preserved)",\u7A7A:"None","\u65B0\u5EFA\u5E76\u7ED1\u5B9A{0}\u56FE\u7247":"Create and assign a {0} image",\u7FBD\u5316\u5BBD\u5EA6:"Soft Edge Width",\u7FBD\u5316\u8303\u56F4:"Soft Edge Range",\u56FE\u7247\u8BBE\u7F6E:"Image Settings",\u906E\u7F69\u8BBE\u7F6E:"Mask Settings",\u6587\u672C\u6846\u8BBE\u7F6E:"Text Box Settings",\u6309\u94AE\u8BBE\u7F6E:"Button Settings","{0}\u8BBE\u7F6E":"{0} Settings",\u8282\u70B9\u4FE1\u606F:"Node Information",\u53D8\u6362:"Transform",\u4F4D\u7F6E:"Location",\u5927\u5C0F:"Size",\u4E2D\u5FC3:"Pivot",\u521B\u5EFA\u8BBE\u7F6E:"Create Settings",\u624B\u67C4\u5BFC\u822A:"Controller Navigation",\u5B9E\u73B0\u72B6\u6001:"Support Status","\u5B58\u6863\u5185 Lua \u811A\u672C\uFF08{0}\uFF09":"Lua Scripts in This Save ({0})","\uFF0B \u65B0\u5EFA\u811A\u672C":"\uFF0B New Script","(\u672A\u547D\u540D\u811A\u672C)":"(Unnamed script)","\u6302\u8F7D\uFF1A{0} \xB7 {1}":"Attached to: {0} \xB7 {1}","\u672A\u6302\u8F7D\uFF08\u4EC5\u53EF\u88AB require\uFF09":"Not attached (available through require only)","\u4E0B\u8F7D\u8BE5\u811A\u672C .lua":"Download this script as .lua",\u5220\u9664\u8BE5\u811A\u672C:"Delete this script","\u8FD8\u6CA1\u6709\u811A\u672C\uFF0C\u70B9\u51FB\u201C\u65B0\u5EFA\u811A\u672C\u201D\u5F00\u59CB":"No scripts yet. Click \u201CNew Script\u201D to begin.","\u5C5E\u4E8E\u5B58\u6863\u201C{0}\u201D \xB7 Lua \u811A\u672C\u662F\u5B58\u6863\u5185\u72EC\u7ACB\u8D44\u4EA7":"Save: \u201C{0}\u201D \xB7 Lua scripts are separate assets within the save",\u672A\u547D\u540D\u5B58\u6863:"Untitled Save","\u811A\u672C {0}":"Script {0}","\u811A\u672C\u8DEF\u5F84\uFF08\u5DE5\u4F5C\u533A\u76F8\u5BF9\u8DEF\u5F84\uFF09":"Script path (relative to the workspace)","\u6302\u8F7D\u76EE\u6807\uFF08\u5BA2\u6237\u7AEF\u63A7\u4EF6 / \u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\uFF09":"Attach to (client control / client control template)","\u672A\u6302\u8F7D\uFF08\u4E0D\u751F\u6548\uFF0C\u4EC5\u53EF\u88AB require\uFF09":"Not attached (does not run automatically; require only)","\u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F \xB7 \u5BA2\u6237\u7AEF\u63A7\u4EF6\u5BB9\u5668\u5185":"Server Control Template \xB7 Inside the Client Control Container",\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F:"Client Control Template","Lua \u6E90\u7801":"Lua Source","-- \u5728\u8FD9\u91CC\u8F93\u5165\u5BA2\u6237\u7AEF Lua\uFF1B\u811A\u672C\u53EA\u6709\u6302\u8F7D\u5230\u5BA2\u6237\u7AEF\u63A7\u4EF6\u540E\u624D\u4F1A\u5728\u8BD5\u73A9\u65F6\u751F\u6548":"-- Enter client-side Lua here; attach the script to a client control to run it in playtests",\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539:"Unsaved changes","\u5DF2\u6302\u8F7D\uFF1A{0}":"Attached to: {0}","\u5F53\u524D\u672A\u6302\u8F7D\uFF0C\u8BD5\u73A9\u65F6\u4E0D\u4F1A\u81EA\u52A8\u8FD0\u884C":"Not attached; it will not run automatically in playtests","\u21E9 \u811A\u672C\u5305 JSON":"\u21E9 Script Bundle JSON","\u21E9 \u811A\u672C\u5305 GIA":"\u21E9 Script Bundle GIA",\u4FDD\u5B58\u811A\u672C:"Save Script",\u8BF7\u65B0\u5EFA\u6216\u9009\u62E9\u4E00\u4E2A\u811A\u672C:"Create or select a script","PlayerSelf \u5F53\u524D\u73A9\u5BB6":"PlayerSelf \u2014 Current Player","AllPlayers \u5168\u90E8\u73A9\u5BB6":"AllPlayers \u2014 All Players","Level \u5173\u5361":"Level \u2014 Stage","Player1 \u73A9\u5BB61":"Player1 \u2014 Player 1","Player2 \u73A9\u5BB62":"Player2 \u2014 Player 2","Player3 \u73A9\u5BB63":"Player3 \u2014 Player 3","Player4 \u73A9\u5BB64":"Player4 \u2014 Player 4","Player5 \u73A9\u5BB65":"Player5 \u2014 Player 5","Player6 \u73A9\u5BB66":"Player6 \u2014 Player 6","Player7 \u73A9\u5BB67":"Player7 \u2014 Player 7","Player8 \u73A9\u5BB68":"Player8 \u2014 Player 8","\u89C4\u5219 {0} \u9700\u8981\u76D1\u542C\u4FE1\u53F7\u540D":"Rule {0} needs a signal name to listen for","\u89C4\u5219 {0} \u81F3\u5C11\u9700\u8981\u4E00\u4E2A\u52A8\u4F5C":"Rule {0} needs at least one action","\u89C4\u5219 {0} \u52A8\u4F5C {1} \u9700\u8981\u5BA2\u6237\u7AEF\u4FE1\u53F7\u540D":"Rule {0}, action {1} needs a client signal name","\u89C4\u5219 {0} \u52A8\u4F5C {1} \u9700\u8981\u53D8\u91CF\u540D":"Rule {0}, action {1} needs a variable name","{0}\u6765\u6E90":"{0} source","\u5B57\u9762\u91CF\uFF08JSON\uFF09":"Literal (JSON)",\u5F15\u7528\u76D1\u542C\u4FE1\u53F7\u53C2\u6570:"Use a received signal argument","{0}\u53C2\u6570\u5E8F\u53F7":"{0} argument index","{0}\u5B57\u9762\u91CF":"{0} literal","\u5BA2\u6237\u7AEF\u4FE1\u53F7\u53C2\u6570\uFF08\u6309\u6DFB\u52A0\u987A\u5E8F\uFF09":"Client signal arguments (in order)","\u53C2\u6570 {0}":"Argument {0}",\u5220\u9664\u53C2\u6570:"Remove argument","\u6682\u65E0\u53C2\u6570\uFF0C\u53EF\u53D1\u9001\u7A7A\u53C2\u6570\u5217\u8868":"No arguments; an empty argument list can be sent","\uFF0B \u6DFB\u52A0\u53C2\u6570":"\uFF0B Add Argument",\u670D\u52A1\u7AEF\u903B\u8F91:"Server Logic","\u5C5E\u4E8E\u5B58\u6863\u201C{0}\u201D \xB7 \u76D1\u542C\u5BA2\u6237\u7AEF\u4FE1\u53F7\u540E\u8BBE\u7F6E Level / \u73A9\u5BB6\u53D8\u91CF\uFF0C\u6216\u5411\u6307\u5B9A\u73A9\u5BB6\u53D1\u9001\u5BA2\u6237\u7AEF\u811A\u672C\u4FE1\u53F7":"Save: \u201C{0}\u201D \xB7 Listen for client signals to set Level / player variables or send client script signals to selected players",\u4FDD\u5B58\u670D\u52A1\u7AEF\u903B\u8F91:"Save Server Logic","\u8FD9\u662F\u6A21\u62DF\u5668\u5B58\u6863\u683C\u5F0F\uFF0C\u4E0D\u662F\u5B98\u65B9\u8282\u70B9\u56FE\u3002PlayerSelf \u8868\u793A\u53D1\u4FE1\u53F7\u7684\u90A3\u4F4D\u73A9\u5BB6\uFF1BPlayer1\u20138 \u662F\u56FA\u5B9A\u5EA7\u4F4D\uFF1BAllPlayers \u5411\u672C\u5C40\u5168\u90E8\u8BD5\u73A9\u73A9\u5BB6\u5E7F\u64AD\u3002":"This uses the simulator's save format. PlayerSelf is the player who sent the signal; Player1\u20138 are fixed slots; AllPlayers broadcasts to every player in this playtest.","\u89C4\u5219 {0}":"Rule {0}",\u76D1\u542C\u4FE1\u53F7\u540D:"Signal to listen for","\u89C4\u5219 {0} \u76D1\u542C\u4FE1\u53F7\u540D":"Rule {0}: signal to listen for",\u5220\u9664\u89C4\u5219:"Remove rule","\u52A8\u4F5C {0}":"Action {0}","\u89C4\u5219 {0} \u52A8\u4F5C {1} \u7C7B\u578B":"Rule {0}, action {1}: type",\u8BBE\u7F6E\u81EA\u5B9A\u4E49\u53D8\u91CF:"Set Custom Variable",\u53D1\u9001\u5BA2\u6237\u7AEF\u811A\u672C\u4FE1\u53F7:"Send Client Script Signal","\u53D1\u7ED9\u5F53\u524D\u73A9\u5BB6\u3001\u6307\u5B9A\u73A9\u5BB6\u6216\u5168\u90E8\u73A9\u5BB6":"Send to the current player, a selected player, or all players","\u5199\u5165 Level / \u5F53\u524D\u73A9\u5BB6 / \u73A9\u5BB61-8":"Write to Level / current player / Player1\u20138",\u5220\u9664\u52A8\u4F5C:"Remove action",\u53D1\u9001\u76EE\u6807:"Send to",\u5BA2\u6237\u7AEF\u4FE1\u53F7\u540D:"Client signal name",\u5B9E\u4F53:"Entity",\u53D8\u91CF\u540D:"Variable name",\u53D8\u91CF\u503C:"Variable value","\uFF0B \u8BBE\u7F6E\u81EA\u5B9A\u4E49\u53D8\u91CF":"\uFF0B Set Custom Variable","\uFF0B \u53D1\u9001\u5BA2\u6237\u7AEF\u811A\u672C\u4FE1\u53F7":"\uFF0B Send Client Script Signal","\u8FD8\u6CA1\u6709\u76D1\u542C\u89C4\u5219\u3002\u8BD5\u73A9\u65F6\u5BA2\u6237\u7AEF SendSignal \u4E0D\u4F1A\u81EA\u52A8\u6539\u53D8\u91CF\u6216\u56DE\u4F20\u4FE1\u53F7\u3002":"No signal rules yet. In a playtest, client SendSignal calls do not automatically change variables or send signals back.","\uFF0B \u6DFB\u52A0\u76D1\u542C\u89C4\u5219":"\uFF0B Add Signal Rule","\u4FDD\u5B58\u540E\u4F1A\u5199\u5165\u5F53\u524D\u5B58\u6863\uFF0C\u4E0B\u6B21\u8BD5\u73A9\u751F\u6548":"Saved to the current save; applies on the next playtest","\u8BF7\u8F93\u5165 1\u20132147483647 \u4E4B\u95F4\u7684\u6574\u6570\u7D22\u5F15\u3002":"Enter an integer index from 1 to 2147483647.",\u5BA2\u6237\u7AEF\u63A7\u4EF6\u7D22\u5F15:"Client Control Index",\u4FDD\u5B58\u4E2D:"Saving",\u4FEE\u6539:"Edit",\u81EA\u52A8\u4FEE\u6539\u5176\u4ED6\u5BA2\u6237\u7AEF\u7D22\u5F15\u503C:"Automatically fill other client control indices",\u81EA\u52A8\u586B\u5145\u7D22\u5F15\u9884\u89C8:"Index Autofill Preview","\u4EE5\u5F53\u524D\u63A7\u4EF6\u4E3A\u57FA\u51C6\uFF0C\u6309 GIA \u5BFC\u5165\u987A\u5E8F\u586B\u5145 {0} \u4E2A\u63A7\u4EF6\uFF08{1} \u4E2A\u6A21\u677F\u53CA\u5176\u5B50\u63A7\u4EF6\uFF09\u3002":"Using this control as the anchor, assign indices in GIA import order to {0} controls ({1} templates and their children).","\u7D22\u5F15\u8303\u56F4\uFF1A{0}\u2013{1}":"Index range: {0}\u2013{1}","\u7D22\u5F15\u8303\u56F4\u8D85\u51FA\u6709\u6548\u8303\u56F4\uFF0C\u8BF7\u68C0\u67E5\u8F93\u5165\u3002":"Index range exceeds the valid bounds. Check your input.","\u9002\u7528\u4E8E\u6574\u6279\u5BFC\u5165\u540E\u672A\u589E\u5220\u3001\u91CD\u6392\u7684\u6A21\u677F\u3002\u670D\u52A1\u7AEF\u754C\u9762\u548C\u811A\u672C\u7D22\u5F15\u9700\u5355\u72EC\u586B\u5199\u3002":"For templates imported together without structural changes or reordering. Server UI and script indices must be entered separately.","\u586B\u5199 GIA \u5BFC\u5165\u540E\u5B9E\u9645\u663E\u793A\u7684\u7D22\u5F15\uFF1B\u4FEE\u6539\u540E\u4ECE\u9875\u9762\u4E0A\u65B9\u7EE7\u7EED\u540C\u6B65 Lua\u3002":"Enter the actual index shown after importing the GIA. Then update Lua references using the notice above.",\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6\u7684\u811A\u672C:"Scripts Attached to This Control","\u89E3\u9664\u6302\u8F7D\uFF08\u4FDD\u7559\u811A\u672C\uFF09":"Detach (keep script)","\u8BE5\u63A7\u4EF6\u5C1A\u672A\u6302\u8F7D\u811A\u672C\u3002\u811A\u672C\u6302\u8F7D\u5230\u5BA2\u6237\u7AEF\u63A7\u4EF6\u540E\u624D\u4F1A\u5728\u8BD5\u73A9\u65F6\u751F\u6548\u3002":"No script is attached to this control. Attach a script to a client control to run it in playtests.",\u6302\u8F7D\u5DF2\u6709\u811A\u672C:"Attach an Existing Script",\u9009\u62E9\u811A\u672C\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6:"Choose a script to attach to this control","\u9009\u62E9\u811A\u672C\u2026":"Select a script\u2026","\uFF08\u5F53\u524D\u6302\u8F7D\u4E8E {0} \xB7 {1}\uFF0C\u5C06\u79FB\u52A8\u5230\u6B64\u63A7\u4EF6\uFF09":"(currently on {0} \xB7 {1}; will move to this control)","\uFF08\u672A\u6302\u8F7D\uFF09":"(not attached)","\u5B58\u6863\u5185\u8FD8\u6CA1\u6709\u5176\u4ED6\u811A\u672C\uFF0C\u53EF\u70B9\u51FB\u4E0B\u65B9\u6309\u94AE\u65B0\u5EFA\u3002":"No other scripts in this save. Create one using the button below.","\uFF0B \u65B0\u5EFA\u811A\u672C\u5E76\u6302\u8F7D\u5230\u6B64\u63A7\u4EF6":"\uFF0B Create and Attach a Script","\u7F3A\u5C11\u56FE\u7247 {0}":"Missing image {0}",\u672C\u5730\u5B57\u4F53\u52A0\u8F7D\u5931\u8D25:"Failed to load the local font","\u5F53\u524D\u8D44\u4EA7\u5DF2\u5207\u6362\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9\u63A7\u4EF6\u540E\u4FEE\u6539\u7D22\u5F15":"The active asset changed. Select the control again before changing its index.","\u63A7\u4EF6\u7D22\u5F15\u5DF2\u4FEE\u6539\u3002\u8BF7\u9009\u62E9\u4E0A\u65B9\u300C\u5168\u91CF\u66FF\u6362\u811A\u672C\u7D22\u5F15\u300D\u6216\u300C\u590D\u5236\u63D0\u793A\u8BCD\u7ED9 AI\u300D\u3002":"Control indices changed. Choose \u201CReplace All Script Indices\u201D or \u201CCopy Task for AI\u201D above.","\u8BF7\u5148\u4FDD\u5B58\u5B8C\u6574\u5B58\u6863\uFF0C\u518D\u590D\u5236\u63D0\u793A\u8BCD\uFF1BAI \u9700\u8981\u8BFB\u53D6\u8FD9\u6B21\u5B9E\u9645\u4FEE\u6539\u7684\u5B58\u6863\u3002":"Save the complete project before copying the task. The AI needs the save containing these changes.","\u8BF7\u5B8C\u6210\u6A21\u62DF\u5668\u63A7\u4EF6\u7D22\u5F15\u4E0E Lua \u5F15\u7528\u540C\u6B65\u3002":"Update the simulator's control indices and Lua references.","\u5DE5\u4F5C\u533A\uFF1A{0}":"Workspace: {0}",\u8BF7\u5148\u6838\u5BF9\u5DE5\u4F5C\u533A:"Verify the workspace first","\u6700\u65B0\u5B8C\u6574\u5B58\u6863\uFF1A{0}\uFF08\u7F16\u8F91\u5668\u5DF2\u4FDD\u5B58\uFF09":"Latest complete save: {0} (saved by the editor)","Lua \u6587\u4EF6\uFF1A{0}":"Lua files: {0}","\u5185\u8054\u811A\u672C {0}":"Inline script {0}",\u6682\u65E0:"None","\u5148\u4ECE\u4E0A\u8FF0\u6587\u4EF6\u91CD\u65B0\u52A0\u8F7D\u6700\u65B0\u5B58\u6863\uFF0C\u4E0D\u8981\u4F7F\u7528\u53E6\u4E00\u4E2A MCP/Web \u8FDB\u7A0B\u91CC\u7684\u65E7\u5DE5\u7A0B\u3002":"Reload the latest save from the file above. Do not use an older project from another MCP/Web process.","\u83B7\u53D6\u65B0\u65E7\u6620\u5C04\uFF1A\u8BFB\u53D6\u8BE5 JSON \u9876\u5C42\u7684 controlGuidChanges \u6570\u7EC4\uFF0C\u5F53\u524D\u5171 {0} \u6761\uFF0C\u5FC5\u987B\u8BFB\u53D6\u5168\u90E8\u8BB0\u5F55\u3002oldGuid \u662F\u65E7\u7D22\u5F15\uFF0CnewGuid \u662F\u65B0\u7D22\u5F15\uFF1BcontrolAsset + controlId \u6807\u8BC6\u63A7\u4EF6\uFF0CcontrolName \u662F\u540D\u79F0\uFF0Cid \u662F\u8BB0\u5F55\u7F16\u53F7\uFF0CbatchId \u662F\u6279\u6B21\u3002":"Read all {0} entries in the save's top-level controlGuidChanges array. oldGuid/newGuid are the old/new indices. controlAsset + controlId identifies the control; controlName is its name; id identifies the change; batchId identifies the batch.","\u83B7\u53D6\u811A\u672C\uFF1A\u8BFB\u53D6 assets.scripts \u6570\u7EC4\uFF1B\u6BCF\u9879\u7684 source \u662F\u5B58\u6863\u5185\u6E90\u7801\uFF0Cpath \u662F\u811A\u672C\u6587\u4EF6\u8DEF\u5F84\uFF08\u76F8\u5BF9\u8DEF\u5F84\u4EE5\u5DE5\u4F5C\u533A\u4E3A\u57FA\u51C6\uFF09\u3002":"Read scripts from assets.scripts. Each source contains the saved code; path identifies its file, relative to the workspace where applicable.","\u6309\u63A7\u4EF6\u8EAB\u4EFD\u548C\u53D8\u66F4\u987A\u5E8F\u6838\u5BF9\u5168\u90E8 Lua \u811A\u672C\u7684\u7D22\u5F15\u5E38\u91CF\u3001\u914D\u7F6E\u8868\u4E0E\u8C03\u7528\uFF0C\u4FEE\u6539\u5B58\u6863\u4E2D\u7684 source \u53CA\u76F8\u5173 Lua \u6E90\u6587\u4EF6\u548C\u751F\u6210\u5668\u6620\u5C04\uFF0C\u907F\u514D\u91CD\u5EFA\u540E\u8986\u76D6\u3002\u4E0D\u8981\u5168\u5C40\u66FF\u6362\u540C\u503C\u6570\u5B57\uFF0C\u4E5F\u4E0D\u8981\u6539\u8FD0\u884C\u65F6\u5B9E\u4F8B ID \u6216\u56FE\u7247\u8D44\u6E90 ID\u3002":"Review index constants, tables, and calls in all Lua scripts by control identity and change order. Update saved source, related Lua files, and generator mappings. Do not globally replace equal numbers or alter runtime instance IDs or image resource IDs.","\u540C\u4E00 batchId \u662F\u540C\u65F6\u6620\u5C04\uFF0C\u987B\u6309\u539F\u503C\u4E00\u6B21\u6027\u5E94\u7528\uFF0C\u4E0D\u80FD\u9010\u6761\u66FF\u6362\u5BFC\u81F4\u7D22\u5F15\u4E32\u6539\u3002":"Changes sharing batchId form one simultaneous mapping. Apply them to original values together to avoid cascading replacements.","\u68C0\u67E5\u65E7\u7D22\u5F15\u5F15\u7528\u5E76\u91CD\u65B0\u8BD5\u73A9\uFF1B\u4EC5\u5728\u5F15\u7528\u5168\u90E8\u540C\u6B65\u6216\u660E\u786E\u6CA1\u6709\u5F15\u7528\u540E\uFF0C\u7528 acknowledgeControlGuidChanges \u7684 changeIds \u6E05\u9664\u5DF2\u6838\u5BF9\u8BB0\u5F55\uFF0C\u4FDD\u5B58\u5B8C\u6574\u5B58\u6863\u3002\u672A\u5224\u65AD\u7684\u8BB0\u5F55\u7EE7\u7EED\u4FDD\u7559\u3002":"Check old references and playtest again. Only after updating every reference or confirming none exist, acknowledge reviewed changeIds with acknowledgeControlGuidChanges and save. Keep unreviewed changes.","\u5B8C\u6210\u540E\u544A\u77E5\u7528\u6237\u91CD\u65B0\u8F7D\u5165\u8FD9\u4E2A\u5B58\u6863\uFF0C\u518D\u901A\u8FC7\u300CLua \u811A\u672C \u2192 \u5B9E\u673A\u811A\u672C\u540C\u6B65\u300D\u66F4\u65B0\u6E38\u620F\u6587\u4EF6\uFF1B\u4E0D\u8981\u91CD\u65B0\u5BFC\u5165 GIA\uFF0C\u4E5F\u4E0D\u8981\u64C5\u81EA\u590D\u5236\u5230\u6E38\u620F\u76EE\u5F55\u3002":"Tell the user to reload this save and use Lua Scripts \u2192 Sync Scripts to Game. Do not reimport GIA or copy files into the game directory without authorization.","\u5B58\u6863\u5DF2\u4FDD\u5B58\uFF0C\u63D0\u793A\u8BCD\u5DF2\u590D\u5236\uFF0C\u5305\u542B\u5B8C\u6574\u6620\u5C04\u7684\u8BFB\u53D6\u65B9\u5F0F\u3002\u7C98\u8D34\u7ED9 AI\uFF1B\u5904\u7406\u540E\u91CD\u65B0\u8F7D\u5165\u5B58\u6863\u3002":"Save written and task copied, including instructions for reading the full mapping. Paste it into the AI chat, then reload the save when finished.","\u5B58\u6863\u5DF2\u4FDD\u5B58\u3002\u526A\u8D34\u677F\u4E0D\u53EF\u7528\uFF0C\u53EF\u4ECE\u4E0B\u65B9\u6587\u672C\u6846\u624B\u52A8\u590D\u5236\u63D0\u793A\u8BCD\u3002":"Save written. Clipboard access is unavailable; copy the task from the text box below.","\u56FE\u7247 {0} \u5DF2\u91CD\u65B0\u4E0B\u8F7D\uFF1B\u540C\u6E90\u8BD5\u73A9\u9875\u4F1A\u540C\u6B65\u5237\u65B0\u3002":"Image {0} downloaded again. Playtest pages on this origin will refresh it too.","{0}\u56FE\u7247":"{0} Image","{0}\u5DF2\u521B\u5EFA\u5E76\u7ED1\u5B9A\uFF1B\u53EF\u5728\u63A7\u4EF6\u6811\u4E2D\u7EE7\u7EED\u7F16\u8F91\u56FE\u7247\u3002":"Created and assigned {0}. Edit the image in the control tree.","Lua \u811A\u672C\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863":"Lua script saved to the current save",\u670D\u52A1\u7AEF\u903B\u8F91\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863:"Server logic saved to the current save",\u5DF2\u65B0\u5EFA\u811A\u672C\u5E76\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6:"Script created and attached to this control","\u5DF2\u65B0\u5EFA\u811A\u672C\uFF0C\u53EF\u7F16\u8F91\u8DEF\u5F84\u3001\u6E90\u7801\u548C\u6302\u8F7D\u76EE\u6807":"Script created. Edit its path, source, and attachment target.",\u811A\u672C\u5DF2\u5220\u9664:"Script deleted","\u5DF2\u89E3\u9664\u6302\u8F7D\uFF0C\u811A\u672C\u4ECD\u4FDD\u7559\u5728\u5B58\u6863\u4E2D":"Script detached and kept in the save",\u5DF2\u6302\u8F7D\u5230\u5F53\u524D\u63A7\u4EF6:"Attached to the current control","\u5DF2\u5207\u6362\u5230\u5B58\u6863\u5185\u7684{0}":"Switched to {0} in this save","{0}\u6A21\u677F":"{0} Template","\u5DF2\u65B0\u589E{0}\u6A21\u677F":"Created a {0} template","\u5DF2\u6DFB\u52A0{0}\u5B50\u63A7\u4EF6":"Added a {0} child control","\u5DF2\u5BFC\u51FA {0} \u4E2A GIA \u6587\u4EF6\uFF08{1}\uFF09\uFF1B\u82E5\u6D4F\u89C8\u5668\u62E6\u622A\u591A\u6587\u4EF6\u4E0B\u8F7D\uFF0C\u8BF7\u5141\u8BB8\u540E\u91CD\u8BD5\u3002":"Exported {0} GIA files ({1}). If downloads are blocked, allow multiple downloads and retry.","\u5DF2\u5BFC\u51FA {0}\uFF1B\u8BF7\u67E5\u770B\u4E0A\u65B9\u5BFC\u51FA\u8BF4\u660E\u3002":"Exported {0}. Review the export notes above.","\u5DF2\u5BFC\u51FA {0}":"Exported {0}","\u5DF2\u4ECE\u5DE5\u4F5C\u533A\u62C9\u53D6 {0}":"Loaded {0} from the workspace","\u4EC5\u652F\u6301 .json\u3001.gia \u6216 .lua \u6587\u4EF6":"Only .json, .gia, and .lua files are supported","\u5DF2\u5BFC\u5165 {0}":"Imported {0}","\u5DF2\u4FDD\u5B58\u5230 {0}":"Saved to {0}","\u6B63\u5728\u8F7D\u5165\u5343\u661F\u6C99\u7BB1\u2026":"Loading Miliastra Sandbox\u2026","\u5DF2\u5207\u6362\u5230{0}":"Switched to {0}",\u4FDD\u5B58\u5230\u5DE5\u4F5C\u533A:"Save to Workspace",\u5B58\u6863\u76F8\u5BF9\u8DEF\u5F84:"Save path (relative to workspace)",\u53D6\u6D88:"Cancel",\u4FDD\u5B58:"Save",\u5DE5\u4F5C\u533A\u672A\u7ED1\u5B9A:"No workspace bound",\u5C1A\u672A\u5BFC\u5165\u6587\u4EF6:"No file imported","\u5B58\u6863\uFF1A{0}":"Save: {0}","\u5DE5\u4F5C\u533A\uFF1A{0} \xB7 \u5F53\u524D\u8D44\u4EA7\uFF1A{1}":"Workspace: {0} \xB7 Active asset: {1}",\u672A\u7ED1\u5B9A:"Unbound",UI\u63A7\u4EF6:"UI Controls",\u76EE\u6807\u8BBE\u5907:"Target device",\u5C4F\u5E55\u6BD4\u4F8B:"Aspect ratio",\u753B\u5E03\u7F29\u653E:"Canvas zoom",\u9002\u5E94:"Fit","\u670D\u52A1\u7AEF\u903B\u8F91\uFF1A\u76D1\u542C\u4FE1\u53F7 / \u81EA\u5B9A\u4E49\u53D8\u91CF / \u73A9\u5BB61-8 \u56DE\u4F20":"Server logic: signals / custom variables / Player1\u20138 responses","Lua \u811A\u672C\u8D44\u4EA7\u7F16\u8F91":"Lua script asset editor",\u4FDD\u5B58\u5B8C\u6574\u5B58\u6863\u5230\u5DE5\u4F5C\u533A:"Save the complete project to the workspace",\u4FDD\u5B58\u5B58\u6863:"Save Project",\u4ECE\u5DE5\u4F5C\u533A\u62C9\u53D6\u5B58\u6863:"Load a save from the workspace","\u2913 \u5DE5\u4F5C\u533A\u5B58\u6863":"\u2913 Workspace Saves","\u672A\u53D1\u73B0 qxqy-simulator-save":"No qxqy-simulator-save found",\u5148\u7ED1\u5B9A\u4F1A\u8BDD\u5DE5\u4F5C\u533A:"Bind a session workspace first","\u5BFC\u5165\u5B58\u6863\u3001\u5355\u9879 UI \u8D44\u4EA7\u6216 Lua":"Import a save, individual UI asset, or Lua script","\u21E7 \u5BFC\u5165":"\u21E7 Import",\u5BFC\u51FA\u683C\u5F0F:"Export format","\u21E9 \u5BFC\u51FA":"\u21E9 Export","\u8D44\u4EA7\u5305 JSON\uFF08\u4E09\u7C7B\u5408\u4E00\uFF09":"Complete Save JSON (all three asset types)","\u8D44\u4EA7\u5305 GIA\uFF08\u5DF2\u6539\u52A8\u9879\uFF09":"Asset Bundle GIA (modified assets)","\u8D44\u4EA7\u5305 GIA \u6574\u5408\u5305\uFF08\u63A7\u4EF6+\u811A\u672C\uFF09":"Combined GIA (controls + scripts)","\u5F53\u524D\u754C\u9762\uFF08\u5DE6\u680F\u6B63\u5728\u770B\u7684\u90A3\u68F5\u6811\uFF09":"Current UI (the tree shown on the left)","\u5F53\u524D\u754C\u9762 Authoring JSON":"Current UI Authoring JSON","\u5F53\u524D\u754C\u9762 GIA":"Current UI GIA",\u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F:"Server Control Template","\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\uFF08\u4EC5\u5F53\u5DE6\u680F\u5207\u5230\u300CUI\u63A7\u4EF6-\u5BA2\u6237\u7AEF\u300D\u65F6\u624D\u662F\u9875\u9762\u5185\u5BB9\uFF09":"Client Control Templates (shown in the Client UI tab)","Lua \u811A\u672C":"Lua Scripts","\u811A\u672C\u5305 JSON\uFF08\u5168\u90E8\u811A\u672C\uFF09":"Script Bundle JSON (all scripts)","\u811A\u672C\u5305 GIA\uFF08\u5168\u90E8\u811A\u672C\uFF09":"Script Bundle GIA (all scripts)","\u6253\u5F00\u8BD5\u73A9\uFF1B\u65B0\u7A97\u53E3\u4E0D\u53EF\u7528\u65F6\u5728\u5E94\u7528\u5185\u8BD5\u73A9":"Open a playtest; use an embedded view if new windows are unavailable","\u6B63\u5728\u51C6\u5907\u2026":"Preparing\u2026","\u25B7 \u8BD5\u73A9 \u2197":"\u25B7 Playtest \u2197",\u91CD\u65B0\u8F7D\u5165:"Reload",\u7F16\u8F91\u9875\u9762:"Editor page","UI \u7F16\u8F91":"UI Editor","\u4E00\u4E2A\u5B58\u6863 \xB7 \u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F + \u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F + Lua \u811A\u672C + \u670D\u52A1\u7AEF\u903B\u8F91":"One save \xB7 Server Control Templates + Client Control Templates + Lua Scripts + Server Logic","\u4E0A\u6B21\u5BFC\u51FA\u8BF4\u660E\uFF08{0} \u9879\uFF0C\u8BF7\u6838\u5BF9\u5BFC\u5165\u540E\u7684\u6548\u679C\uFF09":"Export notes ({0}; verify the result after import)",\u5173\u95ED\u5BFC\u51FA\u8BF4\u660E:"Close export notes",\u7F16\u8F91\u8D44\u6E90\u7C7B\u578B:"Asset type","\u7F16\u8F91\u5B58\u6863\u5185\u7684\u670D\u52A1\u7AEF UI \u63A7\u4EF6":"Edit the save's server UI controls","UI\u63A7\u4EF6-\u670D\u52A1\u7AEF":"Server UI",\u7F16\u8F91\u5B58\u6863\u5185\u7684\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F:"Edit the save's client control templates","UI\u63A7\u4EF6-\u5BA2\u6237\u7AEF":"Client UI",\u6A21\u677F\u4E0E\u5B50\u63A7\u4EF6:"Templates and Children",\u63A7\u4EF6\u6811:"Control Tree","{0} \u4E2A\u6A21\u677F \xB7 {1} \u4E2A\u63A7\u4EF6":"{0} templates \xB7 {1} controls","{0} \u4E2A\u8282\u70B9":"{0} nodes",\u641C\u7D22\u6A21\u677F\u6216\u63A7\u4EF6:"Search templates or controls",\u641C\u7D22\u63A7\u4EF6:"Search controls",\u6A21\u677F:"Template",\u6682\u4E0D\u652F\u6301:"Not supported yet","\u5728\u753B\u5E03\u4E0A\u663E\u793A\uFF08\u4E0D\u5F71\u54CD\u63A7\u4EF6\u521D\u59CB\u53EF\u89C1\u6027\uFF09":"Show on canvas (does not change initial visibility)","\u5728\u753B\u5E03\u4E0A\u9690\u85CF\uFF08\u4E0D\u5F71\u54CD\u63A7\u4EF6\u521D\u59CB\u53EF\u89C1\u6027\uFF09":"Hide on canvas (does not change initial visibility)","{0}\u753B\u5E03\u53EF\u89C1\u6027":"Canvas visibility: {0}",\u6CA1\u6709\u5339\u914D\u7684\u63A7\u4EF6:"No matching controls",\u5C42\u7EA7\u4E0E\u6A21\u677F\u8FB9\u754C:"Hierarchy and Templates",\u7236\u7EA7\u63A7\u4EF6:"Parent control",\u5DF2\u63D0\u5347\u4E3A\u53EF\u5B9E\u4F8B\u5316\u9876\u5C42\u6A21\u677F:"Promoted to an instantiable top-level template",\u5DF2\u8C03\u6574\u63A7\u4EF6\u7236\u7EA7:"Control parent changed","\u9876\u5C42\u6A21\u677F\uFF08\u53EF\u5B9E\u4F8B\u5316\uFF09":"Top-level template (instantiable)",\u5728\u540C\u7EA7\u4E2D\u4E0A\u79FB:"Move up among siblings",\u5728\u540C\u7EA7\u4E2D\u4E0B\u79FB:"Move down among siblings","\u8BE5\u8282\u70B9\u4F1A\u5199\u5165\u72EC\u7ACB UIControlTemplate\uFF0C\u53EF\u76F4\u63A5\u4F5C\u4E3A prefabId\u3002":"This node exports as a separate UIControlTemplate and can be used directly as prefabId.","\u5F53\u524D\u4E3A\u7B2C {0} \u5C42\u5B50\u63A7\u4EF6\uFF0C\u4E0D\u4F1A\u5355\u72EC\u6210\u4E3A prefabId\u3002":"This is a depth-{0} child control, not a standalone template for prefabId instantiation.",\u65B0\u589E\u72EC\u7ACB\u53EF\u5B9E\u4F8B\u5316\u6A21\u677F:"Create a separate instantiable template","\u6DFB\u52A0\u5230{0}":"Add to {0}",\u5F53\u524D\u63A7\u4EF6:"Current control",\u65B0\u589E\u9876\u5C42\u6A21\u677F:"Create a top-level template",\u9876\u5C42:"Top Level",\u5B50\u63A7\u4EF6:"Child",\u65B0\u589E:"New",\u6DFB\u52A0:"Add","Lua \u6A21\u677F\u9884\u89C8":"Lua Template Preview",\u754C\u9762\u63A7\u4EF6\u7EC4:"UI Control Group","{0} \xB7 {1}\xD7{2} \xB7 \u5DE6\u4E0B\u539F\u70B9":"{0} \xB7 {1}\xD7{2} \xB7 Bottom-left origin","\u25CF {0}\u7F16\u8F91":"\u25CF Editing {0}",\u63A7\u4EF6:"Control","\u5F53\u524D\uFF1A{0}":"Selected: {0}","GIA \u5BFC\u51FA\u540E\u53EF\u5728 Lua \u4E2D\u6309 prefabId \u5B9E\u4F8B\u5316":"After exporting GIA, instantiate in Lua using prefabId","\u5B57\u6BB5\u5728\u5931\u7126\u6216 Enter \u65F6\u63D0\u4EA4":"Commit fields on blur or Enter","\u4F5C\u8005 B\u7AD9\u4E3B\u9875":"Author's Bilibili profile",\u4F5C\u8005B\u7AD9:"Bilibili",\u53EF\u5B9E\u4F8B\u5316:"Instantiable","\u6A21\u677F\u7D22\u5F15 ":"Template index ","\u63A7\u4EF6 GUID ":"Control GUID ",\u8282\u70B9:"Node",\u57FA\u7840\u5C5E\u6027:"Properties",\u811A\u672C:"Script","\u6B63\u5728\u5237\u65B0\u7D20\u6750\u2026":"Refreshing asset\u2026","\u21BB \u91CD\u65B0\u4E0B\u8F7D\u6B64\u7D20\u6750":"\u21BB Download This Asset Again","\u767D\u540D\u5355\u56FE\u7247\u6309\u9700\u7F13\u5B58\uFF1B\u5237\u65B0\u4F1A\u91CD\u65B0\u8BBF\u95EE\u7D20\u6750\u6E90\u3002":"Supported images are cached on demand. Refreshing downloads them from the asset source.","\u232B \u5220\u9664\u5F53\u524D\u6A21\u677F":"\u232B Delete Template","\u232B \u5220\u9664\u5F53\u524D\u63A7\u4EF6":"\u232B Delete Control",\u8BF7\u9009\u62E9\u4E00\u4E2A\u63A7\u4EF6:"Select a control",'<!doctype html><meta charset="utf-8"><title>\u6B63\u5728\u51C6\u5907\u8BD5\u73A9\u2026</title><p>\u6B63\u5728\u4FDD\u5B58\u9879\u76EE\u5E76\u51C6\u5907\u8BD5\u73A9\u2026</p>':'<!doctype html><meta charset="utf-8"><title>Preparing playtest\u2026</title><p>Saving the project and preparing the playtest\u2026</p>',"\u505C\u6B62\u8BD5\u73A9\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\uFF1A{0}":"Could not stop the playtest. Retry: {0}","\u8BD5\u73A9\u9875\u672A\u80FD\u52A0\u8F7D\uFF0C\u8BF7\u8FD4\u56DE\u7F16\u8F91\u540E\u91CD\u8BD5\u3002":"The playtest page could not load. Return to the editor and retry.",\u8BD5\u73A9\u6B63\u5728\u5173\u95ED:"Closing playtest",\u5185\u5D4C\u8BD5\u73A9:"Embedded Playtest","\u6B63\u5728\u505C\u6B62\u8BD5\u73A9\u2026":"Stopping playtest\u2026","\u6B63\u5728\u8F7D\u5165\u8BD5\u73A9\u2026":"Loading playtest\u2026",\u5173\u95ED\u8BD5\u73A9:"Close Playtest",\u5343\u661F\u6C99\u7BB1\u8BD5\u73A9:"Miliastra Sandbox Playtest",\u672A\u53D8\u5316:"Unchanged","\u3010\u5343\u661F\u6C99\u7BB1\u811A\u672C\u6587\u4EF6\u5939\u3011":"[Miliastra Sandbox Script Folder]",\u65B0\u589E\u6587\u4EF6:"New file",\u66F4\u65B0\u5DF2\u6709\u6587\u4EF6:"Update existing file","\u5185\u5BB9\u76F8\u540C\uFF0C\u65E0\u9700\u66F4\u65B0":"Identical; no update needed",\u65E0\u6CD5\u590D\u5236:"Cannot copy",\u5B58\u6863\u91CC\u7F16\u8F91\u7684\u4EE3\u7801:"Code edited in the save","\u9879\u76EE\u4E2D\u7684 .lua \u6587\u4EF6":"Project .lua file","\u5B9E\u673A\u811A\u672C\u540C\u6B65 \xB7 {0}":"Sync Scripts to Game \xB7 {0}",\u5DF2\u8BBE\u7F6E\u6587\u4EF6\u5939:"Folders configured",\u5148\u8BBE\u7F6E\u6587\u4EF6\u5939:"Configure folders first","\u628A\u5F53\u524D\u5B58\u6863\u91CC\u7684 Lua \u811A\u672C\u590D\u5236\u5230\u5343\u661F\u6C99\u7BB1\uFF0C\u7528\u4E8E\u6E38\u620F\u5185\u6D4B\u8BD5\u3002\u64CD\u4F5C\u987A\u5E8F\uFF1A\u586B\u5199\u811A\u672C\u4F4D\u7F6E \u2192 \u4FDD\u5B58\u8BBE\u7F6E \u2192 \u4FDD\u5B58\u5B58\u6863\u5E76\u67E5\u770B\u66F4\u65B0 \u2192 \u786E\u8BA4\u590D\u5236\u3002":"Copy this save's Lua scripts into Miliastra Sandbox for in-game testing. Set folders \u2192 Save Settings \u2192 Save and Preview Changes \u2192 Confirm Copy.",\u9879\u76EE\u811A\u672C\u6587\u4EF6\u5939:"Project script folder","\u4F8B\u5982 workspace/my-game\uFF1B\u4E5F\u53EF\u4EE5\u7559\u7A7A":"e.g. workspace/my-game; may be left blank","\u586B\u5199\u5728\u5DE5\u4F5C\u533A\u91CC\u7684\u4F4D\u7F6E\uFF0C\u4F8B\u5982 workspace/my-game\uFF1B\u7559\u7A7A\u8868\u793A\u4F7F\u7528\u5DE5\u4F5C\u533A\u672C\u8EAB\u3002":"Enter a workspace-relative folder, e.g. workspace/my-game. Leave blank to use the workspace root.",\u5343\u661F\u6C99\u7BB1\u811A\u672C\u6587\u4EF6\u5939:"Miliastra Sandbox script folder","\u7C98\u8D34\u4EE5 default_import_file \u7ED3\u5C3E\u7684\u5B8C\u6574\u8DEF\u5F84":"Paste the full path ending in default_import_file","\u5173\u5361\u5B58\u653E\u5916\u90E8 Lua \u811A\u672C\u7684\u6587\u4EF6\u5939\uFF0C\u53EF\u70B9\u51FB\u300C\u53D1\u73B0\u672C\u673A\u76EE\u5F55\u300D\u67E5\u627E\u3002\u8BF7\u586B\u5199\u8FD0\u884C\u6A21\u62DF\u5668\u90A3\u53F0\u7535\u8111\u4E0A\u7684\u5B8C\u6574\u8DEF\u5F84\u3002":"The stage's folder for external Lua scripts. Use \u201CFind Local Folders\u201D to locate it. Enter the full path on the simulator host machine.",\u6E38\u620F\u91CC\u7684\u9879\u76EE\u5B50\u6587\u4EF6\u5939:"Project subfolder in the game","\u4E00\u822C\u548C\u201C\u9879\u76EE\u811A\u672C\u6587\u4EF6\u5939\u201D\u586B\u4E00\u6837\u7684\u5185\u5BB9\uFF0C\u4FDD\u7559\u539F\u6765\u7684\u6587\u4EF6\u4F4D\u7F6E\u3002\u7559\u7A7A\u5219\u76F4\u63A5\u653E\u8FDB\u5343\u661F\u6C99\u7BB1\u811A\u672C\u6587\u4EF6\u5939\u3002":"Usually matches the project script folder to preserve file locations. Leave blank to place files directly in the Miliastra Sandbox script folder.",\u590D\u5236\u8DEF\u5F84\u793A\u4F8B:"Copy Path Example","\u590D\u5236\u793A\u4F8B\uFF1A":"Example destination:","\u6E38\u620F\u8D26\u53F7 UID\uFF1A{0} \xB7 \u5173\u5361\u76EE\u5F55\u7F16\u53F7\uFF1A{1}":"Game account UID: {0} \xB7 Stage folder ID: {1}",\u53D1\u73B0\u672C\u673A\u76EE\u5F55:"Find Local Folders","\u6CA1\u6709\u627E\u5230\u6E38\u620F\u811A\u672C\u6587\u4EF6\u5939\u3002\u53EF\u4EE5\u624B\u52A8\u7C98\u8D34 default_import_file \u6587\u4EF6\u5939\u7684\u5B8C\u6574\u8DEF\u5F84\uFF1B\u5982\u679C\u8FD8\u6CA1\u5BFC\u5165\u811A\u672C\uFF0C\u8BF7\u5148\u5728\u5343\u661F\u6C99\u7BB1\u5B8C\u6210\u5BFC\u5165\u3002":"No game script folder found. Paste the full default_import_file path manually. If you have not imported scripts yet, do so in Miliastra Sandbox first.","\u627E\u5230 {0} \u4E2A\u6E38\u620F\u811A\u672C\u6587\u4EF6\u5939\uFF0C\u8BF7\u9009\u62E9\u8981\u66F4\u65B0\u7684\u8D26\u53F7\u548C\u5173\u5361\u3002":"Found {0} game script folders. Select the account and stage to update.","\u811A\u672C\u4F4D\u7F6E\u5DF2\u4FDD\u5B58\u3002\u4E0B\u4E00\u6B65\u70B9\u51FB\u300C\u4FDD\u5B58\u5B58\u6863\u5E76\u67E5\u770B\u66F4\u65B0\u300D\u3002":"Script folders saved. Next, click \u201CSave and Preview Changes\u201D.",\u6E05\u9664\u8BBE\u7F6E:"Clear Settings","\u5DF2\u6E05\u9664\u811A\u672C\u4F4D\u7F6E\u8BBE\u7F6E\u3002\u6E38\u620F\u91CC\u7684\u811A\u672C\u6587\u4EF6\u4ECD\u7136\u4FDD\u7559\u3002":"Script folder settings cleared. Existing files in the game are kept.",\u9009\u62E9\u8981\u66F4\u65B0\u7684\u8D26\u53F7\u548C\u5173\u5361:"Select the Account and Stage","\u8BF7\u9009\u62E9\u6E38\u620F\u8D26\u53F7\u548C\u5173\u5361\u6587\u4EF6\u5939\u2026":"Select a game account and stage folder\u2026","\u8D26\u53F7 {0} / \u5173\u5361\u76EE\u5F55 {1} \xB7 {2}":"Account {0} / Stage folder {1} \xB7 {2}",\u6A21\u62DF\u5668\u5B58\u6863\u6587\u4EF6:"Simulator save file","\u4F8B\u5982 my-game.save.json":"e.g. my-game.save.json","\u586B\u5199\u5DE5\u4F5C\u533A\u91CC\u7684\u5B58\u6863\u6587\u4EF6\u540D\u6216\u8DEF\u5F84\u3002\u4FDD\u5B58\u8BBE\u7F6E\u65F6\u4F1A\u4E00\u8D77\u4FDD\u5B58\u9879\u76EE\uFF0C\u4E0B\u6B21\u6253\u5F00\u5B58\u6863\u5373\u53EF\u590D\u7528\u3002":"Enter a save filename or path within the workspace. Saving these settings also saves the project so they are available next time.",\u4FDD\u5B58\u5B58\u6863\u5E76\u67E5\u770B\u66F4\u65B0:"Save and Preview Changes","\u8BF7\u5148\u586B\u5199\u5343\u661F\u6C99\u7BB1\u811A\u672C\u6587\u4EF6\u5939\uFF0C\u5E76\u70B9\u51FB\u300C\u4FDD\u5B58\u8BBE\u7F6E\u300D\u3002":"Enter the Miliastra Sandbox script folder and click \u201CSave Settings\u201D first.","\u811A\u672C\u4F4D\u7F6E\u5DF2\u6539\u52A8\uFF0C\u8BF7\u5148\u70B9\u51FB\u300C\u4FDD\u5B58\u8BBE\u7F6E\u300D\u3002":"Script folders changed. Click \u201CSave Settings\u201D first.","\u8BF7\u5148\u586B\u5199\u6A21\u62DF\u5668\u5B58\u6863\u6587\u4EF6\u540D\u3002":"Enter a simulator save filename first.","\u6B63\u5728\u5904\u7406\uFF0C\u8BF7\u7A0D\u5019\u2026":"Working, please wait\u2026",\u811A\u672C\u540C\u6B65\u786E\u8BA4:"Confirm Script Copy","\u672C\u6B21\u66F4\u65B0\u5230\uFF1A{0}":"Destination: {0}","\u8FD9\u4E2A\u5B58\u6863\u8FD8\u6CA1\u6709 Lua \u811A\u672C\u3002\u8BF7\u5148\u5728\u4E0B\u65B9\u6DFB\u52A0\u811A\u672C\uFF0C\u518D\u67E5\u770B\u66F4\u65B0\u3002":"This save has no Lua scripts. Add a script below, then preview the changes.","\u6240\u6709\u811A\u672C\u90FD\u4E0E\u6E38\u620F\u6587\u4EF6\u5939\u91CC\u7684\u5185\u5BB9\u76F8\u540C\uFF0C\u65E0\u9700\u590D\u5236\u3002":"All scripts match the game folder. Nothing to copy.","\u6709\u63A7\u4EF6\u7D22\u5F15\u5C1A\u672A\u540C\u6B65\u5230 Lua\u3002\u8BF7\u5148\u5728\u4E0A\u65B9\u300C\u5168\u91CF\u66FF\u6362\u811A\u672C\u7D22\u5F15\u300D\uFF0C\u6216\u300C\u590D\u5236\u63D0\u793A\u8BCD\u7ED9 AI\u300D\uFF1B\u5904\u7406\u5B8C\u6210\u540E\u518D\u67E5\u770B\u6E38\u620F\u811A\u672C\u66F4\u65B0\u3002":"Some control index changes are not reflected in Lua. Use \u201CReplace All Script Indices\u201D or \u201CCopy Task for AI\u201D above before previewing game script changes.","\u590D\u5236\u7684\u4EE3\u7801\u6765\u81EA\uFF1A{0}":"Code source: {0}","\u65E0\u6CD5\u590D\u5236\uFF1A{0}":"Cannot copy: {0}","\u590D\u5236\u5230\uFF1A{0}":"Copy to: {0}","\u8FD9\u4E2A\u811A\u672C\u5728\u5B58\u6863\u91CC\u548C\u9879\u76EE\u6587\u4EF6\u91CC\u7684\u4EE3\u7801\u4E0D\u540C\u3002\u672C\u6B21\u4F1A\u590D\u5236\u5B58\u6863\u91CC\u7684\u4EE3\u7801\uFF1B\u5982\u679C\u8981\u4F7F\u7528\u9879\u76EE\u6587\u4EF6\uFF0C\u8BF7\u70B9\u51FB\u300C\u6539\u7528\u9879\u76EE\u6587\u4EF6\u91CC\u7684\u4EE3\u7801\u300D\uFF0C\u7136\u540E\u91CD\u65B0\u67E5\u770B\u66F4\u65B0\u3002":"The saved script differs from its project file. This copy uses the saved code. To use the project file instead, choose \u201CUse Project File Code\u201D, then preview changes again.",\u67E5\u770B\u9879\u76EE\u6587\u4EF6\u91CC\u7684\u4EE3\u7801:"View Project File Code",\u6539\u7528\u9879\u76EE\u6587\u4EF6\u91CC\u7684\u4EE3\u7801:"Use Project File Code",\u5BF9\u6BD4\u66F4\u65B0\u524D\u540E\u7684\u4EE3\u7801:"Compare Changes",\u6E38\u620F\u91CC\u73B0\u5728\u7684\u4EE3\u7801:"Current Code in the Game","\uFF08\u6E38\u620F\u91CC\u8FD8\u6CA1\u6709\u8FD9\u4E2A\u6587\u4EF6\uFF09":"(This file does not exist in the game yet)",\u672C\u6B21\u8981\u590D\u5236\u7684\u4EE3\u7801:"Code to Copy","\u65B0\u589E\u811A\u672C\u590D\u5236\u540E\uFF0C\u8FD8\u9700\u8981\u5728\u5343\u661F\u6C99\u7BB1\u91CC\u5173\u8054\u5BF9\u5E94\u7684\u811A\u672C\u6587\u4EF6\uFF1B\u9700\u8981\u76F4\u63A5\u8FD0\u884C\u7684\u811A\u672C\u8FD8\u8981\u6302\u5230\u63A7\u4EF6\u4E0A\u3002":"After copying new scripts, link their files in Miliastra Sandbox. Scripts that should run directly must also be attached to controls.","\u5DF2\u9009 {0} \u4E2A\u811A\u672C\uFF0C\u5176\u4E2D {1} \u4E2A\u4F1A\u66FF\u6362\u6E38\u620F\u91CC\u7684\u65E7\u6587\u4EF6\u3002\u66FF\u6362\u524D\u4F1A\u81EA\u52A8\u5907\u4EFD\u65E7\u6587\u4EF6\uFF0C\u6E38\u620F\u91CC\u7684\u5176\u4ED6\u6587\u4EF6\u4F1A\u4FDD\u7559\u3002":"Selected {0} scripts; {1} will replace existing game files. Replaced files are backed up. Other files are kept.",\u8986\u76D6:"Replace",\u6682\u4E0D\u590D\u5236:"Cancel","\u786E\u8BA4\u590D\u5236 {0} \u4E2A\u811A\u672C":"Confirm Copy of {0} Scripts",\u811A\u672C\u5DF2\u590D\u5236\u5230\u5343\u661F\u6C99\u7BB1:"Scripts Copied to Miliastra Sandbox",\u6709\u4E9B\u811A\u672C\u672A\u590D\u5236\u6210\u529F:"Some Scripts Could Not Be Copied","\u4E0B\u4E00\u6B65\uFF1A\u56DE\u5230\u5343\u661F\u6C99\u7BB1\uFF0C\u4FDD\u5B58\u5173\u5361\u5E76\u91CD\u65B0\u8BD5\u73A9\uFF0C\u8BA9\u6E38\u620F\u52A0\u8F7D\u66F4\u65B0\u540E\u7684\u811A\u672C\u3002":"Next: Return to Miliastra Sandbox, save the stage, and start a new playtest to load the updated scripts.","\u8BF7\u6309\u4E0B\u65B9\u63D0\u793A\u5904\u7406\u5931\u8D25\u7684\u6587\u4EF6\uFF0C\u518D\u91CD\u65B0\u67E5\u770B\u66F4\u65B0\u5E76\u590D\u5236\u3002":"Resolve the failed files using the notes below, then preview and copy again.","\u590D\u5236\u65F6\u95F4\uFF1A{0} \xB7 \u65E7\u6587\u4EF6\u5907\u4EFD\u4FDD\u5B58\u5728\uFF1A{1}":"Copied at: {0} \xB7 Backups: {1}",\u6210\u529F:"Success",\u5DF2\u590D\u5236:"Copied",\u672A\u590D\u5236:"Not copied",\u5207\u6362\u5230\u4EAE\u8272\u4E3B\u9898:"Switch to light theme",\u5207\u6362\u5230\u6697\u8272\u4E3B\u9898:"Switch to dark theme",\u5F53\u524D\u5B58\u6863:"Current save","\u5F53\u524D\u8D44\u4EA7\u6CA1\u6709\u63A7\u4EF6\u3002":"This asset has no controls.","\u6253\u5F00\u5B58\u6863\u540E\u663E\u793A\u63A7\u4EF6\u7ED3\u6784\u3002":"Open a save to view its control structure.",\u672A\u9009\u62E9:"None selected",\u7C7B\u578B:"Type",\u6811\u6DF1\u5EA6:"Tree depth",\u7236\u8282\u70B9:"Parent node","\u8BD5\u73A9\u542F\u52A8\u540E\u663E\u793A Lua \u65E5\u5FD7\u3002":"Lua logs appear after starting a playtest.",\u5B58\u6863\u52A0\u8F7D\u5931\u8D25:"Failed to Load Save",\u7B49\u5F85\u5DE5\u4F5C\u533A\u5B58\u6863:"Waiting for a Workspace Save","\u6B63\u5728\u76D1\u542C {0}\u3002":"Watching {0}.","{0}Codex \u4FDD\u5B58 qxqy-simulator-save JSON \u540E\u4F1A\u81EA\u52A8\u51FA\u73B0\u5728\u8FD9\u91CC\u3002":"{0}Saves appear here automatically when Codex writes a qxqy-simulator-save JSON file.",\u8BD5\u73A9\u5C1A\u672A\u542F\u52A8:"Playtest Not Started","\u9009\u62E9\u8BBE\u5907\u5E76\u70B9\u51FB\u201C\u542F\u52A8\u201D\uFF0C\u5373\u53EF\u8FD0\u884C Lua \u548C\u4EA4\u4E92\u903B\u8F91\u3002":"Select a device and click \u201CStart\u201D to run Lua scripts and interactions.",\u7B49\u5F85\u5B58\u6863:"Waiting for a Save",\u5C1A\u672A\u6253\u5F00\u5B58\u6863:"No save open"," \xB7 \u5DF2\u6682\u505C":" \xB7 Paused","\u7B49\u5F85\u542F\u52A8 Runtime":"Waiting to start Runtime","\u7F16\u8F91\u5668\u9759\u6001\u9884\u89C8 \xB7 \u78C1\u76D8\u81EA\u52A8\u5237\u65B0":"Static editor preview \xB7 Refreshes from disk automatically","\u7F16\u8F91\u5668\u753B\u9762\u52A0\u8F7D\u5931\u8D25\u3002":"Failed to load the editor preview.","\u670D\u52A1\u7248\u672C\u672A\u77E5\uFF0C\u8BF7\u66F4\u65B0 Web":"Unknown server version. Update the Web package.",\u5B9E\u65F6\u76D1\u542C\u4E2D:"Live",\u8FDE\u63A5\u4E2D\u65AD:"Disconnected",\u5F00\u542F\u58F0\u97F3:"Enable Sound",\u58F0\u97F3\u5DF2\u5173\u95ED:"Sound Off",\u58F0\u97F3\u5DF2\u5F00\u542F:"Sound On",\u70B9\u51FB\u6216\u5728\u753B\u5E03\u5185\u64CD\u4F5C\u4EE5\u89E3\u9501\u97F3\u6548:"Click or interact with the canvas to enable audio",\u5207\u6362\u9759\u97F3:"Toggle mute","\u952E\u4F4D\u54CD\u5E94\uFF1A\u5F00":"Key Input: On","\u952E\u4F4D\u54CD\u5E94\uFF1A\u5173":"Key Input: Off",\u5DF2\u6253\u5F00\u5B58\u6863:"Save opened",\u5DF2\u91CD\u65B0\u8BFB\u53D6\u78C1\u76D8\u5B58\u6863:"Save reloaded from disk","\u65E5\u5FD7\u5DF2\u5728\u5F53\u524D\u89C6\u56FE\u6E05\u7A7A\u3002":"Logs cleared in this view.",\u6B63\u5728\u91CD\u8FDE:"Reconnecting","\u68C0\u6D4B\u5230\u5B58\u6863\u53D8\u5316\uFF0C\u9884\u89C8\u5DF2\u66F4\u65B0":"Save changed; preview updated",\u9884\u89C8\u5B58\u6863\u5DF2\u6253\u5F00:"Preview save opened","\u624B\u673A 1280\xD7720":"Mobile 1280\xD7720","\u624B\u673A 1560\xD7720":"Mobile 1560\xD7720","\u624B\u673A 1280\xD7960":"Mobile 1280\xD7960",\u540D\u79F0:"Name",\u521D\u59CB\u6FC0\u6D3B:"Initially Active",\u521D\u59CB\u53EF\u89C1\u6027:"Initially Visible",\u53EF\u88AB\u624B\u67C4\u6447\u6746\u5BFC\u822A\u9009\u4E2D:"Selectable by Controller Navigation","\u4F4D\u7F6E X":"Location X","\u4F4D\u7F6E Y":"Location Y","\u5927\u5C0F W":"Width","\u5927\u5C0F H":"Height","\u65CB\u8F6C X":"Rotation X","\u65CB\u8F6C Y":"Rotation Y","\u65CB\u8F6C Z":"Rotation Z",\u540C\u6B65\u4FE1\u606F\u81F3\u6240\u6709\u8BBE\u5907:"Sync Layout Across Devices",\u951A\u70B9\u7C7B\u578B:"Anchor Preset",\u5C45\u4E2D:"Center",\u5DE6\u4E0A:"Top Left",\u4E0A\u65B9:"Top",\u53F3\u4E0A:"Top Right",\u5DE6\u4FA7:"Left",\u53F3\u4FA7:"Right",\u5DE6\u4E0B:"Bottom Left",\u4E0B\u65B9:"Bottom",\u53F3\u4E0B:"Bottom Right",\u53CC\u5411\u62C9\u4F38:"Stretch Both Axes",\u6C34\u5E73\u62C9\u4F38:"Stretch Horizontally",\u5782\u76F4\u62C9\u4F38:"Stretch Vertically",\u81EA\u5B9A\u4E49:"Custom","\u951A\u70B9 Min X":"Anchor Min X","\u951A\u70B9 Min Y":"Anchor Min Y","\u951A\u70B9 Max X":"Anchor Max X","\u951A\u70B9 Max Y":"Anchor Max Y","\u4E2D\u5FC3 X":"Pivot X","\u4E2D\u5FC3 Y":"Pivot Y",\u9694\u79BB\u624B\u67C4\u5BFC\u822A:"Isolate Controller Navigation",\u5C4F\u853D\u6309\u952E\u4E8B\u4EF6\u7A7F\u900F:"Block Key Event Passthrough",\u5C4F\u853D\u533A\u57DF\u5185\u70B9\u51FB\u4E8B\u4EF6\u7A7F\u900F:"Block Click Event Passthrough in Area",\u663E\u793A\u5E38\u9A7B\u5149\u6807:"Show Persistent Cursor",\u5B57\u53F7:"Font Size",\u5B57\u53F7\u81EA\u9002\u5E94:"Auto Font Size",\u6700\u5C0F\u5B57\u53F7:"Minimum Font Size",\u6587\u672C\u8272:"Text Color",\u80CC\u666F\u8272:"Background Color",\u542F\u7528\u63CF\u8FB9:"Enable Outline",\u63CF\u8FB9\u8272:"Outline Color",\u6C34\u5E73\u5BF9\u9F50:"Horizontal Alignment",\u5DE6\u5BF9\u9F50:"Left",\u53F3\u5BF9\u9F50:"Right",\u5782\u76F4\u5BF9\u9F50:"Vertical Alignment",\u9876\u90E8:"Top",\u5E95\u90E8:"Bottom",\u6587\u672C:"Text",\u56FE\u7247\u6E90:"Image Source",\u9759\u6001\u5F15\u7528:"Static Reference",\u5143\u4EF6:"Prefab",\u586B\u5145\u8272:"Fill Color",\u5F00\u542F\u906E\u7F69:"Enable Mask",\u8FB9\u7F18\u7FBD\u5316:"Soft Edge",\u7FBD\u5316\u6A21\u5F0F:"Soft Edge Mode",\u767E\u5206\u6BD4:"Percentage",\u50CF\u7D20:"Pixels","\u7FBD\u5316\u5BBD\u5EA6 X":"Soft Edge Width X","\u7FBD\u5316\u5BBD\u5EA6 Y":"Soft Edge Width Y",\u6C34\u5E73\u7FBD\u5316\u8303\u56F4:"Horizontal Soft Edge Range",\u5782\u76F4\u7FBD\u5316\u8303\u56F4:"Vertical Soft Edge Range",\u6309\u8FDB\u5EA6\u586B\u5145:"Fill by Progress",\u5F62\u72B6:"Shape",\u6A2A\u5411:"Horizontal",\u7EB5\u5411:"Vertical","90\u5EA6\u73AF\u7ED5":"Radial90","180\u5EA6\u73AF\u7ED5":"Radial180","360\u5EA6\u73AF\u7ED5":"Radial360",\u65B9\u5411:"Direction",\u4ECE\u5DE6\u81F3\u53F3:"From Left to Right",\u4ECE\u53F3\u81F3\u5DE6:"From Right to Left",\u4ECE\u4E0B\u81F3\u4E0A:"From Bottom to Top",\u4ECE\u4E0A\u81F3\u4E0B:"From Top to Bottom",\u8D77\u70B9:"Origin",\u8FDB\u5EA6:"Progress",\u906E\u7F69\u533A\u57DF\u53CD\u8F6C:"Invert Mask Area",\u672A\u8BBE\u7F6E:"Not set",\u53EF\u88AB\u5149\u6807\u5C04\u7EBF\u68C0\u6D4B:"Raycast Target",\u6309\u94AE\u662F\u5426\u53EF\u7528:"Interactable",\u4E0D\u53EF\u7528\u72B6\u6001\u8282\u70B9:"Unavailable Status Nodes",\u60AC\u505C\u72B6\u6001\u8282\u70B9:"Hover Status Nodes",\u6309\u4E0B\u72B6\u6001\u8282\u70B9:"Pressed Status Nodes",\u9009\u4E2D\u72B6\u6001\u8282\u70B9:"Selected Status Nodes",\u70B9\u51FB\u97F3\u6548:"Click Sound",\u5F15\u7528\u63A7\u4EF6\u6A21\u677F\u7D22\u5F15:"Referenced Control Template Index",\u5141\u8BB8\u6EDA\u52A8\u4EA4\u4E92:"Enable Scrolling",\u663E\u793A\u6EDA\u52A8\u6761:"Show Scrollbar",\u5217\u8868\u9879\u6A21\u677F\u7D22\u5F15:"Item Template Index",\u6EDA\u52A8\u65B9\u5411:"Scroll Direction",\u6392\u5217\u9650\u5236:"Layout Constraint",\u81EA\u52A8\u6362\u884C:"Automatic Wrapping",\u56FA\u5B9A\u884C\u5217\u6570:"Fixed Row / Column Count",\u6BCF\u884C\u6216\u6BCF\u5217\u6570\u91CF:"Items per Row / Column","\u5217\u8868\u9879\u5927\u5C0F W":"Item Width","\u5217\u8868\u9879\u5927\u5C0F H":"Item Height","\u5217\u8868\u9879\u95F4\u9694 X":"Item Spacing X","\u5217\u8868\u9879\u95F4\u9694 Y":"Item Spacing Y","\u8FB9\u8DDD\u5411\u91CF 1 X":"Padding 1 X","\u8FB9\u8DDD\u5411\u91CF 1 Y":"Padding 1 Y","\u8FB9\u8DDD\u5411\u91CF 2 X":"Padding 2 X","\u8FB9\u8DDD\u5411\u91CF 2 Y":"Padding 2 Y",\u9884\u89C8\u6570\u91CF:"Preview Count",\u952E\u9F20\u6309\u952E:"Keyboard / Mouse Key",\u624B\u67C4\u6309\u952E:"Controller Button",\u52A8\u6548\u7D22\u5F15:"Animation Index",\u5168\u5C4F\u52A8\u6548\u7D22\u5F15:"Fullscreen Animation Index",\u5B8C\u6574\u5EA6:"Support Status","\u8BD5\u73A9\u652F\u6301\u57FA\u7840\u6EDA\u52A8\uFF1B\u6EDA\u52A8\u4EA4\u4E92\u3001\u6EDA\u52A8\u6761\u53CA\u5217\u8868\u914D\u7F6E\u4EE5 JSON/Lua \u4E3A\u51C6\uFF0C\u76F8\u5173 GIA \u5F00\u5173\u6620\u5C04\u5C1A\u672A\u6838\u5B9E\u3002":"Basic scrolling is supported in playtests. Configure interaction, scrollbars, and lists through JSON/Lua; the related GIA flags are not yet verified.","\u672C\u9636\u6BB5\u4EC5\u516C\u5171\u53D8\u6362\uFF0C\u4E1A\u52A1\u69FD\u4E0D\u5B8C\u6574":"Only common transforms are supported at this stage; control-specific fields are incomplete.",\u5173\u5361:"Stage",\u5F53\u524D\u73A9\u5BB6:"Current Player",\u5F53\u524D\u89D2\u8272:"Current Character","\u73A9\u5BB6{0}":"Player {0}","\u89D2\u8272{0}":"Character {0}","\u63A7\u4EF6\u7D22\u5F15\u5FC5\u987B\u662F 1\u20132147483647 \u8303\u56F4\u5185\u7684\u6574\u6570":"Control indices must be integers from 1 to 2147483647","controlGuidChanges \u5FC5\u987B\u662F\u6570\u7EC4":"controlGuidChanges must be an array","controlGuidChanges \u5305\u542B\u65E0\u6548\u6216\u91CD\u590D\u7684\u53D8\u66F4\u8BB0\u5F55":"controlGuidChanges contains invalid or duplicate changes","controlGuidChanges \u5305\u542B\u65E0\u6548\u7684 batchId":"controlGuidChanges contains an invalid batchId","controlGuidChanges \u5305\u542B\u65E0\u6548\u7684 scriptSignature":"controlGuidChanges contains an invalid scriptSignature",\u672A\u547D\u540D\u754C\u9762:"Untitled UI",\u672A\u547D\u540D\u754C\u9762\u63A7\u4EF6\u7EC4:"Untitled UI Control Group",\u6574\u5408\u5305\u9700\u8981\u670D\u52A1\u7AEF\u5BA2\u6237\u7AEF\u63A7\u4EF6\u5BB9\u5668\u4E0B\u81F3\u5C11\u6709\u4E00\u4E2A\u6839\u63A7\u4EF6:"A combined bundle requires at least one root control inside the server-side Client Control Container","{0} \xB7 \u6574\u5408\u5305.gia":"{0} \xB7 Combined.gia",\u6302\u8F7D\u76EE\u6807\u5FC5\u987B\u662F\u5B58\u6863\u5185\u7684\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6216\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F:"Attachment targets must be client controls or client control templates in the save","\u811A\u672C\u4E0D\u5B58\u5728: {0}":"Script not found: {0}",\u4EC5\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6216\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\u5141\u8BB8\u4FEE\u6539\u7D22\u5F15:"Only client controls and client control templates support index changes","autoFillClientGuids \u5FC5\u987B\u662F\u5E03\u5C14\u503C":"autoFillClientGuids must be a boolean","\u81EA\u52A8\u586B\u5145\u4EC5\u652F\u6301\u5BA2\u6237\u7AEF\u6A21\u677F\u5217\u8868\uFF1B\u670D\u52A1\u7AEF\u754C\u9762\u7684\u7D22\u5F15\u9700\u5355\u72EC\u586B\u5199":"Autofill is only available for client templates. Enter server UI indices separately.","\u5BA2\u6237\u7AEF\u6A21\u677F\u5B58\u5728\u91CD\u590D\u65E7\u7D22\u5F15\uFF0C\u65E0\u6CD5\u81EA\u52A8\u586B\u5145\uFF1B\u8BF7\u5148\u6D88\u9664\u6B67\u4E49":"Client templates contain duplicate old indices. Resolve the ambiguity before using autofill.","\u63A7\u4EF6\u7D22\u5F15 {0} \u5DF2\u88AB\u300C{1}\u300D\u5360\u7528\uFF1B\u8BF7\u5148\u586B\u5199\u5B83\u7684\u5B9E\u9645\u7D22\u5F15\u3002\u672C\u6B21\u672A\u4FEE\u6539\u4EFB\u4F55\u7D22\u5F15\u3002":"Control index {0} is already used by \u201C{1}\u201D. Enter its actual index first. No indices were changed.","\u65E7\u7D22\u5F15 {0} \u5728\u591A\u68F5\u8D44\u4EA7\u6811\u4E2D\u91CD\u590D\uFF0C\u65E0\u6CD5\u786E\u5B9A\u6A21\u677F\u5F15\u7528\u5F52\u5C5E\uFF1B\u8BF7\u5148\u6D88\u9664\u6B67\u4E49\u540E\u4FEE\u6539":"Old index {0} appears in multiple asset trees, so the template reference is ambiguous. Resolve it before making changes.","\u8BF7\u660E\u786E\u6307\u5B9A\u5DF2\u6838\u5BF9 Lua \u5F15\u7528\u7684\u6709\u6548\u7D22\u5F15\u53D8\u66F4\u8BB0\u5F55 changeIds":"Specify valid changeIds whose Lua references have been reviewed",\u5B58\u6863\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A:"The save name cannot be empty","\u63A7\u4EF6\u7D22\u5F15\u5F85\u6838\u5BF9 Lua \u5F15\u7528\uFF1A{0} / {1} ({2})\uFF1A{3} \u2192 {4}\u3002\u8BF7\u6309\u8BED\u4E49\u66F4\u65B0\u811A\u672C\u4E2D\u7684\u63A7\u4EF6\u7D22\u5F15\u5F15\u7528\uFF0C\u6838\u5BF9\u540E\u786E\u8BA4\u53D8\u66F4\u8BB0\u5F55 {5}\uFF1B\u4E0D\u8981\u5168\u5C40\u66FF\u6362\u540C\u503C\u6570\u5B57\u3002":"Review Lua references for control index change: {0} / {1} ({2}): {3} \u2192 {4}. Update references by meaning, then acknowledge change {5}. Do not globally replace equal numbers.","{0} \xB7 \u8D44\u4EA7\u5305.json":"{0} \xB7 Assets.json","\u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F\u4ECD\u662F\u9ED8\u8BA4\u6A71\u7A97\uFF0C\u672A\u6539\u52A8\u4E14\u5F53\u524D\u672A\u663E\u793A\uFF0C\u5DF2\u4ECE\u8D44\u4EA7\u5305 GIA \u4E2D\u7701\u7565\u3002":"The unchanged, hidden default server UI was omitted from the asset bundle GIA.","\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\u4ECD\u662F\u9ED8\u8BA4\u300CLua\u5B9E\u4F8B\u5316\u9762\u677F\u300D\uFF0C\u672A\u6539\u52A8\u4E14\u5F53\u524D\u672A\u663E\u793A\uFF0C\u5DF2\u4ECE\u8D44\u4EA7\u5305 GIA \u4E2D\u7701\u7565\u3002":"The unchanged, hidden default client control template was omitted from the asset bundle GIA.","\u8D44\u4EA7\u5305 GIA \u6CA1\u6709\u53EF\u5BFC\u51FA\u7684\u5DF2\u6539\u52A8\u9879\uFF1B\u8BF7\u5148\u7F16\u8F91\u5F53\u524D\u754C\u9762\uFF0C\u6216\u6539\u7528\u300C\u5F53\u524D\u754C\u9762 GIA\u300D\u3002":"There are no modified assets to export. Edit the UI first, or use \u201CCurrent UI GIA\u201D.","{0} \xB7 \u811A\u672C.json":"{0} \xB7 Scripts.json","{0} \xB7 \u811A\u672C.gia":"{0} \xB7 Scripts.gia","\u6CA1\u6709\u53EF\u5BFC\u51FA\u7684 Lua \u811A\u672C\uFF0C\u8BF7\u5148\u5728\u201CLua \u811A\u672C\u201D\u9875\u521B\u5EFA":"No Lua scripts to export. Create one on the Lua Scripts page first.","\u5F53\u524D\u670D\u52A1\u5668\u63A7\u4EF6 GIA \u4E0D\u5305\u542B {0} \u4E2A Lua \u811A\u672C\u7684\u6E90\u7801\uFF1B\u8BF7\u4F7F\u7528\u300C\u8D44\u4EA7\u5305 GIA \u6574\u5408\u5305\u300D\uFF0C\u6216\u53E6\u884C\u5BFC\u5165\u811A\u672C\u5305\u5E76\u6838\u5BF9\u6302\u8F7D\u3002":"This server UI GIA does not contain source for {0} Lua scripts. Use \u201CCombined GIA\u201D or import the script bundle separately and check attachments.","JSON \u6587\u4EF6\u65E0\u6548":"Invalid JSON file","\u6574\u5408\u5305\u5DF2\u62C6\u56DE\u300CUI\u63A7\u4EF6-\u670D\u52A1\u7AEF\u300D\u4E0E\u300CUI\u63A7\u4EF6-\u5BA2\u6237\u7AEF\u300D\uFF1B\u5BA2\u6237\u7AEF\u6A21\u677F\u8FB9\u754C\u5DF2\u4FDD\u7559\u3002":"Combined bundle split back into Server UI and Client UI. Client template boundaries were preserved.","\u811A\u672C GUID {0} \u540C\u65F6\u6302\u8F7D\u5230\u591A\u4E2A\u63A7\u4EF6\uFF0C\u5DF2\u4FDD\u7559\u201C{1}\u201D\u76EE\u6807\u3002":"Script GUID {0} was attached to multiple controls. The \u201C{1}\u201D target was kept.",\u670D\u52A1\u7AEF:"Server",\u5BA2\u6237\u7AEF:"Client","\u5355\u8D44\u4EA7 JSON \u7684\u7D22\u5F15\u53D8\u66F4\u8BB0\u5F55\u5FC5\u987B\u5C5E\u4E8E\u5F53\u524D\u5BFC\u5165\u8D44\u4EA7":"Index change records in a single-asset JSON must belong to the imported asset","\u811A\u672C {0} \u8BFB\u53D6\u5931\u8D25: {1}":"Failed to read script {0}: {1}","\u5343\u661F\u6C99\u7BB1 \xB7 \u72EC\u7ACB\u8BD5\u73A9":"Miliastra Sandbox \xB7 Standalone Playtest",\u6A21\u62DF\u5668:"Simulator",\u5207\u6362\u8BBE\u5907\u753B\u5E03:"Switch Device Canvas","\u5207\u6362\u8BBE\u5907\u753B\u5E03\uFF1A\u4EE5\u65B0\u753B\u5E03\u91CD\u5EFA\u8FD0\u884C\u65F6\uFF0CGetUICanvasSize \u4E0E\u9884\u8BBE\u50CF\u7D20\u4E00\u81F4":"Rebuild the runtime for the selected canvas. GetUICanvasSize matches the preset's pixel dimensions.",\u8BD5\u73A9\u4EBA\u6570:"Player count","\u8BD5\u73A9\u4EBA\u6570\uFF1A\u6700\u591A 8 \u4EBA\uFF0C\u6BCF\u4EBA\u4E00\u4EFD\u72EC\u7ACB\u5BA2\u6237\u7AEF":"Up to 8 players, each with a separate client instance",\u5F53\u524D\u73A9\u5BB6\u89C6\u89D2:"Current player view","\u5207\u6362\u5F53\u524D\u73A9\u5BB6\u89C6\u89D2\uFF1A\u8F93\u5165\u3001\u753B\u9762\u548C PlayerSelf \u90FD\u8DDF\u968F\u8BE5\u73A9\u5BB6":"Change the active player for input, rendering, and PlayerSelf",\u8BBE\u5907:"Device","\u51C6\u5907\u4E2D\u2026":"Preparing...",\u8BD5\u73A9\u9875\u9762:"Playtest page",\u8BD5\u73A9:"Playtest",\u65E5\u5FD7:"Logs","\u8F6C\u53D1\u5B98\u65B9\u952E\u4F4D\u7684\u6309\u4E0B/\u62AC\u8D77\u4E8B\u4EF6\uFF08\u542B\u9F20\u6807\u5DE6\u53F3\u952E\uFF09\uFF1B\u5173\u95ED\u4E0D\u5F71\u54CD\u753B\u5E03\u70B9\u51FB":"Forward supported key/button down and up events, including mouse buttons. Turning this off does not disable canvas clicks.",\u70B9\u51FB\u89E3\u9501\u6D4F\u89C8\u5668\u97F3\u6548:"Click to enable browser audio","\u2161 \u6682\u505C\u8FD0\u884C":"\u2161 Pause",\u6682\u505C\u540E\u53EF\u5355\u5E27\u8C03\u8BD5:"Pause to step through individual frames","\u25B7 \u5355\u5E27\u8C03\u8BD5":"\u25B7 Step One Frame","\u25A0 \u7ED3\u675F\u8BD5\u73A9":"\u25A0 Stop Playtest","\u21BB \u91CD\u65B0\u5F00\u59CB":"\u21BB Restart",\u5207\u6362\u4EAE\u6697\u4E3B\u9898:"Toggle light / dark theme",\u8FD4\u56DE\u7F16\u8F91:"Back to Editor","\u6B63\u5728\u51C6\u5907\u8BD5\u73A9\u2026":"Preparing playtest\u2026",\u8FD0\u884C\u65F6\u573A\u666F\u6811:"Runtime Scene Tree","0 \u8282\u70B9":"0 nodes",\u670D\u52A1\u7AEF\u53D8\u91CF:"Server Variables","0 \u9879":"0 items",\u5BA2\u6237\u7AEF\u811A\u672C\u65E5\u5FD7:"Client Script Logs","\u6700\u8FD1 100 \u6761":"Latest 100 entries",\u670D\u52A1\u7AEF\u65E5\u5FD7:"Server Logs","\u53D8\u91CF / \u4FE1\u53F7":"Variables / signals",\u81EA\u52A8\u6D4B\u7528\u4F8B:"Automated Test Case","\u5148\u8BD5\u73A9\uFF0C\u518D\u4FDD\u5B58\u56DE\u653E":"Play first, then save a replay",'\u65AD\u8A00 JSON \u6570\u7EC4\uFF0C\u4F8B\u5982 [{"kind":"log","contains":"clicked"}]':'JSON assertion array, e.g. [{"kind":"log","contains":"clicked"}]',\u4FDD\u5B58\u7528\u4F8B:"Save Test Case",\u56DE\u653E\u7528\u4F8B:"Replay Test Case","\u25CF \u6B63\u5728\u542F\u52A8":"\u25CF Starting","\u9875\u9762\uFF1A\u8BD5\u73A9":"View: Playtest","\u9875\u9762\uFF1A\u65E5\u5FD7":"View: Logs",\u8BD5\u73A9\u8BF7\u6C42\u5931\u8D25:"Playtest request failed"," \u9879":" items","\u6682\u65E0\u81EA\u5B9A\u4E49\u53D8\u91CF\u3002\u811A\u672C Get/Set \u6216 serverSet \u4E4B\u540E\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\u3002":"No custom variables yet. They appear after script Get/Set calls or serverSet.","\u5B8C\u6574\u8FD0\u884C\u6811\u8BF7\u7528 Agent \u7684 inspect \u5FEB\u7167\u3002\u821E\u53F0\u6309\u5DE6\u6811\u4E0A\u65B9\u76D6\u4F4F\u4E0B\u65B9\u7ED8\u5236\u3002":"Use an Agent inspect snapshot for the full runtime tree. Items higher in the left tree draw over those below."," \u4E2A\u53EF\u89C1\u56FE\u5143":" visible primitives","\u25B6 \u7EE7\u7EED\u8FD0\u884C":"\u25B6 Resume"," \u4EBA":" players",\u73A9\u5BB6:"Player"," \xB7 \u73A9\u5BB6":" \xB7 Player "," \xB7 \u70B9\u51FB\u8F93\u5165":" \xB7 Click to focus","\u26A0 \u811A\u672C\u6302\u8F7D\u5931\u8D25":"\u26A0 Script attachment failed","\u2161 \u5DF2\u6682\u505C":"\u2161 Paused","\u25CF \u8BD5\u73A9\u8FD0\u884C\u4E2D":"\u25CF Playtest running","\u5DF2\u8BB0\u5F55 ":"Recorded "," \u6B65":" steps","\u26A0 \u8BD5\u73A9\u9519\u8BEF":"\u26A0 Playtest error","\u25A0 \u8BD5\u73A9\u5DF2\u7ED3\u675F\uFF0C\u53EF\u91CD\u65B0\u5F00\u59CB\u6216\u8FD4\u56DE\u7F16\u8F91":"\u25A0 Playtest stopped. Restart or return to the editor.","\u65AD\u8A00\u5FC5\u987B\u662F JSON \u6570\u7EC4":"Assertions must be a JSON array","\u5DF2\u4FDD\u5B58 ":"Saved "," \u6B65 / ":" steps / "," \u6761\u65AD\u8A00":" assertions",\u56DE\u653E\u901A\u8FC7:"Replay passed","\u56DE\u653E\u5931\u8D25 @":"Replay failed @","\u7F3A\u5C11\u4F1A\u8BDD ID":"Missing session ID","\u5343\u661F\u6A21\u62DF\u5668 \xB7 Live Preview":"Miliastra Simulator \xB7 Live Preview","\u5343\u661F\u6A21\u62DF\u5668 \xB7 \u7F16\u8F91\u5DE5\u4F5C\u53F0":"Miliastra Simulator \xB7 Editor","Web Preview \xB7 \u5B9E\u65F6\u9884\u89C8":"Web Preview \xB7 Live Preview",\u5DE5\u4F5C\u533A\u5B58\u6863:"Workspace Saves",\u91CD\u65B0\u8BFB\u53D6\u5B58\u6863:"Reload save from disk","\u7F16\u8F91\u5DE5\u4F5C\u53F0 \u2197":"Open Editor \u2197",\u6B63\u5728\u8FDE\u63A5:"Connecting",\u9884\u89C8\u6A21\u5F0F:"Preview mode",\u7F16\u8F91\u5668:"Editor",\u8D44\u4EA7:"Asset","\u670D\u52A1\u7AEF UI":"Server UI",\u5BA2\u6237\u7AEF\u6A21\u677F:"Client Templates","\u25B6 \u542F\u52A8":"\u25B6 Start","\u2161 \u6682\u505C":"\u2161 Pause","\u25B7 \u7EE7\u7EED":"\u25B7 Resume","+ 1 \u5E27":"+ 1 Frame","\u25A0 \u505C\u6B62":"\u25A0 Stop",\u6A21\u62DF\u5668\u9884\u89C8\u753B\u5E03:"Simulator preview canvas","Codex \u4FDD\u5B58 qxqy-simulator-save JSON \u540E\u4F1A\u81EA\u52A8\u51FA\u73B0\u5728\u8FD9\u91CC\u3002":"Saves appear here automatically when Codex writes a qxqy-simulator-save JSON file.","\u6B63\u5728\u66F4\u65B0\u753B\u9762\u2026":"Updating preview\u2026",\u7F16\u8F91\u5668\u9759\u6001\u9884\u89C8:"Static Editor Preview",\u9884\u89C8\u4FE1\u606F:"Preview Details",\u5F53\u524D\u8282\u70B9:"Selected Node",\u753B\u5E03:"Canvas",\u6E05\u7A7A:"Clear",\u9884\u89C8\u8FDE\u63A5:"Preview Connection","\u6B63\u5728\u8FDE\u63A5\u670D\u52A1\u2026":"Connecting to the service\u2026","\u5F53\u524D\u5B58\u6863\u4FDD\u5B58\u540E\u81EA\u52A8\u5237\u65B0\uFF1B\u9996\u6B21\u5B58\u6863\u4F1A\u81EA\u52A8\u53D1\u73B0\u3002\u5207\u6362\u5176\u4ED6\u5B58\u6863\u8BF7\u4F7F\u7528\u9876\u90E8\u5217\u8868\u6216 MCP \u9884\u89C8\u5DE5\u5177\u3002":"Refreshes automatically when the current save changes, and discovers the first save. Switch saves using the list above or the MCP preview tool.","\u68C0\u67E5\u66F4\u65B0\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5\u540E\u91CD\u8BD5\u3002":"Update check failed. Check your network connection and retry.",\u53D1\u73B0\u65B0\u7248\u672C:"A new version is available",\u5F53\u524D\u5DF2\u662F\u6700\u65B0\u7248\u672C:"You are up to date",\u5F53\u524D\u7248\u672C\u6BD4\u516C\u5F00\u7248\u672C\u66F4\u65B0:"Your version is newer than the public release",\u6682\u672A\u627E\u5230\u6B64\u5B89\u88C5\u5305\u7684\u6B63\u5F0F\u7248\u672C:"No stable release found for this package",\u754C\u9762\u8BED\u8A00:"Interface language","\u81EA\u52A8\uFF08\u7CFB\u7EDF\u8BED\u8A00\uFF09":"Auto (system language)","\u6B63\u5728\u68C0\u67E5\u66F4\u65B0\u2026":"Checking for updates\u2026",\u68C0\u67E5\u66F4\u65B0:"Check for Updates",\u8054\u7CFB\u4F5C\u8005:"Contact Author",QQ\u7FA4\u53F71007538100:"QQ Group: 1007538100","\u4F5C\u8005\u90AE\u7BB1 ":"Email: ","\u5F00\u6E90\u4ED3\u5E93 ":"Source repository: ","\u5F53\u524D\u7248\u672C\uFF1A{0}":"Current version: {0}","\u516C\u5F00\u7248\u672C\uFF1A{0}":"Public version: {0}","\u66F4\u65B0\u540E\u8BF7\u91CD\u542F\u5BBF\u4E3B\u5E76\u5237\u65B0\u7F16\u8F91\u5668\u4E0E\u8BD5\u73A9\u9875\u3002":"After updating, restart the host and refresh the editor and playtest pages.",\u67E5\u770B\u66F4\u65B0\u8BF4\u660E:"View Release Notes",\u4E0B\u8F7D\u66F4\u65B0\u5305:"Download Update",\u91CD\u8BD5:"Retry","\u8BF7\u9009\u62E9\u81EA\u52A8\u67E5\u627E\u3001\u6307\u5B9A\u6587\u4EF6\u6216\u7CFB\u7EDF\u5B57\u4F53":"Choose automatic discovery, a local file, or the system font",\u5B57\u4F53\u8DEF\u5F84\u8FC7\u957F:"The font path is too long",\u8BF7\u586B\u5199\u5B57\u4F53\u6587\u4EF6\u7684\u7EDD\u5BF9\u8DEF\u5F84:"Enter an absolute font file path","\u672C\u673A\u5B57\u4F53\u8BBE\u7F6E\u65E0\u6CD5\u8BFB\u53D6\uFF0C\u8BF7\u5728\u300C\u5B57\u4F53\u8BBE\u7F6E\u300D\u4E2D\u91CD\u65B0\u4FDD\u5B58":"Unable to read local font settings. Save them again in Font Settings.","\u65E0\u6CD5\u4FDD\u5B58\u672C\u673A\u5B57\u4F53\u8BBE\u7F6E\uFF0C\u8BF7\u68C0\u67E5\u914D\u7F6E\u76EE\u5F55\u7684\u5199\u5165\u6743\u9650":"Unable to save local font settings. Check write permissions for the configuration directory.","\u5F53\u524D\u5B57\u4F53\u7531 QXQY_FONT_PATH \u56FA\u5B9A\uFF0C\u8BF7\u79FB\u9664\u8BE5\u73AF\u5883\u53D8\u91CF\u5E76\u91CD\u542F\u540E\u518D\u4F7F\u7528\u524D\u7AEF\u8BBE\u7F6E":"QXQY_FONT_PATH overrides font settings. Remove it and restart before editing settings here.",\u5B57\u4F53\u8BBE\u7F6E\u4EC5\u9650\u672C\u673A\u76F4\u63A5\u8BBF\u95EE:"Font settings require a direct connection from this machine",\u5B57\u4F53\u8BBE\u7F6E\u8FC7\u5927:"Font settings exceed the size limit",\u5343\u661F\u6C99\u7BB1:"Miliastra Sandbox",\u5343\u661F\u5947\u57DF:"Miliastra Wonderland",\u670D\u52A1\u7AEF\u63A7\u4EF6\u6A21\u677F:"Server Control Template",\u670D\u52A1\u7AEF\u63A7\u4EF6:"Server Controls",\u5BA2\u6237\u7AEF\u63A7\u4EF6:"Client Controls","1 \u4EBA":"1 player","{0} \u4EBA":"{0} players",\u90E8\u5206\u7EC4\u5408\u5BFC\u51FA:"Export Selected Controls","\u52FE\u9009\u5BA2\u6237\u7AEF\u63A7\u4EF6\u53CA\u5176\u5B50\u6811\uFF0C\u7EC4\u5408\u4E3A\u4E00\u4E2A GIA \u6587\u4EF6\u3002\u7236\u5B50\u540C\u65F6\u9009\u4E2D\u65F6\u53EA\u5BFC\u51FA\u4E00\u6B21\u3002":"Select client controls and their subtrees for one GIA file. Overlapping selections are exported once.",\u53EF\u5BFC\u51FA\u7684\u5BA2\u6237\u7AEF\u63A7\u4EF6:"Exportable Client Controls","\u5BFC\u51FA {0}":"Export {0}","\u9884\u89C8 {0}":"Preview {0}","{0} \u4E2A\u63A7\u4EF6":"{0} controls",\u6CA1\u6709\u53EF\u5BFC\u51FA\u7684\u5BA2\u6237\u7AEF\u63A7\u4EF6:"No client controls to export","\u6B63\u5728\u52A0\u8F7D\u2026":"Loading\u2026",\u5BFC\u51FA\u9884\u89C8:"Export Preview","\u9884\u89C8\u5F53\u524D\u9879\u72EC\u7ACB\u5BFC\u51FA\u540E\u7684\u5E03\u5C40\uFF0C\u4E0D\u6539\u53D8\u539F\u9879\u76EE\u3002":"Preview this item as an independent template without changing the project.",\u5305\u542B\u6302\u8F7D\u811A\u672C\u53CA\u672A\u6302\u8F7D\u6A21\u5757:"Include attached scripts and unattached modules",\u5168\u9009:"Select All",\u6E05\u9664:"Clear","\u5DF2\u9009 {0} \u9879":"{0} selected","\u6B63\u5728\u5BFC\u51FA\u2026":"Exporting\u2026","\u5BFC\u51FA GIA":"Export GIA",\u5BFC\u51FA\u5F53\u524D\u5BA2\u6237\u7AEF\u63A7\u4EF6\u53CA\u5176\u5B50\u6811:"Export this client control and its subtree","\u8BF7\u9009\u62E9\u81F3\u5C11\u4E00\u4E2A\u5BA2\u6237\u7AEF\u63A7\u4EF6 controlIds":"Select at least one client control in controlIds","revision conflict: reload export choices":"Revision conflict: reopen the export selection","\u5DF2\u5305\u542B\u672A\u6302\u8F7D\u7684 Lua \u6A21\u5757\uFF1BLua \u52A8\u6001\u5F15\u7528\u65E0\u6CD5\u81EA\u52A8\u5224\u65AD\uFF0C\u8BF7\u6838\u5BF9\u5916\u90E8\u6A21\u677F\u548C\u811A\u672C\u4F9D\u8D56\u3002":"Unattached Lua modules are included. Check external template and script dependencies; dynamic Lua references cannot be resolved automatically.","\u672C\u6B21\u672A\u5305\u542B\u6302\u8F7D\u811A\u672C\uFF0C\u5BFC\u5165\u540E\u9700\u53E6\u884C\u5BFC\u5165\u5E76\u6302\u8F7D\u3002":"Attached scripts are excluded. Import and attach them separately.","\u672A\u77E5\u5BA2\u6237\u7AEF\u63A7\u4EF6\uFF1A{0}":"Unknown client control: {0}","{0}\uFF1A\u4EC5\u5728\u5BFC\u51FA\u526F\u672C\u4E2D\u63D0\u5347\u4E3A\u72EC\u7ACB\u6A21\u677F\uFF0C\u4FDD\u7559\u56DB\u5E73\u53F0\u5C40\u90E8\u53D8\u6362\uFF1B\u5916\u90E8\u7236\u7EA7\u7684\u7F29\u653E\u3001\u65CB\u8F6C\u3001\u906E\u7F69\u53CA\u663E\u9690\u4E0D\u5305\u542B\u5728\u5185\u3002":"{0}: Promoted to an independent template in the export copy only. Local transforms for all four platforms are retained; the parent's scale, rotation, masks and visibility are excluded.","{0}\uFF1A\u5F15\u7528 {1} \u4E0D\u5728\u672C\u6B21\u5BFC\u51FA\u4E2D\uFF0C\u8BF7\u540C\u65F6\u5BFC\u5165\u5BF9\u5E94\u6A21\u677F\u3002":"{0}: Reference {1} is outside this export. Import the referenced template separately.","{0}\uFF1A\u4E8C\u8FDB\u5236\u6A21\u677F\u5F15\u7528\u539F\u6837\u4FDD\u7559\uFF0C\u65E0\u6CD5\u81EA\u52A8\u5224\u65AD\u5916\u90E8\u4F9D\u8D56\u3002":"{0}: The binary template reference is preserved unchanged. External dependencies cannot be resolved automatically.","{0}\uFF1A\u811A\u672C\u6620\u5C04 {1} \u7684\u6E90\u7801\u672A\u767B\u8BB0\uFF0C\u8BF7\u53E6\u884C\u5BFC\u5165\u3002":"{0}: Source for script mapping {1} is not registered. Import it separately.","{0}\uFF1A\u4EC5\u767B\u8BB0\u4E86\u8DEF\u5F84\uFF0C\u6CA1\u6709\u5185\u8054\u6E90\u7801\uFF1B\u8BF7\u6838\u5BF9\u6E38\u620F\u5185\u7684\u811A\u672C\u6587\u4EF6\u3002":"{0}: Only the path is registered, without inline source. Check the script file in the game."};var $t="qxqy-ui-language",at="qxqy-ui-language-change",Ie=new Set,ua=i=>["auto","zh","en"].includes(i);function Tt(){try{let i=globalThis.localStorage?.getItem($t);return ua(i)?i:"auto"}catch{return"auto"}}var _e=Tt(),ba=null;function Bi(i="auto",a="zh-CN",d=""){return i==="zh"||i==="en"?i:/^(?:zh|cmn|yue|wuu|hak|nan|gan|hsn)(?:[-_]|$)/i.test(d||a)?"zh":"en"}var ma=()=>_e,it=()=>ba||{language:typeof window>"u"?"zh-CN":globalThis.navigator?.language||globalThis.navigator?.languages?.[0]||Intl.DateTimeFormat().resolvedOptions().locale||"en",source:"browser"},ot=()=>Bi(_e,it().language);async function ha(i,a=globalThis.fetch){try{let d=await a(i,{method:"POST",mode:"same-origin",credentials:"same-origin",cache:"no-store",headers:{"content-type":"application/json"},body:"{}",signal:AbortSignal.timeout(4e3)});if(d.ok){let o=await d.json(),c=o.ok?o.value:null;if(typeof c?.language=="string"&&c.language.length<=80){let t=Intl.getCanonicalLocales(c.language.replaceAll("_","-"))[0];if(t){ba={language:t,source:c.source||"host"};for(let u of Ie)u()}}}}catch{}return it()}function Oe(i){if(!(i?.type==="storage"&&i.key!==$t&&i.key!==null)){_e=i?.type===at?i.detail:Tt();for(let a of Ie)a()}}function ga(i){if(ua(i)){_e=i;try{globalThis.localStorage?.setItem($t,i)}catch{}if(typeof window<"u")window.dispatchEvent(new CustomEvent(at,{detail:i}));else for(let a of Ie)a()}}function Ot(i){return!Ie.size&&typeof window<"u"&&(_e=Tt(),window.addEventListener("storage",Oe),window.addEventListener(at,Oe),window.addEventListener("languagechange",Oe)),Ie.add(i),()=>{Ie.delete(i),!Ie.size&&typeof window<"u"&&(window.removeEventListener("storage",Oe),window.removeEventListener(at,Oe),window.removeEventListener("languagechange",Oe))}}function nt(i){return()=>{let[,a]=i.useReducer(d=>d+1,0);return i.useEffect(()=>{let d=Ot(a);return a(),d},[]),ot()}}var tt=(i,a)=>i.replace(/\{(\d+)\}/g,(d,o)=>o<a.length?String(a[o]??""):d),Gi=Object.entries(et).filter(([i])=>/\{\d+\}/.test(i)).map(([i,a])=>{let d=[],o=i.split(/(\{\d+\})/).map(c=>{let t=c.match(/^\{(\d+)\}$/);return t?(d.push(Number(t[1])),"([\\s\\S]*?)"):c.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}).join("");return{expression:new RegExp(`^${o}$`),value:a,slots:d}});function ji(i,a,...d){if(Array.isArray(a)&&Object.hasOwn(a,"raw")&&(a=a.reduce((o,c,t)=>o+(t?`{${t-1}}`:"")+c,"")),typeof a!="string")return a;if(i!=="en")return tt(a,d);if(Object.hasOwn(et,a))return tt(et[a],d);if(!d.length&&/[\p{Script=Han}]/u.test(a))for(let o of Gi){let c=o.expression.exec(a);if(!c)continue;let t=[];return o.slots.forEach((u,l)=>{t[u]=c[l+1]}),tt(o.value,t)}return tt(a,d)}var e=(i,...a)=>ji(ot(),i,...a);function xa(i){let a=i.createElement;return function({snap:o,request:c,patch:t,prepare:u,refresh:l}){let f={version:1,workspaceDir:"",clientImportRoot:"",clientSubdir:""},[p,h]=i.useState(o.scriptSync||f),[x,w]=i.useState(o.storage?.path||"qxqy-simulator.save.json"),[v,q]=i.useState([]),[U,y]=i.useState(null),[I,_]=i.useState([]),[$,A]=i.useState(null),[P,O]=i.useState(""),[T,W]=i.useState(""),[M,H]=i.useState(!1),se=i.useId();i.useEffect(()=>{h(o.scriptSync||f),y(null)},[JSON.stringify(o.scriptSync),o.storage?.path]),i.useEffect(()=>{y(null)},[o.version,o.asset?.type]),i.useEffect(()=>{o.storage?.path&&w(o.storage.path)},[o.storage?.path]);let le=async S=>{H(!0),W(""),O("");try{await S()}catch(ce){W(ce.message||String(ce))}finally{H(!1)}},re=(S,ce={})=>c("script-sync",{action:S,args:ce});async function L(){y(null),A(null);let S=await u();await c("save",{path:x,expectedRevision:S.version}),await l();let ce=await re("preview");y(ce),_(ce.rows.filter(me=>!me.error&&me.status!=="\u672A\u53D8\u5316").map(me=>me.id))}let J=JSON.stringify(p)!==JSON.stringify(o.scriptSync||f),K=(S,ce,me,ut)=>a("label",{className:"qxsim-field",key:S},a("span",null,ce),a("input",{type:"text",value:p[S],placeholder:me,"aria-label":ce,"aria-describedby":`${se}-${S}`,disabled:M,onChange:He=>{h({...p,[S]:He.target.value}),y(null),O("")}}),a("small",{id:`${se}-${S}`},ut)),te=p.clientImportRoot.replaceAll("\\","/").match(/BeyondLocal\/([^/]+)\/Beyond_Local_Save_Level\/([^/]+)/),fe=S=>S.trim().replaceAll("\\","/").replace(/^\.$/,""),oe=fe(p.workspaceDir)?`${fe(p.workspaceDir)}/`:"",de=o.scripts?.find(S=>S.path.replaceAll("\\","/").startsWith(oe)&&S.path.toLowerCase().endsWith(".lua"))?.path.replaceAll("\\","/")||`${oe}main.lua`,Fe=[p.clientImportRoot.trim().replaceAll("\\","/").replace(/\/+$/,"")||e("\u3010\u5343\u661F\u6C99\u7BB1\u811A\u672C\u6587\u4EF6\u5939\u3011"),fe(p.clientSubdir),de.slice(oe.length)].filter(Boolean).join("/"),ue={\u65B0\u589E:e("\u65B0\u589E\u6587\u4EF6"),\u8986\u76D6:e("\u66F4\u65B0\u5DF2\u6709\u6587\u4EF6"),\u672A\u53D8\u5316:e("\u5185\u5BB9\u76F8\u540C\uFF0C\u65E0\u9700\u66F4\u65B0"),\u9519\u8BEF:e("\u65E0\u6CD5\u590D\u5236")},be={\u5B58\u6863\u6E90\u7801:e("\u5B58\u6863\u91CC\u7F16\u8F91\u7684\u4EE3\u7801"),\u5DE5\u4F5C\u533A\u6587\u4EF6:e("\u9879\u76EE\u4E2D\u7684 .lua \u6587\u4EF6")},ye=(S,ce,me=!1)=>a("button",{type:"button",className:"qxsim-action",disabled:M||me,onClick:()=>void le(ce)},S);return a("details",{className:"qxsim-section",style:{flexShrink:0,maxHeight:"55%",overflow:"auto",margin:"5px 10px"}},a("summary",null,e`实机脚本同步 · ${o.scriptSync?e("\u5DF2\u8BBE\u7F6E\u6587\u4EF6\u5939"):e("\u5148\u8BBE\u7F6E\u6587\u4EF6\u5939")}`),a("div",{className:"qxsim-section-body"},a("p",null,e("\u628A\u5F53\u524D\u5B58\u6863\u91CC\u7684 Lua \u811A\u672C\u590D\u5236\u5230\u5343\u661F\u6C99\u7BB1\uFF0C\u7528\u4E8E\u6E38\u620F\u5185\u6D4B\u8BD5\u3002\u64CD\u4F5C\u987A\u5E8F\uFF1A\u586B\u5199\u811A\u672C\u4F4D\u7F6E \u2192 \u4FDD\u5B58\u8BBE\u7F6E \u2192 \u4FDD\u5B58\u5B58\u6863\u5E76\u67E5\u770B\u66F4\u65B0 \u2192 \u786E\u8BA4\u590D\u5236\u3002")),K("workspaceDir",e("\u9879\u76EE\u811A\u672C\u6587\u4EF6\u5939"),e("\u4F8B\u5982 workspace/my-game\uFF1B\u4E5F\u53EF\u4EE5\u7559\u7A7A"),e("\u586B\u5199\u5728\u5DE5\u4F5C\u533A\u91CC\u7684\u4F4D\u7F6E\uFF0C\u4F8B\u5982 workspace/my-game\uFF1B\u7559\u7A7A\u8868\u793A\u4F7F\u7528\u5DE5\u4F5C\u533A\u672C\u8EAB\u3002")),K("clientImportRoot",e("\u5343\u661F\u6C99\u7BB1\u811A\u672C\u6587\u4EF6\u5939"),e("\u7C98\u8D34\u4EE5 default_import_file \u7ED3\u5C3E\u7684\u5B8C\u6574\u8DEF\u5F84"),e("\u5173\u5361\u5B58\u653E\u5916\u90E8 Lua \u811A\u672C\u7684\u6587\u4EF6\u5939\uFF0C\u53EF\u70B9\u51FB\u300C\u53D1\u73B0\u672C\u673A\u76EE\u5F55\u300D\u67E5\u627E\u3002\u8BF7\u586B\u5199\u8FD0\u884C\u6A21\u62DF\u5668\u90A3\u53F0\u7535\u8111\u4E0A\u7684\u5B8C\u6574\u8DEF\u5F84\u3002")),K("clientSubdir",e("\u6E38\u620F\u91CC\u7684\u9879\u76EE\u5B50\u6587\u4EF6\u5939"),e("\u4F8B\u5982 workspace/my-game\uFF1B\u4E5F\u53EF\u4EE5\u7559\u7A7A"),a(i.Fragment,null,e("\u4E00\u822C\u548C\u201C\u9879\u76EE\u811A\u672C\u6587\u4EF6\u5939\u201D\u586B\u4E00\u6837\u7684\u5185\u5BB9\uFF0C\u4FDD\u7559\u539F\u6765\u7684\u6587\u4EF6\u4F4D\u7F6E\u3002\u7559\u7A7A\u5219\u76F4\u63A5\u653E\u8FDB\u5343\u661F\u6C99\u7BB1\u811A\u672C\u6587\u4EF6\u5939\u3002"),a("span",{"aria-label":e("\u590D\u5236\u8DEF\u5F84\u793A\u4F8B"),style:{display:"block",overflowWrap:"anywhere"}},e("\u590D\u5236\u793A\u4F8B\uFF1A"),a("code",null,de)," \u2192 ",a("code",null,Fe)))),te?a("p",null,e`游戏账号 UID:${te[1]} · 关卡目录编号:${te[2]}`):null,a("div",{style:{display:"flex",gap:6,flexWrap:"wrap"}},ye(e("\u53D1\u73B0\u672C\u673A\u76EE\u5F55"),async()=>{let S=await re("discover");q(S.candidates),S.candidates.length?O(e`找到 ${S.candidates.length} 个游戏脚本文件夹,请选择要更新的账号和关卡。`):W(e("\u6CA1\u6709\u627E\u5230\u6E38\u620F\u811A\u672C\u6587\u4EF6\u5939\u3002\u53EF\u4EE5\u624B\u52A8\u7C98\u8D34 default_import_file \u6587\u4EF6\u5939\u7684\u5B8C\u6574\u8DEF\u5F84\uFF1B\u5982\u679C\u8FD8\u6CA1\u5BFC\u5165\u811A\u672C\uFF0C\u8BF7\u5148\u5728\u5343\u661F\u6C99\u7BB1\u5B8C\u6210\u5BFC\u5165\u3002"))}),ye(e("\u4FDD\u5B58\u8BBE\u7F6E"),async()=>{await u();let S=await t({op:"setScriptSync",config:p});await c("save",{path:x,expectedRevision:S.version}),await l(),y(null),A(null),O(e("\u811A\u672C\u4F4D\u7F6E\u5DF2\u4FDD\u5B58\u3002\u4E0B\u4E00\u6B65\u70B9\u51FB\u300C\u4FDD\u5B58\u5B58\u6863\u5E76\u67E5\u770B\u66F4\u65B0\u300D\u3002"))},!p.clientImportRoot.trim()||!x.trim()),ye(e("\u6E05\u9664\u8BBE\u7F6E"),async()=>{await u();let S=await t({op:"setScriptSync",config:null});await c("save",{path:x,expectedRevision:S.version}),await l(),y(null),A(null),O(e("\u5DF2\u6E05\u9664\u811A\u672C\u4F4D\u7F6E\u8BBE\u7F6E\u3002\u6E38\u620F\u91CC\u7684\u811A\u672C\u6587\u4EF6\u4ECD\u7136\u4FDD\u7559\u3002"))},!o.scriptSync||!x.trim())),v.length?a("label",{className:"qxsim-field"},e("\u9009\u62E9\u8981\u66F4\u65B0\u7684\u8D26\u53F7\u548C\u5173\u5361"),a("select",{value:"",disabled:M,onChange:S=>{h({...p,clientImportRoot:S.target.value}),y(null),O("")}},a("option",{value:""},e("\u8BF7\u9009\u62E9\u6E38\u620F\u8D26\u53F7\u548C\u5173\u5361\u6587\u4EF6\u5939\u2026")),v.map(S=>a("option",{key:S.path,value:S.path},e`账号 ${S.uid} / 关卡目录 ${S.editorId} · ${S.path}`)))):null,a("label",{className:"qxsim-field",style:{marginTop:8}},a("span",null,e("\u6A21\u62DF\u5668\u5B58\u6863\u6587\u4EF6")),a("input",{type:"text",value:x,placeholder:e("\u4F8B\u5982 my-game.save.json"),"aria-label":e("\u6A21\u62DF\u5668\u5B58\u6863\u6587\u4EF6"),"aria-describedby":`${se}-archive`,disabled:M,onChange:S=>{w(S.target.value),y(null),O("")}}),a("small",{id:`${se}-archive`},e("\u586B\u5199\u5DE5\u4F5C\u533A\u91CC\u7684\u5B58\u6863\u6587\u4EF6\u540D\u6216\u8DEF\u5F84\u3002\u4FDD\u5B58\u8BBE\u7F6E\u65F6\u4F1A\u4E00\u8D77\u4FDD\u5B58\u9879\u76EE\uFF0C\u4E0B\u6B21\u6253\u5F00\u5B58\u6863\u5373\u53EF\u590D\u7528\u3002"))),ye(e("\u4FDD\u5B58\u5B58\u6863\u5E76\u67E5\u770B\u66F4\u65B0"),L,!o.scriptSync||J||!x.trim()),o.scriptSync?J?a("p",null,e("\u811A\u672C\u4F4D\u7F6E\u5DF2\u6539\u52A8\uFF0C\u8BF7\u5148\u70B9\u51FB\u300C\u4FDD\u5B58\u8BBE\u7F6E\u300D\u3002")):x.trim()?null:a("p",null,e("\u8BF7\u5148\u586B\u5199\u6A21\u62DF\u5668\u5B58\u6863\u6587\u4EF6\u540D\u3002")):a("p",null,e("\u8BF7\u5148\u586B\u5199\u5343\u661F\u6C99\u7BB1\u811A\u672C\u6587\u4EF6\u5939\uFF0C\u5E76\u70B9\u51FB\u300C\u4FDD\u5B58\u8BBE\u7F6E\u300D\u3002")),M?a("p",{role:"status"},e("\u6B63\u5728\u5904\u7406\uFF0C\u8BF7\u7A0D\u5019\u2026")):P?a("p",{role:"status"},P):null,T?a("p",{role:"alert",style:{color:"var(--danger)"}},e(T)):null,U?a("section",{"aria-label":e("\u811A\u672C\u540C\u6B65\u786E\u8BA4")},a("p",{style:{overflowWrap:"anywhere"}},e`本次更新到:${U.root}`),U.rows.length?U.rows.every(S=>S.status==="\u672A\u53D8\u5316")?a("p",{role:"status"},e("\u6240\u6709\u811A\u672C\u90FD\u4E0E\u6E38\u620F\u6587\u4EF6\u5939\u91CC\u7684\u5185\u5BB9\u76F8\u540C\uFF0C\u65E0\u9700\u590D\u5236\u3002")):null:a("p",null,e("\u8FD9\u4E2A\u5B58\u6863\u8FD8\u6CA1\u6709 Lua \u811A\u672C\u3002\u8BF7\u5148\u5728\u4E0B\u65B9\u6DFB\u52A0\u811A\u672C\uFF0C\u518D\u67E5\u770B\u66F4\u65B0\u3002")),U.pendingGuidChanges?a("p",{role:"alert"},e("\u6709\u63A7\u4EF6\u7D22\u5F15\u5C1A\u672A\u540C\u6B65\u5230 Lua\u3002\u8BF7\u5148\u5728\u4E0A\u65B9\u300C\u5168\u91CF\u66FF\u6362\u811A\u672C\u7D22\u5F15\u300D\uFF0C\u6216\u300C\u590D\u5236\u63D0\u793A\u8BCD\u7ED9 AI\u300D\uFF1B\u5904\u7406\u5B8C\u6210\u540E\u518D\u67E5\u770B\u6E38\u620F\u811A\u672C\u66F4\u65B0\u3002")):null,U.rows.map(S=>a("div",{key:S.id,style:{borderTop:"1px solid var(--line)",padding:6}},a("label",{style:{overflowWrap:"anywhere"}},a("input",{type:"checkbox",disabled:M||!!S.error||S.status==="\u672A\u53D8\u5316",checked:I.includes(S.id),onChange:ce=>_(ce.target.checked?[...I,S.id]:I.filter(me=>me!==S.id))}),` ${S.path} \xB7 ${ue[S.status]||S.status}`),a("div",null,e`复制的代码来自:${be[S.sourceKind]||S.sourceKind}`),a("div",{style:{overflowWrap:"anywhere"}},S.error?e`无法复制:${S.error}`:e`复制到:${S.target}`),S.sourceMismatch?a("div",{className:"qxsim-note"},e("\u8FD9\u4E2A\u811A\u672C\u5728\u5B58\u6863\u91CC\u548C\u9879\u76EE\u6587\u4EF6\u91CC\u7684\u4EE3\u7801\u4E0D\u540C\u3002\u672C\u6B21\u4F1A\u590D\u5236\u5B58\u6863\u91CC\u7684\u4EE3\u7801\uFF1B\u5982\u679C\u8981\u4F7F\u7528\u9879\u76EE\u6587\u4EF6\uFF0C\u8BF7\u70B9\u51FB\u300C\u6539\u7528\u9879\u76EE\u6587\u4EF6\u91CC\u7684\u4EE3\u7801\u300D\uFF0C\u7136\u540E\u91CD\u65B0\u67E5\u770B\u66F4\u65B0\u3002"),a("details",null,a("summary",null,e("\u67E5\u770B\u9879\u76EE\u6587\u4EF6\u91CC\u7684\u4EE3\u7801")),a("pre",{style:{maxHeight:200,overflow:"auto"}},S.diskSource)),ye(e("\u6539\u7528\u9879\u76EE\u6587\u4EF6\u91CC\u7684\u4EE3\u7801"),async()=>{await u(),await t({op:"updateScript",id:S.id,source:S.diskSource}),y(null)})):null,!S.error&&S.status!=="\u672A\u53D8\u5316"?a("details",null,a("summary",null,e("\u5BF9\u6BD4\u66F4\u65B0\u524D\u540E\u7684\u4EE3\u7801")),a("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:8}},a("div",{style:{minWidth:0}},e("\u6E38\u620F\u91CC\u73B0\u5728\u7684\u4EE3\u7801"),a("pre",{style:{maxHeight:240,overflow:"auto"}},S.status==="\u65B0\u589E"?e("\uFF08\u6E38\u620F\u91CC\u8FD8\u6CA1\u6709\u8FD9\u4E2A\u6587\u4EF6\uFF09"):S.beforeSource)),a("div",{style:{minWidth:0}},e("\u672C\u6B21\u8981\u590D\u5236\u7684\u4EE3\u7801"),a("pre",{style:{maxHeight:240,overflow:"auto"}},S.source)))):null)),U.rows.some(S=>S.status==="\u65B0\u589E")?a("p",null,e("\u65B0\u589E\u811A\u672C\u590D\u5236\u540E\uFF0C\u8FD8\u9700\u8981\u5728\u5343\u661F\u6C99\u7BB1\u91CC\u5173\u8054\u5BF9\u5E94\u7684\u811A\u672C\u6587\u4EF6\uFF1B\u9700\u8981\u76F4\u63A5\u8FD0\u884C\u7684\u811A\u672C\u8FD8\u8981\u6302\u5230\u63A7\u4EF6\u4E0A\u3002")):null,I.length?a("p",null,e`已选 ${I.length} 个脚本,其中 ${U.rows.filter(S=>I.includes(S.id)&&S.status==="\u8986\u76D6").length} 个会替换游戏里的旧文件。替换前会自动备份旧文件,游戏里的其他文件会保留。`):null,a("div",{style:{display:"flex",gap:6}},ye(e("\u6682\u4E0D\u590D\u5236"),async()=>y(null)),ye(e`确认复制 ${I.length} 个脚本`,async()=>{let S=U;y(null),await u(),A(await c("script-sync-apply",{planId:S.id,scriptIds:I,confirmed:!0}))},!I.length||!!U.pendingGuidChanges))):null,$?a("div",{role:"status"},a("strong",null,$.completed?e("\u811A\u672C\u5DF2\u590D\u5236\u5230\u5343\u661F\u6C99\u7BB1"):e("\u6709\u4E9B\u811A\u672C\u672A\u590D\u5236\u6210\u529F")),a("p",null,$.completed?e("\u4E0B\u4E00\u6B65\uFF1A\u56DE\u5230\u5343\u661F\u6C99\u7BB1\uFF0C\u4FDD\u5B58\u5173\u5361\u5E76\u91CD\u65B0\u8BD5\u73A9\uFF0C\u8BA9\u6E38\u620F\u52A0\u8F7D\u66F4\u65B0\u540E\u7684\u811A\u672C\u3002"):e("\u8BF7\u6309\u4E0B\u65B9\u63D0\u793A\u5904\u7406\u5931\u8D25\u7684\u6587\u4EF6\uFF0C\u518D\u91CD\u65B0\u67E5\u770B\u66F4\u65B0\u5E76\u590D\u5236\u3002")),a("p",{style:{overflowWrap:"anywhere"}},e`复制时间:${new Date($.at).toLocaleString()} · 旧文件备份保存在:${$.backupRoot}`),a("ul",{style:{overflowWrap:"anywhere"}},$.results.map(S=>a("li",{key:S.id},`${S.target}\uFF1A${S.status==="\u6210\u529F"?e("\u5DF2\u590D\u5236"):e("\u672A\u590D\u5236")}${S.error?` \xB7 ${S.error}`:""}`)))):null))}}function va(i){let a=i.createElement;return function({snap:o,prepare:c,patch:t,copy:u,onScripts:l,onError:f,reloadArchive:p}){let[h,x]=i.useState(!1),[w,v]=i.useState(null),[q,U]=i.useState(null),[y,I]=i.useState(""),[_,$]=i.useState(!1),A=i.useRef(null),P=o.controlGuidChanges||[],O=P.at(-1)?.id||"";i.useEffect(()=>{v(null),I("")},[o.version,o.save?.name]),i.useEffect(()=>{$(!1)},[O,o.save?.name]),i.useLayoutEffect(()=>{y&&A.current&&(A.current.scrollTop=0)},[y]);let T=M=>async()=>{x(!0);try{await M()}catch(H){f(H?.message||String(H))}finally{x(!1)}},W=T(async()=>{I(await u()),v(null),A.current&&(A.current.scrollTop=0)});return!P.length&&!q?null:_?a("div",{style:{flexShrink:0,padding:"2px 10px"}},a("button",{className:"qxsim-action",onClick:()=>$(!1)},e`Lua 索引待同步(${P.length} 项)· 展开`)):a("section",{ref:A,className:"qxsim-note","aria-label":e("Lua \u7D22\u5F15\u540C\u6B65"),style:{flexShrink:0,maxHeight:270,overflow:"auto",overflowWrap:"anywhere"}},a("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8}},a("strong",null,P.length?e`下一步:同步 Lua 索引引用(${P.length} 项)`:e("\u811A\u672C\u5168\u91CF\u66FF\u6362\u5DF2\u5B8C\u6210")),a("button",{className:"qxsim-action","aria-label":e("\u5173\u95ED\u7D22\u5F15\u540C\u6B65\u63D0\u793A"),title:e("\u6536\u8D77\u63D0\u793A\uFF0C\u4FDD\u7559\u5F85\u540C\u6B65\u8BB0\u5F55"),disabled:h,onClick:()=>{P.length?$(!0):U(null)}},e("\u5173\u95ED"))),y?a("details",{open:!0},a("summary",null,e("\u540C\u6B65\u4EFB\u52A1\uFF08\u7C98\u8D34\u7ED9\u5F53\u524D\u9879\u76EE\u7684 AI\uFF09")),a("textarea",{"aria-label":e("AI \u7D22\u5F15\u540C\u6B65\u4EFB\u52A1"),readOnly:!0,value:y,rows:5,style:{width:"100%",boxSizing:"border-box"}}),a("button",{className:"qxsim-action",disabled:h,onClick:T(p)},e("AI \u5DF2\u5904\u7406\uFF0C\u91CD\u65B0\u8F7D\u5165\u5B58\u6863"))):null,a("div",null,P.length?e("\u63A7\u4EF6\u7D22\u5F15\u5DF2\u4FEE\u6539\uFF0C\u8BF7\u9009\u62E9\u4E00\u79CD\u65B9\u5F0F\u540C\u6B65\u811A\u672C\u3002"):e("\u8BF7\u68C0\u67E5\u66FF\u6362\u7ED3\u679C\u5E76\u4FDD\u5B58\u5B58\u6863\uFF0C\u518D\u5230\u300CLua \u811A\u672C \u2192 \u5B9E\u673A\u811A\u672C\u540C\u6B65\u300D\u66F4\u65B0\u6E38\u620F\u91CC\u7684\u6587\u4EF6\u5E76\u91CD\u65B0\u8BD5\u73A9\u3002")),P.length?a(i.Fragment,null,a("div",{role:"group","aria-label":e("\u7D22\u5F15\u540C\u6B65\u65B9\u5F0F"),style:{display:"flex",gap:12,flexWrap:"wrap",marginTop:5}},a("div",{style:{flex:"1 1 280px"}},a("button",{className:"qxsim-action",disabled:h,onClick:T(async()=>{await c();let H=(await t({op:"previewControlGuidSync"})).controlGuidSyncPreview;if(U(null),I(""),!H.canApply){v(H);return}let se=await t({op:"syncControlGuidReferences",planId:H.id});U(se.controlGuidSyncResult),v(null)})},e("\u5168\u91CF\u66FF\u6362\u811A\u672C\u7D22\u5F15")),a("div",null,a("strong",null,e("\u53EF\u80FD\u9519\u8BEF\u5730\u66FF\u6362\u975E\u7D22\u5F15\u5185\u5BB9\u3002")),e("\u6309\u5B8C\u6574\u5341\u8FDB\u5236\u6570\u5B57\u66FF\u6362\u6240\u6709\u5DF2\u767B\u8BB0\u811A\u672C\uFF0C\u5305\u62EC\u914D\u7F6E\u8868\u3001\u5B57\u7B26\u4E32\u548C\u6CE8\u91CA\uFF1B\u540C\u65F6\u66F4\u65B0\u5185\u5BB9\u4E00\u81F4\u7684\u5DE5\u4F5C\u533A\u6E90\u6587\u4EF6\uFF0C\u66FF\u6362\u524D\u81EA\u52A8\u5907\u4EFD\u3002"))),a("div",{style:{flex:"1 1 280px"}},a("button",{className:"qxsim-action",disabled:h,onClick:W},e("\u590D\u5236\u63D0\u793A\u8BCD\u7ED9 AI")),a("div",null,e("\u5148\u4FDD\u5B58\u6700\u65B0\u5B58\u6863\uFF0C\u518D\u590D\u5236\u5305\u542B\u6620\u5C04\u8BFB\u53D6\u65B9\u5F0F\u548C\u811A\u672C\u4F4D\u7F6E\u7684\u63D0\u793A\u8BCD\uFF0C\u7531 AI \u5224\u65AD\u54EA\u4E9B\u5F15\u7528\u9700\u8981\u66F4\u65B0\u3002")))),a("details",null,a("summary",null,e`查看索引变更(${P.length} 项)`),a("ul",null,P.slice(0,20).map(M=>a("li",{key:M.id},`${M.controlName}\uFF1A${M.oldGuid} \u2192 ${M.newGuid}`))),P.length>20?a("div",null,e("\u8FD9\u91CC\u663E\u793A\u524D 20 \u9879\uFF1B\u5B8C\u6574\u6620\u5C04\u968F\u5B58\u6863\u4FDD\u5B58\uFF0C\u590D\u5236\u7684\u4EFB\u52A1\u4F1A\u5F15\u5BFC AI \u8BFB\u53D6\u5168\u90E8\u3002")):null)):null,w?a("div",{"aria-label":e("Lua \u7D22\u5F15\u540C\u6B65\u95EE\u9898")},a("p",null,e("\u6E90\u7801\u6587\u4EF6\u6216\u7D22\u5F15\u6620\u5C04\u5B58\u5728\u51B2\u7A81\uFF0C\u672C\u6B21\u6CA1\u6709\u4FEE\u6539\u811A\u672C\u3002\u53EF\u590D\u5236\u63D0\u793A\u8BCD\u7ED9 AI \u5904\u7406\u3002")),w.issues.map((M,H)=>a("div",{key:H},M)),w.rows.filter(M=>M.issues.length).map(M=>a("details",{key:M.id,open:!0},a("summary",null,M.path||e("\u5185\u8054\u811A\u672C")),M.issues.slice(0,12).map((H,se)=>a("div",{key:`i${se}`},`${H.line?e`第 ${H.line} 行:`:""}${H.reason}`)),M.issues.length>12?a("div",null,e("\u5176\u4F59\u95EE\u9898\u8BF7\u7531 AI \u6838\u5BF9\u3002")):null))):null,q&&!P.length?a(i.Fragment,null,a("div",null,e`已替换 ${q.scripts} 个脚本的 ${q.replacements} 处文本,更新 ${q.projectFiles} 个项目文件。备份:${q.backupRoot}`),a("button",{className:"qxsim-action",onClick:l},e("\u524D\u5F80 Lua \u811A\u672C"))):null)}}function Ri({webdriver:i=!1,userAgent:a="",search:d=""}={}){let o=String(d||"");return new URLSearchParams(o.startsWith("?")?o.slice(1):o).get("audio")==="0"?!0:i===!0||/\bOpenCode\//.test(a)||/HeadlessChrome/i.test(a)}function ya(i=globalThis){let a=i.navigator;if(!a)return!1;let d="";try{d=i.location?.search||""}catch{}return Ri({webdriver:a.webdriver===!0,userAgent:a.userAgent||"",search:d})}function st(i){try{i?.close()}catch{}}function Vi(){if(window.location.protocol==="dsh-app:")return null;let i;try{return i=window.open("about:blank","_blank"),!i||i.closed?null:(i.document.write(e('<!doctype html><meta charset="utf-8"><title>\u6B63\u5728\u51C6\u5907\u8BD5\u73A9\u2026</title><p>\u6B63\u5728\u4FDD\u5B58\u9879\u76EE\u5E76\u51C6\u5907\u8BD5\u73A9\u2026</p>')),i)}catch{return st(i),null}}function wa(i){let a=i.createElement,d=new Map;function o({entry:c,api:t,onClosed:u}){let l=i.useRef(null),f=i.useRef(null),[p,h]=i.useState(!1),[x,w]=i.useState(""),[v,q]=i.useState(!1);i.useLayoutEffect(()=>{let y={closing:!1,stopped:!1,pending:null,controller:null,requests:new Set};f.current=y;let I=l.current,_=I.querySelector("iframe"),$=!0,A=()=>{if(y.stopped)return Promise.resolve();if(y.closing=!0,!y.controller)return y.stopped=!0,Promise.resolve();if(!y.pending){let T=(async()=>{y.controller?.quiesce(),await Promise.allSettled([...y.requests]),await t(c.sessionId,"play",{action:"stop",args:{}}),y.stopped=!0})().finally(()=>{y.pending=null,d.get(c.sessionId)===T&&d.delete(c.sessionId)});y.pending=T,d.set(c.sessionId,T)}return y.pending};y.close=async()=>{if(!(y.pending||y.stopped)){h(!0),w("");try{await A(),$&&u()}catch(T){$&&(w(e`停止试玩失败,请重试:${T?.message||T}`),h(!1))}}};let P=T=>{T.source!==_.contentWindow||T.data?.type!=="qxqy-play-close"||T.data.sessionId!==c.sessionId||y.close()},O=T=>{T.preventDefault(),y.close()};return window.addEventListener("message",P),I.addEventListener("cancel",O),I.showModal(),()=>{$=!1,window.removeEventListener("message",P),I.removeEventListener("cancel",O),I.close(),A().catch(T=>console.error("Embedded play cleanup failed",T)),c.returnFocus?.isConnected&&c.returnFocus.focus()}},[c,t,u]);function U(y){let I=f.current;if(!I.closing)try{let _=y.currentTarget,$=_.contentWindow?.qxqyEmbeddedPlay;if(!$)throw new Error(e("\u8BD5\u73A9\u9875\u672A\u80FD\u52A0\u8F7D\uFF0C\u8BF7\u8FD4\u56DE\u7F16\u8F91\u540E\u91CD\u8BD5\u3002"));I.controller=$,q(!0),_.focus(),$.focus();let A=(P,O={})=>{if(I.closing)return Promise.reject(new Error(e("\u8BD5\u73A9\u6B63\u5728\u5173\u95ED")));let T=t(c.sessionId,"play",{action:P,args:O});return I.requests.add(T),T.then(()=>I.requests.delete(T),()=>I.requests.delete(T)),T};$.start(A).catch(P=>{I.closing||w(P?.message||String(P))})}catch(_){w(_?.message||String(_))}}return a("dialog",{ref:l,className:"qxsim-play-overlay","aria-label":e("\u5185\u5D4C\u8BD5\u73A9"),"aria-modal":!0},a("header",{className:"qxsim-play-header"},a("span",{role:"status"},p?e("\u6B63\u5728\u505C\u6B62\u8BD5\u73A9\u2026"):v?e("\u5185\u5D4C\u8BD5\u73A9"):e("\u6B63\u5728\u8F7D\u5165\u8BD5\u73A9\u2026")),a("button",{className:"qxsim-action",type:"button",disabled:p,onClick:()=>void f.current?.close?.()},e("\u5173\u95ED\u8BD5\u73A9"))),x?a("div",{className:"qxsim-play-error",role:"alert"},e(x)):null,a("iframe",{title:e("\u5343\u661F\u6C99\u7BB1\u8BD5\u73A9"),src:c.url,onLoad:U,tabIndex:0}))}return function({sessionId:t,api:u,playUrl:l,onError:f}){let p=i.useRef(null),[h,x]=i.useState(!1),[w,v]=i.useState(null),q=i.useCallback(()=>v(null),[]);i.useEffect(()=>{let y={active:!0,pending:!1,popup:null};return p.current=y,x(!1),v(null),()=>{y.active=!1,st(y.popup)}},[t]);async function U(y){let I=p.current;if(!I?.active||I.pending||w)return;I.pending=!0;let _=document.activeElement;x(!0);try{let $=Vi();if(I.popup=$,await d.get(t),!I.active||(await y(),!I.active))return;let A=new URL(l(t),window.location.href);if(ya()&&A.searchParams.set("audio","0"),$){try{if($.closed)throw new Error("Play window closed");$.location.replace(A.href)}catch{st($),$=null}I.popup=null}$||(A.searchParams.set("embedded","1"),v({sessionId:t,url:A.href,returnFocus:_}))}catch($){st(I.popup),I.popup=null,I.active&&f($?.message||String($))}finally{I.pending=!1,I.active&&x(!1)}}return{open:U,opening:h,overlay:w?.sessionId===t?a(o,{key:t,entry:w,api:u,onClosed:q}):null}}}var Sa="prefab-v1",Hi=[[10003004,10003004],[10005001,10005142],[10006001,10006002],[10007002,10007002],[10008001,10008001],[10009001,10009011],[20001001,20001074],[20001076,20001121],[20001123,20001156],[20001158,20001302],[20001304,20001568],[20001570,20001999],[20002001,20002755],[20002757,20002999],[20003001,20003455],[30001001,30001016],[30002001,30002017],[30003001,30003011],[30004001,30004001],[30005001,30005020],[30006001,30006026],[30007001,30007013],[30008001,30008011]];function Ea(i){return!Number.isSafeInteger(i)||!Hi.some(([a,d])=>i>=a&&i<=d)?null:i===10003004||i===10008001?128:256}var Yi="sprite-v1",Xi="/qxqy-assets/",Wi=[[100001,100006],[100101,100213],[101001,101018],[101020,101028],[101030,101046],[101048,101048],[101050,101054],[101056,101080],[102001,102052],[103001,103148],[104001,104010],[105001,105140],[105142,105219],[105221,105317],[106001,106047],[106049,106096],[107001,107007],[107010,107020],[107031,107092],[107094,107180],[107183,107201],[107203,107205],[107207,107228],[107231,107278],[107280,107402],[108001,108017],[108019,108020],[109001,109031],[109033,109034],[109036,109075],[110001,110053],[111001,111139],[112001,112042]];function Ne(i){return i==null||i===""?"StaticReference":typeof i=="string"?i:typeof i.Name=="string"?i.Name:"Unknown"}function ve(i,a){return`${Ne(a)}:${i}`}function Ae(i,a){let d=Ne(a);return d==="Prefab"?Ea(i)!==null:d==="StaticReference"&&Number.isSafeInteger(i)&&i>100006&&Wi.some(([o,c])=>i>=o&&i<=c)}function Ut(i,a=0,d){let o=Ne(d);if(!["StaticReference","Prefab"].includes(o))throw new Error(`Unsupported image source: ${o}`);return`${Xi}${o==="Prefab"?Sa:Yi}/${i}.png${a?`?refresh=${a}`:""}`}function qa(i,a=0,d){return Ut(i,a,d).replace(".png",".json")}var Ft="qxqy-image-refresh",Ee=new Map,Be=new Map,Ue=new Map,Dt=new Set,Ji=16777216,ka=!1;function Na(i,a){Ue.set(i,a),Ee.delete(i),Be.delete(i);for(let d of Dt)d(i)}var Ca=i=>/^\d+$/.test(i)?ve(Number(i)):i;function rt(){if(!(ka||typeof window>"u")){ka=!0;try{for(let[i,a]of Object.entries(JSON.parse(localStorage.getItem(Ft)||"{}")))Ue.set(Ca(i),a)}catch{}window.addEventListener("storage",i=>{if(i.key===Ft)try{for(let[a,d]of Object.entries(JSON.parse(i.newValue||"{}"))){let o=Ca(a);Ue.get(o)!==d&&Na(o,d)}}catch{}})}}function zt(i){return rt(),Dt.add(i),()=>Dt.delete(i)}function Ia(i,a){rt(),Na(ve(i,a),Date.now());try{localStorage.setItem(Ft,JSON.stringify(Object.fromEntries(Ue)))}catch{}}function _t(i,a){if(rt(),Ne(a)!=="StaticReference"||!Ae(i,a))return Promise.resolve(null);let d=ve(i,a),o=Be.get(d);if(o)return o;let c=fetch(qa(i,Ue.get(d),a),{signal:AbortSignal.timeout(3e4)}).then(async t=>{if(!t.ok)throw new Error(`\u56FE\u7247 ${i} \u5143\u6570\u636E\u52A0\u8F7D\u5931\u8D25\uFF1AHTTP ${t.status}`);return t.json()}).catch(t=>{throw Be.get(d)===c&&Be.delete(d),t});return Be.set(d,c),c}async function Aa(i,a){let[d,o]=await Promise.all([Ki(i,a),_t(i,a).then(c=>({meta:c,error:""}),c=>({meta:void 0,error:c.message}))]);return{image:d,...o}}function Ki(i,a){if(rt(),!Ae(i,a))return Promise.reject(new Error("Image source/ID is not in the preview allowlist"));let d=ve(i,a),o=Ee.get(d);if(o&&(!o.failed||Date.now()<o.retryAt))return Ee.delete(d),Ee.set(d,o),o.promise;let c={pixels:0,failed:!1};return c.promise=new Promise((t,u)=>{let l=new Image,f=setTimeout(()=>{l.src="",p(new Error("\u56FE\u7247\u52A0\u8F7D\u8D85\u65F6"))},45e3);function p(h){if(clearTimeout(f),l.onload=l.onerror=null,h){c.failed=!0,c.retryAt=Date.now()+6e4,u(h);return}c.pixels=l.width*l.height;let x=[...Ee.values()].reduce((w,v)=>w+v.pixels,0);for(let[w,v]of Ee){if(x<=Ji&&Ee.size<=128)break;w!==d&&(!v.pixels&&!v.failed||(Ee.delete(w),x-=v.pixels))}t(l)}l.onload=()=>p(),l.onerror=()=>p(new Error(`\u56FE\u7247 ${i} \u52A0\u8F7D\u5931\u8D25\uFF0C\u53EF\u5728\u5C5E\u6027\u9762\u677F\u5237\u65B0\u7D20\u6750`)),l.src=Ut(i,Ue.get(d),a)}),Ee.set(d,c),c.promise}function Pa(i,a,d){let o=Number(a??4294967295)>>>0;if((o&16777215)===16777215)return i;let c=d(i.width,i.height),t=c.getContext("2d");t.drawImage(i,0,0);let u=t.getImageData(0,0,c.width,c.height),l=o>>>16&255,f=o>>>8&255,p=o&255;for(let h=0;h<u.data.length;h+=4)u.data[h]=Math.round(u.data[h]*l/255),u.data[h+1]=Math.round(u.data[h+1]*f/255),u.data[h+2]=Math.round(u.data[h+2]*p/255);return t.putImageData(u,0,0),c}function Bt(i){return!!i?.border&&Object.values(i.border).some(a=>Number.isFinite(a)&&a>0)}function dt(i,a){let d=typeof a=="object"?a?.Name:a;return Bt(i)&&d!=="Basic"?"Stretch":"Basic"}function Qi(i,a,d,o){a=Number.isFinite(a)?Math.max(0,a):0,d=Number.isFinite(d)?Math.max(0,d):0;let c=Math.min(1,i/(a+d||1));a*=c,d*=c;let t=Math.min(1,o/(a+d||1));return{source:[0,a,i-d,i],target:[0,a*t,o-d*t,o]}}var Ma=new WeakMap;function La(i,a,d,o,c){let t=Math.max(0,d),u=Math.max(0,o),l=Math.min(1,4096/Math.max(1,t),4096/Math.max(1,u)),f=Math.max(1,Math.round(t*l)),p=Math.max(1,Math.round(u*l)),h=c(f,p),x=h.getContext("2d");if(!t||!u)return h;let w=Ma.get(i);if(!w){let _=c(i.width,i.height),$=_.getContext("2d");$.drawImage(i,0,0),w=$.getImageData(0,0,i.width,i.height),Ma.set(i,w)}let v=x.createImageData(f,p),q=w.data,U=(_,$,A,P,O,T)=>{let{source:W,target:M}=Qi($,A,P,O);return Array.from({length:T},(H,se)=>{let le=(se+.5)*O/T,re=le<M[1]?0:le<M[2]?1:2,L=M[re+1]>M[re]?(le-M[re])/(M[re+1]-M[re]):0,J=Math.max(0,Math.min(_-1,(W[re]+L*(W[re+1]-W[re]))*_/$-.5)),K=Math.floor(J);return[K,Math.min(_-1,K+1),J-K]})},y=U(i.width,a.width,a.border.left,a.border.right,t,f),I=U(i.height,a.height,a.border.top,a.border.bottom,u,p);for(let _=0;_<p;_++)for(let $=0;$<f;$++){let[A,P,O]=y[$],[T,W,M]=I[_],H=(T*i.width+A)*4,se=(T*i.width+P)*4,le=(W*i.width+A)*4,re=(W*i.width+P)*4,L=q[H+3]*(1-O)*(1-M),J=q[se+3]*O*(1-M),K=q[le+3]*(1-O)*M,te=q[re+3]*O*M,fe=L+J+K+te,oe=(_*f+$)*4;v.data[oe+3]=Math.round(fe);for(let de=0;de<3;de++)v.data[oe+de]=fe?Math.round((q[H+de]*L+q[se+de]*J+q[le+de]*K+q[re+de]*te)/fe):0}return x.putImageData(v,0,0),h}function $a(i,a,d){if(i.fillType!=="Horizontal"&&i.fillType!=="Vertical")return null;let o=Number(i.fillAmount??1),c=Number.isFinite(o)?Math.max(0,Math.min(1,o)):1;if(i.fillType==="Horizontal"){let u=a*c;return{x:i.fillHorizontalType==="Right"?a/2-u:-a/2,y:-d/2,width:u,height:d}}let t=d*c;return{x:-a/2,y:i.fillVerticalType==="Top"?-d/2:d/2-t,width:a,height:t}}function Ta(i,a){let d=document.createElement("canvas");return d.width=i,d.height=a,d}function Oa(i){let a=i.createElement;return function({item:o}){let c=ve(o.imageId,o.imageSource),t=i.useRef(null),[u,l]=i.useState({image:null,meta:null,error:""}),[f,p]=i.useState(0);return i.useEffect(()=>zt(h=>{h===c&&p(x=>x+1)}),[c]),i.useEffect(()=>{let h=!0;return l({image:null,error:""}),Aa(o.imageId,o.imageSource).then(({image:x,meta:w,error:v})=>{h&&l({image:x,meta:w,error:v})},x=>{h&&l({image:null,error:x.message})}),()=>{h=!1}},[c,f]),i.useEffect(()=>{let h=t.current;if(!u.image||!h)return;let x=dt(u.meta,o.imageType)==="Stretch"?La(u.image,u.meta,o.width,o.height,Ta):u.image,w=Pa(x,o.imageColor,Ta);h.width=w.width,h.height=w.height;let v=h.getContext("2d"),q=o.enableFill?$a(o,h.width,h.height):null;q&&(v.beginPath(),v.rect(q.x+h.width/2,q.y+h.height/2,q.width,q.height),v.clip()),v.globalAlpha=(Number(o.imageColor??4294967295)>>>24&255)/255,v.drawImage(w,0,0)},[u.image,u.meta,o.imageType,o.width,o.height,o.imageColor,o.enableFill,o.fillType,o.fillHorizontalType,o.fillVerticalType,o.fillAmount]),u.image?a("canvas",{ref:t,title:u.error,"data-image-id":o.imageId,"data-image-source":Ne(o.imageSource),"data-image-type":dt(u.meta,o.imageType),"aria-label":e`图片 ${o.imageId}`,style:{display:"block",position:"absolute",inset:0,width:"100%",height:"100%"}}):a("span",{className:"qxsim-box-label",title:u.error,role:u.error?"status":void 0},u.error?e`图片 ${o.imageId} 加载失败`:e`加载图片 ${o.imageId}…`)}}function Ua(i){let a=i.createElement;return function({imageId:o,imageSource:c,value:t,commit:u}){let l=ve(o,c),[f,p]=i.useState({key:"",meta:void 0,error:""}),[h,x]=i.useState(0);i.useEffect(()=>zt(q=>{q===l&&x(U=>U+1)}),[l]),i.useEffect(()=>{let q=!0;return p({key:l,meta:void 0,error:""}),_t(o,c).then(U=>{q&&p({key:l,meta:U,error:""})},U=>{q&&p({key:l,meta:void 0,error:U.message})}),()=>{q=!1}},[l,h]);let w=f.key===l&&f.meta!==void 0,v=w&&Bt(f.meta);return a("label",{className:"qxsim-field"},a("span",{className:"qxsim-field-label"},e("\u56FE\u7247\u7C7B\u578B")),a("select",{"aria-label":e("\u56FE\u7247\u7C7B\u578B"),disabled:!v,value:w?dt(f.meta,t):"",onChange:q=>u("imageType",q.target.value)},w?a("option",{value:"Basic"},e("\u57FA\u7840")):a("option",{value:""},f.error?e("\u5143\u6570\u636E\u52A0\u8F7D\u5931\u8D25"):e("\u8BFB\u53D6\u7D20\u6750\u8FB9\u754C\u2026")),v?a("option",{value:"Stretch"},e("\u62C9\u4F38")):null),f.error?a("small",{role:"status"},f.error):null)}}var Ge={version:"ct-v1",catalogSha256:"fcdd2087b0ce558f90489db6c1368211d8b110e8cc755baf1efd731814a53fd4",assets:[{id:10001001,scope:"ui",width:182,height:182,loop:!0,duration:10,name:"\u96F7\u80FD\u91CF\u6EE1\u503C1",nameEn:"Electro Energy Max Value 1",video:"video/10001001.webm",icon:"icon/10001001.png",audio:[]},{id:10001002,scope:"ui",width:182,height:182,loop:!0,duration:10,name:"\u706B\u80FD\u91CF\u6EE1\u503C1",nameEn:"Pyro Energy Max Value 1",video:"video/10001002.webm",icon:"icon/10001002.png",audio:[]},{id:10001003,scope:"ui",width:174,height:182,loop:!0,duration:10,name:"\u8349\u80FD\u91CF\u6EE1\u503C1",nameEn:"Dendro Energy Max Value 1",video:"video/10001003.webm",icon:"icon/10001003.png",audio:[]},{id:10001004,scope:"ui",width:182,height:182,loop:!0,duration:10,name:"\u51B0\u80FD\u91CF\u6EE1\u503C1",nameEn:"Cryo Energy Max Value 1",video:"video/10001004.webm",icon:"icon/10001004.png",audio:[]},{id:10001005,scope:"ui",width:182,height:182,loop:!0,duration:10,name:"\u5CA9\u80FD\u91CF\u6EE1\u503C1",nameEn:"Geo Energy Max Value 1",video:"video/10001005.webm",icon:"icon/10001005.png",audio:[]},{id:10001006,scope:"ui",width:186,height:186,loop:!0,duration:10,name:"\u6C34\u80FD\u91CF\u6EE1\u503C1",nameEn:"Hydro Energy Max Value 1",video:"video/10001006.webm",icon:"icon/10001006.png",audio:[]},{id:10001007,scope:"ui",width:182,height:182,loop:!0,duration:10,name:"\u98CE\u80FD\u91CF\u6EE1\u503C1",nameEn:"Anemo Energy Max Value 1",video:"video/10001007.webm",icon:"icon/10001007.png",audio:[]},{id:10001008,scope:"ui",width:224,height:224,loop:!1,duration:1.3,name:"\u53EF\u7528\u63D0\u793A1",nameEn:"Available Hint 1",video:"video/10001008.webm",icon:"icon/10001008.png",audio:[]},{id:10001009,scope:"ui",width:224,height:224,loop:!1,duration:1.3,name:"\u53EF\u7528\u63D0\u793A2",nameEn:"Available Hint 2",video:"video/10001009.webm",icon:"icon/10001009.png",audio:[]},{id:10001010,scope:"ui",width:176,height:176,loop:!0,duration:10,name:"\u96F7\u80FD\u91CF\u6EE1\u503C2",nameEn:"Electro Energy Max Value 2",video:"video/10001010.webm",icon:"icon/10001010.png",audio:[]},{id:10001011,scope:"ui",width:182,height:182,loop:!0,duration:10,name:"\u706B\u80FD\u91CF\u6EE1\u503C2",nameEn:"Pyro Energy Max Value 2",video:"video/10001011.webm",icon:"icon/10001011.png",audio:[]},{id:10001012,scope:"ui",width:162,height:162,loop:!0,duration:10,name:"\u8349\u80FD\u91CF\u6EE1\u503C2",nameEn:"Dendro Energy Max Value 2",video:"video/10001012.webm",icon:"icon/10001012.png",audio:[]},{id:10001013,scope:"ui",width:176,height:184,loop:!0,duration:10,name:"\u51B0\u80FD\u91CF\u6EE1\u503C2",nameEn:"Cryo Energy Max Value 2",video:"video/10001013.webm",icon:"icon/10001013.png",audio:[]},{id:10001014,scope:"ui",width:170,height:170,loop:!0,duration:10,name:"\u5CA9\u80FD\u91CF\u6EE1\u503C2",nameEn:"Geo Energy Max Value 2",video:"video/10001014.webm",icon:"icon/10001014.png",audio:[]},{id:10001015,scope:"ui",width:186,height:186,loop:!0,duration:10,name:"\u6C34\u80FD\u91CF\u6EE1\u503C2",nameEn:"Hydro Energy Max Value 2",video:"video/10001015.webm",icon:"icon/10001015.png",audio:[]},{id:10001016,scope:"ui",width:180,height:180,loop:!0,duration:10,name:"\u98CE\u80FD\u91CF\u6EE1\u503C2",nameEn:"Anemo Energy Max Value 2",video:"video/10001016.webm",icon:"icon/10001016.png",audio:[]},{id:10001017,scope:"ui",width:300,height:280,loop:!0,duration:10,name:"\u80FD\u91CF\u6EE1\u503C1",nameEn:"Energy Max Value 1",video:"video/10001017.webm",icon:"icon/10001017.png",audio:["audio/10001017.mp3"]},{id:10001018,scope:"ui",width:220,height:226,loop:!0,duration:10,name:"\u80FD\u91CF\u6EE1\u503C2",nameEn:"Energy Max Value 2",video:"video/10001018.webm",icon:"icon/10001018.png",audio:[]},{id:10001019,scope:"ui",width:220,height:226,loop:!0,duration:10,name:"\u80FD\u91CF\u6EE1\u503C3",nameEn:"Energy Max Value 3",video:"video/10001019.webm",icon:"icon/10001019.png",audio:[]},{id:10001020,scope:"ui",width:210,height:216,loop:!0,duration:10,name:"\u80FD\u91CF\u6EE1\u503C4",nameEn:"Energy Max Value 4",video:"video/10001020.webm",icon:"icon/10001020.png",audio:[]},{id:10001021,scope:"ui",width:216,height:220,loop:!0,duration:10,name:"\u80FD\u91CF\u6EE1\u503C5",nameEn:"Energy Max Value 5",video:"video/10001021.webm",icon:"icon/10001021.png",audio:[]},{id:10001022,scope:"ui",width:216,height:220,loop:!0,duration:10,name:"\u80FD\u91CF\u6EE1\u503C6",nameEn:"Energy Max Value 6",video:"video/10001022.webm",icon:"icon/10001022.png",audio:[]},{id:10001023,scope:"ui",width:216,height:220,loop:!0,duration:10,name:"\u80FD\u91CF\u6EE1\u503C7",nameEn:"Energy Max Value 7",video:"video/10001023.webm",icon:"icon/10001023.png",audio:[]},{id:10001024,scope:"ui",width:134,height:134,loop:!0,duration:10,name:"\u96F7\u5143\u7D20\u5171\u9E23",nameEn:"Electro Elemental Resonance",video:"video/10001024.webm",icon:"icon/10001024.png",audio:[]},{id:10001025,scope:"ui",width:130,height:134,loop:!0,duration:10,name:"\u706B\u5143\u7D20\u5171\u9E23",nameEn:"Pyro Elemental Resonance",video:"video/10001025.webm",icon:"icon/10001025.png",audio:[]},{id:10001026,scope:"ui",width:130,height:130,loop:!0,duration:10,name:"\u8349\u5143\u7D20\u5171\u9E23",nameEn:"Dendro Elemental Resonance",video:"video/10001026.webm",icon:"icon/10001026.png",audio:[]},{id:10001027,scope:"ui",width:128,height:128,loop:!0,duration:10,name:"\u51B0\u5143\u7D20\u5171\u9E23",nameEn:"Cryo Elemental Resonance",video:"video/10001027.webm",icon:"icon/10001027.png",audio:[]},{id:10001028,scope:"ui",width:130,height:130,loop:!0,duration:10,name:"\u5CA9\u5143\u7D20\u5171\u9E23",nameEn:"Geo Elemental Resonance",video:"video/10001028.webm",icon:"icon/10001028.png",audio:[]},{id:10001029,scope:"ui",width:130,height:134,loop:!0,duration:10,name:"\u6C34\u5143\u7D20\u5171\u9E23",nameEn:"Hydro Elemental Resonance",video:"video/10001029.webm",icon:"icon/10001029.png",audio:[]},{id:10001030,scope:"ui",width:130,height:130,loop:!0,duration:10,name:"\u98CE\u5143\u7D20\u5171\u9E23",nameEn:"Anemo Elemental Resonance",video:"video/10001030.webm",icon:"icon/10001030.png",audio:[]},{id:10001031,scope:"ui",width:156,height:160,loop:!1,duration:1,name:"\u6C34\u70AE\u6548\u679C1",nameEn:"Hydro Cannon Effect 1",video:"video/10001031.webm",icon:"icon/10001031.png",audio:[]},{id:10001032,scope:"ui",width:216,height:216,loop:!1,duration:.933,name:"\u6C34\u70AE\u6548\u679C2",nameEn:"Hydro Cannon Effect 2",video:"video/10001032.webm",icon:"icon/10001032.png",audio:["audio/10001032.mp3"]},{id:10001033,scope:"ui",width:488,height:488,loop:!1,duration:1.2,name:"\u97F3\u7B26\u6548\u679C1",nameEn:"Note Effect 1",video:"video/10001033.webm",icon:"icon/10001033.png",audio:[]},{id:10001034,scope:"ui",width:536,height:536,loop:!1,duration:1.4,name:"\u97F3\u7B26\u6548\u679C2",nameEn:"Note Effect 2",video:"video/10001034.webm",icon:"icon/10001034.png",audio:[]},{id:10001035,scope:"ui",width:262,height:266,loop:!0,duration:10,name:"\u97F3\u7B26\u6548\u679C3",nameEn:"Note Effect 3",video:"video/10001035.webm",icon:"icon/10001035.png",audio:[]},{id:10001036,scope:"ui",width:536,height:536,loop:!1,duration:1.4,name:"\u97F3\u7B26\u6548\u679C4",nameEn:"Note Effect 4",video:"video/10001036.webm",icon:"icon/10001036.png",audio:[]},{id:10001037,scope:"ui",width:262,height:266,loop:!0,duration:10,name:"\u97F3\u7B26\u6548\u679C5",nameEn:"Note Effect 5",video:"video/10001037.webm",icon:"icon/10001037.png",audio:[]},{id:10001038,scope:"ui",width:190,height:190,loop:!0,duration:10,name:"\u6269\u6563\u6548\u679C1",nameEn:"Swirl Effect 1",video:"video/10001038.webm",icon:"icon/10001038.png",audio:[]},{id:10001039,scope:"ui",width:208,height:208,loop:!1,duration:.766,name:"\u70B9\u51FB\u6548\u679C1",nameEn:"Press Effect 1",video:"video/10001039.webm",icon:"icon/10001039.png",audio:[]},{id:10001040,scope:"ui",width:390,height:390,loop:!1,duration:1.2,name:"\u8F6C\u6362\u6548\u679C1",nameEn:"Conversion Effect 1",video:"video/10001040.webm",icon:"icon/10001040.png",audio:["audio/10001040.mp3"]},{id:10001041,scope:"ui",width:208,height:208,loop:!0,duration:10,name:"\u8F6C\u6362\u6548\u679C2",nameEn:"Conversion Effect 2",video:"video/10001041.webm",icon:"icon/10001041.png",audio:[]},{id:10001042,scope:"ui",width:208,height:208,loop:!0,duration:10,name:"\u8F6C\u6362\u6548\u679C3",nameEn:"Conversion Effect 3",video:"video/10001042.webm",icon:"icon/10001042.png",audio:[]},{id:10001043,scope:"ui",width:168,height:180,loop:!1,duration:1.233,name:"\u70B9\u51FB\u6548\u679C2",nameEn:"Press Effect 2",video:"video/10001043.webm",icon:"icon/10001043.png",audio:["audio/10001043.mp3","audio/10001043_02.mp3"]},{id:10001044,scope:"ui",width:190,height:198,loop:!1,duration:1.566,name:"\u70B9\u51FB\u6548\u679C3",nameEn:"Press Effect 3",video:"video/10001044.webm",icon:"icon/10001044.png",audio:[]},{id:10001045,scope:"ui",width:114,height:114,loop:!1,duration:.733,name:"\u70B9\u51FB\u6548\u679C4",nameEn:"Press Effect 4",video:"video/10001045.webm",icon:"icon/10001045.png",audio:[]},{id:10001046,scope:"ui",width:106,height:122,loop:!1,duration:.8,name:"\u70B9\u51FB\u6548\u679C5",nameEn:"Press Effect 5",video:"video/10001046.webm",icon:"icon/10001046.png",audio:[]},{id:10001047,scope:"ui",width:114,height:114,loop:!1,duration:.733,name:"\u70B9\u51FB\u6548\u679C6",nameEn:"Press Effect 6",video:"video/10001047.webm",icon:"icon/10001047.png",audio:[]},{id:10001048,scope:"ui",width:114,height:114,loop:!1,duration:.733,name:"\u70B9\u51FB\u6548\u679C7",nameEn:"Press Effect 7",video:"video/10001048.webm",icon:"icon/10001048.png",audio:[]},{id:10001049,scope:"ui",width:130,height:118,loop:!1,duration:1,name:"\u70B9\u51FB\u6548\u679C8",nameEn:"Press Effect 8",video:"video/10001049.webm",icon:"icon/10001049.png",audio:[]},{id:10001050,scope:"ui",width:114,height:114,loop:!1,duration:.733,name:"\u70B9\u51FB\u6548\u679C9",nameEn:"Press Effect 9",video:"video/10001050.webm",icon:"icon/10001050.png",audio:[]},{id:10001051,scope:"ui",width:408,height:408,loop:!0,duration:10,name:"\u9AD8\u4EAE\u6548\u679C1",nameEn:"Highlight Effect 1",video:"video/10001051.webm",icon:"icon/10001051.png",audio:[]},{id:10001052,scope:"ui",width:272,height:272,loop:!1,duration:.9,name:"\u95EA\u70C1\u6548\u679C1",nameEn:"Blink Effect 1",video:"video/10001052.webm",icon:"icon/10001052.png",audio:[]},{id:10001053,scope:"ui",width:176,height:194,loop:!0,duration:10,name:"\u9AD8\u4EAE\u6548\u679C2",nameEn:"Highlight Effect 2",video:"video/10001053.webm",icon:"icon/10001053.png",audio:[]},{id:10001054,scope:"ui",width:274,height:286,loop:!1,duration:1,name:"\u95EA\u70C1\u6548\u679C2",nameEn:"Blink Effect 2",video:"video/10001054.webm",icon:"icon/10001054.png",audio:[]},{id:10001055,scope:"ui",width:368,height:368,loop:!1,duration:1,name:"\u95EA\u70C1\u6548\u679C3",nameEn:"Blink Effect 3",video:"video/10001055.webm",icon:"icon/10001055.png",audio:[]},{id:10001056,scope:"ui",width:226,height:210,loop:!0,duration:10,name:"\u9AD8\u4EAE\u6548\u679C3",nameEn:"Highlight Effect 3",video:"video/10001056.webm",icon:"icon/10001056.png",audio:[]},{id:10001057,scope:"ui",width:304,height:304,loop:!1,duration:.966,name:"\u8F6C\u6362\u6548\u679C4",nameEn:"Conversion Effect 4",video:"video/10001057.webm",icon:"icon/10001057.png",audio:["audio/10001057.mp3"]},{id:10001058,scope:"ui",width:174,height:178,loop:!1,duration:1.6,name:"\u95EA\u70C1\u6548\u679C4",nameEn:"Blink Effect 4",video:"video/10001058.webm",icon:"icon/10001058.png",audio:[]},{id:10001059,scope:"ui",width:362,height:362,loop:!1,duration:1.766,name:"\u95EA\u70C1\u6548\u679C5",nameEn:"Blink Effect 5",video:"video/10001059.webm",icon:"icon/10001059.png",audio:["audio/10001059.mp3"]},{id:10001060,scope:"ui",width:190,height:192,loop:!0,duration:10,name:"\u95EA\u70C1\u6548\u679C6",nameEn:"Blink Effect 6",video:"video/10001060.webm",icon:"icon/10001060.png",audio:[]},{id:10001061,scope:"ui",width:890,height:456,loop:!1,duration:1,name:"\u95EA\u70C1\u6548\u679C7",nameEn:"Blink Effect 7",video:"video/10001061.webm",icon:"icon/10001061.png",audio:[]},{id:10001062,scope:"ui",width:890,height:646,loop:!1,duration:1,name:"\u95EA\u70C1\u6548\u679C8",nameEn:"Blink Effect 8",video:"video/10001062.webm",icon:"icon/10001062.png",audio:[]},{id:10001063,scope:"ui",width:290,height:290,loop:!0,duration:10,name:"\u9AD8\u4EAE\u6548\u679C4",nameEn:"Highlight Effect 4",video:"video/10001063.webm",icon:"icon/10001063.png",audio:[]},{id:10001064,scope:"ui",width:272,height:272,loop:!1,duration:.866,name:"\u6D88\u9664\u6548\u679C1",nameEn:"Clear Effect 1",video:"video/10001064.webm",icon:"icon/10001064.png",audio:[]},{id:10001065,scope:"ui",width:272,height:272,loop:!1,duration:.9,name:"\u6D88\u9664\u6548\u679C2",nameEn:"Clear Effect 2",video:"video/10001065.webm",icon:"icon/10001065.png",audio:[]},{id:10001066,scope:"ui",width:238,height:210,loop:!1,duration:1.066,name:"\u6D88\u9664\u6548\u679C3",nameEn:"Clear Effect 3",video:"video/10001066.webm",icon:"icon/10001066.png",audio:[]},{id:10001067,scope:"ui",width:154,height:154,loop:!0,duration:10,name:"\u95EA\u70C1\u6548\u679C9",nameEn:"Blink Effect 9",video:"video/10001067.webm",icon:"icon/10001067.png",audio:[]},{id:10001068,scope:"ui",width:484,height:484,loop:!1,duration:1,name:"\u95EA\u70C1\u6548\u679C10",nameEn:"Blink Effect 10",video:"video/10001068.webm",icon:"icon/10001068.png",audio:[]},{id:10001069,scope:"ui",width:326,height:326,loop:!0,duration:10,name:"\u9AD8\u4EAE\u6548\u679C5",nameEn:"Highlight Effect 5",video:"video/10001069.webm",icon:"icon/10001069.png",audio:[]},{id:10001070,scope:"ui",width:206,height:196,loop:!0,duration:10,name:"\u9AD8\u4EAE\u6548\u679C6",nameEn:"Highlight Effect 6",video:"video/10001070.webm",icon:"icon/10001070.png",audio:[]},{id:10001071,scope:"ui",width:2236,height:2236,loop:!0,duration:10,name:"\u6C1B\u56F4\u6548\u679C1",nameEn:"Ambience Effect 1",video:"video/10001071.webm",icon:"icon/10001071.png",audio:[]},{id:10001072,scope:"ui",width:406,height:406,loop:!0,duration:10,name:"\u6C1B\u56F4\u6548\u679C2",nameEn:"Ambience Effect 2",video:"video/10001072.webm",icon:"icon/10001072.png",audio:[]},{id:10001073,scope:"ui",width:376,height:336,loop:!1,duration:2.1,name:"\u95EA\u70C1\u6548\u679C11",nameEn:"Blink Effect 11",video:"video/10001073.webm",icon:"icon/10001073.png",audio:[]},{id:10001074,scope:"ui",width:258,height:228,loop:!1,duration:1.666,name:"\u95EA\u70C1\u6548\u679C12",nameEn:"Blink Effect 12",video:"video/10001074.webm",icon:"icon/10001074.png",audio:[]},{id:10001075,scope:"ui",width:322,height:322,loop:!0,duration:10,name:"\u9AD8\u4EAE\u6548\u679C7",nameEn:"Highlight Effect 7",video:"video/10001075.webm",icon:"icon/10001075.png",audio:[]},{id:10001076,scope:"ui",width:258,height:270,loop:!1,duration:1.2,name:"\u4E92\u52A8\u6548\u679C1",nameEn:"Interaction Effect 1",video:"video/10001076.webm",icon:"icon/10001076.png",audio:[]},{id:10001077,scope:"ui",width:126,height:118,loop:!1,duration:1.1,name:"\u88C5\u9970\u6548\u679C1",nameEn:"Decoration Effect 1",video:"video/10001077.webm",icon:"icon/10001077.png",audio:[]},{id:10001078,scope:"ui",width:220,height:248,loop:!1,duration:1.133,name:"\u88C5\u9970\u6548\u679C2",nameEn:"Decoration Effect 2",video:"video/10001078.webm",icon:"icon/10001078.png",audio:[]},{id:10001079,scope:"ui",width:234,height:232,loop:!1,duration:1.166,name:"\u88C5\u9970\u6548\u679C3",nameEn:"Decoration Effect 3",video:"video/10001079.webm",icon:"icon/10001079.png",audio:[]},{id:10001080,scope:"ui",width:582,height:550,loop:!0,duration:10,name:"\u88C5\u9970\u6548\u679C4",nameEn:"Decoration Effect 4",video:"video/10001080.webm",icon:"icon/10001080.png",audio:[]},{id:10001081,scope:"ui",width:388,height:400,loop:!0,duration:10,name:"\u88C5\u9970\u6548\u679C5",nameEn:"Decoration Effect 5",video:"video/10001081.webm",icon:"icon/10001081.png",audio:[]},{id:10001082,scope:"ui",width:386,height:386,loop:!0,duration:10,name:"\u88C5\u9970\u6548\u679C6",nameEn:"Decoration Effect 6",video:"video/10001082.webm",icon:"icon/10001082.png",audio:[]},{id:10001083,scope:"ui",width:196,height:196,loop:!1,duration:1.2,name:"\u88C5\u9970\u6548\u679C7",nameEn:"Decoration Effect 7",video:"video/10001083.webm",icon:"icon/10001083.png",audio:[]},{id:10001084,scope:"ui",width:496,height:462,loop:!1,duration:.7,name:"\u95EA\u70C1\u6548\u679C13",nameEn:"Blink Effect 13",video:"video/10001084.webm",icon:"icon/10001084.png",audio:[]},{id:10001085,scope:"ui",width:426,height:336,loop:!1,duration:.566,name:"\u95EA\u70C1\u6548\u679C14",nameEn:"Blink Effect 14",video:"video/10001085.webm",icon:"icon/10001085.png",audio:[]},{id:10001086,scope:"ui",width:266,height:190,loop:!1,duration:.866,name:"\u88C5\u9970\u6548\u679C8",nameEn:"Decoration Effect 8",video:"video/10001086.webm",icon:"icon/10001086.png",audio:[]},{id:10001087,scope:"ui",width:310,height:252,loop:!1,duration:1.166,name:"\u88C5\u9970\u6548\u679C9",nameEn:"Decoration Effect 9",video:"video/10001087.webm",icon:"icon/10001087.png",audio:[]},{id:10001088,scope:"ui",width:310,height:252,loop:!1,duration:1.166,name:"\u88C5\u9970\u6548\u679C10",nameEn:"Decoration Effect 10",video:"video/10001088.webm",icon:"icon/10001088.png",audio:[]},{id:10001089,scope:"ui",width:178,height:74,loop:!1,duration:1.966,name:"\u88C5\u9970\u6548\u679C11",nameEn:"Decoration Effect 11",video:"video/10001089.webm",icon:"icon/10001089.png",audio:[]},{id:10001090,scope:"ui",width:190,height:190,loop:!1,duration:1.166,name:"\u95EA\u70C1\u6548\u679C15",nameEn:"Blink Effect 15",video:"video/10001090.webm",icon:"icon/10001090.png",audio:[]},{id:10001091,scope:"ui",width:188,height:188,loop:!1,duration:1.6,name:"\u95EA\u70C1\u6548\u679C16",nameEn:"Blink Effect 16",video:"video/10001091.webm",icon:"icon/10001091.png",audio:[]},{id:10001092,scope:"ui",width:200,height:200,loop:!0,duration:10,name:"\u88C5\u9970\u6548\u679C12",nameEn:"Decoration Effect 12",video:"video/10001092.webm",icon:"icon/10001092.png",audio:[]},{id:10001093,scope:"ui",width:294,height:302,loop:!1,duration:1.033,name:"\u88C5\u9970\u6548\u679C13",nameEn:"Decoration Effect 13",video:"video/10001093.webm",icon:"icon/10001093.png",audio:[]},{id:10001094,scope:"ui",width:310,height:310,loop:!1,duration:.833,name:"\u88C5\u9970\u6548\u679C14",nameEn:"Decoration Effect 14",video:"video/10001094.webm",icon:"icon/10001094.png",audio:[]},{id:10001095,scope:"ui",width:252,height:300,loop:!1,duration:1.8,name:"\u88C5\u9970\u6548\u679C15",nameEn:"Decoration Effect 15",video:"video/10001095.webm",icon:"icon/10001095.png",audio:[]},{id:10001096,scope:"ui",width:252,height:252,loop:!1,duration:1.6,name:"\u88C5\u9970\u6548\u679C16",nameEn:"Decoration Effect 16",video:"video/10001096.webm",icon:"icon/10001096.png",audio:[]},{id:10001097,scope:"ui",width:252,height:252,loop:!1,duration:1.6,name:"\u88C5\u9970\u6548\u679C17",nameEn:"Decoration Effect 17",video:"video/10001097.webm",icon:"icon/10001097.png",audio:[]},{id:10001098,scope:"ui",width:252,height:252,loop:!1,duration:1.6,name:"\u88C5\u9970\u6548\u679C18",nameEn:"Decoration Effect 18",video:"video/10001098.webm",icon:"icon/10001098.png",audio:[]},{id:10001099,scope:"ui",width:252,height:252,loop:!1,duration:1.6,name:"\u88C5\u9970\u6548\u679C19",nameEn:"Decoration Effect 19",video:"video/10001099.webm",icon:"icon/10001099.png",audio:[]},{id:10001100,scope:"ui",width:252,height:252,loop:!1,duration:1.6,name:"\u88C5\u9970\u6548\u679C20",nameEn:"Decoration Effect 20",video:"video/10001100.webm",icon:"icon/10001100.png",audio:[]},{id:10001101,scope:"ui",width:252,height:252,loop:!1,duration:1.6,name:"\u88C5\u9970\u6548\u679C21",nameEn:"Decoration Effect 21",video:"video/10001101.webm",icon:"icon/10001101.png",audio:[]},{id:10001102,scope:"ui",width:260,height:260,loop:!1,duration:1.133,name:"\u9AD8\u4EAE\u6548\u679C8",nameEn:"Highlight Effect 8",video:"video/10001102.webm",icon:"icon/10001102.png",audio:[]},{id:10001103,scope:"ui",width:260,height:260,loop:!1,duration:1.166,name:"\u9AD8\u4EAE\u6548\u679C9",nameEn:"Highlight Effect 9",video:"video/10001103.webm",icon:"icon/10001103.png",audio:[]},{id:10001104,scope:"ui",width:322,height:344,loop:!1,duration:1.133,name:"\u9AD8\u4EAE\u6548\u679C10",nameEn:"Highlight Effect 10",video:"video/10001104.webm",icon:"icon/10001104.png",audio:[]},{id:10001105,scope:"ui",width:380,height:394,loop:!1,duration:1.133,name:"\u9AD8\u4EAE\u6548\u679C11",nameEn:"Highlight Effect 11",video:"video/10001105.webm",icon:"icon/10001105.png",audio:[]},{id:10001106,scope:"ui",width:176,height:140,loop:!0,duration:10,name:"\u6C1B\u56F4\u6548\u679C3",nameEn:"Ambience Effect 3",video:"video/10001106.webm",icon:"icon/10001106.png",audio:[]},{id:10001107,scope:"ui",width:136,height:136,loop:!1,duration:.8,name:"\u95EA\u70C1\u6548\u679C17",nameEn:"Blink Effect 17",video:"video/10001107.webm",icon:"icon/10001107.png",audio:["audio/10001107.mp3"]},{id:10001108,scope:"ui",width:206,height:212,loop:!1,duration:1.7,name:"\u95EA\u70C1\u6548\u679C18",nameEn:"Blink Effect 18",video:"video/10001108.webm",icon:"icon/10001108.png",audio:["audio/10001108.mp3"]},{id:10001109,scope:"ui",width:182,height:182,loop:!1,duration:1.666,name:"\u95EA\u70C1\u6548\u679C19",nameEn:"Blink Effect 19",video:"video/10001109.webm",icon:"icon/10001109.png",audio:[]},{id:10001110,scope:"ui",width:650,height:306,loop:!1,duration:1.533,name:"\u95EA\u70C1\u6548\u679C20",nameEn:"Blink Effect 20",video:"video/10001110.webm",icon:"icon/10001110.png",audio:["audio/10001110.mp3"]},{id:10001111,scope:"ui",width:742,height:494,loop:!1,duration:.9,name:"\u95EA\u70C1\u6548\u679C21",nameEn:"Blink Effect 21",video:"video/10001111.webm",icon:"icon/10001111.png",audio:["audio/10001111.mp3"]},{id:10001112,scope:"ui",width:872,height:462,loop:!1,duration:.9,name:"\u95EA\u70C1\u6548\u679C22",nameEn:"Blink Effect 22",video:"video/10001112.webm",icon:"icon/10001112.png",audio:["audio/10001112.mp3"]},{id:10001113,scope:"ui",width:182,height:182,loop:!1,duration:1.166,name:"\u95EA\u70C1\u6548\u679C23",nameEn:"Blink Effect 23",video:"video/10001113.webm",icon:"icon/10001113.png",audio:[]},{id:10001114,scope:"ui",width:116,height:228,loop:!0,duration:10,name:"\u8FDB\u5EA6\u7D2F\u79EF1",nameEn:"Progress Accumulation 1",video:"video/10001114.webm",icon:"icon/10001114.png",audio:[]},{id:10001115,scope:"ui",width:520,height:676,loop:!1,duration:1.133,name:"\u8FDB\u5EA6\u7D2F\u79EF2",nameEn:"Progress Accumulation 2",video:"video/10001115.webm",icon:"icon/10001115.png",audio:[]},{id:10001116,scope:"ui",width:88,height:88,loop:!0,duration:10,name:"\u8FDB\u5EA6\u7D2F\u79EF3",nameEn:"Progress Accumulation 3",video:"video/10001116.webm",icon:"icon/10001116.png",audio:[]},{id:10001117,scope:"ui",width:166,height:278,loop:!1,duration:1.466,name:"\u95EA\u70C1\u6548\u679C24",nameEn:"Blink Effect 24",video:"video/10001117.webm",icon:"icon/10001117.png",audio:[]},{id:10001118,scope:"ui",width:106,height:106,loop:!0,duration:10,name:"\u95EA\u70C1\u6548\u679C25",nameEn:"Blink Effect 25",video:"video/10001118.webm",icon:"icon/10001118.png",audio:[]},{id:10001119,scope:"ui",width:118,height:118,loop:!0,duration:10,name:"\u95EA\u70C1\u6548\u679C26",nameEn:"Blink Effect 26",video:"video/10001119.webm",icon:"icon/10001119.png",audio:[]},{id:10001120,scope:"ui",width:130,height:118,loop:!1,duration:1.566,name:"\u95EA\u70C1\u6548\u679C27",nameEn:"Blink Effect 27",video:"video/10001120.webm",icon:"icon/10001120.png",audio:["audio/10001120.mp3","audio/10001120_02.mp3","audio/10001120_03.mp3","audio/10001120_04.mp3","audio/10001120_05.mp3","audio/10001120_06.mp3","audio/10001120_07.mp3","audio/10001120_08.mp3","audio/10001120_09.mp3","audio/10001120_10.mp3","audio/10001120_11.mp3"]},{id:10001121,scope:"ui",width:376,height:400,loop:!1,duration:1.333,name:"\u95EA\u70C1\u6548\u679C28",nameEn:"Blink Effect 28",video:"video/10001121.webm",icon:"icon/10001121.png",audio:[]},{id:10001122,scope:"ui",width:986,height:706,loop:!1,duration:2.6,name:"\u95EA\u70C1\u6548\u679C29",nameEn:"Blink Effect 29",video:"video/10001122.webm",icon:"icon/10001122.png",audio:[]},{id:10001124,scope:"ui",width:2334,height:2714,loop:!1,duration:1.4,name:"\u7ED3\u7B97\u6548\u679C1",nameEn:"Settlement Effect 1",video:"video/10001124.webm",icon:"icon/10001124.png",audio:[]},{id:10001125,scope:"ui",width:2214,height:2270,loop:!1,duration:1.233,name:"\u7ED3\u7B97\u6548\u679C2",nameEn:"Settlement Effect 2",video:"video/10001125.webm",icon:"icon/10001125.png",audio:[]},{id:10001126,scope:"ui",width:2574,height:1178,loop:!1,duration:3.133,name:"\u7ED3\u7B97\u6548\u679C3",nameEn:"Settlement Effect 3",video:"video/10001126.webm",icon:"icon/10001126.png",audio:[]},{id:10001127,scope:"ui",width:1918,height:1138,loop:!1,duration:3.066,name:"\u7ED3\u7B97\u6548\u679C4",nameEn:"Settlement Effect 4",video:"video/10001127.webm",icon:"icon/10001127.png",audio:[]},{id:10001128,scope:"ui",width:548,height:212,loop:!1,duration:1.966,name:"\u95EA\u70C1\u6548\u679C30",nameEn:"Blink Effect 30",video:"video/10001128.webm",icon:"icon/10001128.png",audio:[]},{id:10001129,scope:"ui",width:638,height:520,loop:!1,duration:1.133,name:"\u95EA\u70C1\u6548\u679C31",nameEn:"Blink Effect 31",video:"video/10001129.webm",icon:"icon/10001129.png",audio:["audio/10001129.mp3"]},{id:10001130,scope:"ui",width:284,height:142,loop:!1,duration:1.2,name:"\u95EA\u70C1\u6548\u679C32",nameEn:"Blink Effect 32",video:"video/10001130.webm",icon:"icon/10001130.png",audio:[]},{id:10001131,scope:"ui",width:790,height:790,loop:!0,duration:10,name:"\u95EA\u70C1\u6548\u679C33",nameEn:"Blink Effect 33",video:"video/10001131.webm",icon:"icon/10001131.png",audio:["audio/10001131.mp3"]},{id:10001132,scope:"ui",width:1020,height:264,loop:!0,duration:10,name:"\u95EA\u70C1\u6548\u679C34",nameEn:"Blink Effect 34",video:"video/10001132.webm",icon:"icon/10001132.png",audio:[]},{id:10001133,scope:"ui",width:1348,height:358,loop:!1,duration:1.5,name:"\u7ED3\u7B97\u6548\u679C5",nameEn:"Settlement Effect 5",video:"video/10001133.webm",icon:"icon/10001133.png",audio:[]},{id:10001134,scope:"ui",width:1116,height:290,loop:!1,duration:2,name:"\u95EA\u70C1\u6548\u679C35",nameEn:"Blink Effect 35",video:"video/10001134.webm",icon:"icon/10001134.png",audio:["audio/10001134.mp3"]},{id:10001135,scope:"ui",width:1116,height:290,loop:!1,duration:2,name:"\u95EA\u70C1\u6548\u679C36",nameEn:"Blink Effect 36",video:"video/10001135.webm",icon:"icon/10001135.png",audio:["audio/10001135.mp3"]},{id:10001136,scope:"ui",width:1520,height:296,loop:!1,duration:1.466,name:"\u95EA\u70C1\u6548\u679C37",nameEn:"Blink Effect 37",video:"video/10001136.webm",icon:"icon/10001136.png",audio:[]},{id:10001137,scope:"ui",width:2266,height:706,loop:!1,duration:2.066,name:"\u95EA\u70C1\u6548\u679C38",nameEn:"Blink Effect 38",video:"video/10001137.webm",icon:"icon/10001137.png",audio:[]},{id:10001138,scope:"ui",width:912,height:192,loop:!1,duration:2.033,name:"\u95EA\u70C1\u6548\u679C39",nameEn:"Blink Effect 39",video:"video/10001138.webm",icon:"icon/10001138.png",audio:[]},{id:10001139,scope:"ui",width:912,height:192,loop:!1,duration:2.033,name:"\u95EA\u70C1\u6548\u679C40",nameEn:"Blink Effect 40",video:"video/10001139.webm",icon:"icon/10001139.png",audio:[]},{id:10001140,scope:"ui",width:912,height:174,loop:!1,duration:2.033,name:"\u95EA\u70C1\u6548\u679C41",nameEn:"Blink Effect 41",video:"video/10001140.webm",icon:"icon/10001140.png",audio:[]},{id:10001141,scope:"ui",width:912,height:102,loop:!1,duration:2.033,name:"\u95EA\u70C1\u6548\u679C42",nameEn:"Blink Effect 42",video:"video/10001141.webm",icon:"icon/10001141.png",audio:[]},{id:10001142,scope:"ui",width:1766,height:1542,loop:!1,duration:3.8,name:"\u95EA\u70C1\u6548\u679C43",nameEn:"Blink Effect 43",video:"video/10001142.webm",icon:"icon/10001142.png",audio:[]},{id:10001143,scope:"ui",width:1312,height:168,loop:!1,duration:1.066,name:"\u95EA\u70C1\u6548\u679C44",nameEn:"Blink Effect 44",video:"video/10001143.webm",icon:"icon/10001143.png",audio:["audio/10001143.mp3","audio/10001143_02.mp3"]},{id:10001144,scope:"ui",width:698,height:82,loop:!1,duration:2.233,name:"\u95EA\u70C1\u6548\u679C45",nameEn:"Blink Effect 45",video:"video/10001144.webm",icon:"icon/10001144.png",audio:[]},{id:10001145,scope:"ui",width:698,height:92,loop:!1,duration:2.266,name:"\u95EA\u70C1\u6548\u679C46",nameEn:"Blink Effect 46",video:"video/10001145.webm",icon:"icon/10001145.png",audio:[]},{id:10001146,scope:"ui",width:698,height:92,loop:!1,duration:2.266,name:"\u95EA\u70C1\u6548\u679C47",nameEn:"Blink Effect 47",video:"video/10001146.webm",icon:"icon/10001146.png",audio:[]},{id:10001147,scope:"ui",width:306,height:54,loop:!0,duration:10,name:"\u8FDB\u5EA6\u7D2F\u79EF4",nameEn:"Progress Accumulation 4",video:"video/10001147.webm",icon:"icon/10001147.png",audio:[]},{id:10001148,scope:"ui",width:934,height:194,loop:!1,duration:1.233,name:"\u8FDB\u5EA6\u7D2F\u79EF5",nameEn:"Progress Accumulation 5",video:"video/10001148.webm",icon:"icon/10001148.png",audio:[]},{id:10001149,scope:"ui",width:616,height:248,loop:!0,duration:10,name:"\u95EA\u70C1\u6548\u679C48",nameEn:"Blink Effect 48",video:"video/10001149.webm",icon:"icon/10001149.png",audio:[]},{id:10001150,scope:"ui",width:746,height:228,loop:!1,duration:1.366,name:"\u95EA\u70C1\u6548\u679C49",nameEn:"Blink Effect 49",video:"video/10001150.webm",icon:"icon/10001150.png",audio:[]},{id:10001151,scope:"ui",width:606,height:210,loop:!1,duration:1.233,name:"\u95EA\u70C1\u6548\u679C50",nameEn:"Blink Effect 50",video:"video/10001151.webm",icon:"icon/10001151.png",audio:[]},{id:10001152,scope:"ui",width:1674,height:346,loop:!0,duration:10,name:"\u8FDB\u5EA6\u7D2F\u79EF6",nameEn:"Progress Accumulation 6",video:"video/10001152.webm",icon:"icon/10001152.png",audio:[]},{id:10001153,scope:"ui",width:1110,height:400,loop:!1,duration:1.2,name:"\u95EA\u70C1\u6548\u679C51",nameEn:"Blink Effect 51",video:"video/10001153.webm",icon:"icon/10001153.png",audio:["audio/10001153.mp3","audio/10001153_02.mp3"]},{id:10001154,scope:"ui",width:1178,height:506,loop:!0,duration:10,name:"\u8FDB\u5EA6\u7D2F\u79EF7",nameEn:"Progress Accumulation 7",video:"video/10001154.webm",icon:"icon/10001154.png",audio:[]},{id:10001155,scope:"ui",width:1254,height:200,loop:!1,duration:1.2,name:"\u8FDB\u5EA6\u7D2F\u79EF8",nameEn:"Progress Accumulation 8",video:"video/10001155.webm",icon:"icon/10001155.png",audio:["audio/10001155.mp3"]},{id:10001156,scope:"ui",width:1180,height:202,loop:!1,duration:1.2,name:"\u8FDB\u5EA6\u7D2F\u79EF9",nameEn:"Progress Accumulation 9",video:"video/10001156.webm",icon:"icon/10001156.png",audio:["audio/10001156.mp3"]},{id:10001157,scope:"ui",width:654,height:118,loop:!0,duration:10,name:"\u8FDB\u5EA6\u7D2F\u79EF10",nameEn:"Progress Accumulation 10",video:"video/10001157.webm",icon:"icon/10001157.png",audio:[]},{id:10001158,scope:"ui",width:962,height:162,loop:!0,duration:10,name:"\u8FDB\u5EA6\u7D2F\u79EF11",nameEn:"Progress Accumulation 11",video:"video/10001158.webm",icon:"icon/10001158.png",audio:[]},{id:10001159,scope:"ui",width:1016,height:142,loop:!0,duration:10,name:"\u8FDB\u5EA6\u7D2F\u79EF12",nameEn:"Progress Accumulation 12",video:"video/10001159.webm",icon:"icon/10001159.png",audio:[]},{id:10001160,scope:"ui",width:790,height:210,loop:!1,duration:1,name:"\u8FDB\u5EA6\u7D2F\u79EF13",nameEn:"Progress Accumulation 13",video:"video/10001160.webm",icon:"icon/10001160.png",audio:[]},{id:10002001,scope:"screen",width:1280,height:720,loop:!0,duration:10,name:"\u89C6\u91CE\u6C1B\u56F41",nameEn:"View Ambience 1",video:"video/10002001.webm",icon:"icon/10002001.png",audio:["audio/10002001.mp3"]},{id:10002002,scope:"screen",width:1280,height:720,loop:!0,duration:10,name:"\u89C6\u91CE\u6C1B\u56F42",nameEn:"View Ambience 2",video:"video/10002002.webm",icon:"icon/10002002.png",audio:[]},{id:10002003,scope:"screen",width:1280,height:720,loop:!0,duration:10,name:"\u89C6\u91CE\u6C1B\u56F43",nameEn:"View Ambience 3",video:"video/10002003.webm",icon:"icon/10002003.png",audio:[]},{id:10002004,scope:"screen",width:1280,height:720,loop:!0,duration:10,name:"\u89C6\u91CE\u6C1B\u56F44",nameEn:"View Ambience 4",video:"video/10002004.webm",icon:"icon/10002004.png",audio:[]},{id:10002005,scope:"screen",width:1280,height:720,loop:!0,duration:10,name:"\u89C6\u91CE\u6C1B\u56F45",nameEn:"View Ambience 5",video:"video/10002005.webm",icon:"icon/10002005.png",audio:[]},{id:10002006,scope:"screen",width:1280,height:720,loop:!1,duration:1.9,name:"\u89C6\u91CE\u6C1B\u56F46",nameEn:"View Ambience 6",video:"video/10002006.webm",icon:"icon/10002006.png",audio:[]},{id:10002007,scope:"screen",width:1280,height:720,loop:!1,duration:2.4,name:"\u89C6\u91CE\u6C1B\u56F47",nameEn:"View Ambience 7",video:"video/10002007.webm",icon:"icon/10002007.png",audio:[]},{id:10002008,scope:"screen",width:1280,height:720,loop:!1,duration:3.433,name:"\u89C6\u91CE\u6C1B\u56F48",nameEn:"View Ambience 8",video:"video/10002008.webm",icon:"icon/10002008.png",audio:["audio/10002008.mp3"]},{id:10002009,scope:"screen",width:1280,height:720,loop:!0,duration:10,name:"\u89C6\u91CE\u6C1B\u56F49",nameEn:"View Ambience 9",video:"video/10002009.webm",icon:"icon/10002009.png",audio:["audio/10002009.mp3"]},{id:10002010,scope:"screen",width:1280,height:720,loop:!1,duration:2.5,name:"\u89C6\u91CE\u6C1B\u56F410",nameEn:"View Ambience 10",video:"video/10002010.webm",icon:"icon/10002010.png",audio:[]},{id:10002011,scope:"screen",width:1280,height:720,loop:!1,duration:1.8,name:"\u89C6\u91CE\u6C1B\u56F411",nameEn:"View Ambience 11",video:"video/10002011.webm",icon:"icon/10002011.png",audio:[]},{id:10002012,scope:"screen",width:1280,height:720,loop:!1,duration:2.933,name:"\u89C6\u91CE\u6C1B\u56F412",nameEn:"View Ambience 12",video:"video/10002012.webm",icon:"icon/10002012.png",audio:[]},{id:10002013,scope:"screen",width:1280,height:720,loop:!1,duration:3.9,name:"\u89C6\u91CE\u6C1B\u56F413",nameEn:"View Ambience 13",video:"video/10002013.webm",icon:"icon/10002013.png",audio:[]},{id:10002014,scope:"screen",width:1280,height:720,loop:!0,duration:10,name:"\u89C6\u91CE\u6C1B\u56F414",nameEn:"View Ambience 14",video:"video/10002014.webm",icon:"icon/10002014.png",audio:[]},{id:10002015,scope:"screen",width:1280,height:720,loop:!0,duration:10,name:"\u89C6\u91CE\u6C1B\u56F415",nameEn:"View Ambience 15",video:"video/10002015.webm",icon:"icon/10002015.png",audio:["audio/10002015.mp3"]},{id:10002016,scope:"screen",width:1280,height:720,loop:!1,duration:2.5,name:"\u89C6\u91CE\u6C1B\u56F416",nameEn:"View Ambience 16",video:"video/10002016.webm",icon:"icon/10002016.png",audio:[]},{id:10002017,scope:"screen",width:1280,height:720,loop:!1,duration:.733,name:"\u89C6\u91CE\u6C1B\u56F417",nameEn:"View Ambience 17",video:"video/10002017.webm",icon:"icon/10002017.png",audio:[]},{id:10002018,scope:"screen",width:1280,height:720,loop:!0,duration:10,name:"\u89C6\u91CE\u6C1B\u56F418",nameEn:"View Ambience 18",video:"video/10002018.webm",icon:"icon/10002018.png",audio:[]},{id:10002019,scope:"screen",width:1280,height:720,loop:!1,duration:2.2,name:"\u89C6\u91CE\u6C1B\u56F419",nameEn:"View Ambience 19",video:"video/10002019.webm",icon:"icon/10002019.png",audio:[]},{id:10002020,scope:"screen",width:1280,height:720,loop:!0,duration:10,name:"\u89C6\u91CE\u6C1B\u56F420",nameEn:"View Ambience 20",video:"video/10002020.webm",icon:"icon/10002020.png",audio:[]},{id:10002021,scope:"screen",width:1280,height:720,loop:!0,duration:10,name:"\u89C6\u91CE\u6C1B\u56F421",nameEn:"View Ambience 21",video:"video/10002021.webm",icon:"icon/10002021.png",audio:[]},{id:10002022,scope:"screen",width:1280,height:720,loop:!0,duration:10,name:"\u89C6\u91CE\u6C1B\u56F422",nameEn:"View Ambience 22",video:"video/10002022.webm",icon:"icon/10002022.png",audio:[]},{id:10002023,scope:"screen",width:1280,height:720,loop:!0,duration:10,name:"\u89C6\u91CE\u6C1B\u56F423",nameEn:"View Ambience 23",video:"video/10002023.webm",icon:"icon/10002023.png",audio:[]},{id:10002024,scope:"screen",width:1280,height:720,loop:!1,duration:3.4,name:"\u89C6\u91CE\u6C1B\u56F424",nameEn:"View Ambience 24",video:"video/10002024.webm",icon:"icon/10002024.png",audio:[]},{id:10002025,scope:"screen",width:1280,height:720,loop:!0,duration:10,name:"\u89C6\u91CE\u6C1B\u56F425",nameEn:"View Ambience 25",video:"video/10002025.webm",icon:"icon/10002025.png",audio:[]},{id:10002026,scope:"screen",width:1280,height:720,loop:!0,duration:10,name:"\u89C6\u91CE\u6C1B\u56F426",nameEn:"View Ambience 26",video:"video/10002026.webm",icon:"icon/10002026.png",audio:["audio/10002026.mp3"]},{id:10002027,scope:"screen",width:1280,height:720,loop:!0,duration:10,name:"\u89C6\u91CE\u6C1B\u56F427",nameEn:"View Ambience 27",video:"video/10002027.webm",icon:"icon/10002027.png",audio:[]},{id:10002028,scope:"screen",width:1280,height:720,loop:!0,duration:10,name:"\u89C6\u91CE\u6C1B\u56F428",nameEn:"View Ambience 28",video:"video/10002028.webm",icon:"icon/10002028.png",audio:[]},{id:10002029,scope:"screen",width:1280,height:720,loop:!0,duration:10,name:"\u89C6\u91CE\u6C1B\u56F429",nameEn:"View Ambience 29",video:"video/10002029.webm",icon:"icon/10002029.png",audio:[]},{id:10002030,scope:"screen",width:1280,height:720,loop:!1,duration:1.966,name:"\u89C6\u91CE\u6C1B\u56F430",nameEn:"View Ambience 30",video:"video/10002030.webm",icon:"icon/10002030.png",audio:[]},{id:10002031,scope:"screen",width:1280,height:720,loop:!1,duration:1.166,name:"\u89C6\u91CE\u6C1B\u56F431",nameEn:"View Ambience 31",video:"video/10002031.webm",icon:"icon/10002031.png",audio:["audio/10002031.mp3","audio/10002031_02.mp3","audio/10002031_03.mp3","audio/10002031_04.mp3"]},{id:10002032,scope:"screen",width:1280,height:720,loop:!0,duration:10,name:"\u89C6\u91CE\u6C1B\u56F432",nameEn:"View Ambience 32",video:"video/10002032.webm",icon:"icon/10002032.png",audio:["audio/10002032.mp3"]},{id:10002033,scope:"screen",width:1280,height:720,loop:!1,duration:2,name:"\u89C6\u91CE\u6C1B\u56F433",nameEn:"View Ambience 33",video:"video/10002033.webm",icon:"icon/10002033.png",audio:["audio/10002033.mp3","audio/10002033_02.mp3"]},{id:10002034,scope:"screen",width:1280,height:720,loop:!0,duration:10,name:"\u89C6\u91CE\u6C1B\u56F434",nameEn:"View Ambience 34",video:"video/10002034.webm",icon:"icon/10002034.png",audio:[]},{id:10002035,scope:"screen",width:1280,height:720,loop:!0,duration:10,name:"\u89C6\u91CE\u6C1B\u56F435",nameEn:"View Ambience 35",video:"video/10002035.webm",icon:"icon/10002035.png",audio:["audio/10002035.mp3"]},{id:10002036,scope:"screen",width:1280,height:720,loop:!0,duration:10,name:"\u7784\u51C6\u6548\u679C1",nameEn:"Aiming Effect 1",video:"video/10002036.webm",icon:"icon/10002036.png",audio:[]},{id:10002037,scope:"screen",width:1280,height:720,loop:!0,duration:10,name:"\u7784\u51C6\u6548\u679C2",nameEn:"Aiming Effect 2",video:"video/10002037.webm",icon:"icon/10002037.png",audio:["audio/10002037.mp3"]}],files:{"audio/10001017.mp3":{bytes:6524,sha256:"82470dfef398dab45fb3d50134da7b49573e7189f683d2bdf0849b478f267c79",duration:.850667},"audio/10001032.mp3":{bytes:27907,sha256:"53ca71dde10d2d7b6fbf7232d2461f48e564c2d847cbb29f9aac685114634dff",duration:1.258231},"audio/10001040.mp3":{bytes:24212,sha256:"faf6a45ba3d02a6d86ba43f8fe8bf7dbadd22997f0e16ed22b990b0eeaac05c2",duration:1.202104},"audio/10001043.mp3":{bytes:15068,sha256:"ffe52807864f795fd7f8e5e235fca49537437d70a34db83d66352063fe538a52",duration:.570563},"audio/10001043_02.mp3":{bytes:12812,sha256:"b8c194027b798e504f51ae73b67ae63e0d56904ebc95d458b0065d995fa2ed58",duration:.501813},"audio/10001057.mp3":{bytes:28220,sha256:"df501138ff9ae6a43fc8b434c09a401093a5598e9366136e7071e1c57baeb238",duration:1.613042},"audio/10001059.mp3":{bytes:29516,sha256:"2d80dbec2dde2348c3c9dcf95598a79bd851aa8329c5ed68e33d40a532ee491c",duration:1.4855},"audio/10001107.mp3":{bytes:27174,sha256:"eedee79d5e4cb0282bba21e5b12a24170a07354f3285d3f50cd47e24ead5149b",duration:1.383039},"audio/10001108.mp3":{bytes:27174,sha256:"eedee79d5e4cb0282bba21e5b12a24170a07354f3285d3f50cd47e24ead5149b",duration:1.383039},"audio/10001110.mp3":{bytes:12164,sha256:"de0f6db4c8942741fa82168431e31f8b54d68260bf412266ef707506ff6f10c3",duration:.448},"audio/10001111.mp3":{bytes:12164,sha256:"de0f6db4c8942741fa82168431e31f8b54d68260bf412266ef707506ff6f10c3",duration:.448},"audio/10001112.mp3":{bytes:12164,sha256:"de0f6db4c8942741fa82168431e31f8b54d68260bf412266ef707506ff6f10c3",duration:.448},"audio/10001120.mp3":{bytes:19556,sha256:"2f7a402979dc442b4214e46d79b2dd1b7925c96c0eaebbbf0555fe3f5bb3a529",duration:1.5},"audio/10001120_02.mp3":{bytes:19772,sha256:"f1c0f5e4b3f8a550d058f14a35340f4cbf56de86b4c409dd13b1125d682e09d6",duration:1.5},"audio/10001120_03.mp3":{bytes:18572,sha256:"630975e0a80512e788648adadc6b2d96c526a6125e13ffffde83e65cf000aa5e",duration:1.5},"audio/10001120_04.mp3":{bytes:21212,sha256:"00da41febe7cf8a8491117ef820c42aa79c65172769b4a12705666e9d7f2b636",duration:1.5},"audio/10001120_05.mp3":{bytes:19220,sha256:"5d85fe103ecc1868eefc679ff676996c329e61881640ac743409899d34fc5b6b",duration:1.5},"audio/10001120_06.mp3":{bytes:24596,sha256:"ce03626d5f0a7ccaf4a6cec7bce8ed915f61d6ec57b3cd532cbfc89da5bdcc3e",duration:1.5},"audio/10001120_07.mp3":{bytes:22316,sha256:"4dadba002982494e40772cccfedce6f6405fb4abc1e81f2206c4c2e0ac2645b5",duration:1.5},"audio/10001120_08.mp3":{bytes:21548,sha256:"309625fddc0d645da062ff788100a656bd83c4ce8cb75d523ed1949387e8252e",duration:1.5},"audio/10001120_09.mp3":{bytes:23060,sha256:"2eaf460f61ae85e8e2a4c324ebb9c4bc4f460fd2489a15943b92d2fa4422d3b6",duration:1.5},"audio/10001120_10.mp3":{bytes:18668,sha256:"6242a47c96c9ce87cb00a6f2288e8209b9ef5e3dc7ecb62bdadbf8672df95714",duration:1.5},"audio/10001120_11.mp3":{bytes:21188,sha256:"880383e307f7fe7210c05c37fc04a0ac8e3c909d500215f72c7228b9c2e660a6",duration:1.5},"audio/10001129.mp3":{bytes:45188,sha256:"07198b0853f2a859c6ccb85ec4ad1e56c6131302f5145f50d39fd98efe7e5387",duration:2.130667},"audio/10001131.mp3":{bytes:45188,sha256:"07198b0853f2a859c6ccb85ec4ad1e56c6131302f5145f50d39fd98efe7e5387",duration:2.130667},"audio/10001134.mp3":{bytes:45908,sha256:"ff64e15c3144791ad9073ee4537eb21ec7cf1d41dd205b0ef051a8263784793f",duration:2.518667},"audio/10001135.mp3":{bytes:49940,sha256:"edf39fa868e9e42da6fe38c8f726bf4162c950543efdfdefb1f85d3dfaa4d72b",duration:2.758667},"audio/10001143.mp3":{bytes:20156,sha256:"740c276f344b457077bc48f627304d15bbd879d06b3d6b6108673f07d2ec0dc5",duration:.841333},"audio/10001143_02.mp3":{bytes:36524,sha256:"b70b6326344739a781ef5ba96103b349d37052102a29cf2d5cddd2517cd13dff",duration:2.298604},"audio/10001153.mp3":{bytes:20372,sha256:"5c7d6a7ee0d3fff9352071a17979c9941ab1e5322e9b5a94692077f932c71ecf",duration:1.074208},"audio/10001153_02.mp3":{bytes:21140,sha256:"34e4852a0e1bcfd46c8820d9d61a1ef5288ba2795decc8829d1cf1c4b04d1b3a",duration:1.074208},"audio/10001155.mp3":{bytes:32132,sha256:"e1b38d6f72b3b7124da2c8a6417484053e1dd2833507d03cea32175d3d8e486c",duration:1.361167},"audio/10001156.mp3":{bytes:17468,sha256:"b945a4cc1ef374343806f677e1e2ab461c452a4eed6992151575791ccae7e9b2",duration:.808958},"audio/10002001.mp3":{bytes:126284,sha256:"9bedc3f73a10d1b4205d53c2c11b22ad1fc54375a430be0f64e2e5a7ed68b35d",duration:6.018875},"audio/10002008.mp3":{bytes:58316,sha256:"e24d9e46941a40c27b0adbc06927f245cb4826445142d3d4d1ca5d4e7a6889b7",duration:2.57125},"audio/10002009.mp3":{bytes:57932,sha256:"abea73a14c14dc143ed4b1244eba7257bf38119edb13923504c00ee11f51deb1",duration:2.5},"audio/10002015.mp3":{bytes:57932,sha256:"abea73a14c14dc143ed4b1244eba7257bf38119edb13923504c00ee11f51deb1",duration:2.5},"audio/10002026.mp3":{bytes:38137,sha256:"3ce1a1df88494fb7179a6df74a9f30f14e185e16060d84daff586c2992f06c1d",duration:1.994603},"audio/10002031.mp3":{bytes:6932,sha256:"81439fcff710fdd6ce4541ddf76edc30f119c44fbf7e6d39df2c6349ffe4a347",duration:.301333},"audio/10002031_02.mp3":{bytes:5420,sha256:"f9ad4c41d670a010fb7e8acc6227e0ea8dc73dc1504972190aa513fdc0257d05",duration:.296104},"audio/10002031_03.mp3":{bytes:8012,sha256:"40c44c0ea861bd86e1bbedda8bf48dbe5c4d0b3a22f493cc2d9dfab43544d9e5",duration:.296104},"audio/10002031_04.mp3":{bytes:5948,sha256:"69c8ab1fc17a47a696e1e65d2a87613ae98377712d09a4d18cfbdf6cb06defae",duration:.296104},"audio/10002032.mp3":{bytes:111082,sha256:"0f17b84ae322621d29af50d88c3ee8d66677926429ae818579eba240e5f07a52",duration:4.90771},"audio/10002033.mp3":{bytes:59847,sha256:"0476fabf3f0d6d000758a82e467a1ff0e363d0efa3e873b60eb2d4194372aa24",duration:2.949274},"audio/10002033_02.mp3":{bytes:60791,sha256:"9f6eac53ec1f8dd02be7a532ee51ddbfc2c1f34c935616194e2c92e8ea8794bd",duration:2.928254},"audio/10002035.mp3":{bytes:93092,sha256:"360a57a535ffe34d8fdd3ef652512dac3cb46c1155791ea5992b3fd5cfde3a0c",duration:4.26},"audio/10002037.mp3":{bytes:50252,sha256:"508a7cadf5dec9f94a41570aa5d0dae7b7ee2fef4bbf42e96b7a8b46da21e51d",duration:2.246667},"icon/10001001.png":{bytes:23905,sha256:"fe51bb11c58eef524f2f6683663a58f69c4272de1d027797ccf1b283b5fcc583"},"icon/10001002.png":{bytes:22166,sha256:"36936f7678f5c5cb0a3a014a76eb9c6bdd5a9f23e72dfbef6d9523523cf9be48"},"icon/10001003.png":{bytes:22959,sha256:"77e1ca70f67b68c3a2ff8951017a95c54af43a02d37f025c4b39e299a0389820"},"icon/10001004.png":{bytes:24182,sha256:"127a9be79e7a0460bbba6f4390b83cf0137a1f50995fd4ddfdf071d0ce9aec5c"},"icon/10001005.png":{bytes:24501,sha256:"78dfe771d99b5002ef7ba93d6b2705aabf28fc8ad362becccd986de62da8b9ee"},"icon/10001006.png":{bytes:23058,sha256:"0bd296f4d2ec3fb3a46f6cbaaeaa959de21e5e94927317cc1c00f3eb767a8ab4"},"icon/10001007.png":{bytes:24384,sha256:"0d858dd1574291ff8365a64381eb7c2244e2f3ee054b89c4291d295af23cb565"},"icon/10001008.png":{bytes:25339,sha256:"60fb9e6b7b0765eb6559360a501220628f73995f20cf32bf600556ed55baebed"},"icon/10001009.png":{bytes:25470,sha256:"6eedb42ef97b243de8b3c7ce7d4ff06ecda408e333c1b67bfb0c3252ba2b71fc"},"icon/10001010.png":{bytes:17067,sha256:"3067643b0330ec446e15ff4b50eadc5c9d75597fac5b7ead544cf9f74c27c8f3"},"icon/10001011.png":{bytes:20283,sha256:"693c10ff57c4f729c5bc4bbc64aa15a7ee9ed1666ad08af11a6bf976e3608ab6"},"icon/10001012.png":{bytes:17900,sha256:"eeb4aa0a6a2e7d52983207ae143660f4cb50c1b529f7c42817112f760ef07520"},"icon/10001013.png":{bytes:20986,sha256:"273f7d86fb8e209bbd2dc06ceb3679c7f8d5d78f57fc3690bfbf83dd48a5fb4c"},"icon/10001014.png":{bytes:19083,sha256:"966cdcbd74d3e990262f5fdf1cc58704f67ca4a2ea5cd36d0118c0be2f312e0c"},"icon/10001015.png":{bytes:19533,sha256:"da2debca11cfa90e1868b966aa19f426664b968d0523ed458bc23e6a26601272"},"icon/10001016.png":{bytes:20596,sha256:"9a584e1393532cc8649512c31319bfa901fc73d557e01c3cd3c77ec80b8a6225"},"icon/10001017.png":{bytes:15766,sha256:"b2588c21a03d6c7795398e2240e527bbdd4e3f718f806f3906930bd68a4c8b85"},"icon/10001018.png":{bytes:18168,sha256:"5e9938443c22663db8434fc568362ae4d3de48cb1b6c411e703aeac07e3b5c4c"},"icon/10001019.png":{bytes:21447,sha256:"7625187d1c358b23e8ff7c38a9a4c6a9952bb0d7f9d4b6cf1256f1a0493df72f"},"icon/10001020.png":{bytes:24125,sha256:"2c07a35ade6a3d73b08d24b76153eedb6de41f1298e840dd5faee04bbf8fbcb0"},"icon/10001021.png":{bytes:19226,sha256:"06046a9387fd8ead3fbe4002c9cafbaa4189852bd683ef3b627133324fc578e9"},"icon/10001022.png":{bytes:19063,sha256:"30406afc29728bd50b1cd1704307effdca73a86db5d3b97a7fd1b2ba936e383a"},"icon/10001023.png":{bytes:19749,sha256:"29ed71483317b6d1f7fdcc4556731ca19a3828158bd70710eaaac5f7512b7aa1"},"icon/10001024.png":{bytes:7178,sha256:"1459dc8c6bba8f391e63d40dc410b0a94ba1ea346a2cc19b8fcee940010a3bd6"},"icon/10001025.png":{bytes:5758,sha256:"7fd586d94c22c9a6c4ad0248974b21d4f29b2a7e2c8c04cecf607f860bd4dd74"},"icon/10001026.png":{bytes:6248,sha256:"1829dd3720c0df86849f78fc5fb532e8412a5302bae20cd4571376c9ae06f43d"},"icon/10001027.png":{bytes:5454,sha256:"fed706b5943134d4fdb776ec35f479bf792a0b4603e23b2030e7893a3159ecd8"},"icon/10001028.png":{bytes:5275,sha256:"f0f01e125afd58d2a7cc6f850e1a69edb8e47d31a424eed21431b0b4f0e34bdd"},"icon/10001029.png":{bytes:6492,sha256:"592c905f1b364684d1004bc17739d1dd563e6aad5a0da97174d6f4d91dde0afc"},"icon/10001030.png":{bytes:5994,sha256:"816c8995dc94a724233222b3a21633d55330bad2c9879509587cfc10a20e9f50"},"icon/10001031.png":{bytes:12053,sha256:"36d3220568ee902b5cdce711946423d79edf54d70b46f7e46d9d79316a60f470"},"icon/10001032.png":{bytes:6189,sha256:"4d2f2a6a4aa56f799fa6d9b2bf112dd14754f3480951962899ed8e19f0f3d5a4"},"icon/10001033.png":{bytes:19270,sha256:"74367881fc31f13f6c8c6aa87a5da0c779d8303cda03aab1b914d03e2e243697"},"icon/10001034.png":{bytes:23429,sha256:"fdf41e7834dacd674f9d14e4db0c3a4598ae18ad7bcb0ed2f819af69decc4564"},"icon/10001035.png":{bytes:10567,sha256:"71e42a76b7d82964f609885a8fd0f4b8082dfbbc450349dd1329fac1d0f3b8d7"},"icon/10001036.png":{bytes:20003,sha256:"3ffb2d2cae852795566819b3bc65e42d6f5cfea442807813e3f110d2ae5306ab"},"icon/10001037.png":{bytes:11651,sha256:"0f2f343b4030beb38a5d03ca500b16292ee3402853a685eea33907da3166d00d"},"icon/10001038.png":{bytes:3402,sha256:"4fe6ebe2f6160b91c3c51971e4d588fa75f17dc58680c5e7525547eadb8a9922"},"icon/10001039.png":{bytes:16348,sha256:"c91c4bb5fd6c4ca331d4e47015669bd8727d2c91a3d79e97dceabba5484eed51"},"icon/10001040.png":{bytes:15606,sha256:"02c74e003d186f3c5ca4ea280312e2629faade7a3b95dc9ea320f587d411c658"},"icon/10001041.png":{bytes:7378,sha256:"dcec72b04c3096893874d605112c6c8aca2182a5d7af4231e08e279155efc6f0"},"icon/10001042.png":{bytes:9216,sha256:"4d53cec5485b07cde76ef6a459d7f30b73cbb149c7d22d70f94c9d4f08caca95"},"icon/10001043.png":{bytes:7268,sha256:"d0c2a175a0de3b1ed673ff2298cd964e93681a79b8bae03cb3a9940bf2b295b7"},"icon/10001044.png":{bytes:17785,sha256:"b166e9094cfb03ecce6eeeef4715623325ec4b86eda3236e72d34c7f1e4c7aee"},"icon/10001045.png":{bytes:20257,sha256:"dba951310f94d16e23800d78e6f15fb09753de1106fce0b6b65c869ac836ae5e"},"icon/10001046.png":{bytes:18695,sha256:"ccabfef92ec484881baade8997962077e362dde9552a0eefa4c11a063156bc61"},"icon/10001047.png":{bytes:20724,sha256:"571f24becceb229b8388a458c72bf5367c9c9b1bd2f511be9b6175f34c3fa743"},"icon/10001048.png":{bytes:19845,sha256:"3bccfb7c346d124071a2746f75d9e519d90985f07a9122cbb373347646c50d1e"},"icon/10001049.png":{bytes:26620,sha256:"62eaca8f1fa7013d5a9039864571102c640f0ad38b7fc19c34e475caf719cda5"},"icon/10001050.png":{bytes:21554,sha256:"9757b6b14968327fbd2933e4bc1df5c88e8acaa6a1654f880d0aa60557d0f012"},"icon/10001051.png":{bytes:23608,sha256:"3649049db87f65e60857124089570f03d8a87ccd367eddf1cd3189dc49318222"},"icon/10001052.png":{bytes:10144,sha256:"2939136db3eeca57cf771b6e776b0d00ef93b53d00a436b1429c8035821cb49b"},"icon/10001053.png":{bytes:16400,sha256:"29c5e8192b476e74b655b9b717ffa08b0195d5e098951a07904128b2fdfd8cd3"},"icon/10001054.png":{bytes:26202,sha256:"f73fbc019e699b109591814aae3f6d8b111b1388e6bb129ccb35edf7b526dd6d"},"icon/10001055.png":{bytes:19948,sha256:"48de3fe25bdde874eac546529417ffcc4ad395640539895293de829bc9d28fcb"},"icon/10001056.png":{bytes:9550,sha256:"a681352376be706911851bb90563ed343968c35c58c7af3a77fff4b4c16ea3a2"},"icon/10001057.png":{bytes:4530,sha256:"f855883dd19a55155968b77c238f2b5fe0cd894569959ec0f776b3c7d9c0006d"},"icon/10001058.png":{bytes:19430,sha256:"d94b796fbddaf0d63531c0b5569b26ef3e5cb42a51b06faced91b6c9fe467c94"},"icon/10001059.png":{bytes:21181,sha256:"71fe484027e51e4b7af32da4a4d3c661bef1dc5e011710aa0c8512db46237072"},"icon/10001060.png":{bytes:19537,sha256:"cb3ee2648a2b1b656e731d8b2c0cb102bc2eed1c6125b166e1867ca0129b4117"},"icon/10001061.png":{bytes:19347,sha256:"2b7bff19a05b1868e680b8d96919aa1449a7a35fb16fad62ce12d9e546f1cc8c"},"icon/10001062.png":{bytes:24195,sha256:"381bb70063fa7dcc3eda51a116bd79c44f41f32fb2abe647c3957570ca3c5257"},"icon/10001063.png":{bytes:24414,sha256:"240ad25841dcf341fc202efeb82009b52f9e99a403129b251443248f8729200d"},"icon/10001064.png":{bytes:21752,sha256:"8f37873cb51acc05c3e38534b272fc0dffaf2455e85f123fb7d1273584e9a276"},"icon/10001065.png":{bytes:22353,sha256:"082328a9b48c365b77eb4b7c7fe3461647af52da0f6f8d3a9a6aed4715ef55c9"},"icon/10001066.png":{bytes:25040,sha256:"93e8e9a1154521759b8275da6dd7813520067bdbb958fa1ef40a3e2db5d33ebd"},"icon/10001067.png":{bytes:17900,sha256:"764844d417a505af87d84c5b45ed11d8d4f6751e0bb934296354baf2c5e9b7db"},"icon/10001068.png":{bytes:27775,sha256:"f1696ad983c71560c9954d23d24e32fa79d877b7f136b115526d74002dfa13ee"},"icon/10001069.png":{bytes:27560,sha256:"14a34457ecf46a8f4a587ec4c7349a56dfa50550382dade7b3496365165b6f3c"},"icon/10001070.png":{bytes:7342,sha256:"392327cac6f05cd50cf10517e065449b3e3d63a20f2e7028cb54597341fffa1a"},"icon/10001071.png":{bytes:8292,sha256:"e35b725fd8337d3caf63550d9b3483fcc4d2e033711538db5cf792c1990760f2"},"icon/10001072.png":{bytes:2941,sha256:"92b0722a12b3370aaa2ddc69da17d1df9ded02d96e1310d9f88d22531d1e52bf"},"icon/10001073.png":{bytes:26648,sha256:"8cb0bfeb6f957c3507f9c59987440e34f9b8af8435ded2e80451c47c5e40e3ed"},"icon/10001074.png":{bytes:15602,sha256:"ade023a5bbeabcb56c1f14936c05d43a55836d9e0d530ac27a582ce5fd099cbd"},"icon/10001075.png":{bytes:29167,sha256:"d104103a60927435254c590c3d13294426f05ea81193ba5581ac1c56dbad690d"},"icon/10001076.png":{bytes:21611,sha256:"d42eff9554cf6b8010729decfe48c67f82fbe044d7174ffcf6f66ce1e0aaa776"},"icon/10001077.png":{bytes:17232,sha256:"417922105baee5e55df1ca41dec0f6ea50e5597e25e972bda5e85921ba89defa"},"icon/10001078.png":{bytes:22903,sha256:"f595cae988c1aa72bb46aaed66fbd4eb2a80b0d428e6f69279e6cc5eb8f33d43"},"icon/10001079.png":{bytes:12314,sha256:"d786c8e75869e85cd1282fedbdd7184599d467323ec627ba84fc8ac4d5b32802"},"icon/10001080.png":{bytes:21705,sha256:"40070edd6457107645f67436623734dc991b9ca443ab90f69f70dbaaea7a39ad"},"icon/10001081.png":{bytes:20562,sha256:"d56e7c2c982f3b27cd11f81799f37e59bed9c0ee33c38cb388a761faa3ff4aa7"},"icon/10001082.png":{bytes:16044,sha256:"d1a2f46512f076d4c94d595d09bd79a621823a9beb605d7550ec7c0a18063fee"},"icon/10001083.png":{bytes:20479,sha256:"fdccdda6ccfed67eac85cfa376d6f8a40ee1219ddd3cad6900b277b609e192eb"},"icon/10001084.png":{bytes:10321,sha256:"8ed3211996fe8174c1eea74b1b5187b507fda63b2d4f9c92d1a198d2560b00b3"},"icon/10001085.png":{bytes:14763,sha256:"2f965520fc95c4616a4af85f5340788038a5b4530ee2e687153ce58559c03220"},"icon/10001086.png":{bytes:18341,sha256:"060c578e663efedf5cb8516fedc4f05837fcf63a55b977d19658324708910776"},"icon/10001087.png":{bytes:4213,sha256:"769837b1d6caa5bbd3e3aa99ea416c57538b18c7c24d918e284d9c1251bbc460"},"icon/10001088.png":{bytes:4172,sha256:"5d4ea01aaec16fe631fc2383d258bba90158083c6bfcd8c1183dc22bad62fc0e"},"icon/10001089.png":{bytes:3474,sha256:"90625242ffa6ef70ba55f48bc7ecdb056c359db8381831ff22f9885d3c3f22f3"},"icon/10001090.png":{bytes:7435,sha256:"513808a1c0e913a192a113b8503698612af55c7ba9f3f341d24f50995aa7e902"},"icon/10001091.png":{bytes:22367,sha256:"7daa0d126bd8a7389720014dcb8448da8bc21eb0b381a99062bfa81d0b4d090c"},"icon/10001092.png":{bytes:12227,sha256:"9d63290e2cfa3acf8d58df425be36a101579b867c66c306986d762d7d4f422fd"},"icon/10001093.png":{bytes:26518,sha256:"bc385ef5b565fd3a9e6f923d6172155fd25472be7705b2b62569b07b8dc08cf6"},"icon/10001094.png":{bytes:25052,sha256:"e4ae56756a19592c96fe52a7a4b538c943377c2a20d921d8fecaea6a8f0c7dea"},"icon/10001095.png":{bytes:23206,sha256:"c4f38e680893ecda45e5c7e3589a2b852a15f4345abe4ec23629e1836d4db70e"},"icon/10001096.png":{bytes:22122,sha256:"f686a5ea91407ebdc08f4291b5169bd552ed5c8d8333be59db9366770cf7ff2b"},"icon/10001097.png":{bytes:12560,sha256:"f73d09781a3c85f822b0c88fa72b740cd50a15c2b8f592fa87979353ab4469dd"},"icon/10001098.png":{bytes:15059,sha256:"7e8050b1404cc16aa86a71b41dbc9d21925a9b78ad9e5254cc4e9624deb31f6c"},"icon/10001099.png":{bytes:15584,sha256:"ac80e1a8be3932dd9961cf91cbb2b177c47600b2bebe29e415bbb6fea798164c"},"icon/10001100.png":{bytes:16326,sha256:"c09dc9a07b44cf2c71c61756237422b4a0c2d2067321cd43695ce6585cffcf56"},"icon/10001101.png":{bytes:10612,sha256:"7aedce9017c7ee89d59e134d9ddd054dd907a26db6c45e7fc20b7506c51b687a"},"icon/10001102.png":{bytes:23039,sha256:"493c35fb2876f09ab03cfe98eb72b4897c8ae425650572c20fb92e71434c98ca"},"icon/10001103.png":{bytes:19364,sha256:"530857b7b8e777d3f96fda60ccb9f23007ecac339c4f752ef3c85a297b3a7966"},"icon/10001104.png":{bytes:28069,sha256:"e9eb24af2a0ba2805b54c614f10221fcb7c1d73217b5d0dc6b7e00fea2e26c33"},"icon/10001105.png":{bytes:26082,sha256:"24952154a32e5955b8503c92d6ebbd85991930130c4308e2cafe9f7c5f577230"},"icon/10001106.png":{bytes:1651,sha256:"617f1f8e08229f2678330ba3c3b6167ba865b07f93691127e870b8d6adf6641b"},"icon/10001107.png":{bytes:22485,sha256:"938d08c4bf33909d7f0895c84a91713cfd1e6f937f33ff2da5eaf2b52eb5b06d"},"icon/10001108.png":{bytes:24430,sha256:"a601101f8b16bdd131b47c8f66433bcb973d1b695d992b09e634a728dff54535"},"icon/10001109.png":{bytes:15975,sha256:"210c74315ec41a5d3c19c29a76bdd3413765f8f17ded734dc0691e76d85b2191"},"icon/10001110.png":{bytes:2344,sha256:"e655f46b6fccd2edafc4eb323d8678eb28f3c3ff117e3ac9f69c60c1827ace46"},"icon/10001111.png":{bytes:3021,sha256:"85f3c7595d26004037c41ec5303b62384a0e78b1ae06bdb99386e027de99ff54"},"icon/10001112.png":{bytes:3407,sha256:"89107889930ee230b538fbbaf11e6d0d041ab412ddf5b9d834a35c30289184e6"},"icon/10001113.png":{bytes:20006,sha256:"043f3dc850dd766a97ca36a4a6b6a4f69f6bd1a39b503a94ae7f44d24a3f9f94"},"icon/10001114.png":{bytes:13510,sha256:"00746c36384a8db4907dd246d6eefa673f5d1779ebd7411e9ce240b605129211"},"icon/10001115.png":{bytes:25840,sha256:"81c3874b31b33ff76ff5696828fc7e041acbc4e5802a159e6d7cf39623b6e4d9"},"icon/10001116.png":{bytes:26845,sha256:"e08add35bb5d9dab63eb2113db0a3f02837033f89ef5bf03d6fb6bde4b143a7e"},"icon/10001117.png":{bytes:5260,sha256:"7d5929d69cf88c4fd3aad5d0924e5501c8d6466ae8deea9dd98587bcc683ace5"},"icon/10001118.png":{bytes:2319,sha256:"4a2e00b11368da3400d0fde87af9ae0004a491f9e5166cbe9ba3e412d8c42977"},"icon/10001119.png":{bytes:9639,sha256:"69c0e0c0244fe4f9a863a749dd0697021334cf6f8a940aae48047447d07abfb5"},"icon/10001120.png":{bytes:3934,sha256:"92b3b1c0bb994c6eda4527f6b6dd2af58c3fa895d04867856d0ff59ccfd19048"},"icon/10001121.png":{bytes:20543,sha256:"2ab3a15500ca6a11e4ca65bc371d95c0af1e0563cc2c0dc4f20c8c01ab092e38"},"icon/10001122.png":{bytes:12810,sha256:"b5836c452bfa9d9a1db7a362538da5568db5824118c696eb3a2c158ae70f0cf6"},"icon/10001124.png":{bytes:35989,sha256:"619ff5c41712328cb34e98705aa8df74574a1821770a4586b22909577a4bc58e"},"icon/10001125.png":{bytes:29137,sha256:"99a9ab0501de6dba85c2abc0e1e36adf7a86f10fb37875e2680f2f6d9ca3e83f"},"icon/10001126.png":{bytes:22453,sha256:"f43f07f4c18e71b27570d8523eb3a8e029420c31ffadcb3e3aa1bbaa80a9fe4d"},"icon/10001127.png":{bytes:19714,sha256:"07781839310d272bc7aa3dad17d09224462964e4a677466697030781c8fa71ce"},"icon/10001128.png":{bytes:13908,sha256:"e1181919aa1dcf4fce455f94c43548cdc4db1eccbd1056cd9cc2dd3eb8f61d64"},"icon/10001129.png":{bytes:17401,sha256:"350f315d554986c5a522f79ce80a4f33b658317e2dfd28e765f31f1f55d9fd8b"},"icon/10001130.png":{bytes:12296,sha256:"9a43c99b2df57772c96547b0de18a8d0760d6c324c2b9d3cc3db33467dd08503"},"icon/10001131.png":{bytes:5038,sha256:"75d352f831fb2cb7f33db7514a5e8c96e1dbaedcf370955cad7783baa0845efe"},"icon/10001132.png":{bytes:7256,sha256:"b0dba588447f82e38c20eb54684a9d1f84ea83fb011287908f81cac2d9c29756"},"icon/10001133.png":{bytes:6606,sha256:"96100d356bd18b99201bde0a3196a851804f391a99e915a189d1ece883c4e349"},"icon/10001134.png":{bytes:7075,sha256:"93352721db5da92231f0b53f01f72aacc33670a820e2fa6331f402c79ab3dff3"},"icon/10001135.png":{bytes:7300,sha256:"e978e0bfac39714827cd7dd770b54fda77e5e7bc82392ce8092e9ba616ceac3c"},"icon/10001136.png":{bytes:4617,sha256:"403a83d32973ff5007759b8910d8d38f29c42d0caaee60876a29951a263008c1"},"icon/10001137.png":{bytes:6923,sha256:"e64530fb2cc4cb2e95be5481ce47d78a99d095cb4739f6c58f0269bb6c06df60"},"icon/10001138.png":{bytes:3412,sha256:"0d8839c0f16110389f079dd0cdaf32130b0d4363994cd62e51f64775a89736c6"},"icon/10001139.png":{bytes:3432,sha256:"ed8360d109e366c6a330c2806137f37d458194adcb5d7a5d61da0c168061f316"},"icon/10001140.png":{bytes:2813,sha256:"b3d6c1d80544a5327c21f9e63e452ed129e729e4ba18653013386bfe9a26d6ea"},"icon/10001141.png":{bytes:1976,sha256:"7874744cf4f00e0a676a4d76eb469e72ecd5fed016ae4b25a164f78994dedc19"},"icon/10001142.png":{bytes:15037,sha256:"14d12854b4b17da8ba54f0808be9acca2cdea82f004b047343b288fc5c442d65"},"icon/10001143.png":{bytes:5652,sha256:"5f02f7cf842d9aef4b81b784e3dce9ed4e820745c97efde3b7af2fa94cc6f2c6"},"icon/10001144.png":{bytes:3080,sha256:"ed7b8552f4dff8310e269986336dba5cbe76ccb6e065156b825bf8e0b5c8fdfc"},"icon/10001145.png":{bytes:2987,sha256:"ffa4d3452e8d0c751aec973fffe797c2e872175cd5912d0393c72b3da8cad13c"},"icon/10001146.png":{bytes:5483,sha256:"4ed80b9c3fa0d88c6cef1289f18048b9b373742348e991e23b3ac042bd71ad26"},"icon/10001147.png":{bytes:1152,sha256:"05750a2593db8d6cb0e64755e447fa2236cc5edfdd633a8ab9be8d8b5fcd7d89"},"icon/10001148.png":{bytes:2662,sha256:"421eafe1622cd73809a8b09b7a74074628a8acc9df8c4411f7ee51fb96a6cc2d"},"icon/10001149.png":{bytes:5963,sha256:"a16c6f9abbd6d866df576878a10477bb1f9c055d4ad19a050e3305b394f80058"},"icon/10001150.png":{bytes:7106,sha256:"66161334208241a31f9f5bca369733c81c6070de9b1d9f4c922c6c5a15dcc684"},"icon/10001151.png":{bytes:10932,sha256:"260a9dc36d191df0700e243e8461362605ddd759a0bd7fb382a9175ead3d9c91"},"icon/10001152.png":{bytes:5867,sha256:"e1980362d5eed82c2806a9ea5fc1b0ccdac33629f7aee398f74c5f54389ed683"},"icon/10001153.png":{bytes:9870,sha256:"e1e279e3065898eca9503c8652b74a71b4151284a733ee9293026be4d249c05d"},"icon/10001154.png":{bytes:9156,sha256:"6c6bd25805bb81659537de7814550b6b4daaddaf894645eb630ff9520a246d04"},"icon/10001155.png":{bytes:5172,sha256:"057bb0e931efc9b955b43943dcbbe5df73cc34ffd1755df8986e0f8f691b4794"},"icon/10001156.png":{bytes:4527,sha256:"5b93b62d5f786efce3b63ad62da61c67f15a65441a47fcb2df3cf92807170758"},"icon/10001157.png":{bytes:1326,sha256:"054bbfcfbb69453dfeec70ac86a3fef70f4ea818110a9a8285bd294d65972d60"},"icon/10001158.png":{bytes:4270,sha256:"dc54dad40d681aaf0f6aac8b3dd4b419e05a079d5d05bd4561a7348b9edf7927"},"icon/10001159.png":{bytes:3192,sha256:"b3962f15d41f625b1435c7d7182f2b744fa9de0ff299503dd3683171de794d2a"},"icon/10001160.png":{bytes:5158,sha256:"9e52b24f602584cc198214039c10c2bd33609b3c448ddfd2acbd565beb8bfbac"},"icon/10002001.png":{bytes:20145,sha256:"f4d95a54594309ab6deed445289097af22295f51ff5b7139acad7bb06045bcb3"},"icon/10002002.png":{bytes:21810,sha256:"af166959cddb542b83349dcc045096dae6185cd52d48a013dad78fe7ba1053ce"},"icon/10002003.png":{bytes:21958,sha256:"8bd0e7b9603ab0136ce86d8f7ace42ae23640013f07464730efd774655bd1628"},"icon/10002004.png":{bytes:23769,sha256:"4c1e6d5b3eef62b104f392bcd6cbf3ae7d2abaee06b161a1a65c6e916734945f"},"icon/10002005.png":{bytes:23898,sha256:"b30336b8be741b5a6315bf6ffffde315446e1639d9438e649f282153eec3f13b"},"icon/10002006.png":{bytes:36362,sha256:"81973c5d0fc8a86e8cec23d9d3eeb68f23ea95c302e8fefccaec90a320891427"},"icon/10002007.png":{bytes:23004,sha256:"1b42dcbd00fb4f45d6818b05e8b56c2880b0b2fbe061d17562f0c2125e6dbef6"},"icon/10002008.png":{bytes:25821,sha256:"7a6a91b0b32ef193de8601d3779c8a96b30c8994f746ecdb14920f364f434401"},"icon/10002009.png":{bytes:29951,sha256:"d736d5118775d03725093e1dd6bc51236c7fa39ed00184487db2267bae5f9f4f"},"icon/10002010.png":{bytes:26085,sha256:"6b92c88569ffcdd8b2cd4836f281b36ef5085c468fbb14923d085317e3d25c81"},"icon/10002011.png":{bytes:25715,sha256:"827cbcdb97487fefbfb801847e4acbcf298d0c10037173d612b006f615ef5ef0"},"icon/10002012.png":{bytes:26384,sha256:"e7ae9e007cddcc3c1f3a0d8206052b107ed5726276105583f4bb9015a14c5fa3"},"icon/10002013.png":{bytes:27500,sha256:"5ff084b46a5b00e83aefdba355c33bd972cad0537c08fee7bc6ffb42bc0ebdc6"},"icon/10002014.png":{bytes:20236,sha256:"c98b3528d9506c343a680e3699c3481dc0e17a7c14966b447a963c8bc0639c81"},"icon/10002015.png":{bytes:30913,sha256:"1efb63f37ed6ebcb4e28488901b4866d37204840be668a677e53fd8735b55c53"},"icon/10002016.png":{bytes:26866,sha256:"a91a05fa0e2f633e32011fc416ecc7b79096bdc531480200bc64b71ff8c05b5a"},"icon/10002017.png":{bytes:27987,sha256:"e9adecf78cac8b30edfec13604726b9e04a3bc5cc9ab2459ca09957a4300130b"},"icon/10002018.png":{bytes:25698,sha256:"2c9ce8412106fef0b68132d1bb13358b0c2953ab968f248559f1b4bfb043cc80"},"icon/10002019.png":{bytes:20846,sha256:"891a3906fc6324235cdbf4c83c7e0d58c6a7a71c423b2bb0a38e04d0de717d4b"},"icon/10002020.png":{bytes:19304,sha256:"b06d5f3d0a91dd2b49174f680d829d73260a6d4cbec4fff48a6131d4a4e89695"},"icon/10002021.png":{bytes:21812,sha256:"01dad29e897e1660646fdaa826b72fadbe822ceb13bbad6cb57fd1f9519e3139"},"icon/10002022.png":{bytes:19095,sha256:"eb571c371e8c9f6447d1567652425c43d2e6cfa9ed5f3dbd6b29fd3ff26f741e"},"icon/10002023.png":{bytes:20241,sha256:"5769cad4d0fa0effb7498b15f97ee1f45e6655275df15164e04f79ef314324e3"},"icon/10002024.png":{bytes:14546,sha256:"b823c0e0b8e4b852519254794cf219b42e02021d667528c6387a545fc2a066ac"},"icon/10002025.png":{bytes:28393,sha256:"5374e4d458ac4d8ae45419c0040c1981f12395afb984b631c48b640b8be2aebb"},"icon/10002026.png":{bytes:5243,sha256:"f97e20c0f2ea8e3c2d3b3dfaa9d3b9449e3ed559364cc2e7ab1516d0cb88bd78"},"icon/10002027.png":{bytes:4486,sha256:"cdd1376115bf45ba21b47c6e574a5b28f7c83cb36159bb1f7c60d737f9ec8ecc"},"icon/10002028.png":{bytes:3253,sha256:"41e38057943bc5dfbb24d8279c9ce23b58c871615deb28d934b0bb954bb66df2"},"icon/10002029.png":{bytes:24855,sha256:"60c949a324f60ac215dd01ea0dd4471ccff9b912717fd3b03443dea31dd87940"},"icon/10002030.png":{bytes:4435,sha256:"0a3e76f32808add9274d8e65d279b33521b655036d24cf87de3f5fa11de6dfc9"},"icon/10002031.png":{bytes:27998,sha256:"8fa5a2187292213adab843c9fbc68e8f099371a3ed74c55195998f92810e8b4f"},"icon/10002032.png":{bytes:21697,sha256:"9ece6166203932aad1a59d851258dc92e17f67f11de52b642c3abedeef571a3a"},"icon/10002033.png":{bytes:35521,sha256:"99c220eec1407ade7a0a5ff8c22a8dc6e4149ac6d0f407c005f78f8338f9bab5"},"icon/10002034.png":{bytes:6754,sha256:"b5097a0501688fe67edf17c7a993ce12323a2b86b55226db7cad7d9c2ffa016b"},"icon/10002035.png":{bytes:9625,sha256:"172106dc0c33f12daad2eee2ab1278f94c1026d0d6db70320851f2908eb9eb46"},"icon/10002036.png":{bytes:2474,sha256:"43ca13e6572a60aacfba330ac86bf5211a6901914fbd1559fffbb89ca15ccd41"},"icon/10002037.png":{bytes:23717,sha256:"d232b256c550eb85f96d5eb28f19a661f2127f383f49bf4ba4348f935f32dbe9"},"video/10001001.webm":{bytes:147646,sha256:"a72065f7abcc9387fb3dccd473d509bec7b421aa6c34c89e344dd8ee294bc2d2",duration:10},"video/10001002.webm":{bytes:171594,sha256:"b6e89b1967387bf40278b73414d90f0a3b8c61b0e4bfa63e74f67fa049ad3482",duration:10},"video/10001003.webm":{bytes:151975,sha256:"c5fa8ecbc3e6992256ee128dc400d2c93bf91fe5f7813a4d289c4b6d477fda54",duration:10},"video/10001004.webm":{bytes:164765,sha256:"d85282288b6a845d35f7ec6bfe49fc0f5d4766fe61ae30b87a9df6ff2a4961fc",duration:10},"video/10001005.webm":{bytes:189607,sha256:"0f186507b14407573ebb42da49a5749809e28819854cd46b4bf82b858ff057fd",duration:10},"video/10001006.webm":{bytes:136733,sha256:"cd11113d02047c42e3c03be3f2835f34eb52d0fe595b8e380a69fa86d9a40957",duration:10},"video/10001007.webm":{bytes:174723,sha256:"c9e65dbd73985b4ee5e716b63f5a9bf5719be8b95ea9a3a61a3aae772adaa064",duration:10},"video/10001008.webm":{bytes:13947,sha256:"d494a403015acc7700b45021ce269771edc8766e62f2bd82a7d26c9f60c63bb5",duration:1.3},"video/10001009.webm":{bytes:15895,sha256:"04d442aa0a51199be173b17a069b8365ae3205b26db275fb73355356fa1f871a",duration:1.3},"video/10001010.webm":{bytes:83391,sha256:"9bb064beb2f4622cc761ba26e5793da93c576d9c26be517912bd0d25f82763a2",duration:10},"video/10001011.webm":{bytes:107849,sha256:"d884e886fd74baba25a896921907e37675329915a90081fbcdd30e84fe4df099",duration:10},"video/10001012.webm":{bytes:84881,sha256:"c3ed5ae0813a45908906170ed6513b64c20a51f72aa0783ee55112ddb8701f80",duration:10},"video/10001013.webm":{bytes:96819,sha256:"560da96c18685b4fe4acc7b32ab940f229bc7ed1c57b0dd4511be7c22e5b6162",duration:10},"video/10001014.webm":{bytes:140840,sha256:"6ae425c9aa6d7ce1a476f18caa12ef0b124fa8b98e446696a3bba29ef6ae9a32",duration:10},"video/10001015.webm":{bytes:106513,sha256:"78e68a0cd736cf5c7a433f79f603126d0036bec8a751c937c7b96106180865c9",duration:10},"video/10001016.webm":{bytes:126160,sha256:"206ff8c1ba2836b2e58a907458b3c5a9ded69556eb4e29685725f49a90a2b481",duration:10},"video/10001017.webm":{bytes:217547,sha256:"0b1402a3ab2b0b3fa2284c33dec5b818049399a3a7cf1c2bf6b891c604905577",duration:10},"video/10001018.webm":{bytes:78212,sha256:"b5681b42272c66d918e143a63b6b4f9c044cd6b3ef1a8d2050a26f583b6b7a2c",duration:10},"video/10001019.webm":{bytes:175270,sha256:"6f493f9db0be094ab927becf8be553d416eab7ccdbac76896cd02a33ea094af3",duration:10},"video/10001020.webm":{bytes:227796,sha256:"57eb38683cf84e8abbd6319da39e08e4233baee90bac54568034fca55f7a253b",duration:10},"video/10001021.webm":{bytes:216527,sha256:"e19c751b9c36ce5d68c18a161ada9216e23f7cf8598638de9c8b4c2911d6e390",duration:10},"video/10001022.webm":{bytes:188626,sha256:"6ca2e91020c1141ee626b5dca2c7c190978562a70af2a6982f387c1e9cd9e53d",duration:10},"video/10001023.webm":{bytes:199004,sha256:"0b42968e4ac8f1152244e3821ef33d15954bfd3efba5709568b778b7ef375d23",duration:10},"video/10001024.webm":{bytes:60772,sha256:"a1a4269849425bc985f07f4e2c9e7bfd2fa5094238926b9d4096b8155bee39ce",duration:10},"video/10001025.webm":{bytes:61785,sha256:"0d7e10b6b97b5cbb5098046277b0315b0db4b5542ad8da82758adb800eb970f0",duration:10},"video/10001026.webm":{bytes:59199,sha256:"d2404c66eb3f357ae6349541a53fa713c4d81793c9b5f273cb6d5b949ded6330",duration:10},"video/10001027.webm":{bytes:37421,sha256:"c97fd7cda4cf46636757fd2913f5cdbfc44db0c183d7190499c3f54c1b007bc5",duration:10},"video/10001028.webm":{bytes:57620,sha256:"0deb4f0b933adce6785a46c2319e63721774f185532875fb4434f78eb905863d",duration:10},"video/10001029.webm":{bytes:66083,sha256:"ae3ef6d5ed1c676ce11136f98404159bbd3e847b7967c7cd76e53060df090ddd",duration:10},"video/10001030.webm":{bytes:58745,sha256:"0c7965cbed1119b1ff13e1b3381129a28468a6464279751590063f11efd8028a",duration:10},"video/10001031.webm":{bytes:8557,sha256:"5847d08b09f9f39575fba5fabada6133757231545bf08656ae145136c8d21bd9",duration:1},"video/10001032.webm":{bytes:25221,sha256:"0a401d8d73d2a838d01daecdf047b04ae98cf76cac899ae7a21fda8b9cefc2da",duration:.933},"video/10001033.webm":{bytes:34602,sha256:"896f71d3387bcf4154cec5fe67593c1982374af65cfebd5b989108adc2e07ddd",duration:1.2},"video/10001034.webm":{bytes:125134,sha256:"3804a3b13d8974702162d97a703c63a7aa5bb2690e892a6215d3a61af788fa8a",duration:1.4},"video/10001035.webm":{bytes:67308,sha256:"22651c969c1e7ad47a6aa062a7791fed498069d407dce6471afb760b83eee66c",duration:10},"video/10001036.webm":{bytes:127270,sha256:"f0dabcf3554f6aeb9a3070796760df4f5a7047e435ba94e8c3948bdae24dcc45",duration:1.4},"video/10001037.webm":{bytes:168190,sha256:"3b0423327eac86c2376f2d0e1ad08142c335e80b3bf2a35b58410e43038a39e4",duration:10},"video/10001038.webm":{bytes:131917,sha256:"3153ff561dbb204cff54001334794aff6551dc29e55dbeb0fad35bdef372033a",duration:10},"video/10001039.webm":{bytes:11634,sha256:"2bbbdddc40b1790c6ff3f4a7be9c6ad0f8a5ef521d45e4c7ca9f0a84a70dcca3",duration:.766},"video/10001040.webm":{bytes:29034,sha256:"9187e82dace372eda0441947980d8a981238b519fe8b91b3cd8983a25bc38124",duration:1.2},"video/10001041.webm":{bytes:145234,sha256:"86c73a18f5f07c18427a4f6540e94ae0488a22ba061f931c5071f4524aeb8e33",duration:10},"video/10001042.webm":{bytes:173888,sha256:"f4011ff7a3474cf2ff9cc02eee560e46d3e1ad165848dafb989907199951ac01",duration:10},"video/10001043.webm":{bytes:42182,sha256:"9bd4b77d6cb8be53aa0cb3954a124c523f076cd4b3f3ef646d1a41a272c9a058",duration:1.233},"video/10001044.webm":{bytes:32089,sha256:"789fc8b1316530b118bedf21682606096aa1f4191c1946dcd1d3262713567a84",duration:1.566},"video/10001045.webm":{bytes:9892,sha256:"d9261d0738da8852b6473a93bff97ec9f5d7e8fe130d314b44f4d870f9e2ef85",duration:.733},"video/10001046.webm":{bytes:7771,sha256:"bc5fcfa1b15638d4f4b44cea1f27e02e5c7281e5d422dd70e8945e52524f236b",duration:.8},"video/10001047.webm":{bytes:11433,sha256:"8dfb6ace018b13706517ee2511753af3606a9d646ef98f7808a1bbdf0220e23f",duration:.733},"video/10001048.webm":{bytes:9648,sha256:"d92bced2753f1ab8cd2edbab06905ac82e4b1423235bd32e9259058070d19470",duration:.733},"video/10001049.webm":{bytes:24623,sha256:"54769931e5ce88f652c63c4b190aa017a7e70e5860b046df7a2813f00cb42b59",duration:1},"video/10001050.webm":{bytes:20713,sha256:"919a6070b7e1f042e5a74f091ba8c23924f467cc1ddfdc5816feb3d638cc3acb",duration:.733},"video/10001051.webm":{bytes:317681,sha256:"a1dda360215590f4b5fb7b8a82cbe44d240211270485eae950b5535b01686d08",duration:10},"video/10001052.webm":{bytes:15091,sha256:"ff7685c63cf73e1422f07b59bf5e006b6dad8d2d80b1a8ae0997d13ef58487df",duration:.9},"video/10001053.webm":{bytes:183319,sha256:"c8c07a2deb6b4899a6d1c1b8dda72fac6ed45a11d6646c40f5c2e354a84a8d13",duration:10},"video/10001054.webm":{bytes:17094,sha256:"ca07c647725212c323dad57886c5b56a5eda2ae27909bf5ddf0f3589e99b5b5b",duration:1},"video/10001055.webm":{bytes:53469,sha256:"a8c69dd8c3c9e4836f1c3c9a4c033bc7bfacc0fab9ac2981c48e4391589c41de",duration:1},"video/10001056.webm":{bytes:225400,sha256:"60fbad9fef225e7205c0eba98951387354a8470e9a50db3921494db3dba6ba0f",duration:10},"video/10001057.webm":{bytes:7082,sha256:"0aeb94988ec8862c3bec3f357f380b675da3b0881c48640b37fa3d1215353b9b",duration:.966},"video/10001058.webm":{bytes:90245,sha256:"4bbbc44479a590344eb38e965facc757347d87c63816e0ccf8939d98d8278ecb",duration:1.6},"video/10001059.webm":{bytes:87447,sha256:"fb1b2bf01c971fcf2a69833b2728d8553f058877386c6e17947e2bc28e50f904",duration:1.766},"video/10001060.webm":{bytes:1276390,sha256:"19f135d0143a973a7ea358a64f83aacb227ddd483f200c6fc88738b3a2e1c9b5",duration:10},"video/10001061.webm":{bytes:70336,sha256:"10d1a43ee81a6fb691448a1a3165612edd96943e7188612069a13f57788c3513",duration:1},"video/10001062.webm":{bytes:102563,sha256:"79a12a7baa9ab219c27845166f613f87829073e0214ff26ac1b3239a2f8a8222",duration:1},"video/10001063.webm":{bytes:565456,sha256:"6784dd43aa64a9005df034defe99ca23eedf9a124f0a0681bb9ea531152d5656",duration:10},"video/10001064.webm":{bytes:48740,sha256:"3585e3b7579301babf2a941529d05261f7a4e7993d394be668ce3e6b34269be2",duration:.866},"video/10001065.webm":{bytes:16738,sha256:"96de617b4263a73bdb61e98d4643e8ad6488bc0cc359ee4f8da5eb6b0333c466",duration:.9},"video/10001066.webm":{bytes:12376,sha256:"ca507ca6ab20dae1d3e9ff3cf8fb0fb70763983f4b3c82fe8f05b5b011160189",duration:1.066},"video/10001067.webm":{bytes:23685,sha256:"8702ce3719d477e8a79a5321b152a804a583578aa6335aae221e238e449c4508",duration:10},"video/10001068.webm":{bytes:55734,sha256:"708b564295d3c3e1929d4f5da5af6595e9ef236e692380a838e4230ff3813381",duration:1},"video/10001069.webm":{bytes:1128088,sha256:"56b38a26aaa7913066c3336ba98f7eb1037c17fe80fb110d45e123cc46c36acc",duration:10},"video/10001070.webm":{bytes:975681,sha256:"4c762f4cc796d0a167e47ba18c6c658b9173cc8fd951b9c7537043ac1d3cab4c",duration:10},"video/10001071.webm":{bytes:815992,sha256:"e2547ebac9f4d2dba4cc455fc73cf1de2afa209f4a54473a252f3578b5882361",duration:10},"video/10001072.webm":{bytes:616757,sha256:"551e36eea20409279ac7b058f0658460e88b60c7b62189209ab219ab5ab35969",duration:10},"video/10001073.webm":{bytes:37684,sha256:"913e5eb86f0de97099bc8f1c2860dcc0ccb23af3df7b9565e46d23dcd3d5b2e4",duration:2.1},"video/10001074.webm":{bytes:12604,sha256:"7a034a81cb6b8d09507a83c42b44fa6ce5dac567aaa4dad86900772e81573fac",duration:1.666},"video/10001075.webm":{bytes:107268,sha256:"a58331fcb3c6ca07f581b3ca490eedcd4e4d486ddcf944083038198495dc8c6b",duration:10},"video/10001076.webm":{bytes:32481,sha256:"6c49036a5c3d63f3f8a554e751fde071afa7a88c69c0eb5fa8aac3ead9936c85",duration:1.2},"video/10001077.webm":{bytes:34358,sha256:"8b1cd91b4547b5c773688dc7586d02ef3505b56a6c0e5e8cfe95ac2877074fd9",duration:1.1},"video/10001078.webm":{bytes:46506,sha256:"d2b1506af78535ae8c25d12ed47f613f58c96c237aabd3a69481926279abbad2",duration:1.133},"video/10001079.webm":{bytes:73888,sha256:"14eaab31df0169c82d784132e336f21e3dbcde36e8d863e813fdbbd0cc7fe736",duration:1.166},"video/10001080.webm":{bytes:227149,sha256:"f953d8cb2c360f1a7beff3f1eb0287d2ad5b4b5021cd8add406935e7bce0f499",duration:10},"video/10001081.webm":{bytes:206185,sha256:"bd954a94b76ecb754018c8d2f5600757907fcbf5b8d8fd8c16eba98d2c77bd45",duration:10},"video/10001082.webm":{bytes:414215,sha256:"a66f150faa15b300f9d87422b83566b253c50579b8b08a83e7d5fecdeb33117a",duration:10},"video/10001083.webm":{bytes:103790,sha256:"f7619598f5fd506003b6161a7d7a9f7d13eaf3ae26a51cf560899ee50ab74850",duration:1.2},"video/10001084.webm":{bytes:49760,sha256:"075a51589f5556f125c56e3448e2b8c7fcfeec7f7981228e46991fcadb58b603",duration:.7},"video/10001085.webm":{bytes:39486,sha256:"7782a3f27d41c5b833746b6892a2074821226da33b0dfefe1173c5a45890abbc",duration:.566},"video/10001086.webm":{bytes:24420,sha256:"1e7c975fd2c3027095353ae2b7651e3b9f0104554a072579127817aa5ccdea02",duration:.866},"video/10001087.webm":{bytes:58874,sha256:"5101e1da0097fc9785131be66f411e54f427ef18f21ade4b254728e94ac568b7",duration:1.166},"video/10001088.webm":{bytes:64189,sha256:"a3c150eeaca295e70a351b250bd3554b4633a77f6704e581b72a8bd93f0ea194",duration:1.166},"video/10001089.webm":{bytes:25443,sha256:"0e5a1151fea93701ebc923211c8f5c406e895104a4afb9ba71d521ad45b39b85",duration:1.966},"video/10001090.webm":{bytes:65254,sha256:"89ad6f296294c0abf4fb08e68ebf141d1c602a659c0ec563f7058ac6d2462fd4",duration:1.166},"video/10001091.webm":{bytes:81681,sha256:"3081d901c969bc1f4a4b10a447c3a712a8b4136965c34a76119e1b6dcd5e6cd3",duration:1.6},"video/10001092.webm":{bytes:548135,sha256:"5c013b847ea4b8338927ebd2597c2bb12b9c9a7231853c3d277eba10f9dd453f",duration:10},"video/10001093.webm":{bytes:63342,sha256:"bc87982e78383167ff4c649b6603a78cff1d6cf3cb51349e73626fcb2a5a7b49",duration:1.033},"video/10001094.webm":{bytes:20050,sha256:"53e91848830acea081a4d56ab8db383627a78ebb806ecb6766a2e11ed9573c58",duration:.833},"video/10001095.webm":{bytes:84670,sha256:"172553d18635861bfe28c6f06b5c8cea5e7640287cb75242fec31c12319772d4",duration:1.8},"video/10001096.webm":{bytes:28716,sha256:"31d3f4236eb9e2f2f6cc76003284b02496bc581ab1c8e19cd5929b5828c894ef",duration:1.6},"video/10001097.webm":{bytes:25147,sha256:"2129484b7dfcc5abe518553a0841a92a6582062356acda687b942b2cb221d26f",duration:1.6},"video/10001098.webm":{bytes:76333,sha256:"ac1d85c4f336abd854fd461db4e0951c83346dd2669c38b91e537ec758e9de65",duration:1.6},"video/10001099.webm":{bytes:76173,sha256:"2fba51975dae32febc9c1a270b1b5b769d299f143c4996198c7dfca26efd1014",duration:1.6},"video/10001100.webm":{bytes:80616,sha256:"ee23d3bf91e53bf9eb93d5a7c5879daa54aaa7e7194ba3944758131ebee68c5d",duration:1.6},"video/10001101.webm":{bytes:84160,sha256:"cb606310669a2a1d2f30b0903af51eae290a4276d2d934439999bfa10bdb5604",duration:1.6},"video/10001102.webm":{bytes:82257,sha256:"01cad0b39abfc2f041df3c1e786a11d3323cd25297fbebca2f196f8f556c8d82",duration:1.133},"video/10001103.webm":{bytes:91224,sha256:"106929efba101b9ae0f76b6b637cd4e16863bf9f72f779c2474d0d6cab4fc1fc",duration:1.166},"video/10001104.webm":{bytes:89745,sha256:"0862ade9ff0001d2cb5458e3cb6998a7ac42c2336840d73532f5492e522cbb34",duration:1.133},"video/10001105.webm":{bytes:93873,sha256:"0b03b634e18bb25087af672cee8e29df618540f3ac73761dae9a854a629dcfff",duration:1.133},"video/10001106.webm":{bytes:80898,sha256:"c25414e50001dd924e75c4b9aab2aa4fca72d1765bec268344e1541c9f9734ff",duration:10},"video/10001107.webm":{bytes:14411,sha256:"faa6ad2693c69433203864414e338b8d0f322096ff6b05b826787ec3a7bf7f57",duration:.8},"video/10001108.webm":{bytes:45841,sha256:"5e3c3dbbbd11985807452e9b02a69477d018b60dcf1598ed1deb21ec82bb4a50",duration:1.7},"video/10001109.webm":{bytes:53026,sha256:"2a0c537529b94d06bac852d498825b431a2830d944e8601e752b115b68d481ac",duration:1.666},"video/10001110.webm":{bytes:28873,sha256:"b1ec1a3d0d577270b1eb3fd1dcf2ddc36df9dcea52df0249b8440db3e0ec9b6f",duration:1.533},"video/10001111.webm":{bytes:15873,sha256:"74c62d1739cb80ecfbc66b755c7332a27a53b3ff3c6d72aa75d47804b211ad36",duration:.9},"video/10001112.webm":{bytes:17381,sha256:"e3c96e5b87f26c54347abcc591e241a78ae3ccccfc2eaa0bc447f1400410ed92",duration:.9},"video/10001113.webm":{bytes:28753,sha256:"1b16a8e140a6787675a0201e4ef4dea5633076d9494cdfb6f8c16c9b2507b8ea",duration:1.166},"video/10001114.webm":{bytes:111410,sha256:"13cd5f511962912110c6ac8d6ef7e39a823fcf48477762a18123080866b43138",duration:10},"video/10001115.webm":{bytes:43777,sha256:"0000583cb60ee7e8d562e13bbf5ddd7fc3fd8c9d93d2bcc7b96df9ab524f980e",duration:1.133},"video/10001116.webm":{bytes:87365,sha256:"d96dc3d3f552ca40e77ddd55b50da8c93a7bf34f53a6ecf01802751248f2189c",duration:10},"video/10001117.webm":{bytes:15087,sha256:"9e95f50d1385083834770fa0f09ffe79fa570e93def94b52a6a7a7e64f581a0b",duration:1.466},"video/10001118.webm":{bytes:74213,sha256:"4340b8ff11f8a3795d4d2fcd5c32d112ea4bb92153880f8b3eda34e15a82738d",duration:10},"video/10001119.webm":{bytes:26934,sha256:"244f12529343f2163be2b075dafc1907662ef53ab60c4ad081b8db9d81b4abc1",duration:10},"video/10001120.webm":{bytes:15909,sha256:"77c6308d62f016d2f6a0669f5c165efab2afff3d15611afb54965bc65e3ecca4",duration:1.566},"video/10001121.webm":{bytes:14072,sha256:"d5cc8215a5d4e8499f402cf5ad34e4ed958319a559c669aef9d5507be8f31d03",duration:1.333},"video/10001122.webm":{bytes:39768,sha256:"a0c0c537e22211affdafff6d4a42fee3b6fbe1d0fcdc17adbd5854b6395c9496",duration:2.6},"video/10001124.webm":{bytes:568780,sha256:"39b58e373aa854c91dfad8af90b3b84e9b04b7cde050388152622ac2c1f9c19b",duration:1.4},"video/10001125.webm":{bytes:179690,sha256:"42591454c30e14b1a65f5c7696516edf9e690002ca6fedf5a331e3fb39e13a83",duration:1.233},"video/10001126.webm":{bytes:243266,sha256:"faf35bae68aa35a358447c791c91808872921d4794f5c90e5763d692bd807a9f",duration:3.133},"video/10001127.webm":{bytes:208681,sha256:"42fecb16b110931f78c06d61d52374f5fa74fee60b1b37dcec4c608bf240adba",duration:3.066},"video/10001128.webm":{bytes:14331,sha256:"4a57b0082c4f32309eb212ebea0d1069efb87e4c3da4d65d556ca7d4cf397954",duration:1.966},"video/10001129.webm":{bytes:34019,sha256:"4bcab75c2f7ce6e2980b13fca3f8cb95bfb3bbb46396f52b0691a3b9499b2af9",duration:1.133},"video/10001130.webm":{bytes:10181,sha256:"f9e3bd1de752007281ab2d45fddc933b4709182a765e602879c3c9402dcebef2",duration:1.2},"video/10001131.webm":{bytes:168665,sha256:"275465192460a885a738b907be135e91be2546c9596cf0d0232ffea6d06065a5",duration:10},"video/10001132.webm":{bytes:97830,sha256:"4dbe1e8d33843f8360ad246082650ae7ebd0d66ce6b133e2f12f1d748719d13d",duration:10},"video/10001133.webm":{bytes:51508,sha256:"44b562df1ae76f3a1983447107aeeb00fb439afe3eb3e1d6a67a141467673aa1",duration:1.5},"video/10001134.webm":{bytes:36767,sha256:"adf67abc9bb2872b6aae897ecdaeb281384654e3066d03b07d6616a7393708a0",duration:2},"video/10001135.webm":{bytes:26042,sha256:"c2d6215296f9e200fc75c0d36f8523c4c5b24066a0e8eda2f01b6f5daa717bec",duration:2},"video/10001136.webm":{bytes:28762,sha256:"07d2d47eb8672b958f35fe6abe9ee2dae11db9a8846f1ac8d1e7206e466bf2db",duration:1.466},"video/10001137.webm":{bytes:151972,sha256:"f94c2f584f894e56def265d016e53ebf81473677633dfded66890fe6d3e2f175",duration:2.066},"video/10001138.webm":{bytes:68031,sha256:"43929724a51e2f99d9ebf5f7ffebc51ee90712b7520e213a9457bfcbb5f9a517",duration:2.033},"video/10001139.webm":{bytes:72750,sha256:"19d626334d981b16c00b4c5cc39ddab5bca75034f497f5345f18526e7fe25250",duration:2.033},"video/10001140.webm":{bytes:70456,sha256:"8cadee838df527fbe11b4e8fc5e3b7c784fad21f61c7c214ef7dffca72f0ef58",duration:2.033},"video/10001141.webm":{bytes:42664,sha256:"34f97de7d1dc183a5fb958305424f73ea6498254804c3ad669d44dc04bef939a",duration:2.033},"video/10001142.webm":{bytes:710423,sha256:"dd2aec022ab89b4e048b4e212216e5c0862b6c8be9899970d11b1d7a2267f9be",duration:3.8},"video/10001143.webm":{bytes:14487,sha256:"c393d0afa72faccf42aefb8cf946f08725dd76e28af2cb608049ae9416dc0887",duration:1.066},"video/10001144.webm":{bytes:13412,sha256:"47692e1e22510aef145080fcf1e42d6d4594cbc1ce3ca8dd89f247d7c59fd271",duration:2.233},"video/10001145.webm":{bytes:19632,sha256:"8fa9abcbc084f7952e2dd8b1ec325e676b78e2fd2be421aadbc83137463175f4",duration:2.266},"video/10001146.webm":{bytes:13723,sha256:"bda3925d9183b351f85c8152a9a2ca36ed994e6656fb210e08e2251df70c4ddd",duration:2.266},"video/10001147.webm":{bytes:23765,sha256:"566fafa5c585eb127bb81912324486a26c12db6bce8509763eb130ca1bf4be57",duration:10},"video/10001148.webm":{bytes:48537,sha256:"d7eb086bbe4e43d1733c4b7c4683248fc9686c0d2540b15b44030050415f18e7",duration:1.233},"video/10001149.webm":{bytes:56797,sha256:"a89363c03820728fe3041217caf3daa2c6b3b18c03a38478c9fbc38013df4874",duration:10},"video/10001150.webm":{bytes:71959,sha256:"33d5db768fc90f96ad2dd81fcaa2944ad721331fdba90ebbbc76abe9c9e622ad",duration:1.366},"video/10001151.webm":{bytes:70714,sha256:"f866a0e45980bbb029df58349d1401f259e79076e5a919584eebaea9b94d451b",duration:1.233},"video/10001152.webm":{bytes:1072305,sha256:"b9200f9b1dea6f7350dfaa0d1bc4eadcc4b4f0650fe190fe22ad25bc7e3a2b7e",duration:10},"video/10001153.webm":{bytes:37507,sha256:"add87a7074d611f312fe0c43a24ae18d774ff62a4cd24db69d2526fb7a2e1736",duration:1.2},"video/10001154.webm":{bytes:755336,sha256:"cae2ff5f2dc15d639a5ea411cab50a9bea03fad5f73116764945f6d012be74b6",duration:10},"video/10001155.webm":{bytes:28588,sha256:"ee157e4e1e8452bf7f1dbb32bb5509e9b8659edc5d1bb0bbba0b70af2e6c4328",duration:1.2},"video/10001156.webm":{bytes:21193,sha256:"2655315d0fa59d136b1a77e760a5b085aeaabfe70d1130ea17e937b037160afb",duration:1.2},"video/10001157.webm":{bytes:146426,sha256:"eb48647b768bf300429f157eb570b4c0d7c9d04bb3df53768e6875b91e51931d",duration:10},"video/10001158.webm":{bytes:231389,sha256:"8ea98583d1972f176e3354b6d7c116ac6b2689c1593b02ae4fea55774ca0bf8c",duration:10},"video/10001159.webm":{bytes:69087,sha256:"8b70a7eb8e83a9230bd3b7a658633c84037ed0667b0da87b78206f48ca2f487b",duration:10},"video/10001160.webm":{bytes:46691,sha256:"11698fa6b8a4f5ffd3f289e41266a7097f0e620bbb64359e97f1bcf7430731e4",duration:1},"video/10002001.webm":{bytes:543544,sha256:"6a3509a94437899e30846d0f701e0ae3ccfa82793f51d293ed507c8efaa67099",duration:10},"video/10002002.webm":{bytes:796059,sha256:"8cdab49708511f4d42d45fe0a319d2334e4e9aa42709e946c8d00a1ff77b07fd",duration:10},"video/10002003.webm":{bytes:715230,sha256:"6b5422c889243db499114370af5a260d624180fe17991445f7e3133eee619381",duration:10},"video/10002004.webm":{bytes:693595,sha256:"24aa66de5a0649c10652bb66b70a0407210e26e18a8d2d64b0610ca29fdfb02b",duration:10},"video/10002005.webm":{bytes:815174,sha256:"5ec0b1a66bf28c7bf0b2bc61a7bbbb374be18d4b1f338217ab3d84d88cd2838f",duration:10},"video/10002006.webm":{bytes:194930,sha256:"7ef8f4e4a5ea4430ea4910b06f0dc00c71d61ed9bd54e03b4a268a4d1f3e7525",duration:1.9},"video/10002007.webm":{bytes:93264,sha256:"cbdc07ca88626c73d074eae923aac8972ce8898fd331fecb40cbb22392d32e6a",duration:2.4},"video/10002008.webm":{bytes:669120,sha256:"9299206b7cdc7fc4f319864e425be91f90b4721bcd8555f56ead4dc45f776b27",duration:3.433},"video/10002009.webm":{bytes:434158,sha256:"3db3a361cf11e9ee543dff860ba8a7aef3831d920e1e95fb6773a13f15f7ff6a",duration:10},"video/10002010.webm":{bytes:161424,sha256:"3b6e41d32df6eca2645978e8ba0f13a4aef69aa8217d38e85e5b8db058016a9a",duration:2.5},"video/10002011.webm":{bytes:73568,sha256:"86966a56aef3a2a6a263526d1efa0092044b48ce26f7f076c5bdd259131a8121",duration:1.8},"video/10002012.webm":{bytes:187942,sha256:"2b3e1b9538ddaeb62adeae52b9ea0ab38801430c76bab0f6425da9e127e0d896",duration:2.933},"video/10002013.webm":{bytes:482076,sha256:"14b90e097eebe09d3337afb0867da590081f111b5593d601963dcccf39638a4e",duration:3.9},"video/10002014.webm":{bytes:1475640,sha256:"f81e417888b1a833e254cf069f33a5ff1820bfc1599ac0f86d67a3cea44cad78",duration:10},"video/10002015.webm":{bytes:2392745,sha256:"db572d1dd4f090a104cdeea17a84aaa94c5800820ec66168ccd2eb99cb05d867",duration:10},"video/10002016.webm":{bytes:178656,sha256:"aa5dfb8ef461f168b2b64790b90f5a0e847b2a02aa3964e35a1734b37f0b69dc",duration:2.5},"video/10002017.webm":{bytes:80715,sha256:"addc2369f55de0a067937f48f40f300d123c320efc9c03ff3be6ea922581b575",duration:.733},"video/10002018.webm":{bytes:790722,sha256:"1d8d5b69fe0a5949566c216eac072f739ee0be9d0ac7ad85a809db6fe4da14c5",duration:10},"video/10002019.webm":{bytes:115786,sha256:"1a4a39ff5bd9dd26bfda75176469acca6a2aace830961c3a5e5dc164bcc1ac64",duration:2.2},"video/10002020.webm":{bytes:581822,sha256:"2ce9a04ffb641ef53d0090a22dcb394f580475c41052c5dea83ceed1dffbcd69",duration:10},"video/10002021.webm":{bytes:568208,sha256:"b3aa5b1f712c379a80767d599059adcb482bb8cd2c0f07c404b6fd862c8d7e9b",duration:10},"video/10002022.webm":{bytes:610636,sha256:"8c2663f7c031328ef06dc59aa0c0a11f5e7708b3981b4399d8bfd609573e986f",duration:10},"video/10002023.webm":{bytes:612556,sha256:"79a90a1d7d5f6a2b9a1e81738e12566f14ce96f99fa81ca102aab157b4b2664f",duration:10},"video/10002024.webm":{bytes:1453404,sha256:"7e5412973270e8e58a539c9f83304b4cd07a0faa740a4752b982333e380a1d55",duration:3.4},"video/10002025.webm":{bytes:1544749,sha256:"63af745659c7063ba0d7fff63af97eaf8972c2a5a06cd6739ad518cd4187b153",duration:10},"video/10002026.webm":{bytes:280741,sha256:"cf701673766d966c3b522749ba169622c98261501be50bb3afee3c998898486e",duration:10},"video/10002027.webm":{bytes:327918,sha256:"d59447600017e11aa42fc342833fad186af9f9d1670aba32f922d77fca63d6c6",duration:10},"video/10002028.webm":{bytes:336612,sha256:"827a91d60bf0fa75a131853e0f1fda8855cf2cfdf9b06194d195833bda026986",duration:10},"video/10002029.webm":{bytes:700863,sha256:"1a8ad0969222629d8fd89bafb174df58082aaa50755e3843ca82ad953b18e0aa",duration:10},"video/10002030.webm":{bytes:34533,sha256:"f4080af95380d8f640133b255bbe2b25b03180a3cfcd99aed1f281265c6f18cb",duration:1.966},"video/10002031.webm":{bytes:187567,sha256:"8bbdc15b123c3ac7f3cba16b04ca18571996e6556f190edd4f13d6a50ecd8c0c",duration:1.166},"video/10002032.webm":{bytes:1776997,sha256:"e3b15a717b1db503bd3d838ed9b6fdb70def2fcb4b47f51db24eb86fc03e7923",duration:10},"video/10002033.webm":{bytes:297716,sha256:"425cd20f5a5038f720e0f3c4dd65ab58c6c5ad80aa346b6c9035eb0700e69d3e",duration:2},"video/10002034.webm":{bytes:2495666,sha256:"70f377770e704850e9a2eff20fa283cbae7939fd42b66b85110b9b6eb1aa2add",duration:10},"video/10002035.webm":{bytes:183443,sha256:"a631becd1c4585ec80d91b435a5c6cda28b6b2033f2eb62f929a7580ad2ffbad",duration:10},"video/10002036.webm":{bytes:89987,sha256:"5b523e749db42145e8f3947e86d6e8d9683300b737f7775477cd94f02c1c8004",duration:10},"video/10002037.webm":{bytes:823633,sha256:"a4e7ba6ce6a6a43c31597d6b6430e86c507ab45a89910eb5010f1d058901f539",duration:10}}};var eo=Ge.version,to="/qxqy-vfx/",Gt=Object.freeze(Ge.assets.map(Object.freeze)),ao=new Map(Gt.map(i=>[i.id,i]));function ct(i,a="animation"){let d=ao.get(Number(i));return d?.scope===(a==="fullscreen"?"screen":"ui")?d:null}function io(i){return Object.hasOwn(Ge.files,i)?Ge.files[i]:null}function lt(i){return io(i)?`${to}${eo}/${i}`:null}function je(i,a){let d=Math.max(0,a||0);return d<i.duration?d:i.loop?i.duration/2+(d-i.duration)%(i.duration/2):null}var oo=Object.freeze(["KEYBOARD","TOUCHSCREEN","CONTROLLER_CONSOLE","CONTROLLER_MOBILE"]),no=Object.freeze({"pc-16-9":{id:"pc-16-9",device:"pc",platform:"KEYBOARD",width:1600,height:900,ratio:"16:9",luaDevice:"KeyboardAndMouse",label:"PC 1600\xD7900"},"pc-21-9":{id:"pc-21-9",device:"pc",platform:"KEYBOARD",width:2100,height:900,ratio:"21:9",luaDevice:"KeyboardAndMouse",label:"PC 2100\xD7900"},"mobile-16-9":{id:"mobile-16-9",device:"mobile",platform:"TOUCHSCREEN",width:1280,height:720,ratio:"16:9",luaDevice:"Mobile",label:"\u624B\u673A 1280\xD7720"},"mobile-19.5-9":{id:"mobile-19.5-9",device:"mobile",platform:"TOUCHSCREEN",width:1560,height:720,ratio:"19.5:9",luaDevice:"Mobile",label:"\u624B\u673A 1560\xD7720"},"mobile-4-3":{id:"mobile-4-3",device:"mobile",platform:"TOUCHSCREEN",width:1280,height:960,ratio:"4:3",luaDevice:"Mobile",label:"\u624B\u673A 1280\xD7960"}});var Yo=Object.freeze({KEYBOARD:"pc-16-9",TOUCHSCREEN:"mobile-16-9",CONTROLLER_CONSOLE:"pc-16-9",CONTROLLER_MOBILE:"mobile-16-9"}),Xo=Object.freeze({"server-container":"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u5BB9\u5668",container:"\u5BB9\u5668\u8282\u70B9",textbox:"\u6587\u672C\u6846",image:"\u56FE\u7247",button:"\u9884\u8BBE\u6309\u94AE",cursor:"\u5149\u6807\u68C0\u6D4B\u533A\u57DF",grid:"\u7F51\u683C\u89C6\u7A97",reference:"\u6A21\u677F\u5F15\u7528\u63A7\u4EF6",textwindow:"\u6587\u672C\u89C6\u7A97",keyhint:"\u6309\u952E\u63D0\u793A",animation:"\u754C\u9762\u52A8\u6548",fullscreen:"\u5168\u5C4F\u52A8\u6548"}),Wo=Object.freeze(["server-container","container","textbox","cursor","reference","grid","image","button","textwindow","keyhint","animation","fullscreen"]),Jo=Object.freeze({"server-container":null,container:[150,150],textbox:[100,40],image:[80,80],button:[150,50],cursor:[150,50],grid:[80,80],reference:[80,80],textwindow:[100,40],keyhint:[40,40],animation:[100,100],fullscreen:null}),Ko=Object.freeze({100001:"rect",100002:"circle",100003:"triangle",100004:"fourstar",100005:"fivestar",100006:"ring"});var Qo=Object.freeze({font:4294967295,bg:16777215,outline:858993459,image:4294967295});function Re(i,a,d){return{x:i.a*a+i.c*d+i.tx,y:i.b*a+i.d*d+i.ty}}function Ve(i){let a=i.a*i.d-i.b*i.c;return!Number.isFinite(a)||Math.abs(a)<1e-8?null:{a:i.d/a,b:-i.b/a,c:-i.c/a,d:i.a/a,tx:(i.c*i.ty-i.d*i.tx)/a,ty:(i.b*i.tx-i.a*i.ty)/a}}function Fa(i,a,d){let o=Re(i,a,d);return{a:i.a,b:i.b,c:i.c,d:i.d,tx:o.x,ty:o.y}}function jt(i,a,d){let o=(c,t)=>c<=0?0:!(t>0)||c>=t?1:c/t;return Math.min(o(i+d.width/2,d.featherX),o(d.width/2-i,d.featherX),o(a+d.height/2,d.featherY),o(d.height/2-a,d.featherY))}function Da(i){let a={children:[]},d=[a],o=[];for(let c of i||[]){if(!c||c.id==null)continue;let t=c.masks||[],u=t.map(f=>JSON.stringify([f.id,f.matrix,f.width,f.height,f.featherX,f.featherY])),l=0;for(;l<o.length&&l<u.length&&o[l]===u[l];)l++;d.length=l+1;for(let f=l;f<t.length;f++){let p={mask:t[f],children:[]};d.at(-1).children.push(p),d.push(p)}d.at(-1).children.push({item:c}),o=u}return a.children}function za(i,a){let d=Math.max(1,i.width),o=Math.max(1,i.height),c=i.getContext("2d"),t=c.createImageData(d,o),u=t.data;for(let l=0;l<o;l+=1){let f=a.height/2-(l+.5)*a.height/o;for(let p=0;p<d;p+=1){let h=-a.width/2+(p+.5)*a.width/d,x=Math.round(255*jt(h,f,a)),w=(l*d+p)*4;u[w]=255,u[w+1]=255,u[w+2]=255,u[w+3]=x}}return c.putImageData(t,0,0),i}var ft=class{constructor(a,{now:d=()=>performance.now(),onStatus:o=()=>{},timeout:c=3e4}={}){Object.assign(this,{host:a,now:d,onStatus:o,timeout:c}),this.entries=new Map,this.key="",this.disposed=!1,this.snapshot=null,this.raf=null,this.lastFrame=0,this.host.style.display="contents",this.badge=a.ownerDocument.createElement("span"),this.badge.dataset.uiVfxStatus="",Object.assign(this.badge.style,{position:"absolute",left:"5px",bottom:"5px",zIndex:"3",color:"#ffc18b",background:"#1a233ddd",padding:"2px 5px",font:"11px sans-serif",pointerEvents:"none",display:"none"}),a.append(this.badge),this.errors=new Map}report(a,d){d?this.errors.set(a,String(d)):this.errors.delete(a);let o=[...this.errors.values()];this.badge.style.display=o.length?"":"none",this.badge.textContent=o.length?e`动效加载失败(${o.length})`:"",this.badge.title=o.join(`
|
|
2
|
+
`),this.onStatus({errors:o})}time(){return(this.snapshot?.time||0)+(this.realtime&&!this.host.ownerDocument.hidden?Math.min(.25,Math.max(0,(this.now()-this.observedAt)/1e3)):0)}sync(a){if(this.disposed)return;let d=`${a?.audio?.sessionId||"editor"}:${a?.viewPlayerIndex||1}`;d!==this.key&&(this.reset(),this.key=d),this.snapshot=a,this.observedAt=this.now(),this.realtime=a?.running!==!1&&!a?.paused&&a?.clockMode!=="manual";let o=a?.running===!1?[]:a?.effects||[],c=new Set(o.map(l=>String(l.id)));for(let l of this.entries.keys())c.has(l)||this.remove(l);for(let l of this.errors.keys())c.has(l)||this.report(l,"");let t=0,u=0;for(let l of o){let f=String(l.id),p=ct(l.animationId,l.kind),h=this.entries.get(f);if(h&&(h.row.generation!==l.generation||h.asset!==p)&&this.remove(f),!p){this.report(f,`Unknown UI effect: ${l.animationId??""}`);continue}if(je(p,this.time()-l.startedAt)===null){this.remove(f),this.report(f,"");continue}let x=p.width*p.height*2;if(t+x>24*1024*1024||u>=12){this.remove(f),this.report(f,`UI effect ${p.id}: preview budget exceeded`);continue}t+=x,u++;let w=this.entries.get(f);if(!w)try{this.report(f,""),w=this.create(f,l,p)}catch(v){this.report(f,`UI effect ${p.id}: ${v.message}`);continue}w.row=l;try{this.position(w),this.advance(w)}catch(v){this.fail(w,v)}}this.schedule()}create(a,d,o){let c=this.host.ownerDocument;if(!globalThis.CSS?.supports("mix-blend-mode","plus-lighter"))throw new Error("C/T blending is unavailable");let t=c.createElement("video");t.muted=!0,t.playsInline=!0,t.preload="auto";let u=Math.min(1,1536/Math.max(o.width,o.height),Math.sqrt(1024*1024/(o.width*o.height))),l=["multiply","plus-lighter"].map(p=>{let h=c.createElement("canvas");return h.width=Math.max(1,Math.round(o.width*u)),h.height=Math.max(1,Math.round(o.height*u)),h.dataset.uiVfx=`${a}:${p}`,Object.assign(h.style,{position:"absolute",pointerEvents:"none",transformOrigin:"center",mixBlendMode:p,display:"none"}),h}),f={id:a,row:d,asset:o,video:t,planes:l,failed:!1,ready:!1,playing:!1,maskKey:"",mask:null};f.fail=()=>this.fail(f,new Error(`media load/decode failed (${t.error?.code||"unknown"})`)),f.loaded=()=>{if(!(this.disposed||f.failed||this.entries.get(a)!==f))try{if(t.videoWidth!==o.width*2||t.videoHeight!==o.height)throw new Error("Unexpected packed C/T dimensions");f.ready=!0,clearTimeout(f.timer),this.advance(f)}catch(p){this.fail(f,p)}},f.seeked=()=>{if(!f.failed&&this.entries.get(a)===f)try{this.draw(f)}catch(p){this.fail(f,p)}},t.addEventListener("error",f.fail),t.addEventListener("loadeddata",f.loaded),t.addEventListener("seeked",f.seeked),f.timer=setTimeout(()=>this.fail(f,new Error("media loading timed out")),this.timeout),this.entries.set(a,f),this.host.append(...l);try{t.src=lt(o.video)+(d.generation>1?"?retry=1":""),t.load()}catch(p){this.fail(f,p)}return f}position(a){let{asset:d,row:o,planes:c}=a,t=this.snapshot.canvasWidth,u=this.snapshot.canvasHeight,l=o.matrix;if(o.kind==="fullscreen"){let v=Math.max(t/d.width,u/d.height);l={a:v,b:0,c:0,d:v,tx:t/2,ty:u/2}}if(!l||![t,u,l.a,l.b,l.c,l.d,l.tx,l.ty].every(Number.isFinite)||t<=0||u<=0)throw new Error("Invalid effect geometry");for(let v of c)Object.assign(v.style,{left:`${(l.tx-d.width/2)/t*100}%`,top:`${(u-l.ty-d.height/2)/u*100}%`,width:`${d.width/t*100}%`,height:`${d.height/u*100}%`,transform:`matrix(${l.a},${-l.b},${-l.c},${l.d},0,0)`,zIndex:o.kind==="fullscreen"||o.layer==="BelowAllControls"?"-1":"1"});this.host.append(...c);let f=JSON.stringify([o.masks,l]);if(f===a.maskKey||(a.maskKey=f,a.mask=null,!o.masks?.length))return;let p=this.host.ownerDocument.createElement("canvas");p.width=c[0].width,p.height=c[0].height;let h=p.getContext("2d"),x=h.createImageData(p.width,p.height),w=o.masks.map(v=>({spec:v,inverse:Ve(v.matrix)}));for(let v=0;v<p.height;v++)for(let q=0;q<p.width;q++){let U=Re(l,(q+.5)*d.width/p.width-d.width/2,d.height/2-(v+.5)*d.height/p.height),y=1;for(let{spec:I,inverse:_}of w){if(!_){y=0;break}let $=Re(_,U.x,U.y);y*=jt($.x,$.y,I)}x.data[(v*p.width+q)*4+3]=Math.round(255*y)}h.putImageData(x,0,0),a.mask=p}advance(a){if(a.failed||!a.ready)return;let d=je(a.asset,this.time()-a.row.startedAt);if(d===null){a.video.pause();for(let t of a.planes)t.style.display="none";return}let o=a.video,c=this.realtime&&!this.host.ownerDocument.hidden;c||(o.pause(),a.playing=!1),!o.seeking&&Math.abs(o.currentTime-d)>(c?.18:1/60)&&(o.currentTime=d),c&&o.paused&&!a.playing&&(a.playing=!0,Promise.resolve(o.play()).then(()=>{a.playing=!1},t=>{a.playing=!1,t.name!=="AbortError"&&this.fail(a,t)})),o.seeking||this.draw(a)}draw(a){if(!(!a.ready||a.failed||a.video.readyState<2||je(a.asset,this.time()-a.row.startedAt)===null))for(let o=0;o<2;o++){let c=a.planes[o],t=c.getContext("2d");t.globalCompositeOperation="source-over",t.clearRect(0,0,c.width,c.height),t.drawImage(a.video,o===0?a.asset.width:0,0,a.asset.width,a.asset.height,0,0,c.width,c.height),a.mask&&(t.globalCompositeOperation="destination-in",t.drawImage(a.mask,0,0),t.globalCompositeOperation="source-over"),c.style.display=""}}fail(a,d){if(!(this.disposed||a.failed||this.entries.get(a.id)!==a)){a.failed=!0,this.releaseMedia(a);for(let o of a.planes)o.style.display="none";this.report(a.id,`UI effect ${a.asset.id}: ${d.message}`)}}schedule(){this.raf!==null||this.disposed||!this.entries.size||(this.raf=requestAnimationFrame(()=>{if(this.raf=null,this.now()-this.lastFrame>=1e3/30){this.lastFrame=this.now();for(let a of this.entries.values())try{this.advance(a)}catch(d){this.fail(a,d)}}this.realtime&&[...this.entries.values()].some(a=>!a.failed&&je(a.asset,this.time()-a.row.startedAt)!==null)&&this.schedule()}))}releaseMedia(a){clearTimeout(a.timer);let d=a.video;d.removeEventListener("error",a.fail),d.removeEventListener("loadeddata",a.loaded),d.removeEventListener("seeked",a.seeked),d.pause(),d.removeAttribute("src"),d.load()}remove(a){let d=this.entries.get(a);if(d){this.entries.delete(a),this.releaseMedia(d);for(let o of d.planes)o.remove(),o.width=o.height=1;d.mask=null,this.report(a,"")}}reset(){this.raf!==null&&cancelAnimationFrame(this.raf),this.raf=null;for(let a of this.entries.keys())this.remove(a);this.errors.clear(),this.report("",""),this.snapshot=null}destroy(){this.disposed=!0,this.reset(),this.badge.remove()}};var Rt="qxqy-ui-vfx-preview";function _a(i){let{createElement:a,useEffect:d,useRef:o,useState:c}=i;function t({boxes:l,canvasWidth:f,canvasHeight:p}){let h=o(null),x=o(null);return x.current={boxes:l,canvasWidth:f,canvasHeight:p},d(()=>{let w=new ft(h.current);h.current.parentElement.style.isolation="isolate";let v=performance.now(),q=new Map,U=$=>{let A=q.get($.detail.id);A&&(A.stopped=$.detail.stop,A.startedAt=(performance.now()-v)/1e3,A.generation++)},y=h.current.closest(".qxsim")||h.current.parentElement;y.addEventListener(Rt,U);let I=()=>{let{boxes:$,canvasWidth:A,canvasHeight:P}=x.current,O=(performance.now()-v)/1e3,T=[],W=new Set;for(let M of $){if(!["animation","fullscreen"].includes(M.kind)||M.animationId==null||String(M.animationId).trim()===""||Number(M.animationId)===0)continue;W.add(M.id);let H=q.get(M.id);(!H||H.animationId!==M.animationId)&&(H={animationId:M.animationId,startedAt:O,generation:(H?.generation||0)+1,stopped:!1},q.set(M.id,H)),!H.stopped&&M.visibleInHierarchy!==!1&&M.visible!==!1&&T.push({...H,id:M.id,kind:M.kind,layer:M.layer,matrix:Fa(M.renderMatrix,M.centerX,M.centerY),masks:M.masks||[]})}for(let M of q.keys())W.has(M)||q.delete(M);w.sync({effects:T,time:O,canvasWidth:A,canvasHeight:P,running:!0})},_=setInterval(I,50);return I(),()=>{clearInterval(_),y.removeEventListener(Rt,U),w.destroy()}},[]),a("div",{ref:h,style:{display:"contents"}})}function u({item:l,commit:f}){let p=o(null),[h,x]=c(""),[w,v]=c(!1),[q,U]=c(""),y=ot()==="en",I=ct(l.animationId,l.kind),_=Gt.filter(A=>A.scope===(l.kind==="fullscreen"?"screen":"ui")&&`${A.id} ${A.name} ${A.nameEn}`.toLowerCase().includes(h.toLowerCase())),$=A=>p.current.dispatchEvent(new CustomEvent(Rt,{bubbles:!0,detail:{id:l.id,stop:A}}));return a("div",{ref:p,className:"qxsim-section-body","data-ui-vfx-picker":""},a("strong",null,I?`${I.id} \xB7 ${y?I.nameEn:I.name}`:e("\u8BF7\u9009\u62E9\u52A8\u6548\u7D20\u6750")),a("p",{className:"qxsim-muted"},e("\u753B\u5E03\u9884\u89C8\u9759\u97F3\uFF1B\u52A0\u8F7D\u5931\u8D25\u53EA\u8DF3\u8FC7\u5F53\u524D\u52A8\u6548\u3002")),a("div",{style:{display:"flex",gap:6,flexWrap:"wrap"}},a("button",{className:"qxsim-action",onClick:()=>v(!w)},e("\u9009\u62E9\u7D20\u6750")),a("button",{className:"qxsim-action",onClick:()=>$(!1)},e("\u91CD\u64AD / \u91CD\u8BD5")),a("button",{className:"qxsim-action",onClick:()=>$(!0)},e("\u505C\u6B62\u9884\u89C8"))),q?a("p",{role:"status"},q):null,w?a("div",null,a("input",{value:h,placeholder:e("\u641C\u7D22 ID / \u540D\u79F0"),"aria-label":e("\u641C\u7D22\u52A8\u6548"),onChange:A=>x(A.target.value),style:{width:"100%",margin:"8px 0"}}),a("div",{style:{maxHeight:310,overflow:"auto",display:"grid",gridTemplateColumns:"1fr 1fr",gap:5}},_.map(A=>a("button",{key:A.id,className:"qxsim-action",title:y?A.nameEn:A.name,style:{height:"auto",minHeight:80,whiteSpace:"normal"},onClick:()=>{U(""),Promise.resolve().then(()=>f("animationId",String(A.id))).then(()=>v(!1)).catch(P=>U(P.message))}},a("img",{src:lt(A.icon),loading:"lazy",alt:"",width:48,height:48,style:{objectFit:"contain",display:"block",margin:"auto"},onError:P=>{P.currentTarget.style.visibility="hidden"}}),a("div",null,A.id),a("small",null,y?A.nameEn:A.name))))):null)}return{Effects:t,Picker:u}}var so=i=>`#${(Number(i)&16777215).toString(16).padStart(6,"0").toUpperCase()}`,Ba=i=>String(Math.round(i/255*100));function Ga(i){let a=i.createElement;return function({field:o,commit:c}){let t=so(o.value),u=Number(o.value)>>>24,l=Ba(u),[f,p]=i.useState(t),[h,x]=i.useState(l),w=i.useRef(!1),[v,q]=i.useState(""),[U,y]=i.useState("");i.useEffect(()=>{p(t),q("")},[t]),i.useEffect(()=>{w.current||(x(l),y(""))},[l]);function I(P){let O=P.trim().replace(/^#/,"");if(!/^[0-9a-f]{6}$/i.test(O)){q(e("\u8BF7\u8F93\u5165\u516D\u4F4D\u989C\u8272\uFF0C\u4F8B\u5982 #FF8800"));return}let T=`#${O.toUpperCase()}`;p(T),q(""),c(o.key,W=>(Number(W)&4278190080|parseInt(O,16))>>>0)}function _(P){let O=Number(P);if(!String(P).trim()||!Number.isInteger(O)||O<0||O>100){y(e("\u900F\u660E\u5EA6\u8BF7\u8F93\u5165 0\u2013100 \u7684\u6574\u6570"));return}let T=Math.round(O/100*255);w.current=!1,x(Ba(T)),y(""),c(o.key,W=>(T<<24|Number(W)&16777215)>>>0)}let $=e("Alpha\uFF1A0% \u5B8C\u5168\u900F\u660E\uFF0C100% \u5B8C\u5168\u4E0D\u900F\u660E"),A=h.trim()&&Number.isFinite(Number(h))?Math.max(0,Math.min(100,Number(h))):Number(l);return a("div",{className:"qxsim-color-editor",role:"group","aria-label":e`${e(o.label)}与透明度`},a("div",{className:"qxsim-field"},a("span",{className:"qxsim-field-label"},e(o.label)),a("span",{className:"qxsim-color-row"},a("span",{className:"qxsim-color-swatch",title:e("\u6253\u5F00\u53D6\u8272\u5668")},a("input",{type:"color",value:/^#[0-9a-f]{6}$/i.test(f)?f:t,disabled:!!o.readonly,"aria-label":e`${e(o.label)}取色器`,onInput:P=>I(P.target.value)})),a("input",{type:"text",value:f,spellCheck:!1,disabled:!!o.readonly,placeholder:"#RRGGBB","aria-label":`${e(o.label)} RGB`,"aria-invalid":!!v,onChange:P=>{p(P.target.value),q("")},onBlur:()=>I(f),onKeyDown:P=>{P.key==="Enter"&&P.currentTarget.blur(),P.key==="Escape"&&(p(t),q(""))}})),v?a("small",{className:"qxsim-color-error",role:"alert"},v):null),a("div",{className:"qxsim-field"},a("span",{className:"qxsim-field-label",title:$},e("\u900F\u660E\u5EA6")),a("span",{className:"qxsim-alpha-row"},a("input",{type:"range",min:0,max:100,step:1,value:A,disabled:!!o.readonly,title:$,"aria-label":e`${e(o.label)}透明度滑块`,onInput:P=>_(P.target.value)}),a("span",{className:"qxsim-alpha-value"},a("input",{type:"number",min:0,max:100,step:1,inputMode:"numeric",value:h,disabled:!!o.readonly,title:$,"aria-label":e`${e(o.label)}透明度`,"aria-invalid":!!U,onChange:P=>{w.current=!0,x(P.target.value),y("")},onBlur:()=>{w.current&&_(h)},onKeyDown:P=>{P.key==="Enter"&&P.currentTarget.blur(),P.key==="Escape"&&(w.current=!1,x(l),y(""))}}),a("span",{"aria-hidden":!0},"%"))),U?a("small",{className:"qxsim-color-error",role:"alert"},U):null))}}function ja(i,a,d){let o=i.renderMatrix;if(!o)return{};let c=o.a*i.centerX+o.c*i.centerY+o.tx,t=o.b*i.centerX+o.d*i.centerY+o.ty;return{left:`${(c-i.width/2)/a*100}%`,bottom:`${(t-i.height/2)/d*100}%`,width:`${i.width/a*100}%`,height:`${i.height/d*100}%`,transform:`matrix(${o.a},${-o.b},${-o.c},${o.d},0,0)`}}var Pe='"Microsoft YaHei UI","Microsoft YaHei","HarmonyOS Sans SC","Noto Sans CJK SC",sans-serif',Vt="/qxqy-font";var Ht=i=>`QxqyLocal_${i}`,Ra=i=>i?`"${Ht(i)}",${Pe}`:Pe;var yn=Object.freeze({aqua:"00ffff",black:"000000",blue:"0000ff",brown:"a52a2a",cyan:"00ffff",darkblue:"0000a0",fuchsia:"ff00ff",green:"008000",grey:"808080",lightblue:"add8e6",lime:"00ff00",magenta:"ff00ff",maroon:"800000",navy:"000080",olive:"808000",orange:"ffa500",purple:"800080",red:"ff0000",silver:"c0c0c0",teal:"008080",white:"ffffff",yellow:"ffff00"});function Va(i,a){return`${i.italic?"italic ":""}${i.bold?"bold ":""}${i.fontSize}px ${a}`}function Ha(i){let a=Number(i)>>>0;return`rgba(${a>>>16&255},${a>>>8&255},${a&255},${(a>>>24)/255})`}function ro(i,a,d,o,c=Pe){let t=a.textLayout;if(!t?.richLines||d<=0||o<=0)return;let u=a.horizontalAlignment==="Right"?1:a.horizontalAlignment==="Middle"?.5:0,l=a.verticalAlignment==="Bottom"?1:a.verticalAlignment==="Middle"?.5:0,f=a.kind==="textwindow"?a.scroll:null,p=t.visibleLineCount??t.richLines.length,h=t.visibleContentHeight??t.contentHeight,x=a.kind==="textwindow"&&t.contentHeight>o?-(f?.offset||0):l*(o-h);i.save(),i.beginPath(),i.rect(0,0,d,o),i.clip(),i.textAlign="left",i.textBaseline="alphabetic",i.lineJoin="round",i.strokeStyle=Ha(a.outlineColor??4278190080);for(let w=0;w<p;w++){let v=t.richLines[w],q=x+v.top;if(q+v.height<0||q>o)continue;let U=2+u*(t.textWidth-v.width);for(let y of v.runs)i.font=Va(y,c||Pe),i.fillStyle=Ha(y.color??a.fontColor??4294967295),a.enableOutline&&(i.lineWidth=Math.max(2,y.fontSize*.12),i.strokeText(y.text,U+y.x,q+v.baseline)),i.fillText(y.text,U+y.x,q+v.baseline)}i.restore()}function Ya(i,a,d,o,c,t=1){let u=Math.min(Math.max(1,t),4096/Math.max(1,d,o)),l=Math.max(1,Math.ceil(d*u)),f=Math.max(1,Math.ceil(o*u));i.width!==l&&(i.width=l),i.height!==f&&(i.height=f);let p=i.getContext("2d");p.setTransform(1,0,0,1,0,0),p.clearRect(0,0,l,f),p.save(),p.scale(l/(d>0?d:1),f/(o>0?o:1)),ro(p,a,d,o,c),p.restore()}function Xa(i){return function({item:d,zoom:o,fontFamily:c}){let t=i.useRef(null),u=!!d.textLayout?.richLines;return i.useLayoutEffect(()=>{u&&t.current&&Ya(t.current,d,d.width,d.height,c,Math.min(2,window.devicePixelRatio||1)*o)},[d,o,c,u]),u?i.createElement("canvas",{ref:t,className:"qxsim-rich-text",role:"img","aria-label":d.textLayout.lines.join(`
|
|
3
|
+
`),style:{position:"absolute",left:0,top:0,width:"100%",height:"100%"}}):i.createElement("span",{style:lo(d,o,c)},co(d))}}function co(i){let a=i.textLayout;return a?a.lines.slice(0,a.visibleLineCount??a.lines.length).join(`
|
|
4
|
+
`):i.text??""}function lo(i,a,d){let o=i.textLayout;return{flex:"0 0 auto",width:`${(o?.textWidth??Math.max(0,i.width-4))*a}px`,margin:`0 ${2*a}px`,whiteSpace:"pre",fontFamily:d||Pe,fontSize:`${(o?.fontSize??i.fontSize??20)*a}px`,lineHeight:`${(o?.lineHeight??(i.fontSize??20)*1.2)*a}px`,textAlign:i.horizontalAlignment==="Right"?"right":i.horizontalAlignment==="Middle"?"center":"left"}}function Wa(i){let a=i.createElement;function d({mask:o,canvasWidth:c,canvasHeight:t,children:u}){let{width:l,height:f,featherX:p,featherY:h,matrix:x}=o,w=i.useMemo(()=>{if(!(l>0&&f>0)||!(p>0||h>0))return"";let _=document.createElement("canvas"),$=Math.min(2,2048/Math.max(l,f));return _.width=Math.max(1,Math.ceil(l*$)),_.height=Math.max(1,Math.ceil(f*$)),za(_,o),_.toDataURL("image/png")},[l,f,p,h]);if(!(l>0&&f>0)||!Ve(x))return null;let v=x.tx-x.a*l/2+x.c*f/2,q=t-x.ty+x.b*l/2-x.d*f/2,U=`matrix(${x.a} ${-x.b} ${-x.c} ${x.d} ${v} ${q})`,y=w?`<image width="${l}" height="${f}" preserveAspectRatio="none" href="${w}" transform="${U}"/>`:`<rect width="${l}" height="${f}" fill="white" transform="${U}"/>`,I=`<svg xmlns="http://www.w3.org/2000/svg" width="${c}" height="${t}" viewBox="0 0 ${c} ${t}">${y}</svg>`;return a("div",{className:"qxsim-mask-group","data-mask-id":o.id,style:{position:"absolute",inset:0,pointerEvents:"none",maskImage:`url("data:image/svg+xml,${encodeURIComponent(I)}")`,maskMode:"alpha",maskSize:"100% 100%",maskRepeat:"no-repeat"}},u)}return function({boxes:c,canvasWidth:t,canvasHeight:u,renderControl:l}){let f=p=>p.map(h=>h.item?l(h.item):a(d,{key:`mask:${h.mask.id}`,mask:h.mask,canvasWidth:t,canvasHeight:u},f(h.children)));return f(Da(c))}}function pt(i){let a=Number(i);return Number.isSafeInteger(a)&&a>=1073741824&&a<=1077936127}var Yt;function Ja(){return Yt||=po().catch(i=>{throw Yt=null,i}),Yt}async function po(){let i={cache:"no-store",credentials:"same-origin",mode:"same-origin",signal:AbortSignal.timeout(1e4)},a=await fetch(`${Vt}/manifest`,i);if(!a.ok)throw new Error("\u65E0\u6CD5\u8BFB\u53D6\u672C\u5730\u5B57\u4F53\u914D\u7F6E\uFF0C\u8BF7\u68C0\u67E5\u5BBF\u4E3B\u914D\u7F6E\u53CA\u672C\u673A\u8FDE\u63A5");let{id:d,scope:o="all"}=await a.json();if(d===null)return null;if(typeof d!="string"||!/^[a-f0-9]{64}$/.test(d))throw new Error("\u672C\u5730\u5B57\u4F53\u6807\u8BC6\u65E0\u6548");let c=await fetch(`${Vt}/file/${d}`,i);if(!c.ok)throw new Error("\u672C\u5730\u5B57\u4F53\u52A0\u8F7D\u5931\u8D25\uFF0C\u8BF7\u91CD\u542F\u5BBF\u4E3B\u5E76\u5237\u65B0\u9875\u9762");let t=await c.arrayBuffer();if(!t.byteLength||t.byteLength>33554432)throw new Error("\u672C\u5730\u5B57\u4F53\u5927\u5C0F\u65E0\u6548");let u=new FontFace(Ht(d),t);await u.load(),document.fonts.add(u);let l=Ra(d),f="qxqy-local-font-style",p=document.getElementById(f);return o==="game"?p?.remove():(p||(p=document.createElement("style"),p.id=f,document.head.appendChild(p)),p.textContent=`[data-qxqy-font-ui], [data-qxqy-font-ui] * { font-family: ${l} !important; }`),l}var uo="/qxqy-font/settings";async function Ka(i){let a=await fetch(uo,{credentials:"same-origin",mode:"same-origin",cache:"no-store",signal:AbortSignal.timeout(1e4),...i?{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(i)}:{}});if(a.status===404)throw new Error("\u5F53\u524D\u540E\u53F0\u5C1A\u672A\u52A0\u8F7D\u5B57\u4F53\u8BBE\u7F6E\u529F\u80FD\uFF0C\u8BF7\u91CD\u542F Web \u6216 Harness \u5BBF\u4E3B\u540E\u91CD\u8BD5\u3002");if(!a.ok)throw new Error(await a.text()||e("\u65E0\u6CD5\u8BFB\u53D6\u5B57\u4F53\u8BBE\u7F6E"));return a.json()}function Qa(i){let a=i.createElement;return function({onClose:o}){let[c,t]=i.useState(null),[u,l]=i.useState("auto"),[f,p]=i.useState(""),[h,x]=i.useState("all"),[w,v]=i.useState(!1),[q,U]=i.useState(""),[y,I]=i.useState(""),[_,$]=i.useState(0);i.useEffect(()=>{let O=!0;return U(""),Ka().then(T=>{O&&(t(T),l(T.mode),x(T.scope||"all"),p(T.environmentPath||T.path||T.active.path||T.defaultPaths[0]||""))},T=>{O&&U(T.message)}),()=>{O=!1}},[_]);async function A(O){O.preventDefault(),v(!0),U(""),I("");try{let T=await Ka(P?{scope:h}:{mode:u,path:f,scope:h});t(T);let W=!P&&u==="auto"?T.nextFont.path?e`找到字体:${T.nextFont.path}。`:e("\u9ED8\u8BA4\u4F4D\u7F6E\u672A\u627E\u5230\u5B57\u4F53\uFF0C\u5C06\u4F7F\u7528\u7CFB\u7EDF\u5B57\u4F53\u3002"):"";I(e`已保存。${W}重启 Web、MCP 或 Harness 宿主后,刷新编辑器及试玩页生效。`)}catch(T){U(T.message)}finally{v(!1)}}let P=!!c?.environmentPath;return a("div",{className:"qxsim-save-overlay",onKeyDown:O=>{O.key==="Escape"&&(O.stopPropagation(),w||o())}},a("form",{className:"qxsim-save-dialog qxsim-font-dialog",role:"dialog","aria-modal":!0,"aria-label":e("\u5B57\u4F53\u8BBE\u7F6E"),onSubmit:A,style:{width:"min(680px, 94%)",maxHeight:"90%",overflow:"auto"}},a("h2",null,e("\u5B57\u4F53\u8BBE\u7F6E")),a("p",null,e("\u81EA\u5B9A\u4E49\u5B57\u4F53\u53EF\u7528\u4E8E\u6E38\u620F\u5185\u6587\u672C\u6216\u6574\u4F53 UI\u3002\u8BBE\u7F6E\u4EC5\u4FDD\u5B58\u5728\u672C\u673A\uFF0C\u91CD\u542F\u5BBF\u4E3B\u540E\u751F\u6548\u3002")),c?a(i.Fragment,null,a("p",{style:{overflowWrap:"anywhere"}},e`当前字体:${c.active.path||e("\u7CFB\u7EDF\u5B57\u4F53")}`),P?a("p",{role:"status"},e("\u5B57\u4F53\u6587\u4EF6\u7531\u73AF\u5883\u53D8\u91CF QXQY_FONT_PATH \u6307\u5B9A\uFF0C\u4ECD\u53EF\u8C03\u6574\u5E94\u7528\u8303\u56F4\u3002")):null,c.error?a("p",{role:"alert"},e(c.error)):null,a("label",{className:"qxsim-field"},e("\u5B57\u4F53\u6765\u6E90"),a("select",{autoFocus:!0,"aria-label":e("\u5B57\u4F53\u6765\u6E90"),value:u,disabled:w||P,onChange:O=>{l(O.target.value),I("")}},a("option",{value:"auto"},e("\u81EA\u52A8\u5C1D\u8BD5\u539F\u795E\u7684\u9ED8\u8BA4\u5B89\u88C5\u4F4D\u7F6E")),a("option",{value:"custom"},e("\u6307\u5B9A\u672C\u673A\u5B57\u4F53\u6587\u4EF6")),a("option",{value:"system"},e("\u4F7F\u7528\u7CFB\u7EDF\u5B57\u4F53")))),u==="custom"||P?a("label",{className:"qxsim-field"},e("\u5B57\u4F53\u6587\u4EF6\u8DEF\u5F84"),a("input",{type:"text","aria-label":e("\u5B57\u4F53\u6587\u4EF6\u8DEF\u5F84"),value:f,required:u==="custom",disabled:w||P,spellCheck:!1,placeholder:c.defaultPaths[0]||"/path/to/font.ttf",onChange:O=>{p(O.target.value),I("")}}),a("small",null,e("\u586B\u5199 TTF / OTF \u7684\u7EDD\u5BF9\u8DEF\u5F84\uFF0C\u6700\u5927 32 MiB\uFF1B\u53EF\u4EE5\u76F4\u63A5\u7C98\u8D34\u5E26\u5F15\u53F7\u7684 Windows \u8DEF\u5F84\u3002"))):null,u==="auto"&&!P?a("div",null,a("p",null,e("\u6309\u987A\u5E8F\u5C1D\u8BD5\u4EE5\u4E0B\u4F4D\u7F6E\uFF1B\u90FD\u672A\u627E\u5230\u65F6\u4F7F\u7528\u7CFB\u7EDF\u5B57\u4F53\u3002\u5B89\u88C5\u5728\u5176\u4ED6\u76D8\u7B26\u65F6\u8BF7\u9009\u62E9\u201C\u6307\u5B9A\u672C\u673A\u5B57\u4F53\u6587\u4EF6\u201D\u3002")),c.defaultPaths.length?a("ul",{style:{paddingLeft:20,overflowWrap:"anywhere"}},c.defaultPaths.map(O=>a("li",{key:O},O))):a("p",null,e("\u5F53\u524D\u7CFB\u7EDF\u4E0D\u81EA\u52A8\u67E5\u627E\uFF0C\u8BF7\u6307\u5B9A\u5B57\u4F53\u6587\u4EF6\u3002"))):null,a("label",{className:"qxsim-field"},e("\u5E94\u7528\u8303\u56F4"),a("select",{"aria-label":e("\u5E94\u7528\u8303\u56F4"),value:h,disabled:w,onChange:O=>{x(O.target.value),I("")}},a("option",{value:"game"},e("\u4EC5\u6E38\u620F\u5185\u6587\u672C")),a("option",{value:"all"},e("\u6574\u4F53 UI"))),a("small",null,e("\u4EC5\u6E38\u620F\u5185\u6587\u672C\uFF1A\u7528\u4E8E\u753B\u5E03\u3001\u8BD5\u73A9\u548C\u622A\u56FE\uFF1B\u6574\u4F53 UI\uFF1A\u540C\u65F6\u66FF\u6362\u5DE5\u5177\u680F\u3001\u9762\u677F\u3001\u4EE3\u7801\u548C\u65E5\u5FD7\u5B57\u4F53\u3002"))),c.restartRequired&&!y?a("p",{role:"status"},e("\u6709\u5DF2\u4FDD\u5B58\u7684\u5B57\u4F53\u8BBE\u7F6E\uFF0C\u91CD\u542F\u5BBF\u4E3B\u5E76\u5237\u65B0\u9875\u9762\u540E\u751F\u6548\u3002")):null):q?null:a("p",null,e("\u6B63\u5728\u8BFB\u53D6\u8BBE\u7F6E\u2026")),q?a("p",{role:"alert"},e(q)):null,q&&!c?a("button",{type:"button",className:"qxsim-action",onClick:()=>$(O=>O+1)},e("\u91CD\u8BD5")):null,y?a("p",{role:"status",style:{overflowWrap:"anywhere"}},y):null,a("footer",null,a("button",{type:"button",className:"qxsim-action",disabled:w,onClick:o},e("\u5173\u95ED")),a("button",{type:"submit",className:"qxsim-action primary",disabled:w||!c},w?e("\u4FDD\u5B58\u4E2D\u2026"):e("\u4FDD\u5B58\u8BBE\u7F6E")))))}}var Xt="https://github.com/1475505/miliastra-beyond-simulator";function Za(i){let a=i.createElement,d=nt(i);function o({title:c,children:t,onClose:u}){let l=i.useRef(null);return i.useEffect(()=>{let f=document.activeElement;return l.current.showModal(),()=>{l.current?.close(),f?.focus?.()}},[]),a("dialog",{ref:l,className:"qxsim-modal","aria-label":c,onCancel:f=>{f.preventDefault(),u()}},a("h2",null,c),t,a("footer",null,a("button",{className:"qxsim-action",onClick:u},e("\u5173\u95ED"))))}return function({request:t,version:u}){d();let[l,f]=i.useState(""),[p,h]=i.useState(!1),[x,w]=i.useState(null),[v,q]=i.useState("");async function U(){f("updates"),h(!0),q(""),w(null);try{w(await t("updates"))}catch(I){q(/^unknown (?:editor )?action\b/i.test(I?.message||"")?"\u5F53\u524D\u540E\u53F0\u5C1A\u672A\u52A0\u8F7D\u68C0\u67E5\u66F4\u65B0\u529F\u80FD\uFF0C\u8BF7\u91CD\u542F Web \u6216 Harness \u5BBF\u4E3B\u540E\u91CD\u8BD5\u3002":"\u68C0\u67E5\u66F4\u65B0\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5\u540E\u91CD\u8BD5\u3002")}finally{h(!1)}}let y={available:e("\u53D1\u73B0\u65B0\u7248\u672C"),current:e("\u5F53\u524D\u5DF2\u662F\u6700\u65B0\u7248\u672C"),ahead:e("\u5F53\u524D\u7248\u672C\u6BD4\u516C\u5F00\u7248\u672C\u66F4\u65B0"),unavailable:e("\u6682\u672A\u627E\u5230\u6B64\u5B89\u88C5\u5305\u7684\u6B63\u5F0F\u7248\u672C")};return a(i.Fragment,null,a("footer",{className:"qxsim-footer"},u?a("span",{className:"qxsim-muted"},`v${u}`):null,a("span",{className:"spacer"}),a("button",{onClick:U,disabled:p},p?e("\u6B63\u5728\u68C0\u67E5\u66F4\u65B0\u2026"):e("\u68C0\u67E5\u66F4\u65B0")),a("a",{href:"https://space.bilibili.com/23358791",target:"_blank",rel:"noreferrer"},e("\u4F5C\u8005B\u7AD9")),a("button",{onClick:()=>f("contact")},e("\u8054\u7CFB\u4F5C\u8005"))),l==="contact"?a(o,{title:e("\u8054\u7CFB\u4F5C\u8005"),onClose:()=>f("")},a("div",null,a("p",null,e("QQ\u7FA4\u53F71007538100")),a("p",null,e("\u4F5C\u8005\u90AE\u7BB1 "),a("a",{href:"mailto:725230880@qq.com"},"725230880@qq.com")),a("p",null,e("\u5F00\u6E90\u4ED3\u5E93 "),a("a",{href:Xt,target:"_blank",rel:"noreferrer"},Xt)),a("p",{className:"qxsim-muted"},e("\u611F\u8C22@xiaomol444\u63D0\u4F9B\u7684\u56FE\u7247\u3001\u97F3\u6548\u3001\u754C\u9762\u52A8\u6548\u7D20\u6750")))):null,l==="updates"?a(o,{title:e("\u68C0\u67E5\u66F4\u65B0"),onClose:()=>f("")},a("div",{role:"status"},p?a("p",null,e("\u6B63\u5728\u68C0\u67E5\u66F4\u65B0\u2026")):null,v?a("p",{role:"alert"},e(v)):null,!p&&!v&&x?a(i.Fragment,null,a("p",null,e(y[x.status])),a("p",null,e`当前版本:${x.currentVersion}`),x.latestVersion?a("p",null,e`公开版本:${x.latestVersion}`):null,a("p",null,e("\u66F4\u65B0\u540E\u8BF7\u91CD\u542F\u5BBF\u4E3B\u5E76\u5237\u65B0\u7F16\u8F91\u5668\u4E0E\u8BD5\u73A9\u9875\u3002")),a("a",{href:x.url,target:"_blank",rel:"noreferrer"},e("\u67E5\u770B\u66F4\u65B0\u8BF4\u660E")),x.status==="available"&&x.downloadUrl?a("p",null,a("a",{href:x.downloadUrl,target:"_blank",rel:"noreferrer"},e("\u4E0B\u8F7D\u66F4\u65B0\u5305"))):null):null,v?a(i.Fragment,null,a("button",{className:"qxsim-action",onClick:U,disabled:p},e("\u91CD\u8BD5")),a("p",null,a("a",{href:Xt+"/releases",target:"_blank",rel:"noreferrer"},e("\u67E5\u770B\u66F4\u65B0\u8BF4\u660E")))):null)):null)}}var ei=`
|
|
5
|
+
.qxsim-modal.qxsim-export-dialog{width:min(1080px,94vw);max-width:94vw;padding:0;overflow:hidden}
|
|
6
|
+
.qxsim-export-dialog[open]{display:flex;flex-direction:column;max-height:90vh}
|
|
7
|
+
.qxsim-export-dialog header{padding:18px 20px;border-bottom:1px solid var(--line);flex-shrink:0}
|
|
8
|
+
.qxsim-export-dialog h2{margin:0 0 6px}.qxsim-export-dialog p{margin:4px 0;color:var(--muted)}
|
|
9
|
+
.qxsim-export-body{display:grid;grid-template-columns:minmax(220px,36%) minmax(0,1fr);min-height:0;max-height:52vh;overflow:hidden}
|
|
10
|
+
.qxsim-export-list{min-height:0;overflow:auto;border-right:1px solid var(--line);padding:8px}
|
|
11
|
+
.qxsim-export-row{display:flex;align-items:center;gap:8px;min-height:42px;padding:5px 8px;border:1px solid transparent;border-radius:5px}
|
|
12
|
+
.qxsim-export-row.active{background:var(--hover);border-color:var(--blue)}.qxsim-export-row input{flex:0 0 auto;accent-color:var(--blue)}
|
|
13
|
+
.qxsim-export-row button{min-width:0;flex:1;border:0;background:transparent;text-align:left;padding:0}
|
|
14
|
+
.qxsim-export-row strong,.qxsim-export-row small{display:block;overflow-wrap:anywhere}.qxsim-export-row small{color:var(--muted);font-size:10px}
|
|
15
|
+
.qxsim-export-preview{display:flex;flex-direction:column;min-width:0;min-height:0;padding:12px;overflow:hidden;background:var(--workspace)}
|
|
16
|
+
.qxsim-export-canvas{display:flex;align-items:center;justify-content:center;flex:1;height:min(32vh,360px);min-height:40px;width:100%;margin-top:8px}
|
|
17
|
+
.qxsim-export-preview .qxsim-stage{max-width:100%;flex-shrink:0}
|
|
18
|
+
.qxsim-export-dialog footer{flex-shrink:0;margin:0;padding:12px 20px;display:flex;align-items:center;flex-wrap:wrap;gap:8px;border-top:1px solid var(--line)}
|
|
19
|
+
.qxsim-export-dialog .spacer{flex:1}.qxsim-export-options{display:flex;flex-shrink:0;flex-wrap:wrap;gap:12px;padding:10px 20px}
|
|
20
|
+
.qxsim-export-error{color:var(--danger);padding:8px 20px;overflow-wrap:anywhere}
|
|
21
|
+
.qxsim-export-warnings{padding:0 20px;font-size:11px;max-height:76px;overflow:auto;flex-shrink:0}.qxsim-export-warnings p{margin:4px 0}
|
|
22
|
+
.qxsim-export-single{margin-top:8px;width:100%}
|
|
23
|
+
@media(max-width:680px){.qxsim-export-body{grid-template-columns:1fr;overflow:auto}.qxsim-export-list{max-height:22vh;border-right:0}.qxsim-export-preview{min-height:180px}}
|
|
24
|
+
`;function ti(i){let a=i.createElement;return function({sessionId:o,api:c,initialId:t,onExport:u,onClose:l,renderPreview:f}){let p=i.useRef(null),[h,x]=i.useState(null),[w,v]=i.useState([]),[q,U]=i.useState(""),[y,I]=i.useState(null),[_,$]=i.useState(!0),[A,P]=i.useState(!1),[O,T]=i.useState(""),W=i.useRef({busy:A,onClose:l});W.current={busy:A,onClose:l},i.useEffect(()=>{let L=!0,J=p.current,K=document.activeElement,te=oe=>{oe.preventDefault(),W.current.busy||W.current.onClose()},fe=oe=>{oe.key==="Escape"&&(oe.stopPropagation(),te(oe))};return J.addEventListener("cancel",te),J.addEventListener("keydown",fe),J.showModal(),c(o,"export-list").then(oe=>{if(!L)return;x(oe);let de=oe.rows.some(Fe=>Fe.id===t)?t:oe.rows[0]?.id||"";U(de),v(t&&de===t?[de]:[])},oe=>{L&&T(oe.message)}),()=>{L=!1,J.removeEventListener("cancel",te),J.removeEventListener("keydown",fe),J.close(),K?.isConnected&&K.focus()}},[o,c,t]),i.useEffect(()=>{let L=!0;if(I(null),!h||!q)return;let J=setTimeout(()=>{c(o,"export-preview",{controlIds:[q],includeScripts:_,expectedRevision:h.revision}).then(K=>{L&&(I(K),T(""))},K=>{L&&T(K.message)})},100);return()=>{L=!1,clearTimeout(J)}},[h,q,_,o,c]);let M=h?.rows||[],H=new Set(w),se=M.filter(L=>H.has(L.id)&&!L.ancestorIds.some(J=>H.has(J)));function le(L,J){U(L.id),v(K=>J?[...K.filter(te=>te!==L.id&&!M.find(fe=>fe.id===te)?.ancestorIds.includes(L.id)),L.id]:K.filter(te=>te!==L.id))}async function re(){P(!0),T("");try{await u({controlIds:se.map(L=>L.id),includeScripts:_,expectedRevision:h.revision}),l()}catch(L){T(L.message)}finally{P(!1)}}return a("dialog",{ref:p,className:"qxsim-modal qxsim-export-dialog","aria-label":e("\u90E8\u5206\u7EC4\u5408\u5BFC\u51FA")},a("header",null,a("h2",null,e("\u90E8\u5206\u7EC4\u5408\u5BFC\u51FA")),a("p",null,e("\u52FE\u9009\u5BA2\u6237\u7AEF\u63A7\u4EF6\u53CA\u5176\u5B50\u6811\uFF0C\u7EC4\u5408\u4E3A\u4E00\u4E2A GIA \u6587\u4EF6\u3002\u7236\u5B50\u540C\u65F6\u9009\u4E2D\u65F6\u53EA\u5BFC\u51FA\u4E00\u6B21\u3002"))),a("div",{className:"qxsim-export-body"},a("div",{className:"qxsim-export-list","aria-label":e("\u53EF\u5BFC\u51FA\u7684\u5BA2\u6237\u7AEF\u63A7\u4EF6")},M.length?M.map(L=>{let J=L.ancestorIds.some(K=>H.has(K));return a("div",{key:L.id,className:`qxsim-export-row${q===L.id?" active":""}`,style:{paddingLeft:8+L.depth*14}},a("input",{type:"checkbox",checked:J||H.has(L.id),disabled:A||J,"aria-label":e("\u5BFC\u51FA {0}",L.name),onChange:K=>le(L,K.target.checked)}),a("button",{type:"button",onClick:()=>U(L.id),"aria-label":e("\u9884\u89C8 {0}",L.name)},a("strong",null,L.name),a("small",null,`#${L.guid} \xB7 `,e("{0} \u4E2A\u63A7\u4EF6",L.controlCount))))}):a("p",null,h?e("\u6CA1\u6709\u53EF\u5BFC\u51FA\u7684\u5BA2\u6237\u7AEF\u63A7\u4EF6"):e("\u6B63\u5728\u52A0\u8F7D\u2026"))),a("section",{className:"qxsim-export-preview","aria-label":e("\u5BFC\u51FA\u9884\u89C8")},a("strong",null,M.find(L=>L.id===q)?.name||e("\u8BF7\u9009\u62E9\u4E00\u4E2A\u63A7\u4EF6")),a("p",null,e("\u9884\u89C8\u5F53\u524D\u9879\u72EC\u7ACB\u5BFC\u51FA\u540E\u7684\u5E03\u5C40\uFF0C\u4E0D\u6539\u53D8\u539F\u9879\u76EE\u3002")),y?f(y.snapshot):a("p",null,e("\u6B63\u5728\u52A0\u8F7D\u2026")))),a("div",{className:"qxsim-export-options"},a("label",null,a("input",{type:"checkbox",checked:_,disabled:A,onChange:L=>$(L.target.checked)})," ",e("\u5305\u542B\u6302\u8F7D\u811A\u672C\u53CA\u672A\u6302\u8F7D\u6A21\u5757"))),y?.warnings?.length?a("div",{className:"qxsim-export-warnings"},y.warnings.map(L=>a("p",{key:L},e(L)))):null,O?a("div",{role:"alert",className:"qxsim-export-error"},e(O)):null,a("footer",null,a("button",{className:"qxsim-action",disabled:A||!M.length,onClick:()=>v(M.filter(L=>!L.parentId).map(L=>L.id))},e("\u5168\u9009")),a("button",{className:"qxsim-action",disabled:A||!w.length,onClick:()=>v([])},e("\u6E05\u9664")),a("span",null,e("\u5DF2\u9009 {0} \u9879",se.length)),a("span",{className:"spacer"}),a("button",{className:"qxsim-action",disabled:A,onClick:l},e("\u53D6\u6D88")),a("button",{className:"qxsim-action primary",disabled:A||!se.length,onClick:()=>void re()},A?e("\u6B63\u5728\u5BFC\u51FA\u2026"):e("\u5BFC\u51FA GIA"))))}}function ai(i,{api:a,playUrl:d,saveToWorkspace:o=!1,version:c=""}){let t=i.createElement,u=xa(i),l=va(i),f=wa(i),p=Oa(i),{Effects:h,Picker:x}=_a(i),w=Xa(i),v=Wa(i),q=Ua(i),U=Ga(i),y=Qa(i),I=Za(i),_=ti(i),$=nt(i),A="qxqy-simulator-style",P=ei+`
|
|
2
25
|
.qxsim-save-overlay{position:absolute;inset:0;z-index:30;display:grid;place-items:center;background:#0006}.qxsim-save-dialog{width:min(440px,90%);padding:24px;border:1px solid var(--line);border-radius:12px;background:var(--panel);box-shadow:0 12px 48px #0005}.qxsim-save-dialog h2{margin:0 0 16px;font-size:17px}.qxsim-save-dialog input{width:100%;margin:8px 0 16px;padding:10px;border:1px solid var(--line);border-radius:6px;background:var(--input)}.qxsim-save-dialog footer{display:flex;justify-content:flex-end;gap:8px}.qxsim-save-dialog [role=alert]{color:var(--danger);margin-bottom:12px;overflow-wrap:anywhere}
|
|
3
26
|
.qxsim-play-overlay{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:0;border:0;background:var(--bg);color:var(--text)}.qxsim-play-overlay[open]{display:flex;flex-direction:column}.qxsim-play-overlay::backdrop{background:#0008}.qxsim-play-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;gap:12px;padding:4px 12px;border-bottom:1px solid var(--line);background:var(--panel)}.qxsim-play-overlay iframe{display:block;flex:1;width:100%;min-height:0;border:0;background:var(--bg)}.qxsim-play-error{padding:8px 12px;color:var(--danger);overflow-wrap:anywhere}html[data-windows-titlebar] .qxsim-play-overlay{top:40px;height:calc(100% - 40px)}
|
|
4
27
|
.qxsim-footer{display:flex;align-items:center;gap:12px;flex-shrink:0;min-height:32px;padding:4px 10px;border-top:1px solid var(--line);background:var(--panel);font-size:11px}.qxsim-footer .spacer{flex:1}.qxsim-footer button{border:0;background:transparent;color:var(--muted);font:inherit;cursor:pointer}.qxsim-footer a,.qxsim-modal a{color:var(--blue);text-decoration:none}.qxsim-footer button:hover,.qxsim-footer a:hover{color:var(--blue);text-decoration:underline}.qxsim-modal{width:min(620px,94vw);max-height:90vh;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:24px;background:var(--panel);color:var(--text);font:inherit;box-shadow:0 16px 60px #0006}.qxsim-modal::backdrop{background:#0008}.qxsim-modal h2{margin:0 0 16px;font-size:17px}.qxsim-modal p{overflow-wrap:anywhere;line-height:1.6}.qxsim-modal footer{display:flex;justify-content:flex-end;margin-top:20px}
|
|
@@ -26,8 +49,7 @@
|
|
|
26
49
|
@container(max-width:1180px){.qxsim-toolbar{grid-template-columns:minmax(130px,1fr) auto auto;column-gap:8px}.qxsim-action{padding:0 8px}.qxsim-main{grid-template-columns:200px minmax(300px,1fr) 292px}.qxsim-control{min-width:132px}.qxsim-control.ratio{width:128px}.qxsim-io .qxsim-control{width:96px}.qxsim-device-switch button{padding:0 7px}.qxsim-workspace{padding-left:12px;padding-right:12px}.qxsim-brand-text span{display:none}.qxsim-asset-switch button{font-size:11px}}
|
|
27
50
|
@container(max-width:1000px){.qxsim-toolbar{height:90px;flex-basis:90px;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:42px 42px}.qxsim-toolbar-center{justify-self:end}.qxsim-actions{grid-column:1 / -1}.qxsim-editor-nav .save-summary{display:none}.qxsim-inspector{top:130px}}
|
|
28
51
|
@container(max-width:820px){.qxsim-main{grid-template-columns:180px minmax(280px,1fr)}.qxsim-inspector{position:absolute;right:0;top:0;bottom:0;width:285px;z-index:5;box-shadow:-10px 0 24px var(--shadow)}.qxsim-script-page{grid-template-columns:190px minmax(320px,1fr)}.qxsim-script-editor{padding:12px}.qxsim-script-fields{grid-template-columns:1fr}}
|
|
29
|
-
`,P={"server-container":["\u25A3","\u5BA2\u6237\u7AEF\u63A7\u4EF6\u5BB9\u5668"],container:["\u25A1","\u5BB9\u5668\u8282\u70B9"],textbox:["T","\u6587\u672C\u6846"],cursor:["\u2301","\u5149\u6807\u68C0\u6D4B\u533A\u57DF"],reference:["\u2197","\u6A21\u677F\u5F15\u7528\u63A7\u4EF6"],grid:["\u25A6","\u7F51\u683C\u89C6\u7A97"],image:["\u25A7","\u56FE\u7247"],button:["Btn","\u9884\u8BBE\u6309\u94AE"],textwindow:["T\u2195","\u6587\u672C\u89C6\u7A97"],keyhint:["1","\u6309\u952E\u63D0\u793A"],animation:["\u2726","\u754C\u9762\u52A8\u6548"],fullscreen:["\u2725","\u5168\u5C4F\u52A8\u6548"]},_=[["container","\u5BB9\u5668\u8282\u70B9"],["textbox","\u6587\u672C\u6846"],["cursor","\u5149\u6807\u68C0\u6D4B"],["reference","\u6A21\u677F\u5F15\u7528"],["grid","\u7F51\u683C\u89C6\u7A97"],["button","\u9884\u8BBE\u6309\u94AE"],["textwindow","\u6587\u672C\u89C6\u7A97"],["keyhint","\u6309\u952E\u63D0\u793A"],["image","\u56FE\u7247"],["animation","\u754C\u9762\u52A8\u6548"],["fullscreen","\u5168\u5C4F\u52A8\u6548"]],A={container:["isolateNavigation","disableKeyEventPassthrough","disableCursorEventPassthrough","showCursor"],textbox:["fontSize","adaptiveFontSize","minimumFontSize","fontColor","bgColor","enableOutline","outlineColor","horizontalAlignment","verticalAlignment","text"],cursor:[],reference:["referencedPrefabId"],grid:["itemPrefabId","raycastTarget","interactable","showScrollBar","scrollDirection","layoutConstraint","layoutConstraintFixedCount","cellSizeX","cellSizeY","spacingX","spacingY","padding1X","padding1Y","padding2X","padding2Y","previewCount"],image:["imageSource","imageId","imageColor","enableMask","enableSoftEdge","softEdgeMode","softEdgeWidthX","softEdgeWidthY","horizontalSoftRange","verticalSoftRange","enableFill","fillType","fillHorizontalType","fillVerticalType","fillRadial90Type","fillRadialType","fillAmount","reverseMaskArea"],button:["raycastTarget","interactable","unavailableChildId","hoverChildId","pressedChildId","selectedChildId","clickAudioId"],textwindow:["interactable","showScrollBar","fontSize","adaptiveFontSize","minimumFontSize","fontColor","bgColor","enableOutline","outlineColor","horizontalAlignment","verticalAlignment","text"],keyhint:["keyboardKeyCode","controllerKeyCode"],animation:["animationId"],fullscreen:["animationId"]};function M(){if(document.getElementById(U))return;let n=document.createElement("style");n.id=U,n.textContent=N,document.head.appendChild(n)}function w(){let n=document.documentElement,l=document.body,u=[n.dataset.theme,n.className,n.getAttribute("style"),l?.dataset?.theme,l?.className,l?.getAttribute("style"),getComputedStyle(n).colorScheme].filter(Boolean).join(" ").toLowerCase();return u.includes("dark")?"dark":u.includes("light")?"light":window.matchMedia?.("(prefers-color-scheme: dark)").matches?"dark":"light"}function B(){let[n,l]=a.useState(w);return a.useEffect(()=>{let u=()=>l(w()),o=new MutationObserver(u);o.observe(document.documentElement,{attributes:!0,attributeFilter:["class","style","data-theme"]}),document.body&&o.observe(document.body,{attributes:!0,attributeFilter:["class","style","data-theme"]});let x=window.matchMedia?.("(prefers-color-scheme: dark)");return x?.addEventListener?.("change",u),()=>{o.disconnect(),x?.removeEventListener?.("change",u)}},[]),n}function z(n,l){let u=Number(n??l)>>>0;return`rgba(${u>>>16&255},${u>>>8&255},${u&255},${(u>>>24&255)/255})`}function Z(n,l){return n==="sprite"?{background:"transparent"}:n==="circle"?{borderRadius:"50%",background:l}:n==="ring"?{borderRadius:"50%",border:`7px solid ${l}`,background:"transparent"}:n==="triangle"?{background:l,clipPath:"polygon(50% 0,100% 100%,0 100%)"}:n==="fourstar"?{background:l,clipPath:"polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%)"}:n==="fivestar"?{background:l,clipPath:"polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)"}:n==="missing"?{background:"#4822285c",border:"1px dashed #ff7481"}:{background:l}}let E=i;function V(n){let l;try{l=atob(n.data)}catch{throw new Error(e("\u5BFC\u51FA\u5185\u5BB9\u89E3\u7801\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u6216\u5237\u65B0\u9875\u9762"))}let u=new Uint8Array(l.length);for(let h=0;h<l.length;h+=1)u[h]=l.charCodeAt(h);let o=URL.createObjectURL(new Blob([u],{type:n.mimeType||"application/octet-stream"})),x=document.createElement("a");x.href=o,x.download=n.filename||"qxqy-export",x.rel="noopener",x.style.display="none",document.body.appendChild(x),x.click(),x.remove(),setTimeout(()=>URL.revokeObjectURL(o),1e3)}async function oe(n){let l=new Uint8Array(await n.arrayBuffer()),u="",o=32768;for(let x=0;x<l.length;x+=o)u+=String.fromCharCode(...l.subarray(x,x+o));return btoa(u)}let se=n=>typeof n=="object"?n.value:n,ie=n=>e(typeof n=="object"?n.label:n),be=[{key:"KEYBOARD",label:"PC",title:"PC KEYBOARD \u753B\u5E03\uFF1A1600\xD7900 / 2100\xD7900"},{key:"TOUCHSCREEN",label:"\u624B\u673A",title:"\u624B\u673A TOUCHSCREEN \u753B\u5E03\uFF1A1280\xD7720 / 1560\xD7720 / 1280\xD7960"}];function pe(n){return String(n.id||"").split("-").slice(1).join(":")}function de(n,l){let u=(x,h)=>h?u(h,x%h):x,o=u(Math.round(n),Math.round(l))||1;return`${Math.round(n)/o}:${Math.round(l)/o}`}function ee({field:n,commit:l,axis:u}){let o=n.value==null?"":String(n.value),[x,h]=a.useState(o);if(a.useEffect(()=>h(n.value==null?"":String(n.value)),[n.value,n.type]),n.type==="note")return t("div",{className:"qxsim-note"},e(n.value||n.label));if(n.readonly&&(n.evidence==="N"||n.evidence==="U"))return t("div",{className:"qxsim-field"},t("span",{className:"qxsim-field-label"},e(n.label)),t("div",{className:"qxsim-unsupported"},n.value==null?e("\u5C1A\u65E0\u53EF\u7F16\u8F91\u503C"):String(n.value)));if(n.type==="bool")return t("div",{className:"qxsim-switch-row"},t("span",null,e(n.label)),t("label",{className:"qxsim-switch"},t("input",{type:"checkbox",checked:!!n.value,disabled:!!n.readonly,onChange:f=>l(n.key,f.target.checked)}),t("span",{className:"qxsim-switch-track"})));if(n.type==="enum"){let f=[...n.options||[]],C=String(n.value??"");return f.some(H=>String(se(H))===C)||f.unshift({value:n.value??"",label:e`未识别选项 ${n.unknownValue??(C||e("\u7A7A"))}(保留原值)`}),t("label",{className:"qxsim-field"},t("span",{className:"qxsim-field-label"},e(n.label)),t("select",{value:C,disabled:!!n.readonly,onChange:H=>l(n.key,H.target.value)},f.map(H=>t("option",{key:String(se(H)),value:se(H)},ie(H)))))}if(n.type==="percent"){let f=Math.round(Number(n.value||0)*100);return t("label",{className:"qxsim-field"},t("span",{className:"qxsim-field-label"},e(n.label)),t("span",{className:"qxsim-percent"},t("input",{type:"range",min:0,max:100,value:f,onInput:C=>l(n.key,Number(C.target.value)/100)}),t("output",null,`${f}%`)))}if(n.type==="color")return t(k,{field:n,commit:l});let q={value:x,disabled:!!n.readonly,readOnly:!!n.readonly,onChange:f=>h(f.target.value),onBlur:()=>{n.readonly||l(n.key,x)},onKeyDown:f=>{f.key==="Enter"&&n.type!=="text"&&f.currentTarget.blur(),f.key==="Escape"&&h(n.value==null?"":String(n.value))}};return t("label",{className:"qxsim-field"},t("span",{className:"qxsim-field-label"},u?t("b",{className:`qxsim-axis ${u.toLowerCase()}`},u):null,e(n.label)),n.type==="text"?t("textarea",{...q,rows:4}):t("input",{...q,type:n.type==="number"?"number":"text",step:n.type==="number"?"any":void 0}))}function te({title:n,open:l=!0,children:u}){return t("details",{className:"qxsim-section",open:l},t("summary",null,n),t("div",{className:"qxsim-section-body"},u))}function ve(n){let l={};for(let u of n||[])l[u.key]=u;return l}function ae({label:n,x:l,y:u,xAxis:o="X",yAxis:x="Y",commit:h}){return t("div",{className:"qxsim-pair"},t("div",{className:"qxsim-pair-name"},n),t(ee,{field:l,axis:o,commit:h}),t(ee,{field:u,axis:x,commit:h}))}function at({field:n,commit:l,createStateChild:u}){return t("div",{className:"qxsim-state-field"},t("div",{className:"qxsim-state-label"},e(n.label)),t("div",{className:"qxsim-state-ref"},t("button",{title:e`新建并绑定${e(n.label)}图片`,onClick:()=>u(n.key,e(n.label))},"+"),t("select",{value:String(n.value??""),"aria-label":e(n.label),onChange:o=>l(n.key,o.target.value)},(n.options||[]).map(o=>t("option",{key:String(se(o)),value:se(o)},ie(o))))))}function it({inspector:n,commit:l,createStateChild:u}){let o=ve(n.fields),x=C=>C?.type==="node"?t(at,{key:C.key,field:C,commit:l,createStateChild:u}):C?t(ee,{key:C.key,field:C,commit:l}):null,h=(A[n.kind]||[]).map(C=>o[C]).filter(Boolean).map(x),q=null;if(n.kind==="image"){let C=o.fillType?.value==="Horizontal"?o.fillHorizontalType:o.fillType?.value==="Vertical"?o.fillVerticalType:o.fillType?.value==="Radial90"?o.fillRadial90Type:o.fillRadialType,H=[x(o.enableMask),x(o.enableSoftEdge),o.enableSoftEdge?.value?t("div",{className:"qxsim-subfields",key:"soft-fields"},x(o.softEdgeMode),t(ae,{label:e("\u7FBD\u5316\u5BBD\u5EA6"),x:o.softEdgeWidthX,y:o.softEdgeWidthY,commit:l}),t(ae,{label:e("\u7FBD\u5316\u8303\u56F4"),x:o.horizontalSoftRange,y:o.verticalSoftRange,commit:l})):null,x(o.enableFill),o.enableFill?.value?t("div",{className:"qxsim-subfields",key:"fill-fields"},x(o.fillType),x(C),x(o.fillAmount)):null,x(o.reverseMaskArea)];q=t(a.Fragment,null,t(te,{title:e("\u56FE\u7247\u8BBE\u7F6E")},x(o.imageSource),x(o.imageId),t(y,{imageId:o.imageId?.value,imageSource:o.imageSource?.value,value:o.imageType?.value,commit:l}),x(o.imageColor)),t(te,{title:e("\u906E\u7F69\u8BBE\u7F6E")},H))}let f=n.kind==="textbox"?e("\u6587\u672C\u6846\u8BBE\u7F6E"):n.kind==="button"?e("\u6309\u94AE\u8BBE\u7F6E"):e`${e(n.label)}设置`;return t(a.Fragment,null,t(te,{title:e("\u8282\u70B9\u4FE1\u606F"),open:!1},t(ee,{field:o.name,commit:l})),t(te,{title:e("\u53D8\u6362")},o.posX?t(ae,{label:e("\u4F4D\u7F6E"),x:o.posX,y:o.posY,commit:l}):null,o.width?t(ae,{label:e("\u5927\u5C0F"),x:o.width,y:o.height,xAxis:"W",yAxis:"H",commit:l}):null,...["rotationX","rotationY","rotationZ"].map(C=>o[C]?t(ee,{key:C,field:o[C],commit:l}):null),o.syncAllDevices?t(ee,{field:o.syncAllDevices,commit:l}):null,o.anchorType?t(ee,{field:o.anchorType,commit:l}):null,o.anchorMinX?t(ae,{label:"Min",x:o.anchorMinX,y:o.anchorMinY,commit:l}):null,o.anchorMaxX?t(ae,{label:"Max",x:o.anchorMaxX,y:o.anchorMaxY,commit:l}):null,o.pivotX?t(ae,{label:e("\u4E2D\u5FC3"),x:o.pivotX,y:o.pivotY,commit:l}):null),t(te,{title:e("\u521B\u5EFA\u8BBE\u7F6E")},o.active?t(ee,{field:o.active,commit:l}):null,o.visible?t(ee,{field:o.visible,commit:l}):null),q||(h.length?t(te,{title:f},h):null),o.canControllerFocus?t(te,{title:e("\u624B\u67C4\u5BFC\u822A"),open:!1},t(ee,{field:o.canControllerFocus,commit:l})):null,o.incomplete?t(te,{title:e("\u5B9E\u73B0\u72B6\u6001")},t(ee,{field:o.incomplete,commit:l})):null)}function nt({snap:n,selectedScriptId:l,selectScript:u,draft:o,updateDraft:x,saveScript:h,addScript:q,removeScript:f,exportLua:C,exportScripts:H,exportScriptsGia:K,notice:ue}){let R=n.scripts||[],D=R.find(j=>j.id===l)||null,G=n.mountTargets||[],W=G.filter(j=>j.assetType==="server-control-template"),O=G.filter(j=>j.assetType==="client-control-template"),re=j=>{let ye=G.find(we=>we.id===j);return ye?`${ye.assetLabel} \xB7 ${ye.name}`:""};return t("div",{className:"qxsim-script-page"},t("aside",{className:"qxsim-script-assets"},t("h3",null,e`存档内 Lua 脚本(${R.length})`),t("button",{className:"qxsim-action",style:{width:"100%",marginBottom:8},onClick:q},e("\uFF0B \u65B0\u5EFA\u811A\u672C")),R.length?R.map(j=>t("div",{key:j.id,className:"qxsim-script-list-row"},t("button",{className:`qxsim-script-asset${j.id===l?" active":""}`,onClick:()=>u(j.id)},t("strong",null,j.path||e("(\u672A\u547D\u540D\u811A\u672C)")),t("small",null,j.mounted?e`挂载:${j.assetLabel} · ${j.controlName}`:e("\u672A\u6302\u8F7D\uFF08\u4EC5\u53EF\u88AB require\uFF09"))),t("button",{className:"qxsim-iconbtn",title:e("\u4E0B\u8F7D\u8BE5\u811A\u672C .lua"),onClick:()=>C(j.id)},"\u21E9"),t("button",{className:"qxsim-iconbtn",title:e("\u5220\u9664\u8BE5\u811A\u672C"),onClick:()=>f(j.id)},"\u2715"))):t("div",{className:"qxsim-empty"},e("\u8FD8\u6CA1\u6709\u811A\u672C\uFF0C\u70B9\u51FB\u201C\u65B0\u5EFA\u811A\u672C\u201D\u5F00\u59CB"))),t("main",{className:"qxsim-script-editor"},D&&o?t(a.Fragment,null,t("div",{className:"qxsim-script-title"},t("div",null,t("h2",null,o.path||e("(\u672A\u547D\u540D\u811A\u672C)")),t("span",null,e`属于存档“${n.save?.name||e("\u672A\u547D\u540D\u5B58\u6863")}” · Lua 脚本是存档内独立资产`)),t("span",null,e`脚本 ${D.id}`)),t("div",{className:"qxsim-script-fields"},t("label",null,e("\u811A\u672C\u8DEF\u5F84\uFF08\u5DE5\u4F5C\u533A\u76F8\u5BF9\u8DEF\u5F84\uFF09"),t("input",{type:"text",value:o.path,placeholder:"lua/example.lua",onChange:j=>x({path:j.target.value})})),t("label",null,e("\u6302\u8F7D\u76EE\u6807\uFF08\u5BA2\u6237\u7AEF\u63A7\u4EF6 / \u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\uFF09"),t("select",{value:o.controlId?`${o.controlAsset||"server-control-template"}|${o.controlId}`:"",onChange:j=>{let[ye,we]=j.target.value.split("|");x(we?{controlId:we,controlAsset:ye}:{controlId:"",controlAsset:""})}},t("option",{value:""},e("\u672A\u6302\u8F7D\uFF08\u4E0D\u751F\u6548\uFF0C\u4EC5\u53EF\u88AB require\uFF09")),t("optgroup",{label:e("\u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F \xB7 \u5BA2\u6237\u7AEF\u63A7\u4EF6\u5BB9\u5668\u5185")},W.map(j=>t("option",{key:j.id,value:`${j.assetType}|${j.id}`},`${j.name} \xB7 ${j.id}`))),O.length?t("optgroup",{label:e("\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F")},O.map(j=>t("option",{key:j.id,value:`${j.assetType}|${j.id}`},`${j.name} \xB7 ${j.id}`))):null))),t("label",null,e("Lua \u6E90\u7801"),t("textarea",{value:o.source,spellCheck:!1,placeholder:e("-- \u5728\u8FD9\u91CC\u8F93\u5165\u5BA2\u6237\u7AEF Lua\uFF1B\u811A\u672C\u53EA\u6709\u6302\u8F7D\u5230\u5BA2\u6237\u7AEF\u63A7\u4EF6\u540E\u624D\u4F1A\u5728\u8BD5\u73A9\u65F6\u751F\u6548"),onChange:j=>x({source:j.target.value})})),t("div",{className:"qxsim-script-footer"},t("span",null,o.dirty?e("\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539"):ue||(D.mounted?e`已挂载:${re(D.controlId)}`:e("\u5F53\u524D\u672A\u6302\u8F7D\uFF0C\u8BD5\u73A9\u65F6\u4E0D\u4F1A\u81EA\u52A8\u8FD0\u884C"))),t("span",{className:"spacer"}),t("button",{className:"qxsim-action",onClick:H},e("\u21E9 \u811A\u672C\u5305 JSON")),t("button",{className:"qxsim-action",onClick:K},e("\u21E9 \u811A\u672C\u5305 GIA")),t("button",{className:"qxsim-action primary",disabled:!o.dirty,onClick:h},e("\u4FDD\u5B58\u811A\u672C")))):t("div",{className:"qxsim-empty"},e("\u8BF7\u65B0\u5EFA\u6216\u9009\u62E9\u4E00\u4E2A\u811A\u672C"))))}function me(n){if(n===void 0)return"null";try{return JSON.stringify(n)}catch{return String(n)}}function m(n){let l=String(n??"").trim();if(!l)return null;try{return JSON.parse(l)}catch{return l}}function ne(n){return!!(n&&typeof n=="object"&&!Array.isArray(n)&&Object.prototype.hasOwnProperty.call(n,"fromSignalParam"))}function ce(n){return{version:1,dirty:!1,rules:(Array.isArray(n?.rules)?n.rules:[]).map((u,o)=>({id:String(u.id||`signal-${o+1}`),signalName:String(u.signalName||""),actions:Array.isArray(u.actions)&&u.actions.length?u.actions.map(x=>Pa(x)):[Te("setCustomVariable")]}))}}let Ue=["PlayerSelf","AllPlayers","Player1","Player2","Player3","Player4","Player5","Player6","Player7","Player8"],ze=["PlayerSelf","Level","Player1","Player2","Player3","Player4","Player5","Player6","Player7","Player8"],Tt={PlayerSelf:"PlayerSelf \u5F53\u524D\u73A9\u5BB6",AllPlayers:"AllPlayers \u5168\u90E8\u73A9\u5BB6",Level:"Level \u5173\u5361",Player1:"Player1 \u73A9\u5BB61",Player2:"Player2 \u73A9\u5BB62",Player3:"Player3 \u73A9\u5BB63",Player4:"Player4 \u73A9\u5BB64",Player5:"Player5 \u73A9\u5BB65",Player6:"Player6 \u73A9\u5BB66",Player7:"Player7 \u73A9\u5BB67",Player8:"Player8 \u73A9\u5BB68"};function rt(n){return ze.includes(n)&&n!=="AllPlayers"?n:n==="Level"?"Level":"PlayerSelf"}function ot(n){return Ue.includes(n)?n:"PlayerSelf"}function Te(n){return n==="sendClientScriptSignal"?{kind:"sendClientScriptSignal",target:"PlayerSelf",signalName:"",params:[]}:{kind:"setCustomVariable",entityType:"PlayerSelf",name:"",value:0}}function Ia(n){return{version:1,rules:(n?.rules||[]).map(l=>({id:String(l.id||""),signalName:String(l.signalName||"").trim(),actions:(l.actions||[]).map(u=>u?.kind==="sendClientScriptSignal"?{kind:"sendClientScriptSignal",target:ot(u.target),signalName:String(u.signalName||"").trim(),params:Array.isArray(u.params)?u.params:[]}:{kind:"setCustomVariable",entityType:rt(u?.entityType),name:String(u?.name||"").trim(),value:u&&Object.prototype.hasOwnProperty.call(u,"value")?u.value:0})}))}}function Aa(n){let l=[];for(let[u,o]of(n?.rules||[]).entries()){String(o.signalName||"").trim()||l.push(e`规则 ${u+1} 需要监听信号名`);let x=o.actions||[];x.length||l.push(e`规则 ${u+1} 至少需要一个动作`);for(let[h,q]of x.entries())q?.kind==="sendClientScriptSignal"?String(q.signalName||"").trim()||l.push(e`规则 ${u+1} 动作 ${h+1} 需要客户端信号名`):String(q?.name||"").trim()||l.push(e`规则 ${u+1} 动作 ${h+1} 需要变量名`)}return l}function Pa(n){if(n?.kind==="sendClientScriptSignal")return{kind:"sendClientScriptSignal",target:ot(n.target),signalName:String(n.signalName||""),params:Array.isArray(n.params)?n.params.map(u=>{try{return JSON.parse(JSON.stringify(u))}catch{return u}}):[]};let l=0;if(n&&Object.prototype.hasOwnProperty.call(n,"value"))try{l=JSON.parse(JSON.stringify(n.value))}catch{l=n.value}return{kind:"setCustomVariable",entityType:rt(n?.entityType),name:String(n?.name||""),value:l}}function Ft({label:n,value:l,onChange:u}){let o=ne(l),[x,h]=a.useState(()=>o?"":me(l));return a.useEffect(()=>{ne(l)||h(me(l))},[l]),t("label",{className:"qxsim-field"},t("span",{className:"qxsim-field-label"},n),t("select",{value:o?"param":"literal","aria-label":e`${e(n)}来源`,onChange:q=>{q.target.value==="param"?u({fromSignalParam:Number(l?.fromSignalParam)||0}):u(m(x||"0"))}},t("option",{value:"literal"},e("\u5B57\u9762\u91CF\uFF08JSON\uFF09")),t("option",{value:"param"},e("\u5F15\u7528\u76D1\u542C\u4FE1\u53F7\u53C2\u6570"))),o?t("input",{type:"number",min:0,step:1,value:Number(l.fromSignalParam)||0,"aria-label":e`${e(n)}参数序号`,onChange:q=>u({fromSignalParam:Math.max(0,Math.trunc(Number(q.target.value)||0))})}):t("textarea",{className:"qxsim-logic-json",value:x,spellCheck:!1,"aria-label":e`${e(n)}字面量`,onBlur:()=>u(m(x)),onChange:q=>h(q.target.value)}))}function La({params:n,onChange:l}){let u=Array.isArray(n)?n:[];return t("div",{className:"qxsim-field wide"},t("span",{className:"qxsim-field-label"},e("\u5BA2\u6237\u7AEF\u4FE1\u53F7\u53C2\u6570\uFF08\u6309\u6DFB\u52A0\u987A\u5E8F\uFF09")),u.length?u.map((o,x)=>t("div",{key:x,style:{display:"flex",gap:6,alignItems:"flex-start",marginBottom:6}},t("div",{style:{flex:1,minWidth:0}},t(Ft,{label:e`参数 ${x}`,value:o,onChange:h=>l(u.map((q,f)=>f===x?h:q))})),t("button",{className:"qxsim-iconbtn",title:e("\u5220\u9664\u53C2\u6570"),onClick:()=>l(u.filter((h,q)=>q!==x))},"\u2715"))):t("div",{className:"qxsim-muted"},e("\u6682\u65E0\u53C2\u6570\uFF0C\u53EF\u53D1\u9001\u7A7A\u53C2\u6570\u5217\u8868")),t("button",{className:"qxsim-action",style:{marginTop:4},onClick:()=>l(u.concat([0]))},e("\uFF0B \u6DFB\u52A0\u53C2\u6570")))}function Ea({snap:n,draft:l,setDraft:u,saveLogic:o,notice:x,error:h}){let q=l?.rules||[];function f(R){u({version:1,rules:R,dirty:!0})}function C(){f(q.concat([{id:`signal-${Date.now().toString(36)}`,signalName:"",actions:[Te("setCustomVariable")]}]))}function H(R,D){f(q.map((G,W)=>W===R?{...G,...D}:G))}function K(R,D,G){let W=q[R];W&&H(R,{actions:W.actions.map((O,re)=>re===D?{...O,...G}:O)})}function ue(R,D,G){K(R,D,Te(G))}return t("div",{className:"qxsim-server-logic"},t("div",{className:"qxsim-logic-wrap"},t("div",{className:"qxsim-logic-title"},t("div",null,t("h2",null,e("\u670D\u52A1\u7AEF\u903B\u8F91")),t("p",null,e`属于存档“${n.save?.name||e("\u672A\u547D\u540D\u5B58\u6863")}” · 监听客户端信号后设置 Level / 玩家变量,或向指定玩家发送客户端脚本信号`)),t("button",{className:"qxsim-action primary",disabled:!l?.dirty,onClick:o},e("\u4FDD\u5B58\u670D\u52A1\u7AEF\u903B\u8F91"))),t("div",{className:"qxsim-note"},e("\u8FD9\u662F\u6A21\u62DF\u5668\u5B58\u6863\u683C\u5F0F\uFF0C\u4E0D\u662F\u5B98\u65B9\u8282\u70B9\u56FE\u3002PlayerSelf \u8868\u793A\u53D1\u4FE1\u53F7\u7684\u90A3\u4F4D\u73A9\u5BB6\uFF1BPlayer1\u20138 \u662F\u56FA\u5B9A\u5EA7\u4F4D\uFF1BAllPlayers \u5411\u672C\u5C40\u5168\u90E8\u8BD5\u73A9\u73A9\u5BB6\u5E7F\u64AD\u3002")),h?t("div",{className:"qxsim-logic-error"},e(h)):null,q.length?q.map((R,D)=>t("section",{key:R.id||D,className:"qxsim-logic-rule"},t("div",{className:"qxsim-logic-rule-head"},t("strong",null,e`规则 ${D+1}`),t("label",{className:"qxsim-field"},t("span",{className:"qxsim-field-label"},e("\u76D1\u542C\u4FE1\u53F7\u540D")),t("input",{type:"text",value:R.signalName,placeholder:"EarnGold","aria-label":e`规则 ${D+1} 监听信号名`,onChange:G=>H(D,{signalName:G.target.value})})),t("button",{className:"qxsim-iconbtn",title:e("\u5220\u9664\u89C4\u5219"),onClick:()=>f(q.filter((G,W)=>W!==D))},"\u2715")),t("div",{className:"qxsim-logic-actions"},(R.actions||[]).map((G,W)=>t("div",{key:W,className:"qxsim-logic-action"},t("div",{className:"qxsim-logic-action-head"},t("strong",null,e`动作 ${W+1}`),t("select",{value:G.kind,"aria-label":e`规则 ${D+1} 动作 ${W+1} 类型`,onChange:O=>ue(D,W,O.target.value)},t("option",{value:"setCustomVariable"},e("\u8BBE\u7F6E\u81EA\u5B9A\u4E49\u53D8\u91CF")),t("option",{value:"sendClientScriptSignal"},e("\u53D1\u9001\u5BA2\u6237\u7AEF\u811A\u672C\u4FE1\u53F7"))),t("span",null,G.kind==="sendClientScriptSignal"?e("\u53D1\u7ED9\u5F53\u524D\u73A9\u5BB6\u3001\u6307\u5B9A\u73A9\u5BB6\u6216\u5168\u90E8\u73A9\u5BB6"):e("\u5199\u5165 Level / \u5F53\u524D\u73A9\u5BB6 / \u73A9\u5BB61-8")),t("button",{className:"qxsim-iconbtn",title:e("\u5220\u9664\u52A8\u4F5C"),disabled:(R.actions||[]).length<=1,onClick:()=>H(D,{actions:R.actions.filter((O,re)=>re!==W)})},"\u2715")),G.kind==="sendClientScriptSignal"?t("div",{className:"qxsim-logic-fields"},t("label",{className:"qxsim-field"},t("span",{className:"qxsim-field-label"},e("\u53D1\u9001\u76EE\u6807")),t("select",{value:ot(G.target),onChange:O=>K(D,W,{target:O.target.value})},Ue.map(O=>t("option",{key:O,value:O},Tt[O])))),t("label",{className:"qxsim-field"},t("span",{className:"qxsim-field-label"},e("\u5BA2\u6237\u7AEF\u4FE1\u53F7\u540D")),t("input",{type:"text",value:G.signalName,placeholder:"GoldChanged",onChange:O=>K(D,W,{signalName:O.target.value})})),t(La,{params:G.params,onChange:O=>K(D,W,{params:O})})):t("div",{className:"qxsim-logic-fields"},t("label",{className:"qxsim-field"},t("span",{className:"qxsim-field-label"},e("\u5B9E\u4F53")),t("select",{value:rt(G.entityType),onChange:O=>K(D,W,{entityType:O.target.value})},ze.map(O=>t("option",{key:O,value:O},e(Tt[O]))))),t("label",{className:"qxsim-field"},t("span",{className:"qxsim-field-label"},e("\u53D8\u91CF\u540D")),t("input",{type:"text",value:G.name,placeholder:"Gold",onChange:O=>K(D,W,{name:O.target.value})})),t("div",{className:"wide"},t(Ft,{label:e("\u53D8\u91CF\u503C"),value:G.value,onChange:O=>K(D,W,{value:O})}))))),t("div",{className:"qxsim-logic-actions-foot"},t("button",{className:"qxsim-action",onClick:()=>H(D,{actions:(R.actions||[]).concat([Te("setCustomVariable")])})},e("\uFF0B \u8BBE\u7F6E\u81EA\u5B9A\u4E49\u53D8\u91CF")),t("button",{className:"qxsim-action",onClick:()=>H(D,{actions:(R.actions||[]).concat([Te("sendClientScriptSignal")])})},e("\uFF0B \u53D1\u9001\u5BA2\u6237\u7AEF\u811A\u672C\u4FE1\u53F7")))))):t("div",{className:"qxsim-logic-empty"},e("\u8FD8\u6CA1\u6709\u76D1\u542C\u89C4\u5219\u3002\u8BD5\u73A9\u65F6\u5BA2\u6237\u7AEF SendSignal \u4E0D\u4F1A\u81EA\u52A8\u6539\u53D8\u91CF\u6216\u56DE\u4F20\u4FE1\u53F7\u3002")),t("div",{className:"qxsim-logic-actions-foot"},t("button",{className:"qxsim-action",onClick:C},e("\uFF0B \u6DFB\u52A0\u76D1\u542C\u89C4\u5219"))),t("div",{className:"qxsim-script-footer",style:{marginTop:16}},t("span",null,l?.dirty?e("\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539"):x||e("\u4FDD\u5B58\u540E\u4F1A\u5199\u5165\u5F53\u524D\u5B58\u6863\uFF0C\u4E0B\u6B21\u8BD5\u73A9\u751F\u6548")),t("span",{className:"spacer"}))))}function $a({inspector:n,autofill:l,onSave:u}){let[o,x]=a.useState(String(n.guid??"")),[h,q]=a.useState(!1),[f,C]=a.useState(!1),[H,K]=a.useState("");a.useEffect(()=>{x(String(n.guid??"")),q(!1),K("")},[n.id,n.guid]);let ue=l?.count>1&&l.selectedOffset>=0,R=/^[0-9]+$/.test(o.trim())?Number(o)-(l?.selectedOffset||0):NaN,D=R+(l?.count||0)-1,G=Number.isSafeInteger(R)&&R>=1&&D<=2147483647;async function W(O){O.preventDefault();let re=o.trim();if(!/^[0-9]+$/.test(re)||Number(re)<1||Number(re)>2147483647){K(e("\u8BF7\u8F93\u5165 1\u20132147483647 \u4E4B\u95F4\u7684\u6574\u6570\u7D22\u5F15\u3002"));return}C(!0),K("");try{await u(n.id,Number(re),h&&ue)}catch(j){K(j?.message||String(j))}finally{C(!1)}}return t("form",{onSubmit:W,style:{marginTop:8}},t("label",{className:"qxsim-field"},t("span",{className:"qxsim-field-label"},e("\u5BA2\u6237\u7AEF\u63A7\u4EF6\u7D22\u5F15")),t("div",{style:{display:"flex",gap:6}},t("input",{type:"text",inputMode:"numeric","aria-label":e("\u5BA2\u6237\u7AEF\u63A7\u4EF6\u7D22\u5F15"),value:o,disabled:f,onChange:O=>{x(O.target.value),K("")},onKeyDown:O=>{O.key==="Escape"&&(x(String(n.guid)),K(""))}}),t("button",{type:"submit",className:"qxsim-action",disabled:f||!h&&o.trim()===String(n.guid)||h&&!G},f?e("\u4FDD\u5B58\u4E2D"):e("\u4FEE\u6539")))),ue?t("label",{style:{display:"flex",gap:6,alignItems:"center",margin:"6px 0"}},t("input",{type:"checkbox",checked:h,disabled:f,onChange:O=>q(O.target.checked)}),e("\u81EA\u52A8\u4FEE\u6539\u5176\u4ED6\u5BA2\u6237\u7AEF\u7D22\u5F15\u503C")):null,h&&ue?t("div",{className:"qxsim-note","aria-label":e("\u81EA\u52A8\u586B\u5145\u7D22\u5F15\u9884\u89C8")},e`以当前控件为基准,按 GIA 导入顺序填充 ${l.count} 个控件(${l.templateCount} 个模板及其子控件)。`,t("div",null,G?e`索引范围:${R}–${D}`:e("\u7D22\u5F15\u8303\u56F4\u8D85\u51FA\u6709\u6548\u8303\u56F4\uFF0C\u8BF7\u68C0\u67E5\u8F93\u5165\u3002")),t("div",null,e("\u9002\u7528\u4E8E\u6574\u6279\u5BFC\u5165\u540E\u672A\u589E\u5220\u3001\u91CD\u6392\u7684\u6A21\u677F\u3002\u670D\u52A1\u7AEF\u754C\u9762\u548C\u811A\u672C\u7D22\u5F15\u9700\u5355\u72EC\u586B\u5199\u3002"))):null,H?t("div",{role:"alert",className:"qxsim-note"},e(H)):null,t("div",{className:"qxsim-muted",style:{lineHeight:1.5}},e("\u586B\u5199 GIA \u5BFC\u5165\u540E\u5B9E\u9645\u663E\u793A\u7684\u7D22\u5F15\uFF1B\u4FEE\u6539\u540E\u4ECE\u9875\u9762\u4E0A\u65B9\u7EE7\u7EED\u540C\u6B65 Lua\u3002")))}function Ta({snap:n,addScriptMounted:l,mountScriptTo:u,unmountScript:o,openScript:x}){let h=(n.scripts||[]).filter(f=>f.controlId===n.selectedId),q=(n.scripts||[]).filter(f=>f.controlId!==n.selectedId);return t(a.Fragment,null,t(te,{title:e("\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6\u7684\u811A\u672C")},h.length?h.map(f=>t("div",{key:f.id,className:"qxsim-script-list-row"},t("button",{className:"qxsim-script-asset",onClick:()=>x(f.id)},t("strong",null,f.path||e("(\u672A\u547D\u540D\u811A\u672C)")),t("small",null,e`脚本 ${f.id}`)),t("button",{className:"qxsim-iconbtn",title:e("\u89E3\u9664\u6302\u8F7D\uFF08\u4FDD\u7559\u811A\u672C\uFF09"),onClick:()=>o(f.id)},"\u292B"))):t("div",{className:"qxsim-note"},e("\u8BE5\u63A7\u4EF6\u5C1A\u672A\u6302\u8F7D\u811A\u672C\u3002\u811A\u672C\u6302\u8F7D\u5230\u5BA2\u6237\u7AEF\u63A7\u4EF6\u540E\u624D\u4F1A\u5728\u8BD5\u73A9\u65F6\u751F\u6548\u3002"))),t(te,{title:e("\u6302\u8F7D\u5DF2\u6709\u811A\u672C"),open:!1},q.length?t("label",{className:"qxsim-field"},t("span",{className:"qxsim-field-label"},e("\u9009\u62E9\u811A\u672C\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6")),t("select",{value:"","aria-label":e("\u9009\u62E9\u811A\u672C\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6"),onChange:f=>{let C=f.target.value;f.target.value="",C&&u(C)}},t("option",{value:""},e("\u9009\u62E9\u811A\u672C\u2026")),q.map(f=>t("option",{key:f.id,value:f.id},`${f.path||e("(\u672A\u547D\u540D\u811A\u672C)")} \xB7 ${f.id}${f.mounted?e`(当前挂载于 ${f.assetLabel} · ${f.controlName},将移动到此控件)`:e("\uFF08\u672A\u6302\u8F7D\uFF09")}`)))):t("div",{className:"qxsim-note"},e("\u5B58\u6863\u5185\u8FD8\u6CA1\u6709\u5176\u4ED6\u811A\u672C\uFF0C\u53EF\u70B9\u51FB\u4E0B\u65B9\u6309\u94AE\u65B0\u5EFA\u3002")),t("div",{className:"qxsim-script-actions",style:{marginTop:8}},t("button",{onClick:()=>l(n.selectedId)},e("\uFF0B \u65B0\u5EFA\u811A\u672C\u5E76\u6302\u8F7D\u5230\u6B64\u63A7\u4EF6")))))}function Fa(n,l){let u=null,o=null;function x(h,q){h.id===l&&(u=h,o=q);for(let f of h.children||[])x(f,h)}if(x(n,null),u?.kind==="container")return u.id;if(u?.kind==="server-container")return u.children?.find(h=>h.kind==="container")?.id||u.id;for(;o&&o.kind!=="container";){let q=function(f){for(let C of f.children||[])C===o&&(h=f),q(C)},h=null;q(n),o=h}return o?.id||n.children?.find(h=>h.kind==="container")?.id}function Ma(n,l){let u=null;function o(x){x.id===l&&(u=x);for(let h of x.children||[])o(h)}return o(n),u&&u.kind!=="server-container"?u.id:Fa(n,l)}function Oa(n,l,u,o,x,h){let q=n,f=n.kind,C=f==="textbox"||f==="textwindow",H=q.renderLeft??q.left,K=q.renderBottom??q.bottom,ue=q.renderWidth??q.width,R=q.renderHeight??q.height,D=q.renderRotationZ??n.rotationZ??0,G={left:`${H/u*100}%`,bottom:`${K/o*100}%`,width:`${ue/u*100}%`,height:`${R/o*100}%`,"--rotation":`${-Number(D)}deg`,fontSize:Math.max(8,Math.min(40,Number(n.fontSize||12))),color:C?z(n.fontColor,4294967295):"#fff"};Object.assign(G,ba(q,u,o)),C&&h&&(G.fontFamily=h),f==="image"?Object.assign(G,Z(n.primitive,z(n.imageColor,4294967295))):C?(G.background=z(n.bgColor,16777215),G.justifyContent=n.horizontalAlignment==="Right"?"flex-end":n.horizontalAlignment==="Middle"?"center":"flex-start",G.alignItems=n.verticalAlignment==="Bottom"?"flex-end":n.verticalAlignment==="Middle"?"center":"flex-start",G.textShadow=n.enableOutline===!1?"none":`0 0 2px ${z(n.outlineColor,4278190080)}`):f==="container"&&(G.background="transparent");let W=n.id===l.selectedId,O=f==="image"&&n.primitive==="sprite"?t(I,{key:ge(n.imageId,n.imageSource),item:n}):C?t("span",{style:ya(n,x,h)},n.textLayout?.lines.join(`
|
|
30
|
-
`)
|
|
31
|
-
`)
|
|
32
|
-
`)),je([])}catch(b){C(b?.message||String(b))}finally{Ge.current&&(Ge.current.value="")}}function ei(){D.open(async()=>{await q.current.catch(()=>{}),await he(),await Se(),await q.current,C("")})}async function ti(){if(!(O||!G?.trim())){re(!0);try{await he(),await Se(),await q.current.catch(()=>{});let r=h.current,c=await E(n,"save",{path:G.trim(),expectedRevision:r.version});Ie(await E(n,"get")),J(e`已保存到 ${c.path}`),C(""),W(null),We()}catch(r){C(r?.message||String(r))}finally{re(!1)}}}if(a.useEffect(()=>{o?.inspector?.kind==="server-container"&&ct("base")},[o?.inspector?.kind]),!o)return t("div",{className:"qxsim","data-qxqy-font-ui":"","data-theme":u,"data-qxsim-session-id":n},t("div",{className:"qxsim-status error"},f||e("\u6B63\u5728\u8F7D\u5165\u5343\u661F\u6C99\u7BB1\u2026")));let qe=o.canvas.width,Pe=o.canvas.height,xt=_e.width>0&&_e.height>0?Math.min((_e.width-44)/qe,(_e.height-54)/Pe):NaN,ai=Number.isFinite(xt)&&xt>0?Math.min(2,Math.round(xt*1e3)/1e3):.5,_t=dt==="fit"?ai:Number(dt)||.5,Rt=de(qe,Pe),ii=(o.canvas.presets||[]).filter(r=>r.platform===o.canvas.platform);function ni(r){if(!o||o.canvas.platform===r)return;let c=(o.canvas.presets||[]).filter(F=>F.platform===r);if(!c.length)return;let b=c.find(F=>pe(F)===Rt)||c[0];X({op:"setCanvas",canvasId:b.id}).then(()=>J(e`已切换到${b.label}`)).catch(()=>{})}let Q=o.asset?.type==="client-control-template",bt=!!(o.inspector&&o.inspector.kind!=="server-container"),vt=new Set;for(let r of o.tree||[])(pt[r.id]||(r.ancestorIds||[]).some(c=>pt[c]))&&vt.add(r.id);let ri=(o.boxes||[]).filter(r=>r.kind!=="server-container"&&r.visible&&!vt.has(r.id));function oi(r,c){r.stopPropagation(),ja(b=>{let F={...b};return F[c]?delete F[c]:F[c]=!0,F})}let Wt=o.tree.filter(r=>!De.trim()||`${r.name} ${r.label} ${e(r.label)}`.toLowerCase().includes(De.trim().toLowerCase())),Y=o.tree.find(r=>r.id===o.selectedId),si=Q&&Y?o.tree.filter(r=>r.id!==Y.id&&!(r.ancestorIds||[]).includes(Y.id)):[],li=Y?.parentId||o.root.id;return t("div",{className:"qxsim","data-qxqy-font-ui":"",lang:l==="zh"?"zh-CN":"en","data-theme":u,"data-qxsim-session-id":n},D.overlay,ue?t(L,{onClose:()=>R(!1)}):null,fe==="script"&&f?t("div",{className:"qxsim-status error",role:"alert"},e(f)):null,G!==null?t("div",{className:"qxsim-save-overlay"},t("form",{className:"qxsim-save-dialog",role:"dialog","aria-modal":!0,"aria-label":e("\u4FDD\u5B58\u5230\u5DE5\u4F5C\u533A"),onSubmit:r=>{r.preventDefault(),ti()}},t("h2",null,e("\u4FDD\u5B58\u5230\u5DE5\u4F5C\u533A")),t("label",null,e("\u5B58\u6863\u76F8\u5BF9\u8DEF\u5F84"),t("input",{autoFocus:!0,required:!0,value:G,disabled:O,onChange:r=>W(r.target.value)})),f?t("div",{role:"alert"},e(f)):null,t("footer",null,t("button",{className:"qxsim-action",type:"button",disabled:O,onClick:()=>W(null)},e("\u53D6\u6D88")),t("button",{className:"qxsim-action primary",type:"submit",disabled:O||!G.trim()},O?e("\u4FDD\u5B58\u4E2D\u2026"):e("\u4FDD\u5B58"))))):null,t("header",{className:"qxsim-toolbar"},t("div",{className:"qxsim-brand",title:`${o.workspace?.bound?o.workspace.path:e("\u5DE5\u4F5C\u533A\u672A\u7ED1\u5B9A")}
|
|
33
|
-
${o.meta?.sourceFile||e("\u5C1A\u672A\u5BFC\u5165\u6587\u4EF6")}`},t("span",{className:"qxsim-appicon"},"UI"),t("span",{className:"qxsim-brand-text"},t("strong",null,e`存档:${o.save?.name||o.meta?.name||e("\u672A\u547D\u540D\u5B58\u6863")}`),t("span",null,e`工作区:${o.workspace?.bound?o.workspace.name:e("\u672A\u7ED1\u5B9A")} · 当前资产:${e(o.asset?.label)||e("UI\u63A7\u4EF6")}`))),t("div",{className:"qxsim-toolbar-center"},fe==="ui"?t(a.Fragment,null,t("div",{className:"qxsim-device-switch",role:"group","aria-label":e("\u76EE\u6807\u8BBE\u5907")},be.map(r=>t("button",{key:r.key,className:o.canvas.platform===r.key?"active":"",title:e(r.title),onClick:()=>ni(r.key)},e(r.label)))),t("select",{className:"qxsim-control ratio","aria-label":e("\u5C4F\u5E55\u6BD4\u4F8B"),value:o.canvasId,onChange:r=>void X({op:"setCanvas",canvasId:r.target.value}).catch(()=>{})},ii.map(r=>t("option",{key:r.id,value:r.id},`${pe(r)} \xB7 ${r.width}\xD7${r.height}`))),t("select",{className:"qxsim-control zoom","aria-label":e("\u753B\u5E03\u7F29\u653E"),value:dt,onChange:r=>Ga(r.target.value)},[["fit",e("\u9002\u5E94")],["0.25","25%"],["0.5","50%"],["0.75","75%"],["1","100%"]].map(([r,c])=>t("option",{key:r,value:r},c)))):t("span",{className:"qxsim-muted"},fe==="logic"?e("\u670D\u52A1\u7AEF\u903B\u8F91\uFF1A\u76D1\u542C\u4FE1\u53F7 / \u81EA\u5B9A\u4E49\u53D8\u91CF / \u73A9\u5BB61-8 \u56DE\u4F20"):e("Lua \u811A\u672C\u8D44\u4EA7\u7F16\u8F91"))),t("div",{className:"qxsim-actions"},s?t("button",{className:"qxsim-action",title:e("\u4FDD\u5B58\u5B8C\u6574\u5B58\u6863\u5230\u5DE5\u4F5C\u533A"),onClick:()=>{C(""),W(h.current?.storage?.path||"qxqy-simulator.save.json")}},e("\u4FDD\u5B58\u5B58\u6863")):null,t("div",{className:"qxsim-io"},t("input",{ref:Ge,hidden:!0,type:"file",accept:".json,.gia,.lua,application/json,application/octet-stream,text/plain",onChange:r=>void Za(r.target.files?.[0])}),t("select",{className:"qxsim-control zoom","aria-label":e("\u4ECE\u5DE5\u4F5C\u533A\u62C9\u53D6\u5B58\u6863"),defaultValue:"",onFocus:()=>void We(),onChange:r=>{let c=r.target.value;r.target.value="",c&&Bt(c)}},t("option",{value:"",disabled:!0},o.workspace?.bound?e("\u2913 \u5DE5\u4F5C\u533A\u5B58\u6863"):e("\u5DE5\u4F5C\u533A\u672A\u7ED1\u5B9A")),...Mt.length?Mt.map(r=>t("option",{key:r.path,value:r.path},`${r.name} \xB7 ${r.path}`)):[t("option",{value:"",disabled:!0},o.workspace?.bound?e("\u672A\u53D1\u73B0 qxqy-simulator-save"):e("\u5148\u7ED1\u5B9A\u4F1A\u8BDD\u5DE5\u4F5C\u533A"))]),t("button",{className:"qxsim-action",title:e("\u5BFC\u5165\u5B58\u6863\u3001\u5355\u9879 UI \u8D44\u4EA7\u6216 Lua"),onClick:()=>Ge.current?.click()},e("\u21E7 \u5BFC\u5165")),t("select",{className:"qxsim-control zoom","aria-label":e("\u5BFC\u51FA\u683C\u5F0F"),defaultValue:"",onChange:r=>{let[c,b=""]=r.target.value.split("|");r.target.value="",c&&He(c,b)}},t("option",{value:"",disabled:!0},e("\u21E9 \u5BFC\u51FA")),t("option",{value:"save"},e("\u8D44\u4EA7\u5305 JSON\uFF08\u4E09\u7C7B\u5408\u4E00\uFF09")),t("option",{value:"save-gia"},e("\u8D44\u4EA7\u5305 GIA\uFF08\u5DF2\u6539\u52A8\u9879\uFF09")),t("option",{value:"gia-combined"},e("\u8D44\u4EA7\u5305 GIA \u6574\u5408\u5305\uFF08\u63A7\u4EF6+\u811A\u672C\uFF09")),t("optgroup",{label:e("\u5F53\u524D\u754C\u9762\uFF08\u5DE6\u680F\u6B63\u5728\u770B\u7684\u90A3\u68F5\u6811\uFF09")},t("option",{value:"json"},e("\u5F53\u524D\u754C\u9762 Authoring JSON")),t("option",{value:"gia"},e("\u5F53\u524D\u754C\u9762 GIA"))),t("optgroup",{label:e("\u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F")},t("option",{value:"json|server-control-template"},"Authoring JSON"),t("option",{value:"gia|server-control-template"},"GIA")),t("optgroup",{label:e("\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\uFF08\u4EC5\u5F53\u5DE6\u680F\u5207\u5230\u300CUI\u63A7\u4EF6-\u5BA2\u6237\u7AEF\u300D\u65F6\u624D\u662F\u9875\u9762\u5185\u5BB9\uFF09")},t("option",{value:"json|client-control-template"},"Authoring JSON"),t("option",{value:"gia|client-control-template"},"GIA")),t("optgroup",{label:e("Lua \u811A\u672C")},t("option",{value:"scripts"},e("\u811A\u672C\u5305 JSON\uFF08\u5168\u90E8\u811A\u672C\uFF09")),t("option",{value:"scripts-gia"},e("\u811A\u672C\u5305 GIA\uFF08\u5168\u90E8\u811A\u672C\uFF09"))))),t("button",{className:"qxsim-action primary",title:e("\u6253\u5F00\u8BD5\u73A9\uFF1B\u65B0\u7A97\u53E3\u4E0D\u53EF\u7528\u65F6\u5728\u5E94\u7528\u5185\u8BD5\u73A9"),disabled:D.opening,onClick:ei},D.opening?e("\u6B63\u5728\u51C6\u5907\u2026"):e("\u25B7 \u8BD5\u73A9 \u2197")),t("button",{className:"qxsim-iconbtn",title:e("\u91CD\u65B0\u8F7D\u5165"),onClick:Re},"\u21BB"))),t("nav",{className:"qxsim-editor-nav","aria-label":e("\u7F16\u8F91\u9875\u9762")},t("button",{className:fe==="ui"?"active":"",onClick:()=>Ae("ui")},e("UI \u7F16\u8F91")),t("button",{className:fe==="script"?"active":"",onClick:()=>Ae("script")},e("Lua \u811A\u672C")),t("button",{className:fe==="logic"?"active":"",onClick:()=>Ae("logic")},e("\u670D\u52A1\u7AEF\u903B\u8F91")),t("span",{className:"save-summary"},e("\u4E00\u4E2A\u5B58\u6863 \xB7 \u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F + \u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F + Lua \u811A\u672C + \u670D\u52A1\u7AEF\u903B\u8F91")),t("div",{className:"qxsim-editor-settings"},t("button",{onClick:()=>R(!0),"aria-label":e("\u5B57\u4F53\u8BBE\u7F6E")},e("\u5B57\u4F53\u8BBE\u7F6E")),t("select",{className:"qxsim-control qxsim-language","aria-label":e("\u754C\u9762\u8BED\u8A00"),title:e("\u754C\u9762\u8BED\u8A00"),value:Vt(),onChange:r=>Kt(r.target.value)},t("option",{value:"auto"},e("\u81EA\u52A8\uFF08\u7CFB\u7EDF\u8BED\u8A00\uFF09")+" \xB7 "+Je().language),t("option",{value:"zh"},"\u7B80\u4F53\u4E2D\u6587"),t("option",{value:"en"},"English")))),fe==="script"?t(g,{snap:o,patch:X,request:(r,c)=>E(n,r,c),refresh:async()=>Ie(await E(n,"get")),prepare:async()=>(await q.current,await he(),await Se(),h.current)}):null,t(v,{snap:o,patch:X,prepare:he,copy:_a,onScripts:()=>Ae("script"),onError:C,reloadArchive:()=>Bt(h.current.storage?.path)}),st.length?t("details",{className:"qxsim-export-warnings",open:!0,role:"status",style:{flexShrink:0,maxHeight:180,overflow:"auto",padding:"8px 16px",borderBottom:"1px solid currentColor"}},t("summary",{style:{cursor:"pointer"}},e`上次导出说明(${st.length} 项,请核对导入后的效果)`),t("button",{className:"qxsim-action",onClick:()=>je([])},e("\u5173\u95ED\u5BFC\u51FA\u8BF4\u660E")),t("ul",null,st.map((r,c)=>t("li",{key:c},e(r))))):null,fe==="ui"?t("div",{className:"qxsim-main"},t("aside",{className:"qxsim-tree"},t("div",{className:"qxsim-asset-switch","aria-label":e("\u7F16\u8F91\u8D44\u6E90\u7C7B\u578B")},t("button",{className:Q?"":"active",title:e("\u7F16\u8F91\u5B58\u6863\u5185\u7684\u670D\u52A1\u7AEF UI \u63A7\u4EF6"),onClick:()=>void Dt("server-control-template")},e("UI\u63A7\u4EF6-\u670D\u52A1\u7AEF")),t("button",{className:Q?"active":"",title:e("\u7F16\u8F91\u5B58\u6863\u5185\u7684\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F"),onClick:()=>void Dt("client-control-template")},e("UI\u63A7\u4EF6-\u5BA2\u6237\u7AEF"))),t("div",{className:"qxsim-pane-head"},t("div",{className:"qxsim-pane-title"},Q?e("\u6A21\u677F\u4E0E\u5B50\u63A7\u4EF6"):e("\u63A7\u4EF6\u6811")),t("span",{className:"qxsim-muted"},Q?e`${o.asset.templateCount} 个模板 · ${o.tree.length} 个控件`:e`${o.tree.length} 个节点`)),t("label",{className:"qxsim-search"},"\u2315",t("input",{value:De,placeholder:Q?e("\u641C\u7D22\u6A21\u677F\u6216\u63A7\u4EF6"):e("\u641C\u7D22\u63A7\u4EF6"),onChange:r=>ut(r.target.value)}),De?t("button",{onClick:()=>ut("")},"\xD7"):t("span",null,"\u2301")),t("div",{className:"qxsim-tree-scroll"},Wt.length?Wt.map(r=>{let c=P[r.kind]||["\u25C7",r.label],b=vt.has(r.id),F=!!pt[r.id];return t("div",{key:r.id,className:`qxsim-row${Q&&r.depth===0?" template-root":""}${r.id===o.selectedId?" active":""}${b?" canvas-hidden":""}`,style:{paddingLeft:8+r.depth*18,"--depth":r.depth},title:`${e(c[1])} \xB7 ${r.name} \xB7 GUID ${r.guid??r.id}`,onClick:()=>void X({op:"select",id:r.id}).catch(()=>{})},t("span",{className:"qxsim-chevron"},r.childCount?"\u25BC":""),t("span",{className:"qxsim-kind"},c[0]),t("span",{className:"qxsim-row-label"},r.name),t("span",{className:"qxsim-row-end"},Q&&r.depth===0?t(a.Fragment,null,t("span",{className:"qxsim-template-tag"},e("\u6A21\u677F")),t("span",{className:"qxsim-template-id"},`#${r.guid??r.id}`)):r.incomplete?t("span",{className:"qxsim-incomplete"},e("\u6682\u4E0D\u652F\u6301")):null,t("button",{className:`qxsim-eye${F?" off":""}`,type:"button",title:F?e("\u5728\u753B\u5E03\u4E0A\u663E\u793A\uFF08\u4E0D\u5F71\u54CD\u63A7\u4EF6\u521D\u59CB\u53EF\u89C1\u6027\uFF09"):e("\u5728\u753B\u5E03\u4E0A\u9690\u85CF\uFF08\u4E0D\u5F71\u54CD\u63A7\u4EF6\u521D\u59CB\u53EF\u89C1\u6027\uFF09"),"aria-label":e`${r.name}画布可见性`,"aria-pressed":!F,onClick:le=>oi(le,r.id)},F?"\u25CC":"\u25C9")))}):t("div",{className:"qxsim-empty"},e("\u6CA1\u6709\u5339\u914D\u7684\u63A7\u4EF6"))),t("div",{className:"qxsim-tree-foot"},Q&&Y?t("div",{className:"qxsim-hierarchy"},t("div",{className:"qxsim-hierarchy-head"},t("strong",null,e("\u5C42\u7EA7\u4E0E\u6A21\u677F\u8FB9\u754C")),t("span",null,Y.name)),t("div",{className:"qxsim-parent-row"},t("select",{"aria-label":e("\u7236\u7EA7\u63A7\u4EF6"),value:li,onChange:r=>void X({op:"reparent",id:Y.id,parentId:r.target.value}).then(()=>J(r.target.value===o.root.id?e("\u5DF2\u63D0\u5347\u4E3A\u53EF\u5B9E\u4F8B\u5316\u9876\u5C42\u6A21\u677F"):e("\u5DF2\u8C03\u6574\u63A7\u4EF6\u7236\u7EA7"))).catch(()=>{})},t("option",{value:o.root.id},e("\u9876\u5C42\u6A21\u677F\uFF08\u53EF\u5B9E\u4F8B\u5316\uFF09")),si.map(r=>t("option",{key:r.id,value:r.id},`${"\u3000".repeat(r.depth)}${r.name}`))),t("button",{title:e("\u5728\u540C\u7EA7\u4E2D\u4E0A\u79FB"),disabled:Y.siblingIndex<=0,onClick:()=>void X({op:"moveSibling",id:Y.id,direction:"up"}).catch(()=>{})},"\u2191"),t("button",{title:e("\u5728\u540C\u7EA7\u4E2D\u4E0B\u79FB"),disabled:Y.siblingIndex>=Y.siblingCount-1,onClick:()=>void X({op:"moveSibling",id:Y.id,direction:"down"}).catch(()=>{})},"\u2193")),t("div",{className:"qxsim-hierarchy-note"},Y.depth===0?e("\u8BE5\u8282\u70B9\u4F1A\u5199\u5165\u72EC\u7ACB UIControlTemplate\uFF0C\u53EF\u76F4\u63A5\u4F5C\u4E3A prefabId\u3002"):e`当前为第 ${Y.depth} 层子控件,不会单独成为 prefabId。`)):null,t("div",{className:"qxsim-palette-head"},t("span",{title:Q&&Ne==="template"?e("\u65B0\u589E\u72EC\u7ACB\u53EF\u5B9E\u4F8B\u5316\u6A21\u677F"):e`添加到${Y?Y.name:e("\u5F53\u524D\u63A7\u4EF6")}`},Q&&Ne==="template"?e("\u65B0\u589E\u9876\u5C42\u6A21\u677F"):e`添加到${Y?`\u201C${Y.name}\u201D`:e("\u5F53\u524D\u63A7\u4EF6")}`),Q?t("span",{className:"qxsim-add-mode"},t("button",{className:Ne==="template"?"active":"",onClick:()=>mt("template")},e("\u9876\u5C42")),t("button",{className:Ne==="child"?"active":"",onClick:()=>mt("child")},e("\u5B50\u63A7\u4EF6"))):null),t("div",{className:"qxsim-add"},_.filter(([r])=>Q||r!=="container").map(([r,c])=>t("button",{key:r,title:`${Q&&Ne==="template"?e("\u65B0\u589E"):e("\u6DFB\u52A0")}${e(c)}`,onClick:()=>Qa(r,e(c))},`\uFF0B ${e(c)}`))))),t("main",{className:"qxsim-center"},t("div",{className:"qxsim-workspace",ref:zt},t("div",{className:"qxsim-stage-shell",style:{width:`${Math.max(40,Math.round(qe*_t))}px`}},t("div",{className:"qxsim-stage-label"},t("b",null,Q?e("Lua \u6A21\u677F\u9884\u89C8"):e("\u754C\u9762\u63A7\u4EF6\u7EC4")),t("span",{className:"qxsim-platform-tag"},o.canvas.platform),t("span",null,e`${Rt} · ${qe}×${Pe} · 左下原点`)),t("div",{className:"qxsim-stage",style:{width:"100%",aspectRatio:`${qe} / ${Pe}`},onClick:r=>{let c=r.currentTarget.getBoundingClientRect();X({op:"pick",x:(r.clientX-c.left)*qe/c.width,y:(c.bottom-r.clientY)*Pe/c.height}).catch(()=>{})}},ri.map(r=>Oa(r,o,qe,Pe,_t,H))))),f?t("div",{className:"qxsim-status error"},"\u26A0 ",e(f)):t("div",{className:"qxsim-status"},t("span",null,e`● ${e(o.asset?.label)||e("\u63A7\u4EF6")}编辑`),t("span",null,we||(Y?e`当前:${Y.name}`:"")),t("span",{className:"spacer"}),t("span",null,Q?e("GIA \u5BFC\u51FA\u540E\u53EF\u5728 Lua \u4E2D\u6309 prefabId \u5B9E\u4F8B\u5316"):e("\u5B57\u6BB5\u5728\u5931\u7126\u6216 Enter \u65F6\u63D0\u4EA4")))),t("aside",{className:"qxsim-inspector"},o.inspector?t(a.Fragment,null,t("div",{className:"qxsim-inspector-head"},t("div",{className:"qxsim-inspector-line"},t("span",{className:"qxsim-kind"},(P[o.inspector.kind]||["\u25C7"])[0]),t("strong",null,e(o.inspector.label)),Q&&Y?.depth===0?t("span",{className:"qxsim-template-tag"},e("\u53EF\u5B9E\u4F8B\u5316")):null),t("div",{className:"qxsim-node-id"},Q&&Y?.depth===0?e("\u6A21\u677F\u7D22\u5F15 "):e("\u63A7\u4EF6 GUID "),t("code",null,o.inspector.guid??o.inspector.id)," \xB7 ",Y?.name||e("\u8282\u70B9")),o.inspector.kind!=="server-container"?t($a,{key:`${o.asset.type}:${o.inspector.id}`,inspector:o.inspector,autofill:o.clientGuidAutofill,onSave:(r,c,b)=>Ba(r,c,o.asset.type,b)}):null),t("div",{className:"qxsim-tabs",style:bt?void 0:{gridTemplateColumns:"1fr"}},t("button",{className:lt==="base"?"active":"",onClick:()=>ct("base")},e("\u57FA\u7840\u5C5E\u6027")),bt?t("button",{className:lt==="script"?"active":"",onClick:()=>ct("script")},e("\u811A\u672C")):null),t("div",{className:"qxsim-inspector-scroll"},bt&<==="script"?t(Ta,{snap:o,addScriptMounted:r=>void jt({controlId:r,controlAsset:o.asset?.type}).then(()=>Ae("script")),mountScriptTo:Ka,unmountScript:Ja,openScript:r=>{Be(r),Ae("script")}}):t(a.Fragment,null,t(it,{key:`${o.asset.type}:${o.inspector.id}`,inspector:o.inspector,commit:Ra,createStateChild:Ha}),o.boxes?.some(r=>r.id===o.selectedId&&Ee(r.imageId,r.imageSource))?t("div",{className:"qxsim-section-body"},t("button",{className:"qxsim-action",disabled:j,onClick:Wa},j?e("\u6B63\u5728\u5237\u65B0\u7D20\u6750\u2026"):e("\u21BB \u91CD\u65B0\u4E0B\u8F7D\u6B64\u7D20\u6750")),t("p",{className:"qxsim-muted"},e("\u767D\u540D\u5355\u56FE\u7247\u6309\u9700\u7F13\u5B58\uFF1B\u5237\u65B0\u4F1A\u91CD\u65B0\u8BBF\u95EE\u7D20\u6750\u6E90\u3002"))):null)),t("div",{className:"qxsim-tree-foot"},t("button",{className:"qxsim-action danger",style:{width:"100%"},onClick:()=>void X({op:"remove"}).catch(()=>{})},Q&&Y?.depth===0?e("\u232B \u5220\u9664\u5F53\u524D\u6A21\u677F"):e("\u232B \u5220\u9664\u5F53\u524D\u63A7\u4EF6")))):t("div",{className:"qxsim-empty"},e("\u8BF7\u9009\u62E9\u4E00\u4E2A\u63A7\u4EF6")))):fe==="script"?t(nt,{snap:o,selectedScriptId:gt,selectScript:r=>{Gt(),Be(r)},draft:ft,updateDraft:Ya,saveScript:()=>void he().then(()=>J(e("Lua \u811A\u672C\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863"))).catch(()=>{}),addScript:()=>void jt(),removeScript:Xa,exportLua:r=>void He("lua",r),exportScripts:()=>void He("scripts"),exportScriptsGia:()=>void He("scripts-gia"),notice:we}):t(Ea,{snap:o,draft:Ut,setDraft:ht,saveLogic:()=>void Se().catch(()=>{}),notice:we,error:f}),t($,{version:d,request:r=>E(n,r)}))}return{SimulatorView:Ua,ensureStyle:M,removeStyle:()=>document.getElementById(U)?.remove()}}var Na={name:"dsh-plugin-beyond-simulator",version:"2.2.0",description:"\u5343\u661F\u5947\u57DF\u5BA2\u6237\u7AEF UI \u7F16\u8F91\u4E0E\u8BD5\u73A9\u6A21\u62DF\u5668 for DeepSeek Harness",private:!0,type:"module",packageManager:"pnpm@10.15.0",engines:{node:">=22"},main:"dsh-plugin/dist/index.js",exports:{".":"./dsh-plugin/dist/index.js","./skill":"./dsh-plugin/dist/skill.js","./preset":"./dsh-plugin/dist/preset.js","./client":"./dsh-plugin/dist/client.js","./cordis.patch.yml":"./dsh-plugin/cordis.patch.yml","./package.json":"./package.json"},files:["dsh-plugin/dist","dsh-plugin/lib/play.html","dsh-plugin/skill.md","dsh-plugin/presets","dsh-plugin/cordis.patch.yml","README.md","LICENSE"],repository:{type:"git",url:"git+https://github.com/1475505/miliastra-beyond-simulator.git"},dsh:{bundle:{patch:"./dsh-plugin/cordis.patch.yml"},client:{inject:["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-slots","@deepseek-ai/dsh-client-ui-conversation"],platform:"web"}},scripts:{prepare:"node scripts/build.mjs dsh-plugin",build:"node scripts/build.mjs",test:"node scripts/test.mjs","pack:release":"node scripts/pack.mjs","test:packages":"node scripts/smoke-packages.mjs","test:git-install":"node scripts/smoke-git-install.mjs","test:harness":"node scripts/smoke-harness.mjs","dev:web":"node scripts/build.mjs web && node web/server.js","start:web":"node web/dist/server.js"},dependencies:{"@napi-rs/canvas":"0.1.100",fengari:"0.1.5",protobufjs:"8.7.2"},peerDependencies:{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-tools":"^0.1.0-rc.6 || ^0.2.0-rc.1 || ^0.2.1-rc.1"},devDependencies:{"@deepseek-ai/dsh-tools":"0.1.0-rc.6",esbuild:"0.25.12"},license:"GPL-3.0-only"};Jt("/qxqy-simulator/api/locale");window.__ModuleLoader__.load({id:"dsh-plugin-beyond-simulator",factory:a=>{let i={},p=a("react"),s=Ca(p,{version:Na.version,async api(d,t,g){let v=await fetch("/qxqy-simulator/api/"+t,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({sessionId:d,...g||{}}),...t==="play"?{signal:AbortSignal.timeout(15e3)}:{}}),S=await v.json();if(!v.ok||!S.ok)throw new Error(S.error||"Request failed");return S.value},playUrl:d=>"/qxqy-simulator/play#"+encodeURIComponent(d)});return i.inject=["slots"],i.apply=d=>{s.ensureStyle(),d.effect(()=>s.removeStyle,"qxqy-simulator: style cleanup");let t=()=>e("\u6A21\u62DF\u5668");d.inject(["locale"],g=>{let v,S,I=g.locale.bind("qxqy-simulator");t=()=>I("title");let y=()=>{let k=e("\u6A21\u62DF\u5668");k!==S&&(S=k,v?.(),v=g.locale.register("qxqy-simulator",{en:{title:k},zh:{title:k}}))};g.effect(()=>{y();let k=St(y);return()=>{k(),t=()=>e("\u6A21\u62DF\u5668"),v?.()}},"qxqy-simulator: tab language")}),d.slots.inject("conversation.view",()=>d.slots.register({name:"conversation.view",id:"qxqy-simulator",order:20,label:()=>t()},s.SimulatorView))},i}});})();
|
|
52
|
+
`,O={"server-container":["\u25A3","\u5BA2\u6237\u7AEF\u63A7\u4EF6\u5BB9\u5668"],container:["\u25A1","\u5BB9\u5668\u8282\u70B9"],textbox:["T","\u6587\u672C\u6846"],cursor:["\u2301","\u5149\u6807\u68C0\u6D4B\u533A\u57DF"],reference:["\u2197","\u6A21\u677F\u5F15\u7528\u63A7\u4EF6"],grid:["\u25A6","\u7F51\u683C\u89C6\u7A97"],image:["\u25A7","\u56FE\u7247"],button:["Btn","\u9884\u8BBE\u6309\u94AE"],textwindow:["T\u2195","\u6587\u672C\u89C6\u7A97"],keyhint:["1","\u6309\u952E\u63D0\u793A"],animation:["\u2726","\u754C\u9762\u52A8\u6548"],fullscreen:["\u2725","\u5168\u5C4F\u52A8\u6548"]},T=[["container","\u5BB9\u5668\u8282\u70B9"],["textbox","\u6587\u672C\u6846"],["cursor","\u5149\u6807\u68C0\u6D4B"],["reference","\u6A21\u677F\u5F15\u7528"],["grid","\u7F51\u683C\u89C6\u7A97"],["button","\u9884\u8BBE\u6309\u94AE"],["textwindow","\u6587\u672C\u89C6\u7A97"],["keyhint","\u6309\u952E\u63D0\u793A"],["image","\u56FE\u7247"],["animation","\u754C\u9762\u52A8\u6548"],["fullscreen","\u5168\u5C4F\u52A8\u6548"]],W={container:["isolateNavigation","disableKeyEventPassthrough","disableCursorEventPassthrough","showCursor"],textbox:["fontSize","adaptiveFontSize","minimumFontSize","fontColor","bgColor","enableOutline","outlineColor","horizontalAlignment","verticalAlignment","text"],cursor:[],reference:["referencedPrefabId"],grid:["itemPrefabId","raycastTarget","interactable","showScrollBar","scrollDirection","layoutConstraint","layoutConstraintFixedCount","cellSizeX","cellSizeY","spacingX","spacingY","padding1X","padding1Y","padding2X","padding2Y","previewCount"],image:["imageSource","imageId","imageColor","enableMask","enableSoftEdge","softEdgeMode","softEdgeWidthX","softEdgeWidthY","horizontalSoftRange","verticalSoftRange","enableFill","fillType","fillHorizontalType","fillVerticalType","fillRadial90Type","fillRadialType","fillAmount","reverseMaskArea"],button:["raycastTarget","interactable","unavailableChildId","hoverChildId","pressedChildId","selectedChildId","clickAudioId"],textwindow:["interactable","showScrollBar","fontSize","adaptiveFontSize","minimumFontSize","fontColor","bgColor","enableOutline","outlineColor","horizontalAlignment","verticalAlignment","text"],keyhint:["keyboardKeyCode","controllerKeyCode"],animation:["animationId","playSoundEffect","layer"],fullscreen:["animationId","playSoundEffect"]};function M(){if(document.getElementById(A))return;let s=document.createElement("style");s.id=A,s.textContent=P,document.head.appendChild(s)}function H(){let s=document.documentElement,b=document.body,g=[s.dataset.theme,s.className,s.getAttribute("style"),b?.dataset?.theme,b?.className,b?.getAttribute("style"),getComputedStyle(s).colorScheme].filter(Boolean).join(" ").toLowerCase();return g.includes("dark")?"dark":g.includes("light")?"light":window.matchMedia?.("(prefers-color-scheme: dark)").matches?"dark":"light"}function se(){let[s,b]=i.useState(H);return i.useEffect(()=>{let g=()=>b(H()),r=new MutationObserver(g);r.observe(document.documentElement,{attributes:!0,attributeFilter:["class","style","data-theme"]}),document.body&&r.observe(document.body,{attributes:!0,attributeFilter:["class","style","data-theme"]});let C=window.matchMedia?.("(prefers-color-scheme: dark)");return C?.addEventListener?.("change",g),()=>{r.disconnect(),C?.removeEventListener?.("change",g)}},[]),s}function le(s,b){let g=Number(s??b)>>>0;return`rgba(${g>>>16&255},${g>>>8&255},${g&255},${(g>>>24&255)/255})`}function re(s,b){return s==="sprite"?{background:"transparent"}:s==="circle"?{borderRadius:"50%",background:b}:s==="ring"?{borderRadius:"50%",border:`7px solid ${b}`,background:"transparent"}:s==="triangle"?{background:b,clipPath:"polygon(50% 0,100% 100%,0 100%)"}:s==="fourstar"?{background:b,clipPath:"polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%)"}:s==="fivestar"?{background:b,clipPath:"polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)"}:s==="missing"?{background:"#4822285c",border:"1px dashed #ff7481"}:{background:b}}let L=a;function J(s){let b;try{b=atob(s.data)}catch{throw new Error(e("\u5BFC\u51FA\u5185\u5BB9\u89E3\u7801\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u6216\u5237\u65B0\u9875\u9762"))}let g=new Uint8Array(b.length);for(let E=0;E<b.length;E+=1)g[E]=b.charCodeAt(E);let r=URL.createObjectURL(new Blob([g],{type:s.mimeType||"application/octet-stream"})),C=document.createElement("a");C.href=r,C.download=s.filename||"qxqy-export",C.rel="noopener",C.style.display="none",document.body.appendChild(C),C.click(),C.remove(),setTimeout(()=>URL.revokeObjectURL(r),1e3)}async function K(s){let b=new Uint8Array(await s.arrayBuffer()),g="",r=32768;for(let C=0;C<b.length;C+=r)g+=String.fromCharCode(...b.subarray(C,C+r));return btoa(g)}let te=s=>typeof s=="object"?s.value:s,fe=s=>e(typeof s=="object"?s.label:s),oe=[{key:"KEYBOARD",label:"PC",title:"PC KEYBOARD \u753B\u5E03\uFF1A1600\xD7900 / 2100\xD7900"},{key:"TOUCHSCREEN",label:"\u624B\u673A",title:"\u624B\u673A TOUCHSCREEN \u753B\u5E03\uFF1A1280\xD7720 / 1560\xD7720 / 1280\xD7960"}];function de(s){return String(s.id||"").split("-").slice(1).join(":")}function Fe(s,b){let g=(C,E)=>E?g(E,C%E):C,r=g(Math.round(s),Math.round(b))||1;return`${Math.round(s)/r}:${Math.round(b)/r}`}function ue({field:s,commit:b,axis:g}){let r=s.value==null?"":String(s.value),[C,E]=i.useState(r);if(i.useEffect(()=>E(s.value==null?"":String(s.value)),[s.value,s.type]),s.type==="note")return t("div",{className:"qxsim-note"},e(s.value||s.label));if(s.readonly&&(s.evidence==="N"||s.evidence==="U"))return t("div",{className:"qxsim-field"},t("span",{className:"qxsim-field-label"},e(s.label)),t("div",{className:"qxsim-unsupported"},s.value==null?e("\u5C1A\u65E0\u53EF\u7F16\u8F91\u503C"):String(s.value)));if(s.type==="bool")return t("div",{className:"qxsim-switch-row"},t("span",null,e(s.label)),t("label",{className:"qxsim-switch"},t("input",{type:"checkbox",checked:!!s.value,disabled:!!s.readonly,onChange:k=>b(s.key,k.target.checked)}),t("span",{className:"qxsim-switch-track"})));if(s.type==="enum"){let k=[...s.options||[]],N=String(s.value??"");return k.some(R=>String(te(R))===N)||k.unshift({value:s.value??"",label:e`未识别选项 ${s.unknownValue??(N||e("\u7A7A"))}(保留原值)`}),t("label",{className:"qxsim-field"},t("span",{className:"qxsim-field-label"},e(s.label)),t("select",{value:N,disabled:!!s.readonly,onChange:R=>b(s.key,R.target.value)},k.map(R=>t("option",{key:String(te(R)),value:te(R)},fe(R)))))}if(s.type==="percent"){let k=Math.round(Number(s.value||0)*100);return t("label",{className:"qxsim-field"},t("span",{className:"qxsim-field-label"},e(s.label)),t("span",{className:"qxsim-percent"},t("input",{type:"range",min:0,max:100,value:k,onInput:N=>b(s.key,Number(N.target.value)/100)}),t("output",null,`${k}%`)))}if(s.type==="color")return t(U,{field:s,commit:b});let D={value:C,disabled:!!s.readonly,readOnly:!!s.readonly,onChange:k=>E(k.target.value),onBlur:()=>{s.readonly||b(s.key,C)},onKeyDown:k=>{k.key==="Enter"&&s.type!=="text"&&k.currentTarget.blur(),k.key==="Escape"&&E(s.value==null?"":String(s.value))}};return t("label",{className:"qxsim-field"},t("span",{className:"qxsim-field-label"},g?t("b",{className:`qxsim-axis ${g.toLowerCase()}`},g):null,e(s.label)),s.type==="text"?t("textarea",{...D,rows:4}):t("input",{...D,type:s.type==="number"?"number":"text",step:s.type==="number"?"any":void 0}))}function be({title:s,open:b=!0,children:g}){return t("details",{className:"qxsim-section",open:b},t("summary",null,s),t("div",{className:"qxsim-section-body"},g))}function ye(s){let b={};for(let g of s||[])b[g.key]=g;return b}function S({label:s,x:b,y:g,xAxis:r="X",yAxis:C="Y",commit:E}){return t("div",{className:"qxsim-pair"},t("div",{className:"qxsim-pair-name"},s),t(ue,{field:b,axis:r,commit:E}),t(ue,{field:g,axis:C,commit:E}))}function ce({field:s,commit:b,createStateChild:g}){return t("div",{className:"qxsim-state-field"},t("div",{className:"qxsim-state-label"},e(s.label)),t("div",{className:"qxsim-state-ref"},t("button",{title:e`新建并绑定${e(s.label)}图片`,onClick:()=>g(s.key,e(s.label))},"+"),t("select",{value:String(s.value??""),"aria-label":e(s.label),onChange:r=>b(s.key,r.target.value)},(s.options||[]).map(r=>t("option",{key:String(te(r)),value:te(r)},fe(r))))))}function me({inspector:s,commit:b,createStateChild:g}){let r=ye(s.fields),C=N=>N?.type==="node"?t(ce,{key:N.key,field:N,commit:b,createStateChild:g}):N?t(ue,{key:N.key,field:N,commit:b}):null,E=(W[s.kind]||[]).map(N=>r[N]).filter(Boolean).map(C),D=null;if(s.kind==="image"){let N=r.fillType?.value==="Horizontal"?r.fillHorizontalType:r.fillType?.value==="Vertical"?r.fillVerticalType:r.fillType?.value==="Radial90"?r.fillRadial90Type:r.fillRadialType,R=[C(r.enableMask),C(r.enableSoftEdge),r.enableSoftEdge?.value?t("div",{className:"qxsim-subfields",key:"soft-fields"},C(r.softEdgeMode),t(S,{label:e("\u7FBD\u5316\u5BBD\u5EA6"),x:r.softEdgeWidthX,y:r.softEdgeWidthY,commit:b}),t(S,{label:e("\u7FBD\u5316\u8303\u56F4"),x:r.horizontalSoftRange,y:r.verticalSoftRange,commit:b})):null,C(r.enableFill),r.enableFill?.value?t("div",{className:"qxsim-subfields",key:"fill-fields"},C(r.fillType),C(N),C(r.fillAmount)):null,C(r.reverseMaskArea)];D=t(i.Fragment,null,t(be,{title:e("\u56FE\u7247\u8BBE\u7F6E")},C(r.imageSource),C(r.imageId),t(q,{imageId:r.imageId?.value,imageSource:r.imageSource?.value,value:r.imageType?.value,commit:b}),C(r.imageColor)),t(be,{title:e("\u906E\u7F69\u8BBE\u7F6E")},R))}let k=s.kind==="textbox"?e("\u6587\u672C\u6846\u8BBE\u7F6E"):s.kind==="button"?e("\u6309\u94AE\u8BBE\u7F6E"):e`${e(s.label)}设置`;return t(i.Fragment,null,t(be,{title:e("\u8282\u70B9\u4FE1\u606F"),open:!1},t(ue,{field:r.name,commit:b})),t(be,{title:e("\u53D8\u6362")},r.posX?t(S,{label:e("\u4F4D\u7F6E"),x:r.posX,y:r.posY,commit:b}):null,r.width?t(S,{label:e("\u5927\u5C0F"),x:r.width,y:r.height,xAxis:"W",yAxis:"H",commit:b}):null,...["rotationX","rotationY","rotationZ"].map(N=>r[N]?t(ue,{key:N,field:r[N],commit:b}):null),r.syncAllDevices?t(ue,{field:r.syncAllDevices,commit:b}):null,r.anchorType?t(ue,{field:r.anchorType,commit:b}):null,r.anchorMinX?t(S,{label:"Min",x:r.anchorMinX,y:r.anchorMinY,commit:b}):null,r.anchorMaxX?t(S,{label:"Max",x:r.anchorMaxX,y:r.anchorMaxY,commit:b}):null,r.pivotX?t(S,{label:e("\u4E2D\u5FC3"),x:r.pivotX,y:r.pivotY,commit:b}):null),t(be,{title:e("\u521B\u5EFA\u8BBE\u7F6E")},r.active?t(ue,{field:r.active,commit:b}):null,r.visible?t(ue,{field:r.visible,commit:b}):null),D||(E.length?t(be,{title:k},E):null),r.canControllerFocus?t(be,{title:e("\u624B\u67C4\u5BFC\u822A"),open:!1},t(ue,{field:r.canControllerFocus,commit:b})):null,r.incomplete?t(be,{title:e("\u5B9E\u73B0\u72B6\u6001")},t(ue,{field:r.incomplete,commit:b})):null)}function ut({snap:s,selectedScriptId:b,selectScript:g,draft:r,updateDraft:C,saveScript:E,addScript:D,removeScript:k,exportLua:N,exportScripts:R,exportScriptsGia:Z,notice:he}){let X=s.scripts||[],V=X.find(G=>G.id===b)||null,Y=s.mountTargets||[],j=Y.filter(G=>G.assetType==="server-control-template"),B=Y.filter(G=>G.assetType==="client-control-template"),pe=G=>{let qe=Y.find(ke=>ke.id===G);return qe?`${qe.assetLabel} \xB7 ${qe.name}`:""};return t("div",{className:"qxsim-script-page"},t("aside",{className:"qxsim-script-assets"},t("h3",null,e`存档内 Lua 脚本(${X.length})`),t("button",{className:"qxsim-action",style:{width:"100%",marginBottom:8},onClick:D},e("\uFF0B \u65B0\u5EFA\u811A\u672C")),X.length?X.map(G=>t("div",{key:G.id,className:"qxsim-script-list-row"},t("button",{className:`qxsim-script-asset${G.id===b?" active":""}`,onClick:()=>g(G.id)},t("strong",null,G.path||e("(\u672A\u547D\u540D\u811A\u672C)")),t("small",null,G.mounted?e`挂载:${G.assetLabel} · ${G.controlName}`:e("\u672A\u6302\u8F7D\uFF08\u4EC5\u53EF\u88AB require\uFF09"))),t("button",{className:"qxsim-iconbtn",title:e("\u4E0B\u8F7D\u8BE5\u811A\u672C .lua"),onClick:()=>N(G.id)},"\u21E9"),t("button",{className:"qxsim-iconbtn",title:e("\u5220\u9664\u8BE5\u811A\u672C"),onClick:()=>k(G.id)},"\u2715"))):t("div",{className:"qxsim-empty"},e("\u8FD8\u6CA1\u6709\u811A\u672C\uFF0C\u70B9\u51FB\u201C\u65B0\u5EFA\u811A\u672C\u201D\u5F00\u59CB"))),t("main",{className:"qxsim-script-editor"},V&&r?t(i.Fragment,null,t("div",{className:"qxsim-script-title"},t("div",null,t("h2",null,r.path||e("(\u672A\u547D\u540D\u811A\u672C)")),t("span",null,e`属于存档“${s.save?.name||e("\u672A\u547D\u540D\u5B58\u6863")}” · Lua 脚本是存档内独立资产`)),t("span",null,e`脚本 ${V.id}`)),t("div",{className:"qxsim-script-fields"},t("label",null,e("\u811A\u672C\u8DEF\u5F84\uFF08\u5DE5\u4F5C\u533A\u76F8\u5BF9\u8DEF\u5F84\uFF09"),t("input",{type:"text",value:r.path,placeholder:"lua/example.lua",onChange:G=>C({path:G.target.value})})),t("label",null,e("\u6302\u8F7D\u76EE\u6807\uFF08\u5BA2\u6237\u7AEF\u63A7\u4EF6 / \u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\uFF09"),t("select",{value:r.controlId?`${r.controlAsset||"server-control-template"}|${r.controlId}`:"",onChange:G=>{let[qe,ke]=G.target.value.split("|");C(ke?{controlId:ke,controlAsset:qe}:{controlId:"",controlAsset:""})}},t("option",{value:""},e("\u672A\u6302\u8F7D\uFF08\u4E0D\u751F\u6548\uFF0C\u4EC5\u53EF\u88AB require\uFF09")),t("optgroup",{label:e("\u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F \xB7 \u5BA2\u6237\u7AEF\u63A7\u4EF6\u5BB9\u5668\u5185")},j.map(G=>t("option",{key:G.id,value:`${G.assetType}|${G.id}`},`${G.name} \xB7 ${G.id}`))),B.length?t("optgroup",{label:e("\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F")},B.map(G=>t("option",{key:G.id,value:`${G.assetType}|${G.id}`},`${G.name} \xB7 ${G.id}`))):null))),t("label",null,e("Lua \u6E90\u7801"),t("textarea",{value:r.source,spellCheck:!1,placeholder:e("-- \u5728\u8FD9\u91CC\u8F93\u5165\u5BA2\u6237\u7AEF Lua\uFF1B\u811A\u672C\u53EA\u6709\u6302\u8F7D\u5230\u5BA2\u6237\u7AEF\u63A7\u4EF6\u540E\u624D\u4F1A\u5728\u8BD5\u73A9\u65F6\u751F\u6548"),onChange:G=>C({source:G.target.value})})),t("div",{className:"qxsim-script-footer"},t("span",null,r.dirty?e("\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539"):he||(V.mounted?e`已挂载:${pe(V.controlId)}`:e("\u5F53\u524D\u672A\u6302\u8F7D\uFF0C\u8BD5\u73A9\u65F6\u4E0D\u4F1A\u81EA\u52A8\u8FD0\u884C"))),t("span",{className:"spacer"}),t("button",{className:"qxsim-action",onClick:R},e("\u21E9 \u811A\u672C\u5305 JSON")),t("button",{className:"qxsim-action",onClick:Z},e("\u21E9 \u811A\u672C\u5305 GIA")),t("button",{className:"qxsim-action primary",disabled:!r.dirty,onClick:E},e("\u4FDD\u5B58\u811A\u672C")))):t("div",{className:"qxsim-empty"},e("\u8BF7\u65B0\u5EFA\u6216\u9009\u62E9\u4E00\u4E2A\u811A\u672C"))))}function He(s){if(s===void 0)return"null";try{return JSON.stringify(s)}catch{return String(s)}}function Wt(s){let b=String(s??"").trim();if(!b)return null;try{return JSON.parse(b)}catch{return b}}function Jt(s){return!!(s&&typeof s=="object"&&!Array.isArray(s)&&Object.prototype.hasOwnProperty.call(s,"fromSignalParam"))}function Kt(s){return{version:1,dirty:!1,rules:(Array.isArray(s?.rules)?s.rules:[]).map((g,r)=>({id:String(g.id||`signal-${r+1}`),signalName:String(g.signalName||""),actions:Array.isArray(g.actions)&&g.actions.length?g.actions.map(C=>si(C)):[De("setCustomVariable")]}))}}let Qt=["PlayerSelf","AllPlayers","Player1","Player2","Player3","Player4","Player5","Player6","Player7","Player8"],Zt=["PlayerSelf","Level","Player1","Player2","Player3","Player4","Player5","Player6","Player7","Player8"],ea={PlayerSelf:"PlayerSelf \u5F53\u524D\u73A9\u5BB6",AllPlayers:"AllPlayers \u5168\u90E8\u73A9\u5BB6",Level:"Level \u5173\u5361",Player1:"Player1 \u73A9\u5BB61",Player2:"Player2 \u73A9\u5BB62",Player3:"Player3 \u73A9\u5BB63",Player4:"Player4 \u73A9\u5BB64",Player5:"Player5 \u73A9\u5BB65",Player6:"Player6 \u73A9\u5BB66",Player7:"Player7 \u73A9\u5BB67",Player8:"Player8 \u73A9\u5BB68"};function bt(s){return Zt.includes(s)&&s!=="AllPlayers"?s:s==="Level"?"Level":"PlayerSelf"}function mt(s){return Qt.includes(s)?s:"PlayerSelf"}function De(s){return s==="sendClientScriptSignal"?{kind:"sendClientScriptSignal",target:"PlayerSelf",signalName:"",params:[]}:{kind:"setCustomVariable",entityType:"PlayerSelf",name:"",value:0}}function oi(s){return{version:1,rules:(s?.rules||[]).map(b=>({id:String(b.id||""),signalName:String(b.signalName||"").trim(),actions:(b.actions||[]).map(g=>g?.kind==="sendClientScriptSignal"?{kind:"sendClientScriptSignal",target:mt(g.target),signalName:String(g.signalName||"").trim(),params:Array.isArray(g.params)?g.params:[]}:{kind:"setCustomVariable",entityType:bt(g?.entityType),name:String(g?.name||"").trim(),value:g&&Object.prototype.hasOwnProperty.call(g,"value")?g.value:0})}))}}function ni(s){let b=[];for(let[g,r]of(s?.rules||[]).entries()){String(r.signalName||"").trim()||b.push(e`规则 ${g+1} 需要监听信号名`);let C=r.actions||[];C.length||b.push(e`规则 ${g+1} 至少需要一个动作`);for(let[E,D]of C.entries())D?.kind==="sendClientScriptSignal"?String(D.signalName||"").trim()||b.push(e`规则 ${g+1} 动作 ${E+1} 需要客户端信号名`):String(D?.name||"").trim()||b.push(e`规则 ${g+1} 动作 ${E+1} 需要变量名`)}return b}function si(s){if(s?.kind==="sendClientScriptSignal")return{kind:"sendClientScriptSignal",target:mt(s.target),signalName:String(s.signalName||""),params:Array.isArray(s.params)?s.params.map(g=>{try{return JSON.parse(JSON.stringify(g))}catch{return g}}):[]};let b=0;if(s&&Object.prototype.hasOwnProperty.call(s,"value"))try{b=JSON.parse(JSON.stringify(s.value))}catch{b=s.value}return{kind:"setCustomVariable",entityType:bt(s?.entityType),name:String(s?.name||""),value:b}}function ta({label:s,value:b,onChange:g}){let r=Jt(b),[C,E]=i.useState(()=>r?"":He(b));return i.useEffect(()=>{Jt(b)||E(He(b))},[b]),t("label",{className:"qxsim-field"},t("span",{className:"qxsim-field-label"},s),t("select",{value:r?"param":"literal","aria-label":e`${e(s)}来源`,onChange:D=>{D.target.value==="param"?g({fromSignalParam:Number(b?.fromSignalParam)||0}):g(Wt(C||"0"))}},t("option",{value:"literal"},e("\u5B57\u9762\u91CF\uFF08JSON\uFF09")),t("option",{value:"param"},e("\u5F15\u7528\u76D1\u542C\u4FE1\u53F7\u53C2\u6570"))),r?t("input",{type:"number",min:0,step:1,value:Number(b.fromSignalParam)||0,"aria-label":e`${e(s)}参数序号`,onChange:D=>g({fromSignalParam:Math.max(0,Math.trunc(Number(D.target.value)||0))})}):t("textarea",{className:"qxsim-logic-json",value:C,spellCheck:!1,"aria-label":e`${e(s)}字面量`,onBlur:()=>g(Wt(C)),onChange:D=>E(D.target.value)}))}function ri({params:s,onChange:b}){let g=Array.isArray(s)?s:[];return t("div",{className:"qxsim-field wide"},t("span",{className:"qxsim-field-label"},e("\u5BA2\u6237\u7AEF\u4FE1\u53F7\u53C2\u6570\uFF08\u6309\u6DFB\u52A0\u987A\u5E8F\uFF09")),g.length?g.map((r,C)=>t("div",{key:C,style:{display:"flex",gap:6,alignItems:"flex-start",marginBottom:6}},t("div",{style:{flex:1,minWidth:0}},t(ta,{label:e`参数 ${C}`,value:r,onChange:E=>b(g.map((D,k)=>k===C?E:D))})),t("button",{className:"qxsim-iconbtn",title:e("\u5220\u9664\u53C2\u6570"),onClick:()=>b(g.filter((E,D)=>D!==C))},"\u2715"))):t("div",{className:"qxsim-muted"},e("\u6682\u65E0\u53C2\u6570\uFF0C\u53EF\u53D1\u9001\u7A7A\u53C2\u6570\u5217\u8868")),t("button",{className:"qxsim-action",style:{marginTop:4},onClick:()=>b(g.concat([0]))},e("\uFF0B \u6DFB\u52A0\u53C2\u6570")))}function di({snap:s,draft:b,setDraft:g,saveLogic:r,notice:C,error:E}){let D=b?.rules||[];function k(X){g({version:1,rules:X,dirty:!0})}function N(){k(D.concat([{id:`signal-${Date.now().toString(36)}`,signalName:"",actions:[De("setCustomVariable")]}]))}function R(X,V){k(D.map((Y,j)=>j===X?{...Y,...V}:Y))}function Z(X,V,Y){let j=D[X];j&&R(X,{actions:j.actions.map((B,pe)=>pe===V?{...B,...Y}:B)})}function he(X,V,Y){Z(X,V,De(Y))}return t("div",{className:"qxsim-server-logic"},t("div",{className:"qxsim-logic-wrap"},t("div",{className:"qxsim-logic-title"},t("div",null,t("h2",null,e("\u670D\u52A1\u7AEF\u903B\u8F91")),t("p",null,e`属于存档“${s.save?.name||e("\u672A\u547D\u540D\u5B58\u6863")}” · 监听客户端信号后设置 Level / 玩家变量,或向指定玩家发送客户端脚本信号`)),t("button",{className:"qxsim-action primary",disabled:!b?.dirty,onClick:r},e("\u4FDD\u5B58\u670D\u52A1\u7AEF\u903B\u8F91"))),t("div",{className:"qxsim-note"},e("\u8FD9\u662F\u6A21\u62DF\u5668\u5B58\u6863\u683C\u5F0F\uFF0C\u4E0D\u662F\u5B98\u65B9\u8282\u70B9\u56FE\u3002PlayerSelf \u8868\u793A\u53D1\u4FE1\u53F7\u7684\u90A3\u4F4D\u73A9\u5BB6\uFF1BPlayer1\u20138 \u662F\u56FA\u5B9A\u5EA7\u4F4D\uFF1BAllPlayers \u5411\u672C\u5C40\u5168\u90E8\u8BD5\u73A9\u73A9\u5BB6\u5E7F\u64AD\u3002")),E?t("div",{className:"qxsim-logic-error"},e(E)):null,D.length?D.map((X,V)=>t("section",{key:X.id||V,className:"qxsim-logic-rule"},t("div",{className:"qxsim-logic-rule-head"},t("strong",null,e`规则 ${V+1}`),t("label",{className:"qxsim-field"},t("span",{className:"qxsim-field-label"},e("\u76D1\u542C\u4FE1\u53F7\u540D")),t("input",{type:"text",value:X.signalName,placeholder:"EarnGold","aria-label":e`规则 ${V+1} 监听信号名`,onChange:Y=>R(V,{signalName:Y.target.value})})),t("button",{className:"qxsim-iconbtn",title:e("\u5220\u9664\u89C4\u5219"),onClick:()=>k(D.filter((Y,j)=>j!==V))},"\u2715")),t("div",{className:"qxsim-logic-actions"},(X.actions||[]).map((Y,j)=>t("div",{key:j,className:"qxsim-logic-action"},t("div",{className:"qxsim-logic-action-head"},t("strong",null,e`动作 ${j+1}`),t("select",{value:Y.kind,"aria-label":e`规则 ${V+1} 动作 ${j+1} 类型`,onChange:B=>he(V,j,B.target.value)},t("option",{value:"setCustomVariable"},e("\u8BBE\u7F6E\u81EA\u5B9A\u4E49\u53D8\u91CF")),t("option",{value:"sendClientScriptSignal"},e("\u53D1\u9001\u5BA2\u6237\u7AEF\u811A\u672C\u4FE1\u53F7"))),t("span",null,Y.kind==="sendClientScriptSignal"?e("\u53D1\u7ED9\u5F53\u524D\u73A9\u5BB6\u3001\u6307\u5B9A\u73A9\u5BB6\u6216\u5168\u90E8\u73A9\u5BB6"):e("\u5199\u5165 Level / \u5F53\u524D\u73A9\u5BB6 / \u73A9\u5BB61-8")),t("button",{className:"qxsim-iconbtn",title:e("\u5220\u9664\u52A8\u4F5C"),disabled:(X.actions||[]).length<=1,onClick:()=>R(V,{actions:X.actions.filter((B,pe)=>pe!==j)})},"\u2715")),Y.kind==="sendClientScriptSignal"?t("div",{className:"qxsim-logic-fields"},t("label",{className:"qxsim-field"},t("span",{className:"qxsim-field-label"},e("\u53D1\u9001\u76EE\u6807")),t("select",{value:mt(Y.target),onChange:B=>Z(V,j,{target:B.target.value})},Qt.map(B=>t("option",{key:B,value:B},ea[B])))),t("label",{className:"qxsim-field"},t("span",{className:"qxsim-field-label"},e("\u5BA2\u6237\u7AEF\u4FE1\u53F7\u540D")),t("input",{type:"text",value:Y.signalName,placeholder:"GoldChanged",onChange:B=>Z(V,j,{signalName:B.target.value})})),t(ri,{params:Y.params,onChange:B=>Z(V,j,{params:B})})):t("div",{className:"qxsim-logic-fields"},t("label",{className:"qxsim-field"},t("span",{className:"qxsim-field-label"},e("\u5B9E\u4F53")),t("select",{value:bt(Y.entityType),onChange:B=>Z(V,j,{entityType:B.target.value})},Zt.map(B=>t("option",{key:B,value:B},e(ea[B]))))),t("label",{className:"qxsim-field"},t("span",{className:"qxsim-field-label"},e("\u53D8\u91CF\u540D")),t("input",{type:"text",value:Y.name,placeholder:"Gold",onChange:B=>Z(V,j,{name:B.target.value})})),t("div",{className:"wide"},t(ta,{label:e("\u53D8\u91CF\u503C"),value:Y.value,onChange:B=>Z(V,j,{value:B})}))))),t("div",{className:"qxsim-logic-actions-foot"},t("button",{className:"qxsim-action",onClick:()=>R(V,{actions:(X.actions||[]).concat([De("setCustomVariable")])})},e("\uFF0B \u8BBE\u7F6E\u81EA\u5B9A\u4E49\u53D8\u91CF")),t("button",{className:"qxsim-action",onClick:()=>R(V,{actions:(X.actions||[]).concat([De("sendClientScriptSignal")])})},e("\uFF0B \u53D1\u9001\u5BA2\u6237\u7AEF\u811A\u672C\u4FE1\u53F7")))))):t("div",{className:"qxsim-logic-empty"},e("\u8FD8\u6CA1\u6709\u76D1\u542C\u89C4\u5219\u3002\u8BD5\u73A9\u65F6\u5BA2\u6237\u7AEF SendSignal \u4E0D\u4F1A\u81EA\u52A8\u6539\u53D8\u91CF\u6216\u56DE\u4F20\u4FE1\u53F7\u3002")),t("div",{className:"qxsim-logic-actions-foot"},t("button",{className:"qxsim-action",onClick:N},e("\uFF0B \u6DFB\u52A0\u76D1\u542C\u89C4\u5219"))),t("div",{className:"qxsim-script-footer",style:{marginTop:16}},t("span",null,b?.dirty?e("\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539"):C||e("\u4FDD\u5B58\u540E\u4F1A\u5199\u5165\u5F53\u524D\u5B58\u6863\uFF0C\u4E0B\u6B21\u8BD5\u73A9\u751F\u6548")),t("span",{className:"spacer"}))))}function ci({inspector:s,autofill:b,onSave:g}){let[r,C]=i.useState(String(s.guid??"")),[E,D]=i.useState(!1),[k,N]=i.useState(!1),[R,Z]=i.useState("");i.useEffect(()=>{C(String(s.guid??"")),D(!1),Z("")},[s.id,s.guid]);let he=b?.count>1&&b.selectedOffset>=0,X=/^[0-9]+$/.test(r.trim())?Number(r)-(b?.selectedOffset||0):NaN,V=X+(b?.count||0)-1,Y=pt(X)&&pt(V);async function j(B){B.preventDefault();let pe=r.trim();if(!/^[0-9]+$/.test(pe)||!pt(pe)){Z(e`索引范围:${1073741824}–${1077936127}`);return}N(!0),Z("");try{await g(s.id,Number(pe),E&&he)}catch(G){Z(G?.message||String(G))}finally{N(!1)}}return t("form",{onSubmit:j,style:{marginTop:8}},t("label",{className:"qxsim-field"},t("span",{className:"qxsim-field-label"},e("\u5BA2\u6237\u7AEF\u63A7\u4EF6\u7D22\u5F15")),t("div",{style:{display:"flex",gap:6}},t("input",{type:"text",inputMode:"numeric","aria-label":e("\u5BA2\u6237\u7AEF\u63A7\u4EF6\u7D22\u5F15"),value:r,disabled:k,onChange:B=>{C(B.target.value),Z("")},onKeyDown:B=>{B.key==="Escape"&&(C(String(s.guid)),Z(""))}}),t("button",{type:"submit",className:"qxsim-action",disabled:k||!E&&r.trim()===String(s.guid)||E&&!Y},k?e("\u4FDD\u5B58\u4E2D"):e("\u4FEE\u6539")))),he?t("label",{style:{display:"flex",gap:6,alignItems:"center",margin:"6px 0"}},t("input",{type:"checkbox",checked:E,disabled:k,onChange:B=>D(B.target.checked)}),e("\u81EA\u52A8\u4FEE\u6539\u5176\u4ED6\u5BA2\u6237\u7AEF\u7D22\u5F15\u503C")):null,E&&he?t("div",{className:"qxsim-note","aria-label":e("\u81EA\u52A8\u586B\u5145\u7D22\u5F15\u9884\u89C8")},e`以当前控件为基准,按 GIA 导入顺序填充 ${b.count} 个控件(${b.templateCount} 个模板及其子控件)。`,t("div",null,Y?e`索引范围:${X}–${V}`:e("\u7D22\u5F15\u8303\u56F4\u8D85\u51FA\u6709\u6548\u8303\u56F4\uFF0C\u8BF7\u68C0\u67E5\u8F93\u5165\u3002")),t("div",null,e("\u9002\u7528\u4E8E\u6574\u6279\u5BFC\u5165\u540E\u672A\u589E\u5220\u3001\u91CD\u6392\u7684\u6A21\u677F\u3002\u670D\u52A1\u7AEF\u754C\u9762\u548C\u811A\u672C\u7D22\u5F15\u9700\u5355\u72EC\u586B\u5199\u3002"))):null,R?t("div",{role:"alert",className:"qxsim-note"},e(R)):null,t("div",{className:"qxsim-muted",style:{lineHeight:1.5}},e("\u586B\u5199 GIA \u5BFC\u5165\u540E\u5B9E\u9645\u663E\u793A\u7684\u7D22\u5F15\uFF1B\u4FEE\u6539\u540E\u4ECE\u9875\u9762\u4E0A\u65B9\u7EE7\u7EED\u540C\u6B65 Lua\u3002")))}function li({snap:s,addScriptMounted:b,mountScriptTo:g,unmountScript:r,openScript:C}){let E=(s.scripts||[]).filter(k=>k.controlId===s.selectedId),D=(s.scripts||[]).filter(k=>k.controlId!==s.selectedId);return t(i.Fragment,null,t(be,{title:e("\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6\u7684\u811A\u672C")},E.length?E.map(k=>t("div",{key:k.id,className:"qxsim-script-list-row"},t("button",{className:"qxsim-script-asset",onClick:()=>C(k.id)},t("strong",null,k.path||e("(\u672A\u547D\u540D\u811A\u672C)")),t("small",null,e`脚本 ${k.id}`)),t("button",{className:"qxsim-iconbtn",title:e("\u89E3\u9664\u6302\u8F7D\uFF08\u4FDD\u7559\u811A\u672C\uFF09"),onClick:()=>r(k.id)},"\u292B"))):t("div",{className:"qxsim-note"},e("\u8BE5\u63A7\u4EF6\u5C1A\u672A\u6302\u8F7D\u811A\u672C\u3002\u811A\u672C\u6302\u8F7D\u5230\u5BA2\u6237\u7AEF\u63A7\u4EF6\u540E\u624D\u4F1A\u5728\u8BD5\u73A9\u65F6\u751F\u6548\u3002"))),t(be,{title:e("\u6302\u8F7D\u5DF2\u6709\u811A\u672C"),open:!1},D.length?t("label",{className:"qxsim-field"},t("span",{className:"qxsim-field-label"},e("\u9009\u62E9\u811A\u672C\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6")),t("select",{value:"","aria-label":e("\u9009\u62E9\u811A\u672C\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6"),onChange:k=>{let N=k.target.value;k.target.value="",N&&g(N)}},t("option",{value:""},e("\u9009\u62E9\u811A\u672C\u2026")),D.map(k=>t("option",{key:k.id,value:k.id},`${k.path||e("(\u672A\u547D\u540D\u811A\u672C)")} \xB7 ${k.id}${k.mounted?e`(当前挂载于 ${k.assetLabel} · ${k.controlName},将移动到此控件)`:e("\uFF08\u672A\u6302\u8F7D\uFF09")}`)))):t("div",{className:"qxsim-note"},e("\u5B58\u6863\u5185\u8FD8\u6CA1\u6709\u5176\u4ED6\u811A\u672C\uFF0C\u53EF\u70B9\u51FB\u4E0B\u65B9\u6309\u94AE\u65B0\u5EFA\u3002")),t("div",{className:"qxsim-script-actions",style:{marginTop:8}},t("button",{onClick:()=>b(s.selectedId)},e("\uFF0B \u65B0\u5EFA\u811A\u672C\u5E76\u6302\u8F7D\u5230\u6B64\u63A7\u4EF6")))))}function fi(s,b){let g=null,r=null;function C(E,D){E.id===b&&(g=E,r=D);for(let k of E.children||[])C(k,E)}if(C(s,null),g?.kind==="container")return g.id;if(g?.kind==="server-container")return g.children?.find(E=>E.kind==="container")?.id||g.id;for(;r&&r.kind!=="container";){let D=function(k){for(let N of k.children||[])N===r&&(E=k),D(N)},E=null;D(s),r=E}return r?.id||s.children?.find(E=>E.kind==="container")?.id}function pi(s,b){let g=null;function r(C){C.id===b&&(g=C);for(let E of C.children||[])r(E)}return r(s),g&&g.kind!=="server-container"?g.id:fi(s,b)}function ht(s,b,g,r,C,E,D=!1){let k=s,N=s.kind,R=N==="textbox"||N==="textwindow",Z=k.renderLeft??k.left,he=k.renderBottom??k.bottom,X=k.renderWidth??k.width,V=k.renderHeight??k.height,Y=k.renderRotationZ??s.rotationZ??0,j={left:`${Z/g*100}%`,bottom:`${he/r*100}%`,width:`${X/g*100}%`,height:`${V/r*100}%`,"--rotation":`${-Number(Y)}deg`,fontSize:Math.max(8,Math.min(40,Number(s.fontSize||12))),color:R?le(s.fontColor,4294967295):"#fff"};if(Object.assign(j,ja(k,g,r)),D)return t("div",{className:"qxsim-box selected qxsim-selection","data-selection-id":s.id,style:{...j,border:"1px solid #61b9ff",background:"transparent",zIndex:2}},N!=="container"?["tl","tr","bl","br"].map(pe=>t("i",{key:pe,className:`qxsim-handle ${pe}`})):null);R&&E&&(j.fontFamily=E),N==="image"?Object.assign(j,re(s.primitive,le(s.imageColor,4294967295))):R?(j.background=le(s.bgColor,16777215),j.justifyContent=s.horizontalAlignment==="Right"?"flex-end":s.horizontalAlignment==="Middle"?"center":"flex-start",j.alignItems=s.verticalAlignment==="Bottom"?"flex-end":s.verticalAlignment==="Middle"?"center":"flex-start",j.textShadow=s.enableOutline===!1?"none":`0 0 2px ${le(s.outlineColor,4278190080)}`):N==="container"&&(j.background="transparent");let B=N==="image"&&s.primitive==="sprite"?t(p,{key:ve(s.imageId,s.imageSource),item:s}):R?t(w,{item:s,zoom:C,fontFamily:E}):N==="image"&&s.primitive==="missing"?t("span",{className:"qxsim-box-label"},e`缺少图片 ${s.imageId||""}`):N!=="container"&&N!=="image"?t("span",{className:"qxsim-box-label"},s.name||e(O[N]?.[1])||N):null;return t("div",{key:s.id,"data-control-id":s.id,className:`qxsim-box ${N}${s.instantiated?" dynamic":""}${s.pressed?" pressed":""}`,style:j},B)}function ui({snapshot:s,fontFamily:b}){let g=i.useRef(null),[r,C]=i.useState({width:560,height:300});i.useEffect(()=>{let R=new ResizeObserver(Z=>C({width:Z[0].contentRect.width,height:Z[0].contentRect.height}));return R.observe(g.current),()=>R.disconnect()},[]);let{width:E,height:D}=s.canvas,k=Math.max(1,Math.min(r.width,r.height*E/D)),N=s.boxes.filter(R=>R.kind!=="server-container"&&R.visible&&R.visibleInHierarchy!==!1);return t("div",{ref:g,className:"qxsim-export-canvas"},t("div",{className:"qxsim-stage","data-export-preview-id":s.selectedId,style:{width:`${k}px`,aspectRatio:`${E}/${D}`}},t(v,{boxes:N,canvasWidth:E,canvasHeight:D,renderControl:R=>ht(R,s,E,D,k/E,b)})))}function bi({sessionId:s}){let b=$(),g=se(),[r,C]=i.useState(null),E=i.useRef(null),D=i.useRef(Promise.resolve()),[k,N]=i.useState(""),[R,Z]=i.useState(null),[he,X]=i.useState(!1);i.useEffect(()=>{let n=!0;return Ja().then(m=>{n&&Z(m)},m=>{n&&N(m?.message||e("\u672C\u5730\u5B57\u4F53\u52A0\u8F7D\u5931\u8D25"))}),()=>{n=!1}},[]);let V=f({sessionId:s,api:L,playUrl:d,onError:N}),[Y,j]=i.useState(null),[B,pe]=i.useState(!1),[G,qe]=i.useState(!1),[ke,ae]=i.useState(""),Ye=i.useRef(null),[gt,Xe]=i.useState([]),[mi,xt]=i.useState(!1);i.useEffect(()=>xt(!1),[s]);let[aa,ia]=i.useState([]),[we,hi]=i.useState("ui"),[vt,yt]=i.useState("base"),[wt,gi]=i.useState("fit"),[St,xi]=i.useState({}),[We,Et]=i.useState(""),[Me,qt]=i.useState("template"),[kt,Je]=i.useState(""),[Ct,ze]=i.useState(null),[oa,Nt]=i.useState({version:1,rules:[],dirty:!1}),na=i.useRef(null),[Ke,vi]=i.useState({width:0,height:0});i.useEffect(()=>{let n=na.current;if(!n||typeof ResizeObserver>"u")return;let m=new ResizeObserver(z=>{let F=z[0]?.contentRect;F&&F.width>0&&vi({width:F.width,height:F.height})});return m.observe(n),()=>m.disconnect()},[r?.canvas?.id]);function Le(n,{keepLogicDraft:m=!0}={}){return E.current=n,C(n),n?.scripts&&Je(z=>n.scripts.some(F=>F.id===z)?z:n.scripts[0]?.id||""),Nt(z=>m&&z?.dirty?z:Kt(n?.serverLogic)),n}let Qe=i.useCallback(async()=>{try{N(""),Le(await L(s,"get"),{keepLogicDraft:!1})}catch(n){N(n?.message||String(n))}},[s]),Ze=i.useCallback(async()=>{try{let n=await L(s,"archives");ia(n?.archives||[])}catch{ia([])}},[s]);i.useEffect(()=>{Qe(),Ze()},[Qe,Ze]);function ee(n,m=""){let z=async()=>{let F=E.current;if(!F)throw new Error("editor is not ready");try{if(m&&F.asset?.type!==m)throw new Error(e("\u5F53\u524D\u8D44\u4EA7\u5DF2\u5207\u6362\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9\u63A7\u4EF6\u540E\u4FEE\u6539\u7D22\u5F15"));let ne=await L(s,"patch",{op:{...typeof n=="function"?n(F):n,expectedRevision:F.version}});return N(""),Le(ne)}catch(ne){throw N(ne?.message||String(ne)),/revision conflict/.test(String(ne?.message||ne))&&await Qe(),ne}};return D.current=D.current.then(z,z),D.current}async function yi(n,m,z,F=!1){await ge(),await ee({op:"setControlGuid",id:n,guid:m,autoFillClientGuids:F},z),ae(e("\u63A7\u4EF6\u7D22\u5F15\u5DF2\u4FEE\u6539\u3002\u8BF7\u9009\u62E9\u4E0A\u65B9\u300C\u5168\u91CF\u66FF\u6362\u811A\u672C\u7D22\u5F15\u300D\u6216\u300C\u590D\u5236\u63D0\u793A\u8BCD\u7ED9 AI\u300D\u3002"))}async function wi(){await ge(),await Ce(),await D.current;let n=E.current;if(!n.storage?.path)throw o&&j(`${n.save?.name||"project"}.save.json`),new Error(e("\u8BF7\u5148\u4FDD\u5B58\u5B8C\u6574\u5B58\u6863\uFF0C\u518D\u590D\u5236\u63D0\u793A\u8BCD\uFF1BAI \u9700\u8981\u8BFB\u53D6\u8FD9\u6B21\u5B9E\u9645\u4FEE\u6539\u7684\u5B58\u6863\u3002"));await L(s,"save",{path:n.storage.path,expectedRevision:n.version});let m=n.controlGuidChanges||[],z=[e("\u8BF7\u5B8C\u6210\u6A21\u62DF\u5668\u63A7\u4EF6\u7D22\u5F15\u4E0E Lua \u5F15\u7528\u540C\u6B65\u3002"),e`工作区:${n.workspace?.path||e("\u8BF7\u5148\u6838\u5BF9\u5DE5\u4F5C\u533A")}`,e`最新完整存档:${n.storage.path}(编辑器已保存)`,e`Lua 文件:${(n.scripts||[]).map(F=>F.path||e`内联脚本 ${F.id}`).join("\u3001")||e("\u6682\u65E0")}`,e("\u5148\u4ECE\u4E0A\u8FF0\u6587\u4EF6\u91CD\u65B0\u52A0\u8F7D\u6700\u65B0\u5B58\u6863\uFF0C\u4E0D\u8981\u4F7F\u7528\u53E6\u4E00\u4E2A MCP/Web \u8FDB\u7A0B\u91CC\u7684\u65E7\u5DE5\u7A0B\u3002"),e`获取新旧映射:读取该 JSON 顶层的 controlGuidChanges 数组,当前共 ${m.length} 条,必须读取全部记录。oldGuid 是旧索引,newGuid 是新索引;controlAsset + controlId 标识控件,controlName 是名称,id 是记录编号,batchId 是批次。`,e("\u83B7\u53D6\u811A\u672C\uFF1A\u8BFB\u53D6 assets.scripts \u6570\u7EC4\uFF1B\u6BCF\u9879\u7684 source \u662F\u5B58\u6863\u5185\u6E90\u7801\uFF0Cpath \u662F\u811A\u672C\u6587\u4EF6\u8DEF\u5F84\uFF08\u76F8\u5BF9\u8DEF\u5F84\u4EE5\u5DE5\u4F5C\u533A\u4E3A\u57FA\u51C6\uFF09\u3002"),e("\u6309\u63A7\u4EF6\u8EAB\u4EFD\u548C\u53D8\u66F4\u987A\u5E8F\u6838\u5BF9\u5168\u90E8 Lua \u811A\u672C\u7684\u7D22\u5F15\u5E38\u91CF\u3001\u914D\u7F6E\u8868\u4E0E\u8C03\u7528\uFF0C\u4FEE\u6539\u5B58\u6863\u4E2D\u7684 source \u53CA\u76F8\u5173 Lua \u6E90\u6587\u4EF6\u548C\u751F\u6210\u5668\u6620\u5C04\uFF0C\u907F\u514D\u91CD\u5EFA\u540E\u8986\u76D6\u3002\u4E0D\u8981\u5168\u5C40\u66FF\u6362\u540C\u503C\u6570\u5B57\uFF0C\u4E5F\u4E0D\u8981\u6539\u8FD0\u884C\u65F6\u5B9E\u4F8B ID \u6216\u56FE\u7247\u8D44\u6E90 ID\u3002"),e("\u540C\u4E00 batchId \u662F\u540C\u65F6\u6620\u5C04\uFF0C\u987B\u6309\u539F\u503C\u4E00\u6B21\u6027\u5E94\u7528\uFF0C\u4E0D\u80FD\u9010\u6761\u66FF\u6362\u5BFC\u81F4\u7D22\u5F15\u4E32\u6539\u3002"),e("\u68C0\u67E5\u65E7\u7D22\u5F15\u5F15\u7528\u5E76\u91CD\u65B0\u8BD5\u73A9\uFF1B\u4EC5\u5728\u5F15\u7528\u5168\u90E8\u540C\u6B65\u6216\u660E\u786E\u6CA1\u6709\u5F15\u7528\u540E\uFF0C\u7528 acknowledgeControlGuidChanges \u7684 changeIds \u6E05\u9664\u5DF2\u6838\u5BF9\u8BB0\u5F55\uFF0C\u4FDD\u5B58\u5B8C\u6574\u5B58\u6863\u3002\u672A\u5224\u65AD\u7684\u8BB0\u5F55\u7EE7\u7EED\u4FDD\u7559\u3002"),e("\u5B8C\u6210\u540E\u544A\u77E5\u7528\u6237\u91CD\u65B0\u8F7D\u5165\u8FD9\u4E2A\u5B58\u6863\uFF0C\u518D\u901A\u8FC7\u300CLua \u811A\u672C \u2192 \u5B9E\u673A\u811A\u672C\u540C\u6B65\u300D\u66F4\u65B0\u6E38\u620F\u6587\u4EF6\uFF1B\u4E0D\u8981\u91CD\u65B0\u5BFC\u5165 GIA\uFF0C\u4E5F\u4E0D\u8981\u64C5\u81EA\u590D\u5236\u5230\u6E38\u620F\u76EE\u5F55\u3002")].join(`
|
|
53
|
+
`);try{await navigator.clipboard.writeText(z),ae(e("\u5B58\u6863\u5DF2\u4FDD\u5B58\uFF0C\u63D0\u793A\u8BCD\u5DF2\u590D\u5236\uFF0C\u5305\u542B\u5B8C\u6574\u6620\u5C04\u7684\u8BFB\u53D6\u65B9\u5F0F\u3002\u7C98\u8D34\u7ED9 AI\uFF1B\u5904\u7406\u540E\u91CD\u65B0\u8F7D\u5165\u5B58\u6863\u3002"))}catch{ae(e("\u5B58\u6863\u5DF2\u4FDD\u5B58\u3002\u526A\u8D34\u677F\u4E0D\u53EF\u7528\uFF0C\u53EF\u4ECE\u4E0B\u65B9\u6587\u672C\u6846\u624B\u52A8\u590D\u5236\u63D0\u793A\u8BCD\u3002"))}return z}let Si=(n,m)=>void ee(z=>({op:"set",key:n,value:typeof m=="function"?m(z.inspector.fields.find(F=>F.key===n)?.value):m})).catch(()=>{});async function Ei(){let{imageId:n,imageSource:m}=E.current?.boxes?.find(z=>z.id===E.current.selectedId)||{};if(Ae(n,m)){qe(!0);try{await L(s,"image-refresh",{imageId:n,imageSource:m}),Ia(n,m),ae(e`图片 ${n} 已重新下载;同源试玩页会同步刷新。`)}catch(z){N(z.message)}finally{qe(!1)}}}async function qi(n,m){let z=E.current?.inspector?.id;if(z)try{let F=await ee({op:"add",kind:"image",parentId:z,name:e`${e(m)}图片`});await ee({op:"set",id:z,key:n,value:F.selectedId}),ae(e`${e(m)}已创建并绑定;可在控件树中继续编辑图片。`)}catch{}}i.useEffect(()=>{let n=r?.scripts?.find(m=>m.id===kt);ze(m=>m&&n&&m.id===n.id&&m.dirty?m:n?{id:n.id,path:n.path,source:n.source,controlId:n.controlId,controlAsset:n.controlAsset,dirty:!1}:null)},[r,kt]);function ki(n){ze(m=>m&&{...m,...n,dirty:!0})}async function ge(){let n=Ct;!n||!n.dirty||(await ee({op:"updateScript",id:n.id,path:n.path,source:n.source,controlId:n.controlId,controlAsset:n.controlAsset}),ze(m=>m&&m.id===n.id?{...m,dirty:!1}:m))}function sa(){ge().then(()=>ae(e("Lua \u811A\u672C\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863"))).catch(()=>{})}async function Ce({silent:n=!1}={}){let m=oa;if(!m||!m.dirty)return;let z=ni(m);if(z.length){let ne=z[0];throw n||N(ne),new Error(ne)}let F=await ee({op:"setServerLogic",logic:oi(m)});Nt(Kt(F.serverLogic)),ae(e("\u670D\u52A1\u7AEF\u903B\u8F91\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863"))}function Ci(){Ce({silent:!0}).catch(()=>{})}function $e(n){sa(),Ci(),hi(n)}async function ra(n={}){let m=await ee({op:"addScript",...n}),z=m.scripts?.[m.scripts.length-1];return z&&Je(z.id),ae(n.controlId?e("\u5DF2\u65B0\u5EFA\u811A\u672C\u5E76\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6"):e("\u5DF2\u65B0\u5EFA\u811A\u672C\uFF0C\u53EF\u7F16\u8F91\u8DEF\u5F84\u3001\u6E90\u7801\u548C\u6302\u8F7D\u76EE\u6807")),z}function Ni(n){Ct?.id===n&&ze(null),ee({op:"removeScript",id:n}).then(()=>ae(e("\u811A\u672C\u5DF2\u5220\u9664"))).catch(()=>{})}function Ii(n){ee({op:"updateScript",id:n,controlId:""}).then(()=>ae(e("\u5DF2\u89E3\u9664\u6302\u8F7D\uFF0C\u811A\u672C\u4ECD\u4FDD\u7559\u5728\u5B58\u6863\u4E2D"))).catch(()=>{})}function Ai(n){let m=E.current?.selectedId||"",z=E.current?.asset?.type||"";m&&(ze(F=>F&&F.id===n?{...F,controlId:m,controlAsset:z}:F),ee({op:"updateScript",id:n,controlId:m,controlAsset:z}).then(()=>ae(e("\u5DF2\u6302\u8F7D\u5230\u5F53\u524D\u63A7\u4EF6"))).catch(()=>{}))}async function da(n){if(E.current?.asset?.type!==n)try{let m=await ee({op:"selectAsset",assetType:n});Et(""),qt(n==="client-control-template"?"template":"child"),ae(e`已切换到存档内的${e(m.asset.label)}`)}catch{}}function Pi(n,m){let z=E.current;if(!z)return;let F=z.asset?.type==="client-control-template"&&Me==="template",ne=F?{op:"addTemplate",kind:n,name:e`${e(m)}模板`}:{op:"add",kind:n,parentId:pi(z.root,z.selectedId),name:m};ee(ne).then(()=>ae(F?e`已新增${e(m)}模板`:e`已添加${e(m)}子控件`)).catch(()=>{})}async function Te(n,m="",z={}){try{await D.current.catch(()=>{}),await ge(),await Ce();let F=await L(s,"export",{format:n,assetType:m,...z});if(Xe([...new Set([...F.warnings||[],...(F.files||[]).flatMap(ne=>ne.warnings||[])])]),Array.isArray(F?.files)&&F.files.length){for(let ne of F.files)J(ne);N(""),ae(e`已导出 ${F.files.length} 个 GIA 文件(${F.files.map(ne=>ne.filename).join("\u3001")});若浏览器拦截多文件下载,请允许后重试。`);return}J(F),N(""),ae(F.warnings?.length?e`已导出 ${F.filename};请查看上方导出说明。`:e`已导出 ${F.filename}`)}catch(F){if(N(F?.message||String(F)),n==="gia-partial")throw F}}async function Mi(){try{await D.current,await ge(),await Ce(),N(""),xt(!0)}catch(n){N(n?.message||String(n))}}async function ca(n){if(n)try{await D.current.catch(()=>{});let m=await L(s,"load-archive",{path:n});Le(m.snapshot,{keepLogicDraft:!1}),N(""),ae(e`已从工作区拉取 ${n}`),Xe([])}catch(m){N(m?.message||String(m))}}async function Li(n){if(!n)return;let m=n.name.toLowerCase().endsWith(".gia")?"gia":n.name.toLowerCase().endsWith(".json")?"json":n.name.toLowerCase().endsWith(".lua")?"lua":"";if(!m){N(e("\u4EC5\u652F\u6301 .json\u3001.gia \u6216 .lua \u6587\u4EF6"));return}try{await D.current.catch(()=>{});let z=await L(s,"import",{format:m,filename:n.name,data:await K(n)});Le(z.snapshot,{keepLogicDraft:!1}),N(""),ae([e`已导入 ${n.name}`,...z.warnings||[]].join(`
|
|
54
|
+
`)),Xe([])}catch(z){N(z?.message||String(z))}finally{Ye.current&&(Ye.current.value="")}}function $i(){V.open(async()=>{await D.current.catch(()=>{}),await ge(),await Ce(),await D.current,N("")})}async function Ti(){if(!(B||!Y?.trim())){pe(!0);try{await ge(),await Ce(),await D.current.catch(()=>{});let n=E.current,m=await L(s,"save",{path:Y.trim(),expectedRevision:n.version});Le(await L(s,"get")),ae(e`已保存到 ${m.path}`),N(""),j(null),Ze()}catch(n){N(n?.message||String(n))}finally{pe(!1)}}}if(i.useEffect(()=>{r?.inspector?.kind==="server-container"&&yt("base")},[r?.inspector?.kind]),!r)return t("div",{className:"qxsim","data-qxqy-font-ui":"","data-theme":g,"data-qxsim-session-id":s},t("div",{className:"qxsim-status error"},k||e("\u6B63\u5728\u8F7D\u5165\u5343\u661F\u6C99\u7BB1\u2026")));let xe=r.canvas.width,Se=r.canvas.height,It=Ke.width>0&&Ke.height>0?Math.min((Ke.width-44)/xe,(Ke.height-54)/Se):NaN,Oi=Number.isFinite(It)&&It>0?Math.min(2,Math.round(It*1e3)/1e3):.5,At=wt==="fit"?Oi:Number(wt)||.5,la=Fe(xe,Se),Ui=(r.canvas.presets||[]).filter(n=>n.platform===r.canvas.platform);function Fi(n){if(!r||r.canvas.platform===n)return;let m=(r.canvas.presets||[]).filter(F=>F.platform===n);if(!m.length)return;let z=m.find(F=>de(F)===la)||m[0];ee({op:"setCanvas",canvasId:z.id}).then(()=>ae(e`已切换到${z.label}`)).catch(()=>{})}let ie=r.asset?.type==="client-control-template",Pt=!!(r.inspector&&r.inspector.kind!=="server-container"),Mt=new Set;for(let n of r.tree||[])(St[n.id]||(n.ancestorIds||[]).some(m=>St[m]))&&Mt.add(n.id);let Lt=(r.boxes||[]).filter(n=>n.kind!=="server-container"&&n.visible&&n.visibleInHierarchy!==!1&&!Mt.has(n.id)),fa=Lt.find(n=>n.id===r.selectedId);function Di(n,m){n.stopPropagation(),xi(z=>{let F={...z};return F[m]?delete F[m]:F[m]=!0,F})}let pa=r.tree.filter(n=>!We.trim()||`${n.name} ${n.label} ${e(n.label)}`.toLowerCase().includes(We.trim().toLowerCase())),Q=r.tree.find(n=>n.id===r.selectedId),zi=ie&&Q?r.tree.filter(n=>n.id!==Q.id&&!(n.ancestorIds||[]).includes(Q.id)):[],_i=Q?.parentId||r.root.id;return t("div",{className:"qxsim","data-qxqy-font-ui":"",lang:b==="zh"?"zh-CN":"en","data-theme":g,"data-qxsim-session-id":s},V.overlay,mi?t(_,{sessionId:s,api:L,initialId:ie?r.selectedId:"",onClose:()=>xt(!1),onExport:n=>Te("gia-partial","client-control-template",n),renderPreview:n=>t(ui,{snapshot:n,fontFamily:R})}):null,he?t(y,{onClose:()=>X(!1)}):null,we==="script"&&k?t("div",{className:"qxsim-status error",role:"alert"},e(k)):null,Y!==null?t("div",{className:"qxsim-save-overlay"},t("form",{className:"qxsim-save-dialog",role:"dialog","aria-modal":!0,"aria-label":e("\u4FDD\u5B58\u5230\u5DE5\u4F5C\u533A"),onSubmit:n=>{n.preventDefault(),Ti()}},t("h2",null,e("\u4FDD\u5B58\u5230\u5DE5\u4F5C\u533A")),t("label",null,e("\u5B58\u6863\u76F8\u5BF9\u8DEF\u5F84"),t("input",{autoFocus:!0,required:!0,value:Y,disabled:B,onChange:n=>j(n.target.value)})),k?t("div",{role:"alert"},e(k)):null,t("footer",null,t("button",{className:"qxsim-action",type:"button",disabled:B,onClick:()=>j(null)},e("\u53D6\u6D88")),t("button",{className:"qxsim-action primary",type:"submit",disabled:B||!Y.trim()},B?e("\u4FDD\u5B58\u4E2D\u2026"):e("\u4FDD\u5B58"))))):null,t("header",{className:"qxsim-toolbar"},t("div",{className:"qxsim-brand",title:`${r.workspace?.bound?r.workspace.path:e("\u5DE5\u4F5C\u533A\u672A\u7ED1\u5B9A")}
|
|
55
|
+
${r.meta?.sourceFile||e("\u5C1A\u672A\u5BFC\u5165\u6587\u4EF6")}`},t("span",{className:"qxsim-appicon"},"UI"),t("span",{className:"qxsim-brand-text"},t("strong",null,e`存档:${r.save?.name||r.meta?.name||e("\u672A\u547D\u540D\u5B58\u6863")}`),t("span",null,e`工作区:${r.workspace?.bound?r.workspace.name:e("\u672A\u7ED1\u5B9A")} · 当前资产:${e(r.asset?.label)||e("UI\u63A7\u4EF6")}`))),t("div",{className:"qxsim-toolbar-center"},we==="ui"?t(i.Fragment,null,t("div",{className:"qxsim-device-switch",role:"group","aria-label":e("\u76EE\u6807\u8BBE\u5907")},oe.map(n=>t("button",{key:n.key,className:r.canvas.platform===n.key?"active":"",title:e(n.title),onClick:()=>Fi(n.key)},e(n.label)))),t("select",{className:"qxsim-control ratio","aria-label":e("\u5C4F\u5E55\u6BD4\u4F8B"),value:r.canvasId,onChange:n=>void ee({op:"setCanvas",canvasId:n.target.value}).catch(()=>{})},Ui.map(n=>t("option",{key:n.id,value:n.id},`${de(n)} \xB7 ${n.width}\xD7${n.height}`))),t("select",{className:"qxsim-control zoom","aria-label":e("\u753B\u5E03\u7F29\u653E"),value:wt,onChange:n=>gi(n.target.value)},[["fit",e("\u9002\u5E94")],["0.25","25%"],["0.5","50%"],["0.75","75%"],["1","100%"]].map(([n,m])=>t("option",{key:n,value:n},m)))):t("span",{className:"qxsim-muted"},we==="logic"?e("\u670D\u52A1\u7AEF\u903B\u8F91\uFF1A\u76D1\u542C\u4FE1\u53F7 / \u81EA\u5B9A\u4E49\u53D8\u91CF / \u73A9\u5BB61-8 \u56DE\u4F20"):e("Lua \u811A\u672C\u8D44\u4EA7\u7F16\u8F91"))),t("div",{className:"qxsim-actions"},o?t("button",{className:"qxsim-action",title:e("\u4FDD\u5B58\u5B8C\u6574\u5B58\u6863\u5230\u5DE5\u4F5C\u533A"),onClick:()=>{N(""),j(E.current?.storage?.path||"qxqy-simulator.save.json")}},e("\u4FDD\u5B58\u5B58\u6863")):null,t("div",{className:"qxsim-io"},t("input",{ref:Ye,hidden:!0,type:"file",accept:".json,.gia,.lua,application/json,application/octet-stream,text/plain",onChange:n=>void Li(n.target.files?.[0])}),t("select",{className:"qxsim-control zoom","aria-label":e("\u4ECE\u5DE5\u4F5C\u533A\u62C9\u53D6\u5B58\u6863"),defaultValue:"",onFocus:()=>void Ze(),onChange:n=>{let m=n.target.value;n.target.value="",m&&ca(m)}},t("option",{value:"",disabled:!0},r.workspace?.bound?e("\u2913 \u5DE5\u4F5C\u533A\u5B58\u6863"):e("\u5DE5\u4F5C\u533A\u672A\u7ED1\u5B9A")),...aa.length?aa.map(n=>t("option",{key:n.path,value:n.path},`${n.name} \xB7 ${n.path}`)):[t("option",{value:"",disabled:!0},r.workspace?.bound?e("\u672A\u53D1\u73B0 qxqy-simulator-save"):e("\u5148\u7ED1\u5B9A\u4F1A\u8BDD\u5DE5\u4F5C\u533A"))]),t("button",{className:"qxsim-action",title:e("\u5BFC\u5165\u5B58\u6863\u3001\u5355\u9879 UI \u8D44\u4EA7\u6216 Lua"),onClick:()=>Ye.current?.click()},e("\u21E7 \u5BFC\u5165")),t("select",{className:"qxsim-control zoom","aria-label":e("\u5BFC\u51FA\u683C\u5F0F"),defaultValue:"",onChange:n=>{let[m,z=""]=n.target.value.split("|");n.target.value="",m==="gia-partial"?Mi():m&&Te(m,z)}},t("option",{value:"",disabled:!0},e("\u21E9 \u5BFC\u51FA")),t("option",{value:"gia-partial"},e("\u90E8\u5206\u7EC4\u5408\u5BFC\u51FA")),t("option",{value:"save"},e("\u8D44\u4EA7\u5305 JSON\uFF08\u4E09\u7C7B\u5408\u4E00\uFF09")),t("option",{value:"save-gia"},e("\u8D44\u4EA7\u5305 GIA\uFF08\u5DF2\u6539\u52A8\u9879\uFF09")),t("option",{value:"gia-combined"},e("\u8D44\u4EA7\u5305 GIA \u6574\u5408\u5305\uFF08\u63A7\u4EF6+\u811A\u672C\uFF09")),t("optgroup",{label:e("\u5F53\u524D\u754C\u9762\uFF08\u5DE6\u680F\u6B63\u5728\u770B\u7684\u90A3\u68F5\u6811\uFF09")},t("option",{value:"json"},e("\u5F53\u524D\u754C\u9762 Authoring JSON")),t("option",{value:"gia"},e("\u5F53\u524D\u754C\u9762 GIA"))),t("optgroup",{label:e("\u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F")},t("option",{value:"json|server-control-template"},"Authoring JSON"),t("option",{value:"gia|server-control-template"},"GIA")),t("optgroup",{label:e("\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\uFF08\u4EC5\u5F53\u5DE6\u680F\u5207\u5230\u300CUI\u63A7\u4EF6-\u5BA2\u6237\u7AEF\u300D\u65F6\u624D\u662F\u9875\u9762\u5185\u5BB9\uFF09")},t("option",{value:"json|client-control-template"},"Authoring JSON"),t("option",{value:"gia|client-control-template"},"GIA")),t("optgroup",{label:e("Lua \u811A\u672C")},t("option",{value:"scripts"},e("\u811A\u672C\u5305 JSON\uFF08\u5168\u90E8\u811A\u672C\uFF09")),t("option",{value:"scripts-gia"},e("\u811A\u672C\u5305 GIA\uFF08\u5168\u90E8\u811A\u672C\uFF09"))))),t("button",{className:"qxsim-action primary",title:e("\u6253\u5F00\u8BD5\u73A9\uFF1B\u65B0\u7A97\u53E3\u4E0D\u53EF\u7528\u65F6\u5728\u5E94\u7528\u5185\u8BD5\u73A9"),disabled:V.opening,onClick:$i},V.opening?e("\u6B63\u5728\u51C6\u5907\u2026"):e("\u25B7 \u8BD5\u73A9 \u2197")),t("button",{className:"qxsim-iconbtn",title:e("\u91CD\u65B0\u8F7D\u5165"),onClick:Qe},"\u21BB"))),t("nav",{className:"qxsim-editor-nav","aria-label":e("\u7F16\u8F91\u9875\u9762")},t("button",{className:we==="ui"?"active":"",onClick:()=>$e("ui")},e("UI \u7F16\u8F91")),t("button",{className:we==="script"?"active":"",onClick:()=>$e("script")},e("Lua \u811A\u672C")),t("button",{className:we==="logic"?"active":"",onClick:()=>$e("logic")},e("\u670D\u52A1\u7AEF\u903B\u8F91")),t("span",{className:"save-summary"},e("\u4E00\u4E2A\u5B58\u6863 \xB7 \u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F + \u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F + Lua \u811A\u672C + \u670D\u52A1\u7AEF\u903B\u8F91")),t("div",{className:"qxsim-editor-settings"},t("button",{onClick:()=>X(!0),"aria-label":e("\u5B57\u4F53\u8BBE\u7F6E")},e("\u5B57\u4F53\u8BBE\u7F6E")),t("select",{className:"qxsim-control qxsim-language","aria-label":e("\u754C\u9762\u8BED\u8A00"),title:e("\u754C\u9762\u8BED\u8A00"),value:ma(),onChange:n=>ga(n.target.value)},t("option",{value:"auto"},e("\u81EA\u52A8\uFF08\u7CFB\u7EDF\u8BED\u8A00\uFF09")+" \xB7 "+it().language),t("option",{value:"zh"},"\u7B80\u4F53\u4E2D\u6587"),t("option",{value:"en"},"English")))),we==="script"?t(u,{snap:r,patch:ee,request:(n,m)=>L(s,n,m),refresh:async()=>Le(await L(s,"get")),prepare:async()=>(await D.current,await ge(),await Ce(),E.current)}):null,t(l,{snap:r,patch:ee,prepare:ge,copy:wi,onScripts:()=>$e("script"),onError:N,reloadArchive:()=>ca(E.current.storage?.path)}),gt.length?t("details",{className:"qxsim-export-warnings",open:!0,role:"status",style:{flexShrink:0,maxHeight:180,overflow:"auto",padding:"8px 16px",borderBottom:"1px solid currentColor"}},t("summary",{style:{cursor:"pointer"}},e`上次导出说明(${gt.length} 项,请核对导入后的效果)`),t("button",{className:"qxsim-action",onClick:()=>Xe([])},e("\u5173\u95ED\u5BFC\u51FA\u8BF4\u660E")),t("ul",null,gt.map((n,m)=>t("li",{key:m},e(n))))):null,we==="ui"?t("div",{className:"qxsim-main"},t("aside",{className:"qxsim-tree"},t("div",{className:"qxsim-asset-switch","aria-label":e("\u7F16\u8F91\u8D44\u6E90\u7C7B\u578B")},t("button",{className:ie?"":"active",title:e("\u7F16\u8F91\u5B58\u6863\u5185\u7684\u670D\u52A1\u7AEF UI \u63A7\u4EF6"),onClick:()=>void da("server-control-template")},e("UI\u63A7\u4EF6-\u670D\u52A1\u7AEF")),t("button",{className:ie?"active":"",title:e("\u7F16\u8F91\u5B58\u6863\u5185\u7684\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F"),onClick:()=>void da("client-control-template")},e("UI\u63A7\u4EF6-\u5BA2\u6237\u7AEF"))),t("div",{className:"qxsim-pane-head"},t("div",{className:"qxsim-pane-title"},ie?e("\u6A21\u677F\u4E0E\u5B50\u63A7\u4EF6"):e("\u63A7\u4EF6\u6811")),t("span",{className:"qxsim-muted"},ie?e`${r.asset.templateCount} 个模板 · ${r.tree.length} 个控件`:e`${r.tree.length} 个节点`)),t("label",{className:"qxsim-search"},"\u2315",t("input",{value:We,placeholder:ie?e("\u641C\u7D22\u6A21\u677F\u6216\u63A7\u4EF6"):e("\u641C\u7D22\u63A7\u4EF6"),onChange:n=>Et(n.target.value)}),We?t("button",{onClick:()=>Et("")},"\xD7"):t("span",null,"\u2301")),t("div",{className:"qxsim-tree-scroll"},pa.length?pa.map(n=>{let m=O[n.kind]||["\u25C7",n.label],z=Mt.has(n.id),F=!!St[n.id];return t("div",{key:n.id,className:`qxsim-row${ie&&n.depth===0?" template-root":""}${n.id===r.selectedId?" active":""}${z?" canvas-hidden":""}`,style:{paddingLeft:8+n.depth*18,"--depth":n.depth},title:`${e(m[1])} \xB7 ${n.name} \xB7 GUID ${n.guid??n.id}`,onClick:()=>void ee({op:"select",id:n.id}).catch(()=>{})},t("span",{className:"qxsim-chevron"},n.childCount?"\u25BC":""),t("span",{className:"qxsim-kind"},m[0]),t("span",{className:"qxsim-row-label"},n.name),t("span",{className:"qxsim-row-end"},ie&&n.depth===0?t(i.Fragment,null,t("span",{className:"qxsim-template-tag"},e("\u6A21\u677F")),t("span",{className:"qxsim-template-id"},`#${n.guid??n.id}`)):n.incomplete?t("span",{className:"qxsim-incomplete"},e("\u6682\u4E0D\u652F\u6301")):null,t("button",{className:`qxsim-eye${F?" off":""}`,type:"button",title:F?e("\u5728\u753B\u5E03\u4E0A\u663E\u793A\uFF08\u4E0D\u5F71\u54CD\u63A7\u4EF6\u521D\u59CB\u53EF\u89C1\u6027\uFF09"):e("\u5728\u753B\u5E03\u4E0A\u9690\u85CF\uFF08\u4E0D\u5F71\u54CD\u63A7\u4EF6\u521D\u59CB\u53EF\u89C1\u6027\uFF09"),"aria-label":e`${n.name}画布可见性`,"aria-pressed":!F,onClick:ne=>Di(ne,n.id)},F?"\u25CC":"\u25C9")))}):t("div",{className:"qxsim-empty"},e("\u6CA1\u6709\u5339\u914D\u7684\u63A7\u4EF6"))),t("div",{className:"qxsim-tree-foot"},ie&&Q?t("div",{className:"qxsim-hierarchy"},t("div",{className:"qxsim-hierarchy-head"},t("strong",null,e("\u5C42\u7EA7\u4E0E\u6A21\u677F\u8FB9\u754C")),t("span",null,Q.name)),t("div",{className:"qxsim-parent-row"},t("select",{"aria-label":e("\u7236\u7EA7\u63A7\u4EF6"),value:_i,onChange:n=>void ee({op:"reparent",id:Q.id,parentId:n.target.value}).then(()=>ae(n.target.value===r.root.id?e("\u5DF2\u63D0\u5347\u4E3A\u53EF\u5B9E\u4F8B\u5316\u9876\u5C42\u6A21\u677F"):e("\u5DF2\u8C03\u6574\u63A7\u4EF6\u7236\u7EA7"))).catch(()=>{})},t("option",{value:r.root.id},e("\u9876\u5C42\u6A21\u677F\uFF08\u53EF\u5B9E\u4F8B\u5316\uFF09")),zi.map(n=>t("option",{key:n.id,value:n.id},`${"\u3000".repeat(n.depth)}${n.name}`))),t("button",{title:e("\u5728\u540C\u7EA7\u4E2D\u4E0A\u79FB"),disabled:Q.siblingIndex<=0,onClick:()=>void ee({op:"moveSibling",id:Q.id,direction:"up"}).catch(()=>{})},"\u2191"),t("button",{title:e("\u5728\u540C\u7EA7\u4E2D\u4E0B\u79FB"),disabled:Q.siblingIndex>=Q.siblingCount-1,onClick:()=>void ee({op:"moveSibling",id:Q.id,direction:"down"}).catch(()=>{})},"\u2193")),t("div",{className:"qxsim-hierarchy-note"},Q.depth===0?e("\u8BE5\u8282\u70B9\u4F1A\u5199\u5165\u72EC\u7ACB UIControlTemplate\uFF0C\u53EF\u76F4\u63A5\u4F5C\u4E3A prefabId\u3002"):e`当前为第 ${Q.depth} 层子控件,不会单独成为 prefabId。`)):null,t("div",{className:"qxsim-palette-head"},t("span",{title:ie&&Me==="template"?e("\u65B0\u589E\u72EC\u7ACB\u53EF\u5B9E\u4F8B\u5316\u6A21\u677F"):e`添加到${Q?Q.name:e("\u5F53\u524D\u63A7\u4EF6")}`},ie&&Me==="template"?e("\u65B0\u589E\u9876\u5C42\u6A21\u677F"):e`添加到${Q?`\u201C${Q.name}\u201D`:e("\u5F53\u524D\u63A7\u4EF6")}`),ie?t("span",{className:"qxsim-add-mode"},t("button",{className:Me==="template"?"active":"",onClick:()=>qt("template")},e("\u9876\u5C42")),t("button",{className:Me==="child"?"active":"",onClick:()=>qt("child")},e("\u5B50\u63A7\u4EF6"))):null),t("div",{className:"qxsim-add"},T.filter(([n])=>ie||n!=="container").map(([n,m])=>t("button",{key:n,title:`${ie&&Me==="template"?e("\u65B0\u589E"):e("\u6DFB\u52A0")}${e(m)}`,onClick:()=>Pi(n,e(m))},`\uFF0B ${e(m)}`))))),t("main",{className:"qxsim-center"},t("div",{className:"qxsim-workspace",ref:na},t("div",{className:"qxsim-stage-shell",style:{width:`${Math.max(40,Math.round(xe*At))}px`}},t("div",{className:"qxsim-stage-label"},t("b",null,ie?e("Lua \u6A21\u677F\u9884\u89C8"):e("\u754C\u9762\u63A7\u4EF6\u7EC4")),t("span",{className:"qxsim-platform-tag"},r.canvas.platform),t("span",null,e`${la} · ${xe}×${Se} · 左下原点`)),t("div",{className:"qxsim-stage",style:{width:"100%",aspectRatio:`${xe} / ${Se}`},onClick:n=>{let m=n.currentTarget.getBoundingClientRect();ee({op:"pick",x:(n.clientX-m.left)*xe/m.width,y:(m.bottom-n.clientY)*Se/m.height}).catch(()=>{})}},t(h,{key:`${s}:${r.asset?.type}:${r.asset?.currentTemplateId}`,boxes:Lt,canvasWidth:xe,canvasHeight:Se}),t(v,{boxes:Lt,canvasWidth:xe,canvasHeight:Se,renderControl:n=>ht(n,r,xe,Se,At,R)}),fa?ht(fa,r,xe,Se,At,R,!0):null))),k?t("div",{className:"qxsim-status error"},"\u26A0 ",e(k)):t("div",{className:"qxsim-status"},t("span",null,e`● ${e(r.asset?.label)||e("\u63A7\u4EF6")}编辑`),t("span",null,ke||(Q?e`当前:${Q.name}`:"")),t("span",{className:"spacer"}),t("span",null,ie?e("GIA \u5BFC\u51FA\u540E\u53EF\u5728 Lua \u4E2D\u6309 prefabId \u5B9E\u4F8B\u5316"):e("\u5B57\u6BB5\u5728\u5931\u7126\u6216 Enter \u65F6\u63D0\u4EA4")))),t("aside",{className:"qxsim-inspector"},r.inspector?t(i.Fragment,null,t("div",{className:"qxsim-inspector-head"},t("div",{className:"qxsim-inspector-line"},t("span",{className:"qxsim-kind"},(O[r.inspector.kind]||["\u25C7"])[0]),t("strong",null,e(r.inspector.label)),ie&&Q?.depth===0?t("span",{className:"qxsim-template-tag"},e("\u53EF\u5B9E\u4F8B\u5316")):null),t("div",{className:"qxsim-node-id"},ie&&Q?.depth===0?e("\u6A21\u677F\u7D22\u5F15 "):e("\u63A7\u4EF6 GUID "),t("code",null,r.inspector.guid??r.inspector.id)," \xB7 ",Q?.name||e("\u8282\u70B9")),r.inspector.kind!=="server-container"?t(ci,{key:`${r.asset.type}:${r.inspector.id}`,inspector:r.inspector,autofill:r.clientGuidAutofill,onSave:(n,m,z)=>yi(n,m,r.asset.type,z)}):null),ie&&Q?t("div",{className:"qxsim-section-body"},t("button",{className:"qxsim-action qxsim-export-single",title:e("\u5BFC\u51FA\u5F53\u524D\u5BA2\u6237\u7AEF\u63A7\u4EF6\u53CA\u5176\u5B50\u6811"),onClick:()=>{Te("gia-partial","client-control-template",{controlIds:[Q.id],includeScripts:!0}).catch(()=>{})}},e("\u5BFC\u51FA GIA"))):null,t("div",{className:"qxsim-tabs",style:Pt?void 0:{gridTemplateColumns:"1fr"}},t("button",{className:vt==="base"?"active":"",onClick:()=>yt("base")},e("\u57FA\u7840\u5C5E\u6027")),Pt?t("button",{className:vt==="script"?"active":"",onClick:()=>yt("script")},e("\u811A\u672C")):null),t("div",{className:"qxsim-inspector-scroll"},Pt&&vt==="script"?t(li,{snap:r,addScriptMounted:n=>void ra({controlId:n,controlAsset:r.asset?.type}).then(()=>$e("script")),mountScriptTo:Ai,unmountScript:Ii,openScript:n=>{Je(n),$e("script")}}):t(i.Fragment,null,t(me,{key:`${r.asset.type}:${r.inspector.id}`,inspector:r.inspector,commit:Si,createStateChild:qi}),["animation","fullscreen"].includes(r.inspector.kind)?t(x,{key:r.selectedId,item:r.boxes.find(n=>n.id===r.selectedId),commit:(n,m)=>ee({op:"set",key:n,value:m})}):null,r.boxes?.some(n=>n.id===r.selectedId&&Ae(n.imageId,n.imageSource))?t("div",{className:"qxsim-section-body"},t("button",{className:"qxsim-action",disabled:G,onClick:Ei},G?e("\u6B63\u5728\u5237\u65B0\u7D20\u6750\u2026"):e("\u21BB \u91CD\u65B0\u4E0B\u8F7D\u6B64\u7D20\u6750")),t("p",{className:"qxsim-muted"},e("\u767D\u540D\u5355\u56FE\u7247\u6309\u9700\u7F13\u5B58\uFF1B\u5237\u65B0\u4F1A\u91CD\u65B0\u8BBF\u95EE\u7D20\u6750\u6E90\u3002"))):null)),t("div",{className:"qxsim-tree-foot"},t("button",{className:"qxsim-action danger",style:{width:"100%"},onClick:()=>void ee({op:"remove"}).catch(()=>{})},ie&&Q?.depth===0?e("\u232B \u5220\u9664\u5F53\u524D\u6A21\u677F"):e("\u232B \u5220\u9664\u5F53\u524D\u63A7\u4EF6")))):t("div",{className:"qxsim-empty"},e("\u8BF7\u9009\u62E9\u4E00\u4E2A\u63A7\u4EF6")))):we==="script"?t(ut,{snap:r,selectedScriptId:kt,selectScript:n=>{sa(),Je(n)},draft:Ct,updateDraft:ki,saveScript:()=>void ge().then(()=>ae(e("Lua \u811A\u672C\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863"))).catch(()=>{}),addScript:()=>void ra(),removeScript:Ni,exportLua:n=>void Te("lua",n),exportScripts:()=>void Te("scripts"),exportScriptsGia:()=>void Te("scripts-gia"),notice:ke}):t(di,{snap:r,draft:oa,setDraft:Nt,saveLogic:()=>void Ce().catch(()=>{}),notice:ke,error:k}),t(I,{version:c,request:n=>L(s,n)}))}return{SimulatorView:bi,ensureStyle:M,removeStyle:()=>document.getElementById(A)?.remove()}}var ii={name:"dsh-plugin-beyond-simulator",version:"2.2.2",description:"\u5343\u661F\u5947\u57DF\u5BA2\u6237\u7AEF UI \u7F16\u8F91\u4E0E\u8BD5\u73A9\u6A21\u62DF\u5668 for DeepSeek Harness",private:!0,type:"module",packageManager:"pnpm@10.15.0",engines:{node:">=22"},main:"dsh-plugin/dist/index.js",exports:{".":"./dsh-plugin/dist/index.js","./skill":"./dsh-plugin/dist/skill.js","./preset":"./dsh-plugin/dist/preset.js","./client":"./dsh-plugin/dist/client.js","./cordis.patch.yml":"./dsh-plugin/cordis.patch.yml","./package.json":"./package.json"},files:["dsh-plugin/dist","dsh-plugin/lib/play.html","dsh-plugin/skill.md","dsh-plugin/presets","dsh-plugin/cordis.patch.yml","README.md","LICENSE"],repository:{type:"git",url:"git+https://github.com/1475505/miliastra-beyond-simulator.git"},dsh:{bundle:{patch:"./dsh-plugin/cordis.patch.yml"},client:{inject:["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-slots","@deepseek-ai/dsh-client-ui-conversation"],platform:"web"}},scripts:{prepare:"node scripts/build.mjs dsh-plugin",build:"node scripts/build.mjs",test:"node scripts/test.mjs","pack:release":"node scripts/pack.mjs","test:packages":"node scripts/smoke-packages.mjs","test:git-install":"node scripts/smoke-git-install.mjs","test:harness":"node scripts/smoke-harness.mjs","dev:web":"node scripts/build.mjs web && node web/server.js","start:web":"node web/dist/server.js"},dependencies:{"@napi-rs/canvas":"0.1.100",fengari:"0.1.5",protobufjs:"8.7.2"},peerDependencies:{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-tools":"^0.1.0-rc.6 || ^0.2.0-rc.1 || ^0.2.1-rc.1"},devDependencies:{"@deepseek-ai/dsh-tools":"0.1.0-rc.6",esbuild:"0.25.12"},license:"GPL-3.0-only"};ha("/qxqy-simulator/api/locale");window.__ModuleLoader__.load({id:"dsh-plugin-beyond-simulator",factory:i=>{let a={},d=i("react"),o=ai(d,{version:ii.version,async api(c,t,u){let l=await fetch("/qxqy-simulator/api/"+t,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({sessionId:c,...u||{}}),...t==="play"?{signal:AbortSignal.timeout(15e3)}:{}}),f=await l.json();if(!l.ok||!f.ok)throw new Error(f.error||"Request failed");return f.value},playUrl:c=>"/qxqy-simulator/play#"+encodeURIComponent(c)});return a.inject=["slots"],a.apply=c=>{o.ensureStyle(),c.effect(()=>o.removeStyle,"qxqy-simulator: style cleanup");let t=()=>e("\u6A21\u62DF\u5668");c.inject(["locale"],u=>{let l,f,p=u.locale.bind("qxqy-simulator");t=()=>p("title");let h=()=>{let x=e("\u6A21\u62DF\u5668");x!==f&&(f=x,l?.(),l=u.locale.register("qxqy-simulator",{en:{title:x},zh:{title:x}}))};u.effect(()=>{h();let x=Ot(h);return()=>{x(),t=()=>e("\u6A21\u62DF\u5668"),l?.()}},"qxqy-simulator: tab language")}),c.slots.inject("conversation.view",()=>c.slots.register({name:"conversation.view",id:"qxqy-simulator",order:20,label:()=>t()},o.SimulatorView))},a}});})();
|