From fb49b5fc5df9b7cf084fe8b2bdfda86e640a3dda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Wed, 23 Sep 2026 17:46:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=89=8D=E7=AB=AF=E7=A7=BB=E9=99=A4=20UI=20?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=99=A8=E5=90=88=E5=B9=B6=E4=B8=8E=E7=BB=91?= =?UTF-8?q?=E5=AE=9A=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 删除 features/ui-editor/merge.ts 与 MergeDTO、BindingDTO、BindingChange 类型文件 - useUiEditorPage 去掉 mergeUi 操作、合并运行态、合并状态与投影字段 - isAiRunning 不再把合并运行态计入编辑器忙状态 --- .../src/features/ui-editor/merge.ts | 10 ----- .../features/ui-editor/types/BindingChange.ts | 6 --- .../features/ui-editor/types/BindingDTO.ts | 4 -- .../src/features/ui-editor/types/MergeDTO.ts | 4 -- .../src/view/ui-editor/useUiEditorPage.ts | 40 +------------------ 5 files changed, 1 insertion(+), 63 deletions(-) delete mode 100644 apps/ai-game-creator-shell/src/features/ui-editor/merge.ts delete mode 100644 apps/ai-game-creator-shell/src/features/ui-editor/types/BindingChange.ts delete mode 100644 apps/ai-game-creator-shell/src/features/ui-editor/types/BindingDTO.ts delete mode 100644 apps/ai-game-creator-shell/src/features/ui-editor/types/MergeDTO.ts diff --git a/apps/ai-game-creator-shell/src/features/ui-editor/merge.ts b/apps/ai-game-creator-shell/src/features/ui-editor/merge.ts deleted file mode 100644 index b90781bb4..000000000 --- a/apps/ai-game-creator-shell/src/features/ui-editor/merge.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { MergeDTO } from './types/MergeDTO'; -import type { State } from './types/State'; - -/** 合并阶段返回一棵新树,成功后替换当前全部逐图识别树。 */ -export function applyMergeResult(state: State, result: MergeDTO): State { - return { - ...structuredClone(state), - ui_trees: [structuredClone(result.ui_tree)], - }; -} diff --git a/apps/ai-game-creator-shell/src/features/ui-editor/types/BindingChange.ts b/apps/ai-game-creator-shell/src/features/ui-editor/types/BindingChange.ts deleted file mode 100644 index 3bb2c5c4d..000000000 --- a/apps/ai-game-creator-shell/src/features/ui-editor/types/BindingChange.ts +++ /dev/null @@ -1,6 +0,0 @@ -// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. -import type { NodeComponent } from "./NodeComponent"; -import type { NodeId } from "./NodeId"; -import type { StageStatus } from "./StageStatus"; - -export type BindingChange = { node_id: NodeId, component: NodeComponent, component_status: StageStatus, }; diff --git a/apps/ai-game-creator-shell/src/features/ui-editor/types/BindingDTO.ts b/apps/ai-game-creator-shell/src/features/ui-editor/types/BindingDTO.ts deleted file mode 100644 index beb340894..000000000 --- a/apps/ai-game-creator-shell/src/features/ui-editor/types/BindingDTO.ts +++ /dev/null @@ -1,4 +0,0 @@ -// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. -import type { BindingChange } from "./BindingChange"; - -export type BindingDTO = { changes: Array, }; diff --git a/apps/ai-game-creator-shell/src/features/ui-editor/types/MergeDTO.ts b/apps/ai-game-creator-shell/src/features/ui-editor/types/MergeDTO.ts deleted file mode 100644 index 366a191e3..000000000 --- a/apps/ai-game-creator-shell/src/features/ui-editor/types/MergeDTO.ts +++ /dev/null @@ -1,4 +0,0 @@ -// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. -import type { UITree } from "./UITree"; - -export type MergeDTO = { ui_tree: UITree, }; diff --git a/apps/ai-game-creator-shell/src/view/ui-editor/useUiEditorPage.ts b/apps/ai-game-creator-shell/src/view/ui-editor/useUiEditorPage.ts index 0d876b769..3e5236097 100644 --- a/apps/ai-game-creator-shell/src/view/ui-editor/useUiEditorPage.ts +++ b/apps/ai-game-creator-shell/src/view/ui-editor/useUiEditorPage.ts @@ -8,7 +8,6 @@ import { prepareFontAssetBatch, prepareSpriteAssetBatch, } from '../../features/ui-editor/importAdapter'; -import { applyMergeResult } from '../../features/ui-editor/merge'; import { findStateNodePageContext, pageRectSize, @@ -27,7 +26,6 @@ import { collectUiNodeIds } from '../../features/ui-editor/treeUtils'; import type { ChildrenDisplayMode } from '../../features/ui-editor/types/ChildrenDisplayMode'; import type { Component } from '../../features/ui-editor/types/Component'; import type { FontAssetId } from '../../features/ui-editor/types/FontAssetId'; -import type { MergeDTO } from '../../features/ui-editor/types/MergeDTO'; import type { Node as UiNode } from '../../features/ui-editor/types/Node'; import type { NodeId } from '../../features/ui-editor/types/NodeId'; import type { RecognitionDTO } from '../../features/ui-editor/types/RecognitionDTO'; @@ -230,18 +228,12 @@ export function useUiEditorSession( const [pendingRemoval, setPendingRemoval] = useState(null); const recognitionOperation = useUiEditorOperation(); - const mergeOperation = useUiEditorOperation(); const separationOperation = useUiEditorOperation(); const isRecognizing = recognitionOperation.running; const recognitionStatus = recognitionOperation.status; const beginRecognition = recognitionOperation.begin; const finishRecognition = recognitionOperation.finish; const setRecognitionStatus = recognitionOperation.setStatus; - const isMerging = mergeOperation.running; - const mergeStatus = mergeOperation.status; - const beginMerge = mergeOperation.begin; - const finishMerge = mergeOperation.finish; - const setMergeStatus = mergeOperation.setStatus; const isSeparating = separationOperation.running; const separationStatus = separationOperation.status; const beginSeparation = separationOperation.begin; @@ -382,7 +374,7 @@ export function useUiEditorSession( const activeImage = activeImageId ? images[activeImageId] : null; const selectedSprite = selectedSpriteId ? sprites[selectedSpriteId] : null; const selectedFont = selectedFontId ? fonts[selectedFontId] : null; - const isAiRunning = isRecognizing || isMerging || isSeparating; + const isAiRunning = isRecognizing || isSeparating; const isWorkflowBusy = isAiRunning || isSaving || isGenerating || isLoading || editor.isLocked; const stateSignature = JSON.stringify(editor.state); @@ -974,33 +966,6 @@ export function useUiEditorSession( } } - async function mergeUi() { - // TODO: This experimental operation is intentionally outside the formal workflow. - if (isMerging || isWorkflowBusy) return; - setMergeStatus(null); - beginMerge(); - try { - await editor.runWithStateLocked(async (snapshot) => { - const result = await invoke('merge_ui', { state: snapshot }); - const nextState = applyMergeResult(snapshot, result); - const mergedTrees = nextState.ui_trees; - nextState.ui_trees = []; - for (const tree of mergedTrees) { - nextState.ui_trees.push( - createTree(nextState, tree.src_ui_design, tree.root), - ); - } - editor.replaceState(nextState); - setSelectedNodeId(null); - setMergeStatus('已生成合并后的单棵界面树。'); - }); - } catch (cause) { - setMergeStatus(cause instanceof Error ? cause.message : String(cause)); - } finally { - finishMerge(); - } - } - async function runSeparationWorkflow() { if (!resourceId || isWorkflowBusy) return; beginSeparation(); @@ -1494,14 +1459,11 @@ export function useUiEditorSession( selectedNodeId, focusRequest, operations: { - isMerging, isRecognizing, - mergeStatus, recognitionStatus, }, checkPrerequisites, separateUi, - mergeUi, recognizeUi, openImporter: setImportKind, selectDesignImage,