feat(scripts): legacy-layer 转换器脚手架 + fixtures + 解码 smoke test

- 添加 iconv-lite + @xmldom/xmldom 依赖 (YouleNexus + 顶层)
- 创建 framework-tests/legacy-layer-migration/ 目录结构
- 复制 Game_Surface_3 gameabc_Image.json / Layer00002.xml / Login_Layer.prefab 作 fixtures
- spirit-semantics.json 骨架 (Task 5 完整化)
- _smoke-iconv.mjs 验证解码可读中文 Spirit 名

注意: 顶层 package.json 也加了 iconv-lite/@xmldom/xmldom
(转换工具将在 cocoscreator_projects/scripts/ 跑, smoke test 也从
cocoscreator_projects 跑; 只装 YouleNexus 无法解析 iconv-lite).
另: 实际 Layer00002.xml 是 UTF-8 (XML 头声明 + 字节验证), 不是
spec/brief 假设的 GB18030 - smoke test 用 UTF-8 解码才能读到
'微信登录背景'. 转换工具后续 Task 应支持自动检测 (XML 声明优先,
fallback GB18030).
This commit is contained in:
Claude
2026-09-02 07:41:53 +08:00
parent 02dc5d51ca
commit 9a695878ba
11 changed files with 8938 additions and 0 deletions
+45
View File
@@ -0,0 +1,45 @@
{
"name": "YouleNexus",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "YouleNexus",
"dependencies": {
"@xmldom/xmldom": "^0.9.12",
"iconv-lite": "^0.7.3"
}
},
"node_modules/@xmldom/xmldom": {
"version": "0.9.12",
"resolved": "https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.9.12.tgz",
"integrity": "sha512-5AXjrcMClTryPe9LgZrygpB1lj7s0S9E0+W+AHaVKAVyHanafK86iPSvG5xHVSp/jC+VH1UXu0TAEmY279xH7A==",
"license": "MIT",
"engines": {
"node": ">=14.6"
}
},
"node_modules/iconv-lite": {
"version": "0.7.3",
"resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.7.3.tgz",
"integrity": "sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==",
"license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
},
"engines": {
"node": ">=0.10.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/express"
}
},
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"license": "MIT"
}
}
}
@@ -3,5 +3,9 @@
"uuid": "15252ac4-d24e-4b2c-86b0-51caaf24f779",
"creator": {
"version": "3.8.8"
},
"dependencies": {
"@xmldom/xmldom": "^0.9.12",
"iconv-lite": "^0.7.3"
}
}
@@ -0,0 +1,11 @@
import { readFileSync } from 'node:fs';
import iconv from 'iconv-lite';
const buf = readFileSync('framework-tests/legacy-layer-migration/fixtures/Layer00002.xml');
// NOTE: 实际 Layer00002.xml 是 UTF-8 编码 (XML 头声明 + 字节验证),
// spec/brief 要求的 GB18030 在该文件上会乱码 (微信登录背景 不可读).
// 转换工具应支持两种编码, 优先按 XML 声明, 否则按 GB18030 fallback.
const text = iconv.decode(buf, 'utf8');
console.log('decoded length:', text.length);
console.log('contains 微信登录背景:', text.includes('微信登录背景'));
console.log('contains Login_Layer:', text.includes('Login_Layer'));
@@ -0,0 +1,908 @@
<?xml version="1.0" encoding="UTF-8"?>
<Layer Version="2.6" SaveTime="2019-01-04 17:51:20">
<PropertyList>
<Property Name="ID" Value="2"/>
<Property Name="Name" Value="Login_Layer"/>
<Property Name="Description" Value=""/>
</PropertyList>
<OptionList/>
<EventList/>
<SpiritList>
<Spirit>
<PropertyList>
<Property Name="SpiritType" Value="0"/>
<Property Name="ID" Value="2"/>
<Property Name="Name" Value="微信登录背景"/>
<Property Name="ImgResID" Value="20"/>
<Property Name="X" Value="0"/>
<Property Name="Y" Value="0"/>
<Property Name="Width" Value="1280"/>
<Property Name="Height" Value="720"/>
<Property Name="BelongLayerID" Value="2"/>
<Property Name="IndexOfLayer" Value="1"/>
<Property Name="BelongGroupID" Value="2"/>
<Property Name="IsVisible" Value="1"/>
<Property Name="CanClick" Value="1"/>
<Property Name="CanDragSize" Value="0"/>
<Property Name="TimerInterval" Value="0"/>
<Property Name="Data" Value=""/>
<Property Name="Description" Value=""/>
<Property Name="CoordParentID" Value="0"/>
<Property Name="CoordParentPos" Value="0"/>
<Property Name="CoordSelfPos" Value="0"/>
<Property Name="CoordRelaX" Value="0"/>
<Property Name="CoordRelaY" Value="0"/>
<Property Name="SizeCalcMode" Value="2"/>
<Property Name="SizeParentID" Value="20"/>
<Property Name="WidthCalcMode" Value="1"/>
<Property Name="SizeRelaWidth" Value="10000"/>
<Property Name="HeightCalcMode" Value="1"/>
<Property Name="SizeRelaHeight" Value="10000"/>
</PropertyList>
<OptionList>
<Option Name="tag" Value="0"/>
<Option Name="tag1" Value="0"/>
<Option Name="tag2" Value="0"/>
<Option Name="tag3" Value="0"/>
<Option Name="vx" Value="0"/>
<Option Name="vy" Value="0"/>
<Option Name="vw" Value="0"/>
<Option Name="vh" Value="0"/>
</OptionList>
<EventList>
<Event Name="MouseDown" Value=""/>
<Event Name="MouseUp" Value="2"/>
<Event Name="MouseMove" Value=""/>
<Event Name="OnTimer" Value=""/>
</EventList>
</Spirit>
<Spirit>
<PropertyList>
<Property Name="SpiritType" Value="0"/>
<Property Name="ID" Value="405"/>
<Property Name="Name" Value="Spirit405"/>
<Property Name="ImgResID" Value="5"/>
<Property Name="X" Value="734"/>
<Property Name="Y" Value="143"/>
<Property Name="Width" Value="59"/>
<Property Name="Height" Value="148"/>
<Property Name="BelongLayerID" Value="2"/>
<Property Name="IndexOfLayer" Value="2"/>
<Property Name="BelongGroupID" Value="2"/>
<Property Name="IsVisible" Value="1"/>
<Property Name="CanClick" Value="1"/>
<Property Name="CanDragSize" Value="0"/>
<Property Name="TimerInterval" Value="0"/>
<Property Name="Data" Value=""/>
<Property Name="Description" Value=""/>
<Property Name="CoordParentID" Value="0"/>
<Property Name="CoordParentPos" Value="0"/>
<Property Name="CoordSelfPos" Value="0"/>
<Property Name="CoordRelaX" Value="734"/>
<Property Name="CoordRelaY" Value="143"/>
<Property Name="SizeCalcMode" Value="0"/>
<Property Name="SizeParentID" Value="0"/>
<Property Name="WidthCalcMode" Value="0"/>
<Property Name="SizeRelaWidth" Value="59"/>
<Property Name="HeightCalcMode" Value="0"/>
<Property Name="SizeRelaHeight" Value="148"/>
</PropertyList>
<OptionList>
<Option Name="tag" Value="0"/>
<Option Name="tag1" Value="0"/>
<Option Name="tag2" Value="0"/>
<Option Name="tag3" Value="0"/>
<Option Name="vx" Value="0"/>
<Option Name="vy" Value="0"/>
<Option Name="vw" Value="0"/>
<Option Name="vh" Value="0"/>
</OptionList>
<EventList>
<Event Name="MouseDown" Value=""/>
<Event Name="MouseUp" Value="405"/>
<Event Name="MouseMove" Value=""/>
<Event Name="OnTimer" Value=""/>
</EventList>
</Spirit>
<Spirit>
<PropertyList>
<Property Name="SpiritType" Value="1"/>
<Property Name="ID" Value="285"/>
<Property Name="Name" Value="版本显示"/>
<Property Name="FontSize" Value="18"/>
<Property Name="FontBold" Value="0"/>
<Property Name="FontColor" Value="16777215"/>
<Property Name="FontColorA" Value="255"/>
<Property Name="BackColor" Value="16777215"/>
<Property Name="BackColorA" Value="0"/>
<Property Name="AutoSize" Value="1"/>
<Property Name="TextStyle" Value="0"/>
<Property Name="WordWrap" Value="0"/>
<Property Name="LineSpace" Value="0"/>
<Property Name="AlignHorz" Value="0"/>
<Property Name="AlignVert" Value="0"/>
<Property Name="Text" Value="版本显示"/>
<Property Name="X" Value="16"/>
<Property Name="Y" Value="9"/>
<Property Name="Width" Value="96"/>
<Property Name="Height" Value="31"/>
<Property Name="BelongLayerID" Value="2"/>
<Property Name="IndexOfLayer" Value="3"/>
<Property Name="BelongGroupID" Value="2"/>
<Property Name="IsVisible" Value="1"/>
<Property Name="CanClick" Value="1"/>
<Property Name="CanDragSize" Value="0"/>
<Property Name="TimerInterval" Value="0"/>
<Property Name="Data" Value=""/>
<Property Name="Description" Value=""/>
<Property Name="CoordParentID" Value="0"/>
<Property Name="CoordParentPos" Value="0"/>
<Property Name="CoordSelfPos" Value="0"/>
<Property Name="CoordRelaX" Value="16"/>
<Property Name="CoordRelaY" Value="9"/>
<Property Name="SizeCalcMode" Value="0"/>
<Property Name="SizeParentID" Value="0"/>
<Property Name="WidthCalcMode" Value="0"/>
<Property Name="SizeRelaWidth" Value="96"/>
<Property Name="HeightCalcMode" Value="0"/>
<Property Name="SizeRelaHeight" Value="31"/>
</PropertyList>
<OptionList>
<Option Name="tag" Value="0"/>
<Option Name="tag1" Value="0"/>
<Option Name="tag2" Value="0"/>
<Option Name="tag3" Value="0"/>
<Option Name="vx" Value="0"/>
<Option Name="vy" Value="0"/>
<Option Name="vw" Value="0"/>
<Option Name="vh" Value="0"/>
</OptionList>
<EventList>
<Event Name="MouseDown" Value=""/>
<Event Name="MouseUp" Value="285"/>
<Event Name="MouseMove" Value=""/>
<Event Name="OnTimer" Value=""/>
</EventList>
</Spirit>
<Spirit>
<PropertyList>
<Property Name="SpiritType" Value="0"/>
<Property Name="ID" Value="248"/>
<Property Name="Name" Value="协议确认"/>
<Property Name="ImgResID" Value="93"/>
<Property Name="X" Value="479"/>
<Property Name="Y" Value="542"/>
<Property Name="Width" Value="52"/>
<Property Name="Height" Value="51"/>
<Property Name="BelongLayerID" Value="2"/>
<Property Name="IndexOfLayer" Value="4"/>
<Property Name="BelongGroupID" Value="2"/>
<Property Name="IsVisible" Value="1"/>
<Property Name="CanClick" Value="1"/>
<Property Name="CanDragSize" Value="0"/>
<Property Name="TimerInterval" Value="0"/>
<Property Name="Data" Value=""/>
<Property Name="Description" Value=""/>
<Property Name="CoordParentID" Value="0"/>
<Property Name="CoordParentPos" Value="0"/>
<Property Name="CoordSelfPos" Value="0"/>
<Property Name="CoordRelaX" Value="479"/>
<Property Name="CoordRelaY" Value="542"/>
<Property Name="SizeCalcMode" Value="2"/>
<Property Name="SizeParentID" Value="93"/>
<Property Name="WidthCalcMode" Value="1"/>
<Property Name="SizeRelaWidth" Value="10000"/>
<Property Name="HeightCalcMode" Value="1"/>
<Property Name="SizeRelaHeight" Value="10000"/>
</PropertyList>
<OptionList>
<Option Name="tag" Value="0"/>
<Option Name="tag1" Value="0"/>
<Option Name="tag2" Value="0"/>
<Option Name="tag3" Value="0"/>
<Option Name="vx" Value="0"/>
<Option Name="vy" Value="0"/>
<Option Name="vw" Value="0"/>
<Option Name="vh" Value="0"/>
</OptionList>
<EventList>
<Event Name="MouseDown" Value=""/>
<Event Name="MouseUp" Value=""/>
<Event Name="MouseMove" Value=""/>
<Event Name="OnTimer" Value=""/>
</EventList>
</Spirit>
<Spirit>
<PropertyList>
<Property Name="SpiritType" Value="0"/>
<Property Name="ID" Value="249"/>
<Property Name="Name" Value="协议内容"/>
<Property Name="ImgResID" Value="94"/>
<Property Name="X" Value="565"/>
<Property Name="Y" Value="556"/>
<Property Name="Width" Value="220"/>
<Property Name="Height" Value="29"/>
<Property Name="BelongLayerID" Value="2"/>
<Property Name="IndexOfLayer" Value="5"/>
<Property Name="BelongGroupID" Value="2"/>
<Property Name="IsVisible" Value="1"/>
<Property Name="CanClick" Value="1"/>
<Property Name="CanDragSize" Value="0"/>
<Property Name="TimerInterval" Value="0"/>
<Property Name="Data" Value=""/>
<Property Name="Description" Value=""/>
<Property Name="CoordParentID" Value="0"/>
<Property Name="CoordParentPos" Value="0"/>
<Property Name="CoordSelfPos" Value="0"/>
<Property Name="CoordRelaX" Value="565"/>
<Property Name="CoordRelaY" Value="556"/>
<Property Name="SizeCalcMode" Value="2"/>
<Property Name="SizeParentID" Value="94"/>
<Property Name="WidthCalcMode" Value="1"/>
<Property Name="SizeRelaWidth" Value="10000"/>
<Property Name="HeightCalcMode" Value="1"/>
<Property Name="SizeRelaHeight" Value="10000"/>
</PropertyList>
<OptionList>
<Option Name="tag" Value="0"/>
<Option Name="tag1" Value="0"/>
<Option Name="tag2" Value="0"/>
<Option Name="tag3" Value="0"/>
<Option Name="vx" Value="0"/>
<Option Name="vy" Value="0"/>
<Option Name="vw" Value="0"/>
<Option Name="vh" Value="0"/>
</OptionList>
<EventList>
<Event Name="MouseDown" Value=""/>
<Event Name="MouseUp" Value=""/>
<Event Name="MouseMove" Value=""/>
<Event Name="OnTimer" Value=""/>
</EventList>
</Spirit>
<Spirit>
<PropertyList>
<Property Name="SpiritType" Value="0"/>
<Property Name="ID" Value="481"/>
<Property Name="Name" Value="Spirit481"/>
<Property Name="ImgResID" Value="10"/>
<Property Name="X" Value="1160"/>
<Property Name="Y" Value="0"/>
<Property Name="Width" Value="120"/>
<Property Name="Height" Value="120"/>
<Property Name="BelongLayerID" Value="2"/>
<Property Name="IndexOfLayer" Value="6"/>
<Property Name="BelongGroupID" Value="2"/>
<Property Name="IsVisible" Value="1"/>
<Property Name="CanClick" Value="1"/>
<Property Name="CanDragSize" Value="0"/>
<Property Name="TimerInterval" Value="0"/>
<Property Name="Data" Value=""/>
<Property Name="Description" Value=""/>
<Property Name="CoordParentID" Value="0"/>
<Property Name="CoordParentPos" Value="0"/>
<Property Name="CoordSelfPos" Value="0"/>
<Property Name="CoordRelaX" Value="1160"/>
<Property Name="CoordRelaY" Value="0"/>
<Property Name="SizeCalcMode" Value="0"/>
<Property Name="SizeParentID" Value="0"/>
<Property Name="WidthCalcMode" Value="0"/>
<Property Name="SizeRelaWidth" Value="120"/>
<Property Name="HeightCalcMode" Value="0"/>
<Property Name="SizeRelaHeight" Value="120"/>
</PropertyList>
<OptionList>
<Option Name="tag" Value="0"/>
<Option Name="tag1" Value="0"/>
<Option Name="tag2" Value="0"/>
<Option Name="tag3" Value="0"/>
<Option Name="vx" Value="0"/>
<Option Name="vy" Value="0"/>
<Option Name="vw" Value="0"/>
<Option Name="vh" Value="0"/>
</OptionList>
<EventList>
<Event Name="MouseDown" Value=""/>
<Event Name="MouseUp" Value=""/>
<Event Name="MouseMove" Value=""/>
<Event Name="OnTimer" Value=""/>
</EventList>
</Spirit>
<Spirit>
<PropertyList>
<Property Name="SpiritType" Value="0"/>
<Property Name="ID" Value="482"/>
<Property Name="Name" Value="Spirit482"/>
<Property Name="ImgResID" Value="10"/>
<Property Name="X" Value="0"/>
<Property Name="Y" Value="600"/>
<Property Name="Width" Value="120"/>
<Property Name="Height" Value="120"/>
<Property Name="BelongLayerID" Value="2"/>
<Property Name="IndexOfLayer" Value="7"/>
<Property Name="BelongGroupID" Value="2"/>
<Property Name="IsVisible" Value="1"/>
<Property Name="CanClick" Value="1"/>
<Property Name="CanDragSize" Value="0"/>
<Property Name="TimerInterval" Value="0"/>
<Property Name="Data" Value=""/>
<Property Name="Description" Value=""/>
<Property Name="CoordParentID" Value="0"/>
<Property Name="CoordParentPos" Value="0"/>
<Property Name="CoordSelfPos" Value="0"/>
<Property Name="CoordRelaX" Value="0"/>
<Property Name="CoordRelaY" Value="600"/>
<Property Name="SizeCalcMode" Value="0"/>
<Property Name="SizeParentID" Value="0"/>
<Property Name="WidthCalcMode" Value="0"/>
<Property Name="SizeRelaWidth" Value="120"/>
<Property Name="HeightCalcMode" Value="0"/>
<Property Name="SizeRelaHeight" Value="120"/>
</PropertyList>
<OptionList>
<Option Name="tag" Value="0"/>
<Option Name="tag1" Value="0"/>
<Option Name="tag2" Value="0"/>
<Option Name="tag3" Value="0"/>
<Option Name="vx" Value="0"/>
<Option Name="vy" Value="0"/>
<Option Name="vw" Value="0"/>
<Option Name="vh" Value="0"/>
</OptionList>
<EventList>
<Event Name="MouseDown" Value=""/>
<Event Name="MouseUp" Value=""/>
<Event Name="MouseMove" Value=""/>
<Event Name="OnTimer" Value=""/>
</EventList>
</Spirit>
<Spirit>
<PropertyList>
<Property Name="SpiritType" Value="0"/>
<Property Name="ID" Value="177"/>
<Property Name="Name" Value="Spirit177"/>
<Property Name="ImgResID" Value="177"/>
<Property Name="X" Value="540"/>
<Property Name="Y" Value="388"/>
<Property Name="Width" Value="320"/>
<Property Name="Height" Value="95"/>
<Property Name="BelongLayerID" Value="2"/>
<Property Name="IndexOfLayer" Value="8"/>
<Property Name="BelongGroupID" Value="2"/>
<Property Name="IsVisible" Value="1"/>
<Property Name="CanClick" Value="1"/>
<Property Name="CanDragSize" Value="0"/>
<Property Name="TimerInterval" Value="0"/>
<Property Name="Data" Value=""/>
<Property Name="Description" Value=""/>
<Property Name="CoordParentID" Value="0"/>
<Property Name="CoordParentPos" Value="0"/>
<Property Name="CoordSelfPos" Value="0"/>
<Property Name="CoordRelaX" Value="540"/>
<Property Name="CoordRelaY" Value="388"/>
<Property Name="SizeCalcMode" Value="2"/>
<Property Name="SizeParentID" Value="177"/>
<Property Name="WidthCalcMode" Value="1"/>
<Property Name="SizeRelaWidth" Value="10000"/>
<Property Name="HeightCalcMode" Value="1"/>
<Property Name="SizeRelaHeight" Value="10000"/>
</PropertyList>
<OptionList>
<Option Name="tag" Value="0"/>
<Option Name="tag1" Value="0"/>
<Option Name="tag2" Value="0"/>
<Option Name="tag3" Value="0"/>
<Option Name="vx" Value="0"/>
<Option Name="vy" Value="0"/>
<Option Name="vw" Value="0"/>
<Option Name="vh" Value="0"/>
</OptionList>
<EventList>
<Event Name="MouseDown" Value=""/>
<Event Name="MouseUp" Value=""/>
<Event Name="MouseMove" Value=""/>
<Event Name="OnTimer" Value=""/>
</EventList>
</Spirit>
<Spirit>
<PropertyList>
<Property Name="SpiritType" Value="0"/>
<Property Name="ID" Value="3"/>
<Property Name="Name" Value="微信登录"/>
<Property Name="ImgResID" Value="22"/>
<Property Name="X" Value="258"/>
<Property Name="Y" Value="384"/>
<Property Name="Width" Value="400"/>
<Property Name="Height" Value="116"/>
<Property Name="BelongLayerID" Value="2"/>
<Property Name="IndexOfLayer" Value="9"/>
<Property Name="BelongGroupID" Value="2"/>
<Property Name="IsVisible" Value="1"/>
<Property Name="CanClick" Value="1"/>
<Property Name="CanDragSize" Value="0"/>
<Property Name="TimerInterval" Value="0"/>
<Property Name="Data" Value=""/>
<Property Name="Description" Value=""/>
<Property Name="CoordParentID" Value="0"/>
<Property Name="CoordParentPos" Value="0"/>
<Property Name="CoordSelfPos" Value="0"/>
<Property Name="CoordRelaX" Value="258"/>
<Property Name="CoordRelaY" Value="384"/>
<Property Name="SizeCalcMode" Value="2"/>
<Property Name="SizeParentID" Value="22"/>
<Property Name="WidthCalcMode" Value="1"/>
<Property Name="SizeRelaWidth" Value="10000"/>
<Property Name="HeightCalcMode" Value="1"/>
<Property Name="SizeRelaHeight" Value="10000"/>
</PropertyList>
<OptionList>
<Option Name="tag" Value="0"/>
<Option Name="tag1" Value="0"/>
<Option Name="tag2" Value="0"/>
<Option Name="tag3" Value="0"/>
<Option Name="vx" Value="0"/>
<Option Name="vy" Value="0"/>
<Option Name="vw" Value="0"/>
<Option Name="vh" Value="0"/>
</OptionList>
<EventList>
<Event Name="MouseDown" Value=""/>
<Event Name="MouseUp" Value="3"/>
<Event Name="MouseMove" Value=""/>
<Event Name="OnTimer" Value=""/>
</EventList>
</Spirit>
<Spirit>
<PropertyList>
<Property Name="SpiritType" Value="3"/>
<Property Name="ID" Value="3254"/>
<Property Name="Name" Value="Spirit3254"/>
<Property Name="Frame" Value="1"/>
<Property Name="ImgResID" Value="427"/>
<Property Name="X" Value="342"/>
<Property Name="Y" Value="393"/>
<Property Name="Width" Value="301"/>
<Property Name="Height" Value="97"/>
<Property Name="BelongLayerID" Value="2"/>
<Property Name="IndexOfLayer" Value="10"/>
<Property Name="BelongGroupID" Value="2"/>
<Property Name="IsVisible" Value="1"/>
<Property Name="CanClick" Value="1"/>
<Property Name="CanDragSize" Value="0"/>
<Property Name="TimerInterval" Value="0"/>
<Property Name="Data" Value=""/>
<Property Name="Description" Value=""/>
<Property Name="CoordParentID" Value="0"/>
<Property Name="CoordParentPos" Value="0"/>
<Property Name="CoordSelfPos" Value="0"/>
<Property Name="CoordRelaX" Value="342"/>
<Property Name="CoordRelaY" Value="393"/>
<Property Name="SizeCalcMode" Value="2"/>
<Property Name="SizeParentID" Value="427"/>
<Property Name="WidthCalcMode" Value="1"/>
<Property Name="SizeRelaWidth" Value="10000"/>
<Property Name="HeightCalcMode" Value="1"/>
<Property Name="SizeRelaHeight" Value="10000"/>
</PropertyList>
<OptionList>
<Option Name="tag" Value="0"/>
<Option Name="tag1" Value="0"/>
<Option Name="tag2" Value="0"/>
<Option Name="tag3" Value="0"/>
<Option Name="vx" Value="0"/>
<Option Name="vy" Value="0"/>
<Option Name="vw" Value="0"/>
<Option Name="vh" Value="0"/>
</OptionList>
<EventList>
<Event Name="MouseDown" Value=""/>
<Event Name="MouseUp" Value=""/>
<Event Name="MouseMove" Value=""/>
<Event Name="OnTimer" Value=""/>
</EventList>
</Spirit>
<Spirit>
<PropertyList>
<Property Name="SpiritType" Value="3"/>
<Property Name="ID" Value="3255"/>
<Property Name="Name" Value="Spirit3255"/>
<Property Name="Frame" Value="2"/>
<Property Name="ImgResID" Value="427"/>
<Property Name="X" Value="490"/>
<Property Name="Y" Value="393"/>
<Property Name="Width" Value="301"/>
<Property Name="Height" Value="97"/>
<Property Name="BelongLayerID" Value="2"/>
<Property Name="IndexOfLayer" Value="11"/>
<Property Name="BelongGroupID" Value="2"/>
<Property Name="IsVisible" Value="1"/>
<Property Name="CanClick" Value="1"/>
<Property Name="CanDragSize" Value="0"/>
<Property Name="TimerInterval" Value="0"/>
<Property Name="Data" Value=""/>
<Property Name="Description" Value=""/>
<Property Name="CoordParentID" Value="0"/>
<Property Name="CoordParentPos" Value="0"/>
<Property Name="CoordSelfPos" Value="0"/>
<Property Name="CoordRelaX" Value="490"/>
<Property Name="CoordRelaY" Value="393"/>
<Property Name="SizeCalcMode" Value="2"/>
<Property Name="SizeParentID" Value="427"/>
<Property Name="WidthCalcMode" Value="1"/>
<Property Name="SizeRelaWidth" Value="10000"/>
<Property Name="HeightCalcMode" Value="1"/>
<Property Name="SizeRelaHeight" Value="10000"/>
</PropertyList>
<OptionList>
<Option Name="tag" Value="0"/>
<Option Name="tag1" Value="0"/>
<Option Name="tag2" Value="0"/>
<Option Name="tag3" Value="0"/>
<Option Name="vx" Value="0"/>
<Option Name="vy" Value="0"/>
<Option Name="vw" Value="0"/>
<Option Name="vh" Value="0"/>
</OptionList>
<EventList>
<Event Name="MouseDown" Value=""/>
<Event Name="MouseUp" Value=""/>
<Event Name="MouseMove" Value=""/>
<Event Name="OnTimer" Value=""/>
</EventList>
</Spirit>
<Spirit>
<PropertyList>
<Property Name="SpiritType" Value="3"/>
<Property Name="ID" Value="106"/>
<Property Name="Name" Value="Spirit106"/>
<Property Name="Frame" Value="1"/>
<Property Name="ImgResID" Value="376"/>
<Property Name="X" Value="846"/>
<Property Name="Y" Value="529"/>
<Property Name="Width" Value="100"/>
<Property Name="Height" Value="101"/>
<Property Name="BelongLayerID" Value="2"/>
<Property Name="IndexOfLayer" Value="12"/>
<Property Name="BelongGroupID" Value="2"/>
<Property Name="IsVisible" Value="1"/>
<Property Name="CanClick" Value="1"/>
<Property Name="CanDragSize" Value="0"/>
<Property Name="TimerInterval" Value="0"/>
<Property Name="Data" Value=""/>
<Property Name="Description" Value=""/>
<Property Name="CoordParentID" Value="0"/>
<Property Name="CoordParentPos" Value="0"/>
<Property Name="CoordSelfPos" Value="0"/>
<Property Name="CoordRelaX" Value="846"/>
<Property Name="CoordRelaY" Value="529"/>
<Property Name="SizeCalcMode" Value="2"/>
<Property Name="SizeParentID" Value="376"/>
<Property Name="WidthCalcMode" Value="1"/>
<Property Name="SizeRelaWidth" Value="10000"/>
<Property Name="HeightCalcMode" Value="1"/>
<Property Name="SizeRelaHeight" Value="10000"/>
</PropertyList>
<OptionList>
<Option Name="tag" Value="0"/>
<Option Name="tag1" Value="0"/>
<Option Name="tag2" Value="0"/>
<Option Name="tag3" Value="0"/>
<Option Name="vx" Value="0"/>
<Option Name="vy" Value="0"/>
<Option Name="vw" Value="0"/>
<Option Name="vh" Value="0"/>
</OptionList>
<EventList>
<Event Name="MouseDown" Value=""/>
<Event Name="MouseUp" Value=""/>
<Event Name="MouseMove" Value=""/>
<Event Name="OnTimer" Value=""/>
</EventList>
</Spirit>
<Spirit>
<PropertyList>
<Property Name="SpiritType" Value="0"/>
<Property Name="ID" Value="158"/>
<Property Name="Name" Value="登录中遮罩"/>
<Property Name="ImgResID" Value="10"/>
<Property Name="X" Value="0"/>
<Property Name="Y" Value="0"/>
<Property Name="Width" Value="1280"/>
<Property Name="Height" Value="720"/>
<Property Name="BelongLayerID" Value="2"/>
<Property Name="IndexOfLayer" Value="13"/>
<Property Name="BelongGroupID" Value="2"/>
<Property Name="IsVisible" Value="0"/>
<Property Name="CanClick" Value="1"/>
<Property Name="CanDragSize" Value="0"/>
<Property Name="TimerInterval" Value="0"/>
<Property Name="Data" Value=""/>
<Property Name="Description" Value=""/>
<Property Name="CoordParentID" Value="0"/>
<Property Name="CoordParentPos" Value="0"/>
<Property Name="CoordSelfPos" Value="0"/>
<Property Name="CoordRelaX" Value="0"/>
<Property Name="CoordRelaY" Value="0"/>
<Property Name="SizeCalcMode" Value="0"/>
<Property Name="SizeParentID" Value="0"/>
<Property Name="WidthCalcMode" Value="0"/>
<Property Name="SizeRelaWidth" Value="1280"/>
<Property Name="HeightCalcMode" Value="0"/>
<Property Name="SizeRelaHeight" Value="720"/>
</PropertyList>
<OptionList>
<Option Name="tag" Value="0"/>
<Option Name="tag1" Value="0"/>
<Option Name="tag2" Value="0"/>
<Option Name="tag3" Value="0"/>
<Option Name="vx" Value="0"/>
<Option Name="vy" Value="0"/>
<Option Name="vw" Value="0"/>
<Option Name="vh" Value="0"/>
</OptionList>
<EventList>
<Event Name="MouseDown" Value=""/>
<Event Name="MouseUp" Value="158"/>
<Event Name="MouseMove" Value=""/>
<Event Name="OnTimer" Value=""/>
</EventList>
</Spirit>
<Spirit>
<PropertyList>
<Property Name="SpiritType" Value="5"/>
<Property Name="ID" Value="159"/>
<Property Name="Name" Value="Spirit159"/>
<Property Name="LeftEdge" Value="100"/>
<Property Name="TopEdge" Value="80"/>
<Property Name="RightEdge" Value="100"/>
<Property Name="BottomEdge" Value="80"/>
<Property Name="ImgResID" Value="54"/>
<Property Name="X" Value="455"/>
<Property Name="Y" Value="351"/>
<Property Name="Width" Value="370"/>
<Property Name="Height" Value="170"/>
<Property Name="BelongLayerID" Value="2"/>
<Property Name="IndexOfLayer" Value="14"/>
<Property Name="BelongGroupID" Value="2"/>
<Property Name="IsVisible" Value="0"/>
<Property Name="CanClick" Value="1"/>
<Property Name="CanDragSize" Value="1"/>
<Property Name="TimerInterval" Value="0"/>
<Property Name="Data" Value=""/>
<Property Name="Description" Value=""/>
<Property Name="CoordParentID" Value="0"/>
<Property Name="CoordParentPos" Value="0"/>
<Property Name="CoordSelfPos" Value="0"/>
<Property Name="CoordRelaX" Value="455"/>
<Property Name="CoordRelaY" Value="351"/>
<Property Name="SizeCalcMode" Value="0"/>
<Property Name="SizeParentID" Value="0"/>
<Property Name="WidthCalcMode" Value="0"/>
<Property Name="SizeRelaWidth" Value="370"/>
<Property Name="HeightCalcMode" Value="0"/>
<Property Name="SizeRelaHeight" Value="170"/>
</PropertyList>
<OptionList>
<Option Name="tag" Value="0"/>
<Option Name="tag1" Value="0"/>
<Option Name="tag2" Value="0"/>
<Option Name="tag3" Value="0"/>
<Option Name="vx" Value="0"/>
<Option Name="vy" Value="0"/>
<Option Name="vw" Value="0"/>
<Option Name="vh" Value="0"/>
</OptionList>
<EventList>
<Event Name="MouseDown" Value=""/>
<Event Name="MouseUp" Value=""/>
<Event Name="MouseMove" Value=""/>
<Event Name="OnTimer" Value=""/>
</EventList>
</Spirit>
<Spirit>
<PropertyList>
<Property Name="SpiritType" Value="0"/>
<Property Name="ID" Value="160"/>
<Property Name="Name" Value="登录中头像"/>
<Property Name="ImgResID" Value="25"/>
<Property Name="X" Value="491"/>
<Property Name="Y" Value="387"/>
<Property Name="Width" Value="96"/>
<Property Name="Height" Value="96"/>
<Property Name="BelongLayerID" Value="2"/>
<Property Name="IndexOfLayer" Value="15"/>
<Property Name="BelongGroupID" Value="2"/>
<Property Name="IsVisible" Value="1"/>
<Property Name="CanClick" Value="1"/>
<Property Name="CanDragSize" Value="0"/>
<Property Name="TimerInterval" Value="0"/>
<Property Name="Data" Value=""/>
<Property Name="Description" Value=""/>
<Property Name="CoordParentID" Value="0"/>
<Property Name="CoordParentPos" Value="0"/>
<Property Name="CoordSelfPos" Value="0"/>
<Property Name="CoordRelaX" Value="491"/>
<Property Name="CoordRelaY" Value="387"/>
<Property Name="SizeCalcMode" Value="0"/>
<Property Name="SizeParentID" Value="0"/>
<Property Name="WidthCalcMode" Value="0"/>
<Property Name="SizeRelaWidth" Value="96"/>
<Property Name="HeightCalcMode" Value="0"/>
<Property Name="SizeRelaHeight" Value="96"/>
</PropertyList>
<OptionList>
<Option Name="tag" Value="0"/>
<Option Name="tag1" Value="0"/>
<Option Name="tag2" Value="0"/>
<Option Name="tag3" Value="0"/>
<Option Name="vx" Value="0"/>
<Option Name="vy" Value="0"/>
<Option Name="vw" Value="0"/>
<Option Name="vh" Value="0"/>
</OptionList>
<EventList>
<Event Name="MouseDown" Value=""/>
<Event Name="MouseUp" Value=""/>
<Event Name="MouseMove" Value=""/>
<Event Name="OnTimer" Value=""/>
</EventList>
</Spirit>
<Spirit>
<PropertyList>
<Property Name="SpiritType" Value="1"/>
<Property Name="ID" Value="324"/>
<Property Name="Name" Value="登录中昵称"/>
<Property Name="FontSize" Value="16"/>
<Property Name="FontBold" Value="0"/>
<Property Name="FontColor" Value="0"/>
<Property Name="FontColorA" Value="255"/>
<Property Name="BackColor" Value="16777215"/>
<Property Name="BackColorA" Value="0"/>
<Property Name="AutoSize" Value="1"/>
<Property Name="TextStyle" Value="0"/>
<Property Name="WordWrap" Value="0"/>
<Property Name="LineSpace" Value="0"/>
<Property Name="AlignHorz" Value="0"/>
<Property Name="AlignVert" Value="0"/>
<Property Name="Text" Value="等"/>
<Property Name="X" Value="697"/>
<Property Name="Y" Value="392"/>
<Property Name="Width" Value="21"/>
<Property Name="Height" Value="28"/>
<Property Name="BelongLayerID" Value="2"/>
<Property Name="IndexOfLayer" Value="16"/>
<Property Name="BelongGroupID" Value="2"/>
<Property Name="IsVisible" Value="1"/>
<Property Name="CanClick" Value="1"/>
<Property Name="CanDragSize" Value="0"/>
<Property Name="TimerInterval" Value="0"/>
<Property Name="Data" Value=""/>
<Property Name="Description" Value=""/>
<Property Name="CoordParentID" Value="0"/>
<Property Name="CoordParentPos" Value="0"/>
<Property Name="CoordSelfPos" Value="0"/>
<Property Name="CoordRelaX" Value="697"/>
<Property Name="CoordRelaY" Value="392"/>
<Property Name="SizeCalcMode" Value="0"/>
<Property Name="SizeParentID" Value="0"/>
<Property Name="WidthCalcMode" Value="0"/>
<Property Name="SizeRelaWidth" Value="21"/>
<Property Name="HeightCalcMode" Value="0"/>
<Property Name="SizeRelaHeight" Value="28"/>
</PropertyList>
<OptionList>
<Option Name="tag" Value="0"/>
<Option Name="tag1" Value="0"/>
<Option Name="tag2" Value="0"/>
<Option Name="tag3" Value="0"/>
<Option Name="vx" Value="0"/>
<Option Name="vy" Value="0"/>
<Option Name="vw" Value="0"/>
<Option Name="vh" Value="0"/>
</OptionList>
<EventList>
<Event Name="MouseDown" Value=""/>
<Event Name="MouseUp" Value=""/>
<Event Name="MouseMove" Value=""/>
<Event Name="OnTimer" Value=""/>
</EventList>
</Spirit>
<Spirit>
<PropertyList>
<Property Name="SpiritType" Value="3"/>
<Property Name="ID" Value="325"/>
<Property Name="Name" Value="登录中动画"/>
<Property Name="Frame" Value="1"/>
<Property Name="ImgResID" Value="107"/>
<Property Name="X" Value="624"/>
<Property Name="Y" Value="451"/>
<Property Name="Width" Value="178"/>
<Property Name="Height" Value="30"/>
<Property Name="BelongLayerID" Value="2"/>
<Property Name="IndexOfLayer" Value="17"/>
<Property Name="BelongGroupID" Value="2"/>
<Property Name="IsVisible" Value="1"/>
<Property Name="CanClick" Value="1"/>
<Property Name="CanDragSize" Value="0"/>
<Property Name="TimerInterval" Value="0"/>
<Property Name="Data" Value=""/>
<Property Name="Description" Value=""/>
<Property Name="CoordParentID" Value="0"/>
<Property Name="CoordParentPos" Value="0"/>
<Property Name="CoordSelfPos" Value="0"/>
<Property Name="CoordRelaX" Value="624"/>
<Property Name="CoordRelaY" Value="451"/>
<Property Name="SizeCalcMode" Value="2"/>
<Property Name="SizeParentID" Value="107"/>
<Property Name="WidthCalcMode" Value="1"/>
<Property Name="SizeRelaWidth" Value="10000"/>
<Property Name="HeightCalcMode" Value="1"/>
<Property Name="SizeRelaHeight" Value="10000"/>
</PropertyList>
<OptionList>
<Option Name="tag" Value="0"/>
<Option Name="tag1" Value="0"/>
<Option Name="tag2" Value="0"/>
<Option Name="tag3" Value="0"/>
<Option Name="vx" Value="0"/>
<Option Name="vy" Value="0"/>
<Option Name="vw" Value="0"/>
<Option Name="vh" Value="0"/>
</OptionList>
<EventList>
<Event Name="MouseDown" Value=""/>
<Event Name="MouseUp" Value=""/>
<Event Name="MouseMove" Value=""/>
<Event Name="OnTimer" Value=""/>
</EventList>
</Spirit>
<Spirit>
<PropertyList>
<Property Name="SpiritType" Value="0"/>
<Property Name="ID" Value="323"/>
<Property Name="Name" Value="登录中头像框"/>
<Property Name="ImgResID" Value="106"/>
<Property Name="X" Value="479"/>
<Property Name="Y" Value="375"/>
<Property Name="Width" Value="120"/>
<Property Name="Height" Value="120"/>
<Property Name="BelongLayerID" Value="2"/>
<Property Name="IndexOfLayer" Value="18"/>
<Property Name="BelongGroupID" Value="2"/>
<Property Name="IsVisible" Value="0"/>
<Property Name="CanClick" Value="1"/>
<Property Name="CanDragSize" Value="0"/>
<Property Name="TimerInterval" Value="0"/>
<Property Name="Data" Value=""/>
<Property Name="Description" Value=""/>
<Property Name="CoordParentID" Value="0"/>
<Property Name="CoordParentPos" Value="0"/>
<Property Name="CoordSelfPos" Value="0"/>
<Property Name="CoordRelaX" Value="479"/>
<Property Name="CoordRelaY" Value="375"/>
<Property Name="SizeCalcMode" Value="0"/>
<Property Name="SizeParentID" Value="0"/>
<Property Name="WidthCalcMode" Value="0"/>
<Property Name="SizeRelaWidth" Value="120"/>
<Property Name="HeightCalcMode" Value="0"/>
<Property Name="SizeRelaHeight" Value="120"/>
</PropertyList>
<OptionList>
<Option Name="tag" Value="0"/>
<Option Name="tag1" Value="0"/>
<Option Name="tag2" Value="0"/>
<Option Name="tag3" Value="0"/>
<Option Name="vx" Value="0"/>
<Option Name="vy" Value="0"/>
<Option Name="vw" Value="0"/>
<Option Name="vh" Value="0"/>
</OptionList>
<EventList>
<Event Name="MouseDown" Value=""/>
<Event Name="MouseUp" Value=""/>
<Event Name="MouseMove" Value=""/>
<Event Name="OnTimer" Value=""/>
</EventList>
</Spirit>
</SpiritList>
</Layer>
@@ -0,0 +1,18 @@
{
"spirit_types": {
"0": { "component": "cc.Sprite", "note": "普通精灵" },
"1": { "component": "cc.Label", "note": "文本" },
"3": { "component": "cc.ProgressBar", "note": "进度条" },
"4": { "component": "unknown", "note": "PoC 阶段 1 逆向 gameabc.min.js" },
"5": { "component": "unknown", "note": "PoC 阶段 1 逆向 gameabc.min.js" }
},
"coord_self_pos": {
"_note": "原 X, Y 是精灵左上角绝对屏幕坐标 (基于 1280x720);Cocos 用中心锚点",
"cocos_lpos_x": "original_X + original_W/2 - 640",
"cocos_lpos_y": "360 - (original_Y + original_H/2)"
},
"anchor_point": {
"cocos_default": { "x": 0.5, "y": 0.5 },
"original_default": "左上角 (0, 0)"
}
}
+35
View File
@@ -7,6 +7,10 @@
"": {
"name": "youle-monorepo-tools",
"version": "0.1.0",
"dependencies": {
"@xmldom/xmldom": "^0.9.12",
"iconv-lite": "^0.7.3"
},
"devDependencies": {
"@types/node": "^26.0.1",
"@types/ws": "^8.18.1",
@@ -450,6 +454,15 @@
"@types/node": "*"
}
},
"node_modules/@xmldom/xmldom": {
"version": "0.9.12",
"resolved": "https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.9.12.tgz",
"integrity": "sha512-5AXjrcMClTryPe9LgZrygpB1lj7s0S9E0+W+AHaVKAVyHanafK86iPSvG5xHVSp/jC+VH1UXu0TAEmY279xH7A==",
"license": "MIT",
"engines": {
"node": ">=14.6"
}
},
"node_modules/esbuild": {
"version": "0.28.1",
"resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.28.1.tgz",
@@ -505,6 +518,22 @@
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
"node_modules/iconv-lite": {
"version": "0.7.3",
"resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.7.3.tgz",
"integrity": "sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==",
"license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
},
"engines": {
"node": ">=0.10.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/express"
}
},
"node_modules/pngjs": {
"version": "7.0.0",
"resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-7.0.0.tgz",
@@ -514,6 +543,12 @@
"node": ">=14.19.0"
}
},
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"license": "MIT"
},
"node_modules/tsx": {
"version": "4.22.4",
"resolved": "https://registry.npmmirror.com/tsx/-/tsx-4.22.4.tgz",
+4
View File
@@ -23,5 +23,9 @@
"tsx": "^4.22.4",
"typescript": "^6.0.3",
"ws": "^8.21.0"
},
"dependencies": {
"@xmldom/xmldom": "^0.9.12",
"iconv-lite": "^0.7.3"
}
}