From 67930f832a2148d5a335df62ff597dc1d675d77a Mon Sep 17 00:00:00 2001 From: yvan Date: Mon, 2 Jun 2025 01:02:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=9D=E5=AD=98=E8=8D=89=E7=A8=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/engine/Viewport.ts | 30 ++++++++++++++++++------------ src/core/manager/StateManager.ts | 6 +++++- src/editor/Model2DEditor.vue | 1 + 3 files changed, 24 insertions(+), 13 deletions(-) diff --git a/src/core/engine/Viewport.ts b/src/core/engine/Viewport.ts index 95a219c..c422fa5 100644 --- a/src/core/engine/Viewport.ts +++ b/src/core/engine/Viewport.ts @@ -186,19 +186,25 @@ export default class Viewport { itemType.clazz.afterAddViewport(this) }) - try { - const vdata = await this.worldModel.getCatalogData(this.scene.catalogCode) - if (!vdata) { - return - } - if (!vdata.catalog) { - vdata.catalog = toRaw(this.worldModel.state.catalog) - } - await this.stateManager.load(vdata) - EventBus.dispatch('dataLoadComplete', {}) + // 尝试从草稿中恢复 + const tryGetFromLocal = false // await this.stateManager.tryLoadFromLocalstore() + + if (!tryGetFromLocal) { + // 没有草稿,就找服务器捞数据 + try { + const vdata = await this.worldModel.getCatalogData(this.scene.catalogCode) + if (!vdata) { + return + } + if (!vdata.catalog) { + vdata.catalog = toRaw(this.worldModel.state.catalog) + } + await this.stateManager.load(vdata) + EventBus.dispatch('dataLoadComplete', {}) - } finally { - this.state.isReady = true + } finally { + this.state.isReady = true + } } } diff --git a/src/core/manager/StateManager.ts b/src/core/manager/StateManager.ts index 4a7581e..d5bdd3b 100644 --- a/src/core/manager/StateManager.ts +++ b/src/core/manager/StateManager.ts @@ -445,7 +445,7 @@ export default class StateManager { /** * 从本地存储还原数据 */ - async loadFromLocalstore() { + async tryLoadFromLocalstore(): Promise { try { this.isLoading.value = true const saved: VData = await localforage.getItem(this.storeKey) @@ -458,10 +458,14 @@ export default class StateManager { this.fullSync() // 同步到视口 console.log('[StateManager] 从本地存储恢复', this.vdata.items.length, '个对象') this.pendingChanges = false + return true } + return false + } catch (error) { console.error('[StateManager] 从本地存储加载失败:', error) + return false } finally { this.isLoading.value = false diff --git a/src/editor/Model2DEditor.vue b/src/editor/Model2DEditor.vue index e7734cb..0ee5ef5 100644 --- a/src/editor/Model2DEditor.vue +++ b/src/editor/Model2DEditor.vue @@ -166,6 +166,7 @@ export default defineComponent({ window['renderer'] = viewport.renderer window['controls'] = viewport.controls + //@ts-ignore viewerDom.focus() // 通知父组件视口已准备好