fix: 修复编辑器试玩界面的返回问题

This commit is contained in:
cancerai committed 2026-10-22 21:54:28 +08:00
1 parent bf0f065432
commit cc2883458c
2 files changed
+25 -5

No files matched your search

+15 -5
View File
@@ -33,6 +33,7 @@ const G = {
level: null, player: null, cam: null,
data: null, idx: -1,
map: null, face: 0, // 多面地图:map=各面 Level 数组,face=当前面下标
fromEditor: false, // 是否从编辑器「试玩」进入(决定暂停菜单末项去向)
deaths: 0, ms: 0, hudTick: 0,
time: 0,
lastLevelId: null,
@@ -168,7 +169,16 @@ function nextLevel() {
}
function toLevels() { G.state = 'menu'; UI.show('scr-levels'); Touch.hide(); }
function toTitle() { G.state = 'menu'; UI.show('scr-title'); Touch.hide(); }
function pause() { if (G.state === 'playing') { G.state = 'paused'; UI.show('scr-pause'); Touch.hide(); } }
function toEditor() { G.state = 'editor'; UI.show('scr-editor'); Touch.hide(); Editor.open(); }
function pause() {
if (G.state !== 'playing') return;
G.state = 'paused';
// 暂停菜单末项:从编辑器试玩进来 → 「返回编辑器」;否则 → 「返回关卡选择」
const q = document.querySelector('#scr-pause [data-act="quit"]');
if (q) q.textContent = G.fromEditor ? '返回编辑器' : '返回关卡选择';
UI.show('scr-pause');
Touch.hide();
}
function resume() { if (G.state === 'paused') { G.state = 'playing'; UI.showGame(); showTouch(); } }
// ---------------- 更新 ----------------
@@ -277,14 +287,14 @@ Save.load();
Audio2.enabled = Save.data.audio !== false;
UI.init({
play: (lv) => startLevel(lv, lv.builtin === false ? -1 : (lv.index ?? -1)),
play: (lv) => { G.fromEditor = false; startLevel(lv, lv.builtin === false ? -1 : (lv.index ?? -1)); },
levels: toLevels,
help: () => UI.show('scr-help'),
editor: () => { G.state = 'editor'; UI.show('scr-editor'); Touch.hide(); Editor.open(); },
editor: toEditor,
back: toTitle,
resume,
restart: () => { restart(); },
quit: toLevels,
quit: () => (G.fromEditor ? toEditor() : toLevels()),
retry: () => startLevel(G.data, G.idx),
next: nextLevel,
wipe: () => {
@@ -293,7 +303,7 @@ UI.init({
});
Editor.init({
startLevel: (data) => startLevel(data, -1),
startLevel: (data) => { G.fromEditor = true; startLevel(data, -1); },
refresh: () => UI.renderLevels(),
});