From 41930b858e7c547b19d981728df8b4273d5877ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Wed, 16 Sep 2026 23:13:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E9=99=B6=E6=B3=A5=E5=84=BF?= =?UTF-8?q?=E8=BF=90=E8=A1=8C=E6=80=81=E5=9B=BE=E7=89=87=E7=AD=9B=E9=80=89?= =?UTF-8?q?=E6=AE=8B=E7=95=99=E7=9A=84=E6=97=A7=20kind=20=E5=AD=97?= =?UTF-8?q?=E9=9D=A2=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - direct_runtime/mod.rs:`direct_game_sources_referenced_taonier_assets` 的 manifest 兜底由 `art-spritesheet | art-spritesheet-slice | game-background` 改为 `IconSpritesheet | Icon | Scene`,恢复对项目自定义图集与背景的收录。 - direct_runtime/mod.rs:同处与 `direct_registered_taonier_runtime_image_paths` 的「切片不得绕过严格校验」排除条件改用 `GameCreationAppAssetKind::Icon`,并顺手把 `icon-spec` 比较改为枚举成员。 - 理由:kind 收紧为枚举后 `as_str()` 只会返回 canonical 名,旧字面量恒不命中,兜底筛选与切片排除同时失效。 --- .../src-tauri/src/agent/direct_runtime/mod.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/apps/ai-game-creator-shell/src-tauri/src/agent/direct_runtime/mod.rs b/apps/ai-game-creator-shell/src-tauri/src/agent/direct_runtime/mod.rs index 249878ec3..455e05a5e 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/agent/direct_runtime/mod.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/agent/direct_runtime/mod.rs @@ -2822,15 +2822,17 @@ fn direct_game_sources_referenced_taonier_assets(root: &Path) -> Vec { .into_iter() .filter(|asset| { matches!( - asset.kind.as_str(), - "art-spritesheet" | "art-spritesheet-slice" | "game-background" + asset.kind, + GameCreationAppAssetKind::IconSpritesheet + | GameCreationAppAssetKind::Icon + | GameCreationAppAssetKind::Scene ) && asset.media_type == "image/png" && asset.source.kind == GameCreationAppAssetSourceKind::Canvas && asset.local_path.starts_with("assets/") // Canonical slices are admitted above only after the // full slice manifest/receipt/content validation. Do // not let this generic manifest fallback bypass it. - && !(asset.kind == "art-spritesheet-slice" + && !(asset.kind == GameCreationAppAssetKind::Icon && asset .local_path .starts_with("assets/art-spritesheet-slices/")) @@ -2861,7 +2863,7 @@ fn direct_registered_taonier_runtime_image_paths(root: &Path) -> Vec { .iter() .filter(|asset| { asset.media_type.starts_with("image/") - && asset.kind != "icon-spec" + && asset.kind != GameCreationAppAssetKind::IconSpec && asset.source.kind == GameCreationAppAssetSourceKind::Canvas && asset .source @@ -2873,7 +2875,7 @@ fn direct_registered_taonier_runtime_image_paths(root: &Path) -> Vec { // manifest/receipt/content validation. This generic fallback // must not re-admit a slice whose bytes no longer match the // registered receipt. - && !(asset.kind == "art-spritesheet-slice" + && !(asset.kind == GameCreationAppAssetKind::Icon && asset .local_path .starts_with("assets/art-spritesheet-slices/"))