diff --git a/idea.md b/idea.md
index 92c709f..9fb9b29 100644
--- a/idea.md
+++ b/idea.md
@@ -65,7 +65,7 @@ dam4.png ---- 存档 59
[] 每个怪物加一个怪物说明
[] 歌词展示系统
[] 小地图显示框,可以选择是否显示剩余怪物数量等
-[] 怪物死亡特效
+[x] 怪物死亡特效
[] 区域名称显示特效,3D 粒子特效
[] 单独的工具栏
[] 完全 ts 化
diff --git a/index.html b/index.html
index 6db8448..14803e7 100644
--- a/index.html
+++ b/index.html
@@ -24,30 +24,30 @@
diff --git a/package.json b/package.json
index 5435266..02ac136 100644
--- a/package.json
+++ b/package.json
@@ -22,7 +22,7 @@
"jszip": "^3.10.1",
"lodash-es": "^4.17.21",
"lz-string": "^1.5.0",
- "mutate-animate": "^1.2.3",
+ "mutate-animate": "^1.3.1",
"three": "^0.149.0",
"vue": "^3.3.4"
},
@@ -51,7 +51,7 @@
"form-data": "^4.0.0",
"fs-extra": "^10.1.0",
"less": "^4.1.3",
- "rollup": "^3.26.3",
+ "rollup": "^3.27.0",
"terser": "^5.19.2",
"ts-node": "^10.9.1",
"typescript": "^5.1.6",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index a2b0f22..a1481bc 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -27,8 +27,8 @@ dependencies:
specifier: ^1.5.0
version: 1.5.0
mutate-animate:
- specifier: ^1.2.3
- version: 1.2.3
+ specifier: ^1.3.1
+ version: 1.3.1
three:
specifier: ^0.149.0
version: 0.149.0
@@ -48,22 +48,22 @@ devDependencies:
version: 7.22.9(@babel/core@7.22.9)
'@rollup/plugin-babel':
specifier: ^6.0.3
- version: 6.0.3(@babel/core@7.22.9)(@types/babel__core@7.20.1)(rollup@3.26.3)
+ version: 6.0.3(@babel/core@7.22.9)(@types/babel__core@7.20.1)(rollup@3.27.0)
'@rollup/plugin-commonjs':
specifier: ^25.0.3
- version: 25.0.3(rollup@3.26.3)
+ version: 25.0.3(rollup@3.27.0)
'@rollup/plugin-node-resolve':
specifier: ^15.1.0
- version: 15.1.0(rollup@3.26.3)
+ version: 15.1.0(rollup@3.27.0)
'@rollup/plugin-replace':
specifier: ^5.0.2
- version: 5.0.2(rollup@3.26.3)
+ version: 5.0.2(rollup@3.27.0)
'@rollup/plugin-terser':
specifier: ^0.4.3
- version: 0.4.3(rollup@3.26.3)
+ version: 0.4.3(rollup@3.27.0)
'@rollup/plugin-typescript':
specifier: ^11.1.2
- version: 11.1.2(rollup@3.26.3)(typescript@5.1.6)
+ version: 11.1.2(rollup@3.27.0)(typescript@5.1.6)
'@types/babel__core':
specifier: ^7.20.1
version: 7.20.1
@@ -110,8 +110,8 @@ devDependencies:
specifier: ^4.1.3
version: 4.1.3
rollup:
- specifier: ^3.26.3
- version: 3.26.3
+ specifier: ^3.27.0
+ version: 3.27.0
terser:
specifier: ^5.19.2
version: 5.19.2
@@ -123,7 +123,7 @@ devDependencies:
version: 5.1.6
unplugin-vue-components:
specifier: ^0.22.12
- version: 0.22.12(rollup@3.26.3)(vue@3.3.4)
+ version: 0.22.12(rollup@3.27.0)(vue@3.3.4)
vite:
specifier: ^4.4.7
version: 4.4.7(@types/node@18.17.1)(less@4.1.3)(terser@5.19.2)
@@ -256,7 +256,7 @@ packages:
'@babel/compat-data': 7.22.9
'@babel/core': 7.22.9
'@babel/helper-validator-option': 7.22.5
- browserslist: 4.21.9
+ browserslist: 4.21.10
lru-cache: 5.1.1
semver: 6.3.1
dev: true
@@ -1711,7 +1711,7 @@ packages:
dev: true
optional: true
- /@rollup/plugin-babel@6.0.3(@babel/core@7.22.9)(@types/babel__core@7.20.1)(rollup@3.26.3):
+ /@rollup/plugin-babel@6.0.3(@babel/core@7.22.9)(@types/babel__core@7.20.1)(rollup@3.27.0):
resolution: {integrity: sha512-fKImZKppa1A/gX73eg4JGo+8kQr/q1HBQaCGKECZ0v4YBBv3lFqi14+7xyApECzvkLTHCifx+7ntcrvtBIRcpg==}
engines: {node: '>=14.0.0'}
peerDependencies:
@@ -1726,12 +1726,12 @@ packages:
dependencies:
'@babel/core': 7.22.9
'@babel/helper-module-imports': 7.22.5
- '@rollup/pluginutils': 5.0.2(rollup@3.26.3)
+ '@rollup/pluginutils': 5.0.2(rollup@3.27.0)
'@types/babel__core': 7.20.1
- rollup: 3.26.3
+ rollup: 3.27.0
dev: true
- /@rollup/plugin-commonjs@25.0.3(rollup@3.26.3):
+ /@rollup/plugin-commonjs@25.0.3(rollup@3.27.0):
resolution: {integrity: sha512-uBdtWr/H3BVcgm97MUdq2oJmqBR23ny1hOrWe2PKo9FTbjsGqg32jfasJUKYAI5ouqacjRnj65mBB/S79F+GQA==}
engines: {node: '>=14.0.0'}
peerDependencies:
@@ -1740,16 +1740,16 @@ packages:
rollup:
optional: true
dependencies:
- '@rollup/pluginutils': 5.0.2(rollup@3.26.3)
+ '@rollup/pluginutils': 5.0.2(rollup@3.27.0)
commondir: 1.0.1
estree-walker: 2.0.2
glob: 8.1.0
is-reference: 1.2.1
magic-string: 0.27.0
- rollup: 3.26.3
+ rollup: 3.27.0
dev: true
- /@rollup/plugin-node-resolve@15.1.0(rollup@3.26.3):
+ /@rollup/plugin-node-resolve@15.1.0(rollup@3.27.0):
resolution: {integrity: sha512-xeZHCgsiZ9pzYVgAo9580eCGqwh/XCEUM9q6iQfGNocjgkufHAqC3exA+45URvhiYV8sBF9RlBai650eNs7AsA==}
engines: {node: '>=14.0.0'}
peerDependencies:
@@ -1758,16 +1758,16 @@ packages:
rollup:
optional: true
dependencies:
- '@rollup/pluginutils': 5.0.2(rollup@3.26.3)
+ '@rollup/pluginutils': 5.0.2(rollup@3.27.0)
'@types/resolve': 1.20.2
deepmerge: 4.3.1
is-builtin-module: 3.2.1
is-module: 1.0.0
resolve: 1.22.2
- rollup: 3.26.3
+ rollup: 3.27.0
dev: true
- /@rollup/plugin-replace@5.0.2(rollup@3.26.3):
+ /@rollup/plugin-replace@5.0.2(rollup@3.27.0):
resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==}
engines: {node: '>=14.0.0'}
peerDependencies:
@@ -1776,12 +1776,12 @@ packages:
rollup:
optional: true
dependencies:
- '@rollup/pluginutils': 5.0.2(rollup@3.26.3)
+ '@rollup/pluginutils': 5.0.2(rollup@3.27.0)
magic-string: 0.27.0
- rollup: 3.26.3
+ rollup: 3.27.0
dev: true
- /@rollup/plugin-terser@0.4.3(rollup@3.26.3):
+ /@rollup/plugin-terser@0.4.3(rollup@3.27.0):
resolution: {integrity: sha512-EF0oejTMtkyhrkwCdg0HJ0IpkcaVg1MMSf2olHb2Jp+1mnLM04OhjpJWGma4HobiDTF0WCyViWuvadyE9ch2XA==}
engines: {node: '>=14.0.0'}
peerDependencies:
@@ -1790,13 +1790,13 @@ packages:
rollup:
optional: true
dependencies:
- rollup: 3.26.3
+ rollup: 3.27.0
serialize-javascript: 6.0.1
smob: 1.4.0
terser: 5.19.2
dev: true
- /@rollup/plugin-typescript@11.1.2(rollup@3.26.3)(typescript@5.1.6):
+ /@rollup/plugin-typescript@11.1.2(rollup@3.27.0)(typescript@5.1.6):
resolution: {integrity: sha512-0ghSOCMcA7fl1JM+0gYRf+Q/HWyg+zg7/gDSc+fRLmlJWcW5K1I+CLRzaRhXf4Y3DRyPnnDo4M2ktw+a6JcDEg==}
engines: {node: '>=14.0.0'}
peerDependencies:
@@ -1809,13 +1809,13 @@ packages:
tslib:
optional: true
dependencies:
- '@rollup/pluginutils': 5.0.2(rollup@3.26.3)
+ '@rollup/pluginutils': 5.0.2(rollup@3.27.0)
resolve: 1.22.2
- rollup: 3.26.3
+ rollup: 3.27.0
typescript: 5.1.6
dev: true
- /@rollup/pluginutils@5.0.2(rollup@3.26.3):
+ /@rollup/pluginutils@5.0.2(rollup@3.27.0):
resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==}
engines: {node: '>=14.0.0'}
peerDependencies:
@@ -1827,7 +1827,7 @@ packages:
'@types/estree': 1.0.1
estree-walker: 2.0.2
picomatch: 2.3.1
- rollup: 3.26.3
+ rollup: 3.27.0
dev: true
/@simonwep/pickr@1.8.2:
@@ -1944,9 +1944,9 @@ packages:
dependencies:
'@babel/core': 7.22.9
'@babel/preset-env': 7.22.9(@babel/core@7.22.9)
- browserslist: 4.21.9
+ browserslist: 4.21.10
core-js: 3.32.0
- magic-string: 0.30.1
+ magic-string: 0.30.2
regenerator-runtime: 0.13.11
systemjs: 6.14.1
terser: 5.19.2
@@ -2047,7 +2047,7 @@ packages:
'@vue/reactivity-transform': 3.3.4
'@vue/shared': 3.3.4
estree-walker: 2.0.2
- magic-string: 0.30.1
+ magic-string: 0.30.2
postcss: 8.4.27
source-map-js: 1.0.2
@@ -2083,7 +2083,7 @@ packages:
'@vue/compiler-core': 3.3.4
'@vue/shared': 3.3.4
estree-walker: 2.0.2
- magic-string: 0.30.1
+ magic-string: 0.30.2
/@vue/reactivity@3.3.4:
resolution: {integrity: sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==}
@@ -2366,15 +2366,15 @@ packages:
fill-range: 7.0.1
dev: true
- /browserslist@4.21.9:
- resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==}
+ /browserslist@4.21.10:
+ resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
dependencies:
- caniuse-lite: 1.0.30001517
- electron-to-chromium: 1.4.475
+ caniuse-lite: 1.0.30001518
+ electron-to-chromium: 1.4.478
node-releases: 2.0.13
- update-browserslist-db: 1.0.11(browserslist@4.21.9)
+ update-browserslist-db: 1.0.11(browserslist@4.21.10)
dev: true
/buffer-alloc-unsafe@1.1.0:
@@ -2467,8 +2467,8 @@ packages:
engines: {node: '>=10'}
dev: true
- /caniuse-lite@1.0.30001517:
- resolution: {integrity: sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==}
+ /caniuse-lite@1.0.30001518:
+ resolution: {integrity: sha512-rup09/e3I0BKjncL+FesTayKtPrdwKhUufQFd3riFw1hHg8JmIFoInYfB102cFcY/pPgGmdyl/iy+jgiDi2vdA==}
dev: true
/chalk@2.4.2:
@@ -2648,7 +2648,7 @@ packages:
/core-js-compat@3.32.0:
resolution: {integrity: sha512-7a9a3D1k4UCVKnLhrgALyFcP7YCsLOQIxPd0dKjf/6GuPcgyiGP70ewWdCGrSK7evyhymi0qO4EqCmSJofDeYw==}
dependencies:
- browserslist: 4.21.9
+ browserslist: 4.21.10
dev: true
/core-js@3.32.0:
@@ -2780,8 +2780,8 @@ packages:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
dev: true
- /electron-to-chromium@1.4.475:
- resolution: {integrity: sha512-mTye5u5P98kSJO2n7zYALhpJDmoSQejIGya0iR01GpoRady8eK3bw7YHHnjA1Rfi4ZSLdpuzlAC7Zw+1Zu7Z6A==}
+ /electron-to-chromium@1.4.478:
+ resolution: {integrity: sha512-qjTA8djMXd+ruoODDFGnRCRBpID+AAfYWCyGtYTNhsuwxI19s8q19gbjKTwRS5z/LyVf5wICaIiPQGLekmbJbA==}
dev: true
/emoji-regex@8.0.0:
@@ -2897,8 +2897,8 @@ packages:
micromatch: 4.0.5
dev: true
- /fast-xml-parser@4.2.6:
- resolution: {integrity: sha512-Xo1qV++h/Y3Ng8dphjahnYe+rGHaaNdsYOBWL9Y9GCPKpNKilJtilvWkLcI9f9X2DoKTLsZsGYAls5+JL5jfLA==}
+ /fast-xml-parser@4.2.7:
+ resolution: {integrity: sha512-J8r6BriSLO1uj2miOk1NW0YVm8AGOOu3Si2HQp/cSmo6EA4m3fcwu2WKjJ4RK9wMLBtg69y1kS8baDiQBR41Ig==}
hasBin: true
dependencies:
strnum: 1.0.5
@@ -2998,7 +2998,7 @@ packages:
engines: {node: '>=14'}
dependencies:
cross-spawn: 7.0.3
- signal-exit: 4.0.2
+ signal-exit: 4.1.0
dev: true
/form-data@4.0.0:
@@ -3427,7 +3427,7 @@ packages:
resolution: {integrity: sha512-v+AgVwiK5DsGtT9ng+m4mClp6zDAmwrW8nZi6Gg15qzvBnRWWdfWA1TGaXyCDnWq5g5asofIgMVl3PjKxvk1ug==}
engines: {node: '>=6'}
dependencies:
- fast-xml-parser: 4.2.6
+ fast-xml-parser: 4.2.7
dev: true
/is-ttf@0.2.2:
@@ -3637,8 +3637,8 @@ packages:
'@jridgewell/sourcemap-codec': 1.4.15
dev: true
- /magic-string@0.30.1:
- resolution: {integrity: sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==}
+ /magic-string@0.30.2:
+ resolution: {integrity: sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug==}
engines: {node: '>=12'}
dependencies:
'@jridgewell/sourcemap-codec': 1.4.15
@@ -3860,8 +3860,8 @@ packages:
resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==}
dev: true
- /mutate-animate@1.2.3:
- resolution: {integrity: sha512-l2Ixv+/NZG0b8B5+ZctX+N/hZslPiSvN6WvzEbOIF0rXouX0br/Yg6/9uc5pQleYhYM2CUPouqrCaUu7Q8QxZg==}
+ /mutate-animate@1.3.1:
+ resolution: {integrity: sha512-3jWiE4+0e8H1LDsTNqLP229OJoRNtoxhXmh7wtmrE82Jb/T/IhpvcMOOi0jE2K7fIpZ9d6ySZqIjHXpLmrL4lg==}
dev: false
/nan@2.17.0:
@@ -4317,8 +4317,8 @@ packages:
glob: 7.2.3
dev: true
- /rollup@3.26.3:
- resolution: {integrity: sha512-7Tin0C8l86TkpcMtXvQu6saWH93nhG3dGQ1/+l5V2TDMceTxO7kDiK6GzbfLWNNxqJXm591PcEZUozZm51ogwQ==}
+ /rollup@3.27.0:
+ resolution: {integrity: sha512-aOltLCrYZ0FhJDm7fCqwTjIUEVjWjcydKBV/Zeid6Mn8BWgDCUBBWT5beM5ieForYNo/1ZHuGJdka26kvQ3Gzg==}
engines: {node: '>=14.18.0', npm: '>=8.0.0'}
hasBin: true
optionalDependencies:
@@ -4405,8 +4405,8 @@ packages:
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
dev: true
- /signal-exit@4.0.2:
- resolution: {integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==}
+ /signal-exit@4.1.0:
+ resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
engines: {node: '>=14'}
dev: true
@@ -4795,7 +4795,7 @@ packages:
engines: {node: '>= 10.0.0'}
dev: true
- /unplugin-vue-components@0.22.12(rollup@3.26.3)(vue@3.3.4):
+ /unplugin-vue-components@0.22.12(rollup@3.27.0)(vue@3.3.4):
resolution: {integrity: sha512-FxyzsuBvMCYPIk+8cgscGBQ345tvwVu+qY5IhE++eorkyvA4Z1TiD/HCiim+Kbqozl10i4K+z+NCa2WO2jexRA==}
engines: {node: '>=14'}
peerDependencies:
@@ -4806,7 +4806,7 @@ packages:
optional: true
dependencies:
'@antfu/utils': 0.7.5
- '@rollup/pluginutils': 5.0.2(rollup@3.26.3)
+ '@rollup/pluginutils': 5.0.2(rollup@3.27.0)
chokidar: 3.5.3
debug: 4.3.4
fast-glob: 3.3.1
@@ -4830,13 +4830,13 @@ packages:
webpack-virtual-modules: 0.5.0
dev: true
- /update-browserslist-db@1.0.11(browserslist@4.21.9):
+ /update-browserslist-db@1.0.11(browserslist@4.21.10):
resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==}
hasBin: true
peerDependencies:
browserslist: '>= 4.21.0'
dependencies:
- browserslist: 4.21.9
+ browserslist: 4.21.10
escalade: 3.1.1
picocolors: 1.0.0
dev: true
@@ -4954,7 +4954,7 @@ packages:
esbuild: 0.18.17
less: 4.1.3
postcss: 8.4.27
- rollup: 3.26.3
+ rollup: 3.27.0
terser: 5.19.2
optionalDependencies:
fsevents: 2.3.2
diff --git a/public/index.html b/public/index.html
index 7bbdc23..f978bb5 100644
--- a/public/index.html
+++ b/public/index.html
@@ -1,12 +1,14 @@
+
-
+
HTML5魔塔
-
+
@@ -15,188 +17,190 @@
-
-
-
-
![]()
-
-
-
-
-
请稍候...
-
![]()
-
-
-
-
资源即将开始加载
-
HTML5魔塔游戏平台,享受更多魔塔游戏:
https://h5mota.com/
-
-
![]()
-
-
-
-
-
-
-
![]()
-
-
-
-
![]()
-
-
-
-
![]()
-
-
-
-
![]()
-
-
-
-
![]()
-
-
-
-
![]()
-
-
-
-
![]()
-
-
-
-
![]()
-
-
-
-
![]()
-
-
-
-
![]()
-
-
-
-
![]()
-
-
-
-
![]()
-
-
-
-
![]()
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
![]()
-
![]()
-
![]()
-
![]()
-
![]()
-
![]()
-
![]()
-
![]()
-
![]()
-
![]()
-
![]()
-
![]()
-
![]()
-
![]()
-
![]()
-
![]()
-
+
+
+
+
请稍候...
+
![]()
+
+
+
+
资源即将开始加载
+
HTML5魔塔游戏平台,享受更多魔塔游戏:
https://h5mota.com/
+
+
![]()
+
+
+
+
+
+
+
![]()
+
+
+
+
![]()
+
+
+
+
![]()
+
+
+
+
![]()
+
+
+
+
![]()
+
+
+
+
![]()
+
+
+
+
![]()
+
+
+
+
![]()
+
+
+
+
![]()
+
+
+
+
![]()
+
+
+
+
![]()
+
+
+
+
![]()
+
+
+
+
![]()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public/libs/control.js b/public/libs/control.js
index 9fded0a..8ae6c91 100644
--- a/public/libs/control.js
+++ b/public/libs/control.js
@@ -481,7 +481,6 @@ control.prototype.showStartAnimate = function (noAnimate, callback) {
};
control.prototype._showStartAnimate_resetDom = function () {
- if (main.mode === 'play') core.plugin.loaded.value = true;
core.status.played = false;
core.dom.gameGroup.style.display = 'none';
core.clearStatus();
@@ -2318,8 +2317,8 @@ control.prototype._doSL_load = function (id, callback) {
1
)[0];
if (!main.replayChecking) {
- core.plugin.startOpened.value = false;
- core.plugin.loaded.value = false;
+ ancTe.plugin.ui.startOpened.value = false;
+ ancTe.plugin.ui.loaded.value = false;
}
if (core.isPlaying() && !core.status.gameOver) {
core.control.autosave(0);
@@ -2336,8 +2335,8 @@ control.prototype._doSL_load = function (id, callback) {
null,
function (data) {
if (!main.replayChecking && data) {
- core.plugin.startOpened.value = false;
- core.plugin.loaded.value = false;
+ ancTe.plugin.ui.startOpened.value = false;
+ ancTe.plugin.ui.loaded.value = false;
}
if (id == 'autoSave' && data != null) {
core.saves.autosave.data = data;
@@ -3017,7 +3016,7 @@ control.prototype.removeSwitch = function (x, y, floorId, name) {
control.prototype.lockControl = function () {
core.status.lockControl = true;
if (!main.replayChecking) {
- core.plugin.showFixed.value = false;
+ ancTe.plugin.fixed.showFixed.value = false;
}
};
diff --git a/public/libs/core.js b/public/libs/core.js
index fddd4de..d47913d 100644
--- a/public/libs/core.js
+++ b/public/libs/core.js
@@ -324,11 +324,6 @@ core.prototype._loadPlugin = async function () {
const mainData = data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d.main;
core.plugin = {};
// 加载插件
- if (main.mode === 'play') {
- main.forward();
- core.resetSettings();
- core.plugin.showMarkedEnemy.value = true;
- }
if (main.pluginUseCompress) {
await main.loadScript(`project/plugin.min.js?v=${main.version}`);
} else {
diff --git a/public/libs/events.js b/public/libs/events.js
index b60c31d..a9d86e7 100644
--- a/public/libs/events.js
+++ b/public/libs/events.js
@@ -26,8 +26,8 @@ events.prototype.startGame = function (hard, seed, route, callback) {
hard = hard || '';
core.dom.gameGroup.style.display = 'block';
if (!main.replayChecking) {
- core.plugin.startOpened.value = false;
- core.plugin.loaded.value = false;
+ ancTe.plugin.ui.startOpened.value = false;
+ ancTe.plugin.ui.loaded.value = false;
}
if (main.mode != 'play') return;
diff --git a/public/libs/maps.js b/public/libs/maps.js
index 7663b14..934412b 100644
--- a/public/libs/maps.js
+++ b/public/libs/maps.js
@@ -3108,7 +3108,7 @@ maps.prototype.removeBlock = function (x, y, floorId) {
const block = blocks[i];
this.removeBlockByIndex(i, floorId);
this._removeBlockFromMap(floorId, block);
- if (!main.replayChecking) core.updateShadow(true);
+ if (!main.replayChecking) ancTe.plugin.gameShadow.updateShadow(true);
return true;
}
return false;
@@ -3271,7 +3271,7 @@ maps.prototype.setBlock = function (number, x, y, floorId, noredraw) {
}
}
}
- if (!main.replayChecking) core.updateShadow(true);
+ if (!main.replayChecking) ancTe.plugin.gameShadow.updateShadow(true);
};
maps.prototype.animateSetBlock = function (
diff --git a/public/libs/ui.js b/public/libs/ui.js
index f260c67..a550b30 100644
--- a/public/libs/ui.js
+++ b/public/libs/ui.js
@@ -4228,5 +4228,6 @@ ui.prototype.deleteAllCanvas = function () {
this.deleteCanvas(function () {
return true;
});
- if (main.mode === 'play' && !main.replayChecking) core.initShadowCanvas();
+ if (main.mode === 'play' && !main.replayChecking && ancTe.plugin.shadow)
+ ancTe.plugin.shadow.initShadowCanvas();
};
diff --git a/public/main.js b/public/main.js
index b8f53ff..a2c9547 100644
--- a/public/main.js
+++ b/public/main.js
@@ -404,6 +404,10 @@ main.prototype.loadAsync = async function (mode, callback) {
});
await core.init(coreData, callback);
if (main.mode === 'play') main.loading.emit('coreInit');
+ if (main.mode === 'play') {
+ ancTe.plugin.setting.resetSettings();
+ ancTe.plugin.mark.showMarkedEnemy.value = true;
+ }
core.resize();
diff --git a/public/project/functions.js b/public/project/functions.js
index 7267386..0de92d5 100644
--- a/public/project/functions.js
+++ b/public/project/functions.js
@@ -50,8 +50,8 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
core.hideStatusBar(core.hasFlag('showToolbox'));
else core.showStatusBar();
if (main.mode === 'play' && !main.replayChecking) {
- core.splitArea();
- core.resetFlagSettings();
+ ancTe.plugin.fly.splitArea();
+ ancTe.plugin.setting.resetFlagSettings();
} else {
flags.autoSkill ??= true;
flags.itemDetail ??= true;
@@ -146,8 +146,8 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
core.drawMap(floorId);
if (!main.replayChecking) {
- core.updateShadow();
- core.setCanvasFilterByFloorId(floorId);
+ ancTe.plugin.gameShadow.updateShadow();
+ ancTe.plugin.gameCanvas.setCanvasFilterByFloorId(floorId);
}
// 切换楼层BGM
@@ -207,7 +207,8 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
core.visitFloor(floorId);
}
}
- if (!flags.debug && !main.replayChecking) core.checkVisitedFloor();
+ if (!flags.debug && !main.replayChecking)
+ ancTe.plugin.completion.checkVisitedFloor();
},
flyTo: function (toId, callback) {
// 楼层传送器的使用,从当前楼层飞往toId
@@ -1013,15 +1014,15 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
case 67: // C:怪物临界
if (core.getBlockCls(mx, my)?.startsWith('enemy')) {
core.plugin.fixedDetailPanel = 'critical';
- core.plugin.showFixed.value = false;
- core.plugin.fixedDetailOpened.value = true;
+ ancTe.plugin.fixed.showFixed.value = false;
+ ancTe.plugin.ui.fixedDetailOpened.value = true;
}
break;
case 69: // E:怪物属性
if (core.getBlockCls(mx, my)?.startsWith('enemy')) {
core.plugin.fixedDetailPanel = 'special';
- core.plugin.showFixed.value = false;
- core.plugin.fixedDetailOpened.value = true;
+ ancTe.plugin.fixed.showFixed.value = false;
+ ancTe.plugin.ui.fixedDetailOpened.value = true;
}
break;
case 77: // M:快速标记
@@ -1029,12 +1030,18 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
const block = blocks[`${mx},${my}`];
if (block.event.cls.startsWith('enemy')) {
const name = core.material.enemys[block.event.id].name;
- if (core.hasMarkedEnemy(block.event.id)) {
- core.tip('success', `已取消标记${name}!`);
- core.unmarkEnemy(block.event.id);
+ if (ancTe.plugin.mark.hasMarkedEnemy(block.event.id)) {
+ ancTe.plugin.utils.tip(
+ 'success',
+ `已取消标记${name}!`
+ );
+ ancTe.plugin.mark.unmarkEnemy(block.event.id);
} else {
- core.tip('success', `已标记${name}!`);
- core.markEnemy(block.event.id);
+ ancTe.plugin.utils.tip(
+ 'success',
+ `已标记${name}!`
+ );
+ ancTe.plugin.mark.checkMarkedEnemy(block.event.id);
}
}
break;
@@ -1050,7 +1057,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
case 49: // 1: 断灭之刃
if (!flags.bladeOn) break;
if (flags.autoSkill) {
- core.tip('error', '已开启自动切换技能!');
+ ancTe.plugin.utils.tip('error', '已开启自动切换技能!');
break;
}
core.status.route.push('key:49'); // 将按键记在录像中
@@ -1077,7 +1084,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
case 51: // 3: 铸剑为盾
if (!flags.shieldOn) break;
if (flags.autoSkill) {
- core.tip('error', '已开启自动切换技能!');
+ ancTe.plugin.utils.tip('error', '已开启自动切换技能!');
break;
}
core.status.route.push('key:51'); // 将按键记在录像中
@@ -1184,7 +1191,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
if (callback) callback();
if (flags.onChase) {
- core.startChase(flags.chaseIndex);
+ ancTe.plugin.fly.startChase(flags.chaseIndex);
if (flags.chaseIndex === 1) {
core.playBgm('escape.mp3', 43.5);
}
@@ -1244,9 +1251,9 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
core.plugin.skillTree.getSkillLevel(11) > 0 &&
(core.status.hero.special?.num ?? []).length > 0
) {
- core.plugin.showStudiedSkill.value = true;
+ ancTe.plugin.ui.showStudiedSkill.value = true;
} else {
- core.plugin.showStudiedSkill.value = false;
+ ancTe.plugin.ui.showStudiedSkill.value = false;
}
},
moveOneStep: function (callback) {
diff --git a/public/project/items.js b/public/project/items.js
index 05574cf..c68eb87 100644
--- a/public/project/items.js
+++ b/public/project/items.js
@@ -1161,21 +1161,21 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a =
"name": "bgm查看器",
"canUseItemEffect": "true",
"text": "可以查看游戏内你已经听过的bgm,歌曲名格式:歌手——歌曲名。未完工。",
- "useItemEffect": "core.tip('warn', '当前道具还未制作完成!');\n// core.plugin.bgmOpened.value = true;"
+ "useItemEffect": "ancTe.plugin.utils.tip('warn', '当前道具还未制作完成!');\n// ancTe.plugin.ui.bgmOpened.value = true;"
},
"I559": {
"cls": "constants",
"name": "系统设置",
"canUseItemEffect": "true",
"text": "内含所有系统设置项",
- "useItemEffect": "if (!core.isReplaying()) core.plugin.settingsOpened.value = true;"
+ "useItemEffect": "if (!core.isReplaying()) ancTe.plugin.ui.settingsOpened.value = true;"
},
"I560": {
"cls": "constants",
"name": "百科全书",
"canUseItemEffect": "true",
"text": "一个包含游戏中所有功能详细说明的百科全书,可以查看游戏中所有的功能",
- "useItemEffect": "if (!core.isReplaying()) core.plugin.descOpened.value = true;"
+ "useItemEffect": "if (!core.isReplaying()) ancTe.plugin.ui.descOpened.value = true;"
},
"I565": {
"cls": "constants",
@@ -1233,7 +1233,7 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a =
"cls": "constants",
"name": "成就",
"canUseItemEffect": "true",
- "useItemEffect": "core.plugin.achievementOpened.value = true;",
+ "useItemEffect": "ancTe.plugin.ui.achievementOpened.value = true;",
"text": "可以查看成就"
}
}
\ No newline at end of file
diff --git a/src/components/colomn.vue b/src/components/colomn.vue
index cd3db25..3718aef 100644
--- a/src/components/colomn.vue
+++ b/src/components/colomn.vue
@@ -68,7 +68,7 @@ onMounted(async () => {
resize();
await sleep(50);
- if (core.plugin.transition.value) await sleep(600);
+ if (ancTe.plugin.ui.transition.value) await sleep(600);
document.addEventListener('keyup', key);
});
onUpdated(resize);
diff --git a/src/core/index.ts b/src/core/index.ts
index 841d710..5e1ea8b 100644
--- a/src/core/index.ts
+++ b/src/core/index.ts
@@ -1,20 +1,43 @@
import { BgmController } from './audio/bgm';
import { SoundController } from './audio/sound';
-import { readyAllResource } from './loader/load';
+import { loading, readyAllResource } from './loader/load';
import { ResourceStore, ResourceType } from './loader/resource';
+import { resolvePlugin } from './plugin';
-declare global {
- interface AncTe {
- sound: SoundController;
- /** 游戏资源 */
- resource: ResourceStore
>;
- zipResource: ResourceStore<'zip'>;
- bgm: BgmController;
- }
- interface Window {
- ancTe: AncTe;
- }
- const ancTe: AncTe;
+interface AncTePlugin {
+ pop: ReturnType;
+ ui: ReturnType;
+ use: ReturnType;
+ animate: ReturnType;
+ utils: ReturnType;
+ status: ReturnType;
+ mark: ReturnType;
+ setting: ReturnType;
+ chapter: ReturnType;
+ fly: ReturnType;
+ chase: ReturnType;
+ fixed: ReturnType;
+ webglUtils: ReturnType;
+ shadow: ReturnType;
+ gameShadow: ReturnType<
+ typeof import('../plugin/shadow/gameShadow').default
+ >;
+ achievement: ReturnType;
+ completion: ReturnType;
+ path: ReturnType;
+ gameCanvas: ReturnType;
+ noise: ReturnType;
+ smooth: ReturnType;
+ frag: ReturnType;
+}
+
+export interface AncTe {
+ sound: SoundController;
+ /** 游戏资源 */
+ resource: ResourceStore>;
+ zipResource: ResourceStore<'zip'>;
+ bgm: BgmController;
+ plugin: AncTePlugin;
}
function ready() {
@@ -22,9 +45,12 @@ function ready() {
bgm: new BgmController(),
resource: new ResourceStore(),
zipResource: new ResourceStore(),
- sound: new SoundController()
+ sound: new SoundController(),
+ // @ts-ignore
+ plugin: {}
};
readyAllResource();
+ loading.once('coreInit', resolvePlugin);
}
ready();
diff --git a/src/core/loader/load.ts b/src/core/loader/load.ts
index 728679f..a96614e 100644
--- a/src/core/loader/load.ts
+++ b/src/core/loader/load.ts
@@ -1,5 +1,4 @@
import resource from '../../data/resource.json';
-import { has } from '../../plugin/utils';
import { EmitableEvent, EventEmitter } from '../common/eventEmitter';
import { Resource, getTypeByResource } from './resource';
@@ -118,7 +117,7 @@ export const loading = new GameLoading();
declare global {
interface Main {
- loading: EventEmitter;
+ loading: GameLoading;
}
}
main.loading = loading;
diff --git a/src/core/plugin.ts b/src/core/plugin.ts
new file mode 100644
index 0000000..f5434f0
--- /dev/null
+++ b/src/core/plugin.ts
@@ -0,0 +1,62 @@
+import pop from '../plugin/pop';
+import ui from '../plugin/uiController';
+import use from '../plugin/use';
+import animate from '../plugin/animateController';
+import utils from '../plugin/utils';
+import status from '../plugin/ui/statusBar';
+import mark from '../plugin/mark';
+import setting from '../plugin/settings';
+import chapter from '../plugin/ui/chapter';
+import fly from '../plugin/ui/fly';
+import chase from '../plugin/chase/chase';
+import fixed from '../plugin/ui/fixed';
+import webglUtils from '../plugin/webgl/utils';
+import shadow from '../plugin/shadow/shadow';
+import gameShadow from '../plugin/shadow/gameShadow';
+import achievement from '../plugin/ui/achievement';
+import completion, { floors } from '../plugin/completion';
+import path from '../plugin/fx/path';
+import gameCanvas from '../plugin/fx/gameCanvas';
+import noise from '../plugin/fx/noise';
+import smooth from '../plugin/fx/smoothView';
+import frag from '../plugin/fx/frag';
+import { AncTe } from '.';
+
+export function resolvePlugin() {
+ const toForward: [keyof AncTe['plugin'], any][] = [
+ ['pop', pop()],
+ ['ui', ui()],
+ ['use', use()],
+ ['animate', animate()],
+ ['utils', utils()],
+ ['status', status()],
+ ['mark', mark()],
+ ['setting', setting()],
+ ['chapter', chapter()],
+ ['fly', fly()],
+ ['chase', chase()],
+ ['fixed', fixed()],
+ ['webglUtils', webglUtils()],
+ ['shadow', shadow()],
+ ['gameShadow', gameShadow()],
+ ['achievement', achievement()],
+ ['completion', completion()],
+ ['path', path()],
+ ['gameCanvas', gameCanvas()],
+ ['noise', noise()],
+ ['smooth', smooth()],
+ ['frag', frag()]
+ ];
+
+ for (const [key, obj] of toForward) {
+ ancTe.plugin[key] = obj;
+ }
+
+ // 完成度相关
+ Object.values(floors).forEach((v, i) => {
+ const from = core.floorIds.indexOf(v[0]);
+ const to = core.floorIds.indexOf(v[1]);
+ const all = core.floorIds.slice(from, to + 1);
+ floors[i + 1] = all;
+ });
+}
diff --git a/src/data/achievement.json b/src/data/achievement.json
index 6966365..f3a22d1 100644
--- a/src/data/achievement.json
+++ b/src/data/achievement.json
@@ -37,7 +37,7 @@
"text": [
"第一章完成度达到100%"
],
- "progress": "${core.getChapterCompletion(1)} / 100",
+ "progress": "${ancTe.plugin.completion.getChapterCompletion(1)} / 100",
"percent": true,
"point": 50
},
@@ -55,7 +55,7 @@
"text": [
"第二章完成度达到100%"
],
- "progress": "${core.getChapterCompletion(2)} / 100",
+ "progress": "${ancTe.plugin.completion.getChapterCompletion(2)} / 100",
"percent": true,
"point": 50
},
diff --git a/src/initPlugin.ts b/src/initPlugin.ts
deleted file mode 100644
index ff218a1..0000000
--- a/src/initPlugin.ts
+++ /dev/null
@@ -1,78 +0,0 @@
-import pop from './plugin/pop';
-import ui from './plugin/uiController';
-import use from './plugin/use';
-import animate from './plugin/animateController';
-import utils from './plugin/utils';
-import status from './plugin/ui/statusBar';
-import mark from './plugin/mark';
-import setting from './plugin/settings';
-import chapter from './plugin/ui/chapter';
-import fly from './plugin/ui/fly';
-import chase from './plugin/chase/chase';
-import fixed from './plugin/ui/fixed';
-import webglUtils from './plugin/webgl/utils';
-import shadow from './plugin/shadow/shadow';
-import gameShadow from './plugin/shadow/gameShadow';
-import achievement from './plugin/ui/achievement';
-import completion, { floors } from './plugin/completion';
-import path from './plugin/fx/path';
-import gameCanvas from './plugin/fx/gameCanvas';
-import noise from './plugin/fx/noise';
-import smooth from './plugin/fx/smoothView';
-import frag from './plugin/fx/frag';
-
-function forward() {
- const toForward: any[] = [
- pop(),
- ui(),
- use(),
- animate(),
- utils(),
- status(),
- mark(),
- setting(),
- chapter(),
- fly(),
- chase(),
- fixed(),
- webglUtils(),
- shadow(),
- gameShadow(),
- achievement(),
- completion(),
- path(),
- gameCanvas(),
- noise(),
- smooth(),
- frag()
- ];
-
- // 初始化所有插件,并转发到core上
- for (const data of toForward) {
- for (const name in data) {
- const d = data[name as keyof typeof data];
- if (!(name in core.plugin)) {
- // @ts-ignore
- core.plugin[name as keyof PluginDeclaration] = d;
- }
- if (!(d instanceof Function)) continue;
- if (name in core) continue;
- if (name.startsWith('_')) continue;
- // @ts-ignore
- core[name as ForwardKeys] = d;
- }
- }
-
- console.log('插件转发完成!');
-
- Object.values(floors).forEach((v, i) => {
- const from = core.floorIds.indexOf(v[0]);
- const to = core.floorIds.indexOf(v[1]);
- const all = core.floorIds.slice(from, to + 1);
- floors[i + 1] = all;
- });
-}
-
-main.forward = forward;
-main.init('play');
-main.listen();
diff --git a/src/main.ts b/src/main.ts
index 6a0103e..e58bedd 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -3,8 +3,10 @@ import App from './App.vue';
import App2 from './App2.vue';
import './styles.less';
import 'ant-design-vue/dist/antd.dark.css';
-import './initPlugin';
import './core/index';
createApp(App).mount('#root');
createApp(App2).mount('#root2');
+
+main.init('play');
+main.listen();
diff --git a/src/plugin/game/enemy/battle.ts b/src/plugin/game/enemy/battle.ts
index fc97243..45d4025 100644
--- a/src/plugin/game/enemy/battle.ts
+++ b/src/plugin/game/enemy/battle.ts
@@ -191,7 +191,7 @@ core.events.afterBattle = function (
canvas.width = 32;
canvas.height = 32;
core.drawIcon(canvas, enemy.id, 0, 0, 32, 32, frame);
- const manager = core.applyFragWith(canvas);
+ const manager = ancTe.plugin.frag.applyFragWith(canvas);
const frag = manager.canvas;
frag.style.imageRendering = 'pixelated';
frag.style.width = `${frag.width * core.domStyle.scale}px`;
diff --git a/src/plugin/game/enemy/checkblock.ts b/src/plugin/game/enemy/checkblock.ts
index ad59514..2f552e7 100644
--- a/src/plugin/game/enemy/checkblock.ts
+++ b/src/plugin/game/enemy/checkblock.ts
@@ -10,7 +10,7 @@ control.prototype.checkBlock = function (forceMockery: boolean = false) {
const damage = info?.damage;
if (damage) {
if (!main.replayChecking) {
- core.addPop(
+ ancTe.plugin.pop.addPop(
(x - core.bigmap.offsetX / 32) * 32 + 12,
(y - core.bigmap.offsetY / 32) * 32 + 20,
(-damage).toString()
diff --git a/src/plugin/game/removeMap.js b/src/plugin/game/removeMap.js
index 83af608..373e153 100644
--- a/src/plugin/game/removeMap.js
+++ b/src/plugin/game/removeMap.js
@@ -36,7 +36,7 @@ export function removeMaps(fromId, toId, force) {
deleted = true;
}
if (deleted && !main.replayChecking) {
- core.splitArea();
+ ancTe.plugin.fly.splitArea();
}
}
diff --git a/src/plugin/game/skillTree.js b/src/plugin/game/skillTree.js
index 5f73b50..36dc1d7 100644
--- a/src/plugin/game/skillTree.js
+++ b/src/plugin/game/skillTree.js
@@ -227,7 +227,7 @@ export function getSkillConsume(skill) {
export function openTree() {
if (main.replayChecking) return;
- core.plugin.skillTreeOpened.value = true;
+ ancTe.plugin.ui.skillTreeOpened.value = true;
}
/**
diff --git a/src/plugin/game/study.ts b/src/plugin/game/study.ts
index 75f7e22..fd59ed3 100644
--- a/src/plugin/game/study.ts
+++ b/src/plugin/game/study.ts
@@ -27,7 +27,7 @@ export function studySkill(enemy: any, number: number) {
if (special instanceof Function) special = special(enemy);
if (!canStudySkill(number)) {
if (!main.replayChecking) {
- core.tip('error', `无法学习${special}`);
+ ancTe.plugin.utils.tip('error', `无法学习${special}`);
}
return;
}
diff --git a/src/plugin/game/towerBoss.js b/src/plugin/game/towerBoss.js
index c91f4d0..b88da59 100644
--- a/src/plugin/game/towerBoss.js
+++ b/src/plugin/game/towerBoss.js
@@ -496,7 +496,11 @@ function intelligentArrow(fromSelf) {
damaged[loc + direction] = true;
core.drawHeroAnimate('hand');
core.status.hero.hp -= 1000;
- core.addPop(x * 32 + 16, y * 32 + 16, -1000);
+ ancTe.plugin.pop.addPop(
+ x * 32 + 16,
+ y * 32 + 16,
+ -1000
+ );
core.updateStatusBar();
if (core.status.hero.hp < 0) {
clearInterval(skill1);
@@ -511,7 +515,11 @@ function intelligentArrow(fromSelf) {
damaged[loc + direction] = true;
core.drawHeroAnimate('hand');
core.status.hero.hp -= 1000;
- core.addPop(x * 32 + 16, y * 32 + 16, -1000);
+ ancTe.plugin.pop.addPop(
+ x * 32 + 16,
+ y * 32 + 16,
+ -1000
+ );
core.updateStatusBar();
if (core.status.hero.hp < 0) {
clearInterval(skill1);
@@ -637,7 +645,7 @@ function icyMomentem() {
if (x == locs[index][0] && y == locs[index][1]) {
core.drawHeroAnimate('hand');
core.status.hero.hp -= 5000;
- core.addPop(x * 32 + 16, y * 32 + 16, -5000);
+ ancTe.plugin.pop.addPop(x * 32 + 16, y * 32 + 16, -5000);
core.updateStatusBar();
if (core.status.hero.hp < 0) {
core.status.hero.hp = 0;
@@ -812,7 +820,7 @@ function getThunderDamage(x, y, power) {
hy = core.status.hero.loc.y;
if (Math.abs(hx - x) <= 1 && Math.abs(hy - y) <= 1) {
core.status.hero.hp -= 3000 * power;
- core.addPop(x * 32 + 16, y * 32 + 16, -3000 * power);
+ ancTe.plugin.pop.addPop(x * 32 + 16, y * 32 + 16, -3000 * power);
core.updateStatusBar();
if (core.status.hero.hp < 0) {
core.status.hero.hp = 0;
@@ -976,7 +984,11 @@ function ballThunder() {
) {
damaged[i] = true;
core.status.hero.hp -= 3000;
- core.addPop(x * 32 + 16, y * 32 + 16, -3000);
+ ancTe.plugin.pop.addPop(
+ x * 32 + 16,
+ y * 32 + 16,
+ -3000
+ );
core.updateStatusBar();
core.playSound('electron.mp3');
if (core.status.hero.hp < 0) {
@@ -1482,7 +1494,7 @@ function boomingAnimate() {
hy = core.status.hero.loc.y;
if (loc[0] == hx && loc[1] == hy) {
core.status.hero.hp -= 3000;
- core.addPop(x * 32 + 16, y * 32 + 16, -3000);
+ ancTe.plugin.pop.addPop(x * 32 + 16, y * 32 + 16, -3000);
core.updateStatusBar();
if (core.status.hero.hp < 0) {
core.status.hero.hp = 0;
@@ -1521,7 +1533,7 @@ function lineDamage(x1, y1, x2, y2, damage) {
n2 = ((y2 - y1) / (x2 - x1)) * (loc2[0] - x1) + y1 - loc2[1];
if (n1 * n2 <= 0) {
core.status.hero.hp -= damage;
- core.addPop(x * 32 + 16, y * 32 + 16, -damage);
+ ancTe.plugin.pop.addPop(x * 32 + 16, y * 32 + 16, -damage);
core.updateStatusBar();
core.playSound('electron.mp3');
if (core.status.hero.hp < 0) {
@@ -1541,7 +1553,7 @@ function lineDamage(x1, y1, x2, y2, damage) {
n2 = ((y2 - y1) / (x2 - x1)) * (loc2[0] - x1) + y1 - loc2[1];
if (n1 * n2 <= 0) {
core.status.hero.hp -= damage;
- core.addPop(x * 32 + 16, y * 32 + 16, -damage);
+ ancTe.plugin.pop.addPop(x * 32 + 16, y * 32 + 16, -damage);
core.updateStatusBar();
core.playSound('electron.mp3');
if (core.status.hero.hp < 0) {
diff --git a/src/plugin/game/ui.js b/src/plugin/game/ui.js
index 0406552..c5594d8 100644
--- a/src/plugin/game/ui.js
+++ b/src/plugin/game/ui.js
@@ -12,30 +12,34 @@ export {};
function openItemShop(itemShopId) {
if (!core.isReplaying()) {
core.plugin.openedShopId = itemShopId;
- core.plugin.shopOpened.value = true;
+ ancTe.plugin.ui.shopOpened.value = true;
}
}
function updateVueStatusBar() {
if (main.replayChecking) return;
core.plugin.statusBarStatus.value = !core.plugin.statusBarStatus.value;
- core.checkMarkedEnemy();
+ ancTe.plugin.mark.checkMarkedEnemy();
}
ui.prototype.drawBook = function () {
- if (!core.isReplaying()) return (core.plugin.bookOpened.value = true);
+ if (!core.isReplaying())
+ return (ancTe.plugin.ui.bookOpened.value = true);
};
ui.prototype._drawToolbox = function () {
- if (!core.isReplaying()) return (core.plugin.toolOpened.value = true);
+ if (!core.isReplaying())
+ return (ancTe.plugin.ui.toolOpened.value = true);
};
ui.prototype._drawEquipbox = function () {
- if (!core.isReplaying()) return (core.plugin.equipOpened.value = true);
+ if (!core.isReplaying())
+ return (ancTe.plugin.ui.equipOpened.value = true);
};
ui.prototype.drawFly = function () {
- if (!core.isReplaying()) return (core.plugin.flyOpened.value = true);
+ if (!core.isReplaying())
+ return (ancTe.plugin.ui.flyOpened.value = true);
};
control.prototype.updateStatusBar_update = function () {
@@ -53,7 +57,7 @@ export {};
control.prototype.showStatusBar = function () {
if (main.mode == 'editor') return;
core.removeFlag('hideStatusBar');
- core.plugin.showStatusBar.value = true;
+ ancTe.plugin.ui.showStatusBar.value = true;
core.dom.tools.hard.style.display = 'block';
core.dom.toolBar.style.display = 'block';
};
@@ -64,7 +68,7 @@ export {};
// 如果原本就是隐藏的,则先显示
if (!core.domStyle.showStatusBar) this.showStatusBar();
if (core.isReplaying()) showToolbox = true;
- core.plugin.showStatusBar.value = false;
+ ancTe.plugin.ui.showStatusBar.value = false;
var toolItems = core.dom.tools;
core.setFlag('hideStatusBar', true);
@@ -83,13 +87,13 @@ export {};
function showChapter(chapter) {
if (core.isReplaying()) return;
- core.plugin.chapterContent.value = chapter;
- core.plugin.chapterShowed.value = true;
+ ancTe.plugin.chapter.chapterContent.value = chapter;
+ ancTe.plugin.chapter.chapterShowed.value = true;
}
function openSkill() {
if (core.isReplaying()) return;
- core.plugin.skillOpened.value = true;
+ ancTe.plugin.ui.skillOpened.value = true;
}
core.plugin.gameUi = {
diff --git a/src/plugin/settings.ts b/src/plugin/settings.ts
index c223d12..1ebcd25 100644
--- a/src/plugin/settings.ts
+++ b/src/plugin/settings.ts
@@ -33,7 +33,7 @@ export const antiAliasing = ref(true);
export const fullscreen = ref(false);
watch(transition, n => {
- core.plugin.transition.value = n;
+ ancTe.plugin.ui.transition.value = n;
core.setLocalStorage('transition', n);
});
@@ -88,7 +88,7 @@ watch(antiAliasing, n => {
function reset() {
const t = core.getLocalStorage('transition', false);
transition.value = t;
- core.plugin.transition.value = transition.value;
+ ancTe.plugin.ui.transition.value = transition.value;
autoScale.value = core.getLocalStorage('autoScale', true);
showStudied.value = core.getLocalStorage('showStudied', true);
showHalo.value = core.getLocalStorage('showHalo', true);
diff --git a/src/plugin/uiController.ts b/src/plugin/uiController.ts
index 161c0e4..9472ad8 100644
--- a/src/plugin/uiController.ts
+++ b/src/plugin/uiController.ts
@@ -13,6 +13,8 @@ import Shop from '../ui/shop.vue';
import Achievement from '../ui/achievement.vue';
import Bgm from '../ui/bgmList.vue';
+// todo: 优化开启控制器
+
export const bookOpened = ref(false);
export const toolOpened = ref(false);
export const equipOpened = ref(false);
@@ -25,23 +27,15 @@ export const flyOpened = ref(false);
export const showStudiedSkill = ref(false);
export const fixedDetailOpened = ref(false);
export const shopOpened = ref(false);
-export const startOpened = ref(false);
+export const startOpened = ref(true);
export const achievementOpened = ref(false);
export const bgmOpened = ref(false);
export const transition = ref(true);
export const noClosePanel = ref(false);
-export const loaded = ref(false);
export const startAnimationEnded = ref(false);
-watch(loaded, n => {
- if (n && startAnimationEnded.value) startOpened.value = true;
-});
-watch(startAnimationEnded, n => {
- if (n && loaded.value) startOpened.value = true;
-});
-
let app: HTMLDivElement;
/** ui声明列表 */
@@ -98,7 +92,6 @@ export default function init() {
shopOpened,
startOpened,
startAnimationEnded,
- loaded,
achievementOpened,
bgmOpened
};
diff --git a/src/types/plugin.d.ts b/src/types/plugin.d.ts
index 4e87073..b8dbaa1 100644
--- a/src/types/plugin.d.ts
+++ b/src/types/plugin.d.ts
@@ -475,3 +475,8 @@ type Forward = {
};
type ForwardKeys = keyof Forward;
+
+declare const ancTe: import('../core/index').AncTe;
+interface Window {
+ ancTe: import('../core/index').AncTe;
+}
diff --git a/src/ui/bgmList.vue b/src/ui/bgmList.vue
index 5bedad7..4becf08 100644
--- a/src/ui/bgmList.vue
+++ b/src/ui/bgmList.vue
@@ -51,7 +51,7 @@ const content = computed(() => {
const name = computed(() => list[selected.value]!.name);
function exit() {
- core.plugin.bgmOpened.value = false;
+ ancTe.plugin.ui.bgmOpened.value = false;
}
function select(id: BgmIds) {
diff --git a/src/ui/book.vue b/src/ui/book.vue
index be67333..861a261 100644
--- a/src/ui/book.vue
+++ b/src/ui/book.vue
@@ -166,8 +166,8 @@ async function show() {
*/
async function exit() {
noClosePanel.value = true;
- core.plugin.bookOpened.value = false;
- if (core.plugin.transition.value) await sleep(650);
+ ancTe.plugin.ui.bookOpened.value = false;
+ if (ancTe.plugin.ui.transition.value) await sleep(650);
else await sleep(100);
if (core.events.recoverEvents(core.status.event.interval)) {
return;
@@ -244,7 +244,7 @@ function keydown(e: KeyboardEvent) {
}
onMounted(async () => {
- if (core.plugin.transition.value) await sleep(600);
+ if (ancTe.plugin.ui.transition.value) await sleep(600);
else await sleep(50);
document.addEventListener('keyup', keyup);
document.addEventListener('keydown', keydown);
diff --git a/src/ui/desc.vue b/src/ui/desc.vue
index e145f8e..3c30948 100644
--- a/src/ui/desc.vue
+++ b/src/ui/desc.vue
@@ -28,7 +28,7 @@ type DescKey = keyof typeof desc;
const selected = ref(Object.keys(desc)[0] as DescKey);
function exit() {
- core.plugin.descOpened.value = false;
+ ancTe.plugin.ui.descOpened.value = false;
}
const content = computed(() => {
diff --git a/src/ui/equipbox.vue b/src/ui/equipbox.vue
index 33893a1..be232c8 100644
--- a/src/ui/equipbox.vue
+++ b/src/ui/equipbox.vue
@@ -311,7 +311,7 @@ function changeSort() {
}
function exit() {
- core.plugin.equipOpened.value = false;
+ ancTe.plugin.ui.equipOpened.value = false;
}
function clickList(i: number) {
@@ -429,12 +429,12 @@ function dragout(e: Event) {
}
async function toTool() {
- const before = core.plugin.transition.value;
- core.plugin.transition.value = false;
+ const before = ancTe.plugin.ui.transition.value;
+ ancTe.plugin.ui.transition.value = false;
exit();
await sleep(50);
- core.plugin.toolOpened.value = true;
- core.plugin.transition.value = before;
+ ancTe.plugin.ui.toolOpened.value = true;
+ ancTe.plugin.ui.transition.value = before;
}
function keyup(e: KeyboardEvent) {
@@ -455,7 +455,7 @@ watch(toShow, n => {
onMounted(async () => {
bind();
- if (core.plugin.transition.value) await sleep(600);
+ if (ancTe.plugin.ui.transition.value) await sleep(600);
else await sleep(50);
document.addEventListener('keyup', keyup);
});
diff --git a/src/ui/fixed.vue b/src/ui/fixed.vue
index ccfa9a6..bcba79e 100644
--- a/src/ui/fixed.vue
+++ b/src/ui/fixed.vue
@@ -84,7 +84,7 @@ async function calHeight() {
vw = window.innerWidth;
width.value = vh * 0.28;
await new Promise(res => requestAnimationFrame(res));
- if (core.plugin.fixedDetailOpened.value) {
+ if (ancTe.plugin.ui.fixedDetailOpened.value) {
showFixed.value = false;
}
updateMain();
diff --git a/src/ui/fixedDetail.vue b/src/ui/fixedDetail.vue
index ca591eb..91d0bb3 100644
--- a/src/ui/fixedDetail.vue
+++ b/src/ui/fixedDetail.vue
@@ -30,7 +30,7 @@ if (e && core.getClsFromId(e)?.startsWith('enemy')) {
}
function close() {
- core.plugin.fixedDetailOpened.value = false;
+ ancTe.plugin.ui.fixedDetailOpened.value = false;
}
diff --git a/src/ui/fly.vue b/src/ui/fly.vue
index 12eb646..3ae7059 100644
--- a/src/ui/fly.vue
+++ b/src/ui/fly.vue
@@ -147,7 +147,7 @@ let thumbCtx: CanvasRenderingContext2D;
let downloadMode = false;
function exit() {
- core.plugin.flyOpened.value = false;
+ ancTe.plugin.ui.flyOpened.value = false;
}
const title = computed(() => {
@@ -610,7 +610,7 @@ onMounted(async () => {
});
await sleep(50);
- if (core.plugin.transition.value) await sleep(600);
+ if (ancTe.plugin.ui.transition.value) await sleep(600);
document.addEventListener('keyup', keyup);
map.addEventListener('touchstart', touchdown);
diff --git a/src/ui/settings.vue b/src/ui/settings.vue
index 239e05e..66acf2c 100644
--- a/src/ui/settings.vue
+++ b/src/ui/settings.vue
@@ -137,7 +137,7 @@ const settings: Record> = {
const ignore: (keyof Settings)[] = ['fullscreen'];
function exit() {
- core.plugin.settingsOpened.value = false;
+ ancTe.plugin.ui.settingsOpened.value = false;
}
function click(id: keyof Settings) {
diff --git a/src/ui/shop.vue b/src/ui/shop.vue
index 7c77002..a8ef472 100644
--- a/src/ui/shop.vue
+++ b/src/ui/shop.vue
@@ -303,12 +303,12 @@ function keydown(e: KeyboardEvent) {
function exit() {
if (bought) core.status.route.push('closeShop');
- core.plugin.shopOpened.value = false;
+ ancTe.plugin.ui.shopOpened.value = false;
}
onMounted(async () => {
await sleep(50);
- if (core.plugin.transition.value) await sleep(600);
+ if (ancTe.plugin.ui.transition.value) await sleep(600);
document.addEventListener('keyup', keyup);
document.addEventListener('keydown', keydown);
core.status.route.push(`openShop:${id}`);
diff --git a/src/ui/skill.vue b/src/ui/skill.vue
index f060fb5..a3e03b1 100644
--- a/src/ui/skill.vue
+++ b/src/ui/skill.vue
@@ -60,7 +60,7 @@ const content = computed(() => {
});
function exit() {
- core.plugin.skillOpened.value = false;
+ ancTe.plugin.ui.skillOpened.value = false;
}
diff --git a/src/ui/skillTree.vue b/src/ui/skillTree.vue
index 3d1fbac..d5dc035 100644
--- a/src/ui/skillTree.vue
+++ b/src/ui/skillTree.vue
@@ -173,7 +173,7 @@ const level = computed(() => {
});
function exit() {
- core.plugin.skillTreeOpened.value = false;
+ ancTe.plugin.ui.skillTreeOpened.value = false;
}
function resize() {
@@ -274,7 +274,7 @@ onMounted(async () => {
draw();
await sleep(50);
- if (core.plugin.transition.value) await sleep(600);
+ if (ancTe.plugin.ui.transition.value) await sleep(600);
canvas.addEventListener('click', click);
document.addEventListener('keyup', key);
});
diff --git a/src/ui/start.vue b/src/ui/start.vue
index ed01399..45eb3d4 100644
--- a/src/ui/start.vue
+++ b/src/ui/start.vue
@@ -69,6 +69,7 @@ import { doByInterval, keycode } from '../plugin/utils';
import { KeyCode } from '../plugin/keyCodes';
import { achievementOpened } from '../plugin/uiController';
import { triggerFullscreen } from '../plugin/settings';
+import { loading } from '../core/loader/load';
let startdiv: HTMLDivElement;
let start: HTMLDivElement;
@@ -96,6 +97,7 @@ const toshow = reactive([]);
const selected = ref('start-game');
function resize() {
+ if (!window.core) return;
const scale = core.domStyle.scale;
const h = core._PY_;
const height = h * scale;
@@ -290,34 +292,34 @@ async function setButtonAnimate() {
onMounted(async () => {
cursor = document.getElementById('cursor')!;
- played = core.getLocalStorage('oneweek1', false);
startdiv = document.getElementById('start-div') as HTMLDivElement;
main = document.getElementById('start-main') as HTMLDivElement;
start = document.getElementById('start') as HTMLDivElement;
background = document.getElementById('background') as HTMLImageElement;
- core.registerResize('start', resize);
- resize();
+ loading.once('coreInit', async () => {
+ window.addEventListener('resize', resize);
+ resize();
- soundChecked.value = core.musicStatus.bgmStatus;
+ soundChecked.value = core.musicStatus.bgmStatus;
- await sleep(50);
- document.addEventListener('keydown', keydown);
- document.addEventListener('keyup', keyup);
- start.style.opacity = '1';
- if (played) {
- text.value = text2;
- hard.splice(1, 0, '挑战');
- }
- setButtonAnimate().then(() => (showed.value = true));
- await sleep(1000);
- showCursor();
- await sleep(1200);
- core.dom.startPanel.style.display = 'none';
+ await sleep(50);
+ document.addEventListener('keydown', keydown);
+ document.addEventListener('keyup', keyup);
+ start.style.opacity = '1';
+ if (played) {
+ text.value = text2;
+ hard.splice(1, 0, '挑战');
+ }
+ setButtonAnimate().then(() => (showed.value = true));
+ await sleep(1000);
+ showCursor();
+ await sleep(1200);
+ });
});
onUnmounted(() => {
- core.unregisterResize('start');
+ window.removeEventListener('resize', resize);
document.removeEventListener('keydown', keydown);
document.removeEventListener('keyup', keyup);
});
diff --git a/src/ui/toolbox.vue b/src/ui/toolbox.vue
index 4e818e5..4fee281 100644
--- a/src/ui/toolbox.vue
+++ b/src/ui/toolbox.vue
@@ -165,19 +165,19 @@ async function select(id: ShowItemIds, nouse: boolean = false) {
}
function exit() {
- core.plugin.toolOpened.value = false;
+ ancTe.plugin.ui.toolOpened.value = false;
}
async function use(id: ShowItemIds) {
if (id === 'none') return;
if (core.canUseItem(id)) {
// 应该暂时把动画去掉
- const before = core.plugin.transition.value;
- core.plugin.transition.value = false;
+ const before = ancTe.plugin.ui.transition.value;
+ ancTe.plugin.ui.transition.value = false;
exit();
await sleep(50);
core.useItem(id);
- core.plugin.transition.value = before;
+ ancTe.plugin.ui.transition.value = before;
} else {
message.warn({
content: '当前无法使用该道具!',
@@ -187,12 +187,12 @@ async function use(id: ShowItemIds) {
}
async function toEquip() {
- const before = core.plugin.transition.value;
- core.plugin.transition.value = false;
+ const before = ancTe.plugin.ui.transition.value;
+ ancTe.plugin.ui.transition.value = false;
exit();
await sleep(50);
- core.plugin.equipOpened.value = true;
- core.plugin.transition.value = before;
+ ancTe.plugin.ui.equipOpened.value = true;
+ ancTe.plugin.ui.transition.value = before;
}
function keyup(e: KeyboardEvent) {
@@ -239,7 +239,7 @@ function keydown(e: KeyboardEvent) {
}
onMounted(async () => {
- if (core.plugin.transition.value) await sleep(600);
+ if (ancTe.plugin.ui.transition.value) await sleep(600);
else await sleep(50);
document.addEventListener('keyup', keyup);
document.addEventListener('keydown', keydown);