From 0241a6b58b76d4f3c61a14dfe5f1ba67998c37cd Mon Sep 17 00:00:00 2001 From: zhx Date: Fri, 19 Jun 2026 17:42:26 +0800 Subject: [PATCH] Add first stage source reconstruction baseline --- .../canvas_preview/stage1_source_preview.png | Bin 0 -> 23289 bytes .../stage1_source_preview_report.json | 11 + artifacts/cocos_capture/.gitkeep | 0 .../cocos_capture/stage1_cocos_verify.json | 40 + artifacts/visual_compare/.gitkeep | 0 .../visual_compare/stage1_roi_report.json | 18 + assets/audio.meta | 9 + assets/audio/.gitkeep | 0 assets/bundles.meta | 9 + assets/bundles/.gitkeep | 0 assets/configs.meta | 9 + assets/configs/.gitkeep | 0 assets/i18n.meta | 9 + assets/i18n/.gitkeep | 0 assets/prefabs.meta | 9 + assets/prefabs/.gitkeep | 0 assets/resources.meta | 14 + assets/resources/.gitkeep | 0 assets/scenes.meta | 9 + assets/scenes/.gitkeep | 0 assets/scenes/main_stage1.source_scene.json | 2904 ++++++++++++++ .../scenes/main_stage1.source_scene.json.meta | 11 + assets/scripts.meta | 9 + assets/scripts/.gitkeep | 0 assets/scripts/mock.meta | 9 + assets/scripts/mock/.gitkeep | 0 assets/spine.meta | 9 + assets/spine/.gitkeep | 0 assets/textures.meta | 9 + assets/textures/.gitkeep | 0 docs/cocos4_reconstruction_core.md | 27 + docs/rebuild_list.md | 17 + docs/rebuild_log.md | 34 + docs/rebuild_notes.md | 29 + source_export/source_animations.json | 93 + source_export/source_assets.json | 261 ++ source_export/source_blockers.md | 5 + source_export/source_nodes.json | 3328 +++++++++++++++++ source_export/source_prefabs.json | 63 + source_export/source_runtime_notes.md | 7 + source_export/source_spine.json | 30 + source_export/source_spriteframes.json | 4 + tools/compare_visual_rois.py | 40 + tools/extract_source_evidence.py | 199 + tools/generate_cocos4_project.py | 70 + tools/render_canvas_preview.py | 93 + tools/verify_cocos4_project.py | 50 + 47 files changed, 7438 insertions(+) create mode 100644 artifacts/canvas_preview/stage1_source_preview.png create mode 100644 artifacts/canvas_preview/stage1_source_preview_report.json create mode 100644 artifacts/cocos_capture/.gitkeep create mode 100644 artifacts/cocos_capture/stage1_cocos_verify.json create mode 100644 artifacts/visual_compare/.gitkeep create mode 100644 artifacts/visual_compare/stage1_roi_report.json create mode 100644 assets/audio.meta create mode 100644 assets/audio/.gitkeep create mode 100644 assets/bundles.meta create mode 100644 assets/bundles/.gitkeep create mode 100644 assets/configs.meta create mode 100644 assets/configs/.gitkeep create mode 100644 assets/i18n.meta create mode 100644 assets/i18n/.gitkeep create mode 100644 assets/prefabs.meta create mode 100644 assets/prefabs/.gitkeep create mode 100644 assets/resources.meta create mode 100644 assets/resources/.gitkeep create mode 100644 assets/scenes.meta create mode 100644 assets/scenes/.gitkeep create mode 100644 assets/scenes/main_stage1.source_scene.json create mode 100644 assets/scenes/main_stage1.source_scene.json.meta create mode 100644 assets/scripts.meta create mode 100644 assets/scripts/.gitkeep create mode 100644 assets/scripts/mock.meta create mode 100644 assets/scripts/mock/.gitkeep create mode 100644 assets/spine.meta create mode 100644 assets/spine/.gitkeep create mode 100644 assets/textures.meta create mode 100644 assets/textures/.gitkeep create mode 100644 docs/cocos4_reconstruction_core.md create mode 100644 docs/rebuild_list.md create mode 100644 docs/rebuild_log.md create mode 100644 docs/rebuild_notes.md create mode 100644 source_export/source_animations.json create mode 100644 source_export/source_assets.json create mode 100644 source_export/source_blockers.md create mode 100644 source_export/source_nodes.json create mode 100644 source_export/source_prefabs.json create mode 100644 source_export/source_runtime_notes.md create mode 100644 source_export/source_spine.json create mode 100644 source_export/source_spriteframes.json create mode 100644 tools/compare_visual_rois.py create mode 100644 tools/extract_source_evidence.py create mode 100644 tools/generate_cocos4_project.py create mode 100644 tools/render_canvas_preview.py create mode 100644 tools/verify_cocos4_project.py diff --git a/artifacts/canvas_preview/stage1_source_preview.png b/artifacts/canvas_preview/stage1_source_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..279795e3e8a12c442ca458632f0b3eed01df82aa GIT binary patch literal 23289 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 literal 0 HcmV?d00001 diff --git a/artifacts/canvas_preview/stage1_source_preview_report.json b/artifacts/canvas_preview/stage1_source_preview_report.json new file mode 100644 index 0000000..33313e6 --- /dev/null +++ b/artifacts/canvas_preview/stage1_source_preview_report.json @@ -0,0 +1,11 @@ +{ + "status": "generated", + "image": "/Users/hy/Documents/hy/hygame/farm/artifacts/canvas_preview/stage1_source_preview.png", + "resolution": { + "width": 720, + "height": 1280 + }, + "land_candidates_rendered": 36, + "visible_land_selection": "blocked_missing_runtime_visible_land_rule", + "note": "Diagnostic rendering only; it does not define final Cocos coordinates." +} diff --git a/artifacts/cocos_capture/.gitkeep b/artifacts/cocos_capture/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/artifacts/cocos_capture/stage1_cocos_verify.json b/artifacts/cocos_capture/stage1_cocos_verify.json new file mode 100644 index 0000000..3ff720d --- /dev/null +++ b/artifacts/cocos_capture/stage1_cocos_verify.json @@ -0,0 +1,40 @@ +{ + "generated_at": "2026-06-19T09:41:49.332153+00:00", + "package": { + "type": "2d", + "version": "4.0.0", + "creator_version": "4.0.0" + }, + "cocos_version": { + "cmd": [ + "zsh", + "-lc", + "cocos --version" + ], + "returncode": 0, + "stdout_tail": "0.0.1-alpha.30\n", + "stderr_tail": "" + }, + "node_abi": { + "cmd": [ + "zsh", + "-lc", + "~/.local/tools/node-v24.14.1-darwin-arm64/bin/node -p 'process.version + \" abi=\" + process.versions.modules'" + ], + "returncode": 0, + "stdout_tail": "v24.14.1 abi=137\n", + "stderr_tail": "" + }, + "build": { + "cmd": [ + "zsh", + "-lc", + "rm -rf temp library build && cocos build --project . --platform web-mobile" + ], + "returncode": 1, + "stdout_tail": "Start record log in {file(/Users/hy/Documents/hy/hygame/farm/temp/logs)}\n[Migration] 已注册 8 个迁移器\n[Migration] 开始执行迁移\n[Migration] 所有迁移执行成功\nℹ injectWebAssembly ...\nInit Base: 9.767ms\nInit Infrastructure: 3.164ms\nInit SubSystem: 3.011ms\nInit Project: 3.151ms\ninitEngine success\n", + "stderr_tail": "Application Support/cocos-default/cocos-4.0.0-alpha.22/packages/cc-module/src/loader.ts:62:35)\n at wrapModuleLoad (node:internal/modules/cjs/loader:255:19)\n at Module. (node:internal/modules/cjs/loader:1556:12)\n at Module.patchedRequire (/Users/hy/Library/Application Support/cocos-default/cocos-4.0.0-alpha.22/node_modules/require-in-the-middle/index.js:256:27)\n at Module.Hook._require.Module.require (/Users/hy/Library/Application Support/cocos-default/cocos-4.0.0-alpha.22/node_modules/require-in-the-middle/index.js:181:27)\n at Module.patchedRequire (/Users/hy/Library/Application Support/cocos-default/cocos-4.0.0-alpha.22/node_modules/require-in-the-middle/index.js:256:27)\n at Module.Hook._require.Module.require (/Users/hy/Library/Application Support/cocos-default/cocos-4.0.0-alpha.22/node_modules/require-in-the-middle/index.js:181:27)\n\n\n ERROR register asset-handler effect failed!\n\n\n ERROR Error: The module '/Users/hy/Library/Application Support/cocos-default/cocos-4.0.0-alpha.22/node_modules/gl/build/Release/webgl.node'\nwas compiled against a different Node.js version using\nNODE_MODULE_VERSION 140. This version of Node.js requires\nNODE_MODULE_VERSION 137. Please try re-compiling or re-installing\nthe module (for instance, using npm rebuild or npm install).\n at Object..node (node:internal/modules/cjs/loader:1970:18)\n at Module.load (node:internal/modules/cjs/loader:1533:32)\n at Module. (node:internal/modules/cjs/loader:1335:12)\n at ModuleInternal._load (/Users/hy/Library/Application Support/cocos-default/cocos-4.0.0-alpha.22/packages/cc-module/src/loader.ts:62:35)\n at wrapModuleLoad (node:internal/modules/cjs/loader:255:19)\n at Module. (node:internal/modules/cjs/loader:1556:12)\n at Module.patchedRequire (/Users/hy/Library/Application Support/cocos-default/cocos-4.0.0-alpha.22/node_modules/require-in-the-middle/index.js:256:27)\n at Module.Hook._require.Module.require (/Users/hy/Library/Application Support/cocos-default/cocos-4.0.0-alpha.22/node_modules/require-in-the-middle/index.js:181:27)\n at Module.patchedRequire (/Users/hy/Library/Application Support/cocos-default/cocos-4.0.0-alpha.22/node_modules/require-in-the-middle/index.js:256:27)\n at Module.Hook._require.Module.require (/Users/hy/Library/Application Support/cocos-default/cocos-4.0.0-alpha.22/node_modules/require-in-the-middle/index.js:181:27)\n\n\n ERROR register asset-handler effect failed!\n\n\n ERROR Failed to build project: Error: The module '/Users/hy/Library/Application Support/cocos-default/cocos-4.0.0-alpha.22/node_modules/gl/build/Release/webgl.node'\nwas compiled against a different Node.js version using\nNODE_MODULE_VERSION 140. This version of Node.js requires\nNODE_MODULE_VERSION 137. Please try re-compiling or re-installing\nthe module (for instance, using npm rebuild or npm install).\n at Object..node (node:internal/modules/cjs/loader:1970:18)\n at Module.load (node:internal/modules/cjs/loader:1533:32)\n at Module. (node:internal/modules/cjs/loader:1335:12)\n at ModuleInternal._load (/Users/hy/Library/Application Support/cocos-default/cocos-4.0.0-alpha.22/packages/cc-module/src/loader.ts:62:35)\n at wrapModuleLoad (node:internal/modules/cjs/loader:255:19)\n at Module. (node:internal/modules/cjs/loader:1556:12)\n at Module.patchedRequire (/Users/hy/Library/Application Support/cocos-default/cocos-4.0.0-alpha.22/node_modules/require-in-the-middle/index.js:256:27)\n at Module.Hook._require.Module.require (/Users/hy/Library/Application Support/cocos-default/cocos-4.0.0-alpha.22/node_modules/require-in-the-middle/index.js:181:27)\n at Module.patchedRequire (/Users/hy/Library/Application Support/cocos-default/cocos-4.0.0-alpha.22/node_modules/require-in-the-middle/index.js:256:27)\n at Module.Hook._require.Module.require (/Users/hy/Library/Application Support/cocos-default/cocos-4.0.0-alpha.22/node_modules/require-in-the-middle/index.js:181:27)\n\n" + }, + "status": "blocked", + "blocker": "Cocos 4 alpha CLI native gl module expects NODE_MODULE_VERSION 140; local Node 24 reports ABI 137." +} diff --git a/artifacts/visual_compare/.gitkeep b/artifacts/visual_compare/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/artifacts/visual_compare/stage1_roi_report.json b/artifacts/visual_compare/stage1_roi_report.json new file mode 100644 index 0000000..e992228 --- /dev/null +++ b/artifacts/visual_compare/stage1_roi_report.json @@ -0,0 +1,18 @@ +{ + "generated_at": "2026-06-19T09:41:45.956598+00:00", + "module": "main_scene_first_milestone", + "status": "blocked", + "rois": [ + "world_static", + "land_area", + "decor_area", + "bottom_buttons" + ], + "reason": "Cocos-produced screenshot is unavailable because Cocos 4 alpha CLI build fails on native webgl.node ABI mismatch.", + "diagnostic_preview": "/Users/hy/Documents/hy/hygame/farm/artifacts/canvas_preview/stage1_source_preview.png", + "target_thresholds": { + "static_bitmap_similarity": 0.99, + "object_center_delta_px": 2, + "object_size_delta_percent": 1 + } +} diff --git a/assets/audio.meta b/assets/audio.meta new file mode 100644 index 0000000..3ff00e0 --- /dev/null +++ b/assets/audio.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "ff660dd4-0445-4fc3-bc32-9f29b863f6a5", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/audio/.gitkeep b/assets/audio/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/assets/bundles.meta b/assets/bundles.meta new file mode 100644 index 0000000..bbdd4b1 --- /dev/null +++ b/assets/bundles.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "7fc0096d-c38d-414e-9f9c-69e59f20a8c9", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/bundles/.gitkeep b/assets/bundles/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/assets/configs.meta b/assets/configs.meta new file mode 100644 index 0000000..718de45 --- /dev/null +++ b/assets/configs.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "ba427efa-2367-4264-a430-7cb4e18ba5f0", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/configs/.gitkeep b/assets/configs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/assets/i18n.meta b/assets/i18n.meta new file mode 100644 index 0000000..089a4dc --- /dev/null +++ b/assets/i18n.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "3fa67f20-7171-4f96-8936-0c0ec82f9bc1", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/i18n/.gitkeep b/assets/i18n/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/assets/prefabs.meta b/assets/prefabs.meta new file mode 100644 index 0000000..f2e520c --- /dev/null +++ b/assets/prefabs.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "261f65a6-c027-4d00-a45c-044c02776849", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/prefabs/.gitkeep b/assets/prefabs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/assets/resources.meta b/assets/resources.meta new file mode 100644 index 0000000..67f02a1 --- /dev/null +++ b/assets/resources.meta @@ -0,0 +1,14 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "220989bc-812e-49a7-b132-7bdad9d29b69", + "files": [], + "subMetas": {}, + "userData": { + "isBundle": true, + "bundleConfigID": "default", + "bundleName": "resources", + "priority": 8 + } +} diff --git a/assets/resources/.gitkeep b/assets/resources/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/assets/scenes.meta b/assets/scenes.meta new file mode 100644 index 0000000..0b6f5ca --- /dev/null +++ b/assets/scenes.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "20ae4bac-fad8-49ae-9b07-9de2dd0e6599", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/scenes/.gitkeep b/assets/scenes/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/assets/scenes/main_stage1.source_scene.json b/assets/scenes/main_stage1.source_scene.json new file mode 100644 index 0000000..5875ca8 --- /dev/null +++ b/assets/scenes/main_stage1.source_scene.json @@ -0,0 +1,2904 @@ +{ + "format": "cocos4_stage1_source_scene", + "status": "source_backed_intermediate_scene_data", + "design_resolution": { + "width": 720, + "height": 1280 + }, + "nodes": { + "startup": [ + { + "index": 1, + "name": "root", + "full_path": "root", + "position": { + "x": 360, + "y": 640, + "z": 0 + }, + "content_size": { + "width": 720, + "height": 1280 + }, + "component_types": [ + "612d2P/T/VGz7Fm4Jof20+e", + "cc.UITransform", + "cc.Canvas", + "cc.Widget" + ], + "children": [ + 2, + 3 + ] + }, + { + "index": 2, + "name": "scene", + "full_path": "root/scene", + "position": { + "x": 0, + "y": 0, + "z": 0 + }, + "content_size": { + "width": 3320, + "height": 2560 + }, + "component_types": [ + "cc.UITransform", + "cc.Widget" + ], + "children": [ + 4 + ] + }, + { + "index": 3, + "name": "ui", + "full_path": "root/ui", + "position": { + "x": 0, + "y": 0, + "z": 0 + }, + "content_size": { + "width": 720, + "height": 1280 + }, + "component_types": [ + "cc.UITransform", + "cc.Widget" + ], + "children": [ + 6 + ] + }, + { + "index": 4, + "name": "Camera", + "full_path": "root/scene/Camera", + "position": { + "x": 0, + "y": 0, + "z": 1000 + }, + "content_size": null, + "component_types": [ + "cc.Camera", + "cc.UITransform", + "95c7akihY5GNYe9/Wanw0Ab" + ], + "children": [] + }, + { + "index": 6, + "name": "uiCamera", + "full_path": "root/ui/uiCamera", + "position": { + "x": 0, + "y": 0, + "z": 1000 + }, + "content_size": null, + "component_types": [ + "cc.Camera" + ], + "children": [] + } + ], + "backgrounds": [ + { + "index": 44, + "name": "default", + "category": "world_background", + "full_path": "farm_scene_v3_sprite/Scene/BgLayer/default", + "parent_path": "farm_scene_v3_sprite/Scene/BgLayer", + "parent_name": "BgLayer", + "local_position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 0.0, + "y": -43.566, + "z": 0.0 + }, + "world_position_transformed": { + "x": 0.0, + "y": -43.566, + "z": 0.0 + }, + "primary_size": { + "width": 2648.0, + "height": 2924.0 + }, + "anchor": null, + "component_count": 3, + "resolved_parent_source": "_children_positive_ref" + }, + { + "index": 47, + "name": "bg", + "category": "world_background", + "full_path": "farm_scene_v3_sprite/Scene/bg", + "parent_path": "farm_scene_v3_sprite/Scene", + "parent_name": "Scene", + "local_position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 0.0, + "y": -43.566, + "z": 0.0 + }, + "world_position_transformed": { + "x": 0.0, + "y": -43.566, + "z": 0.0 + }, + "primary_size": { + "width": 4320.0, + "height": 2560.0 + }, + "anchor": null, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 48, + "name": "BgLayer", + "category": "world_background", + "full_path": "farm_scene_v3_sprite/Scene/BgLayer", + "parent_path": "farm_scene_v3_sprite/Scene", + "parent_name": "Scene", + "local_position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 0.0, + "y": -43.566, + "z": 0.0 + }, + "world_position_transformed": { + "x": 0.0, + "y": -43.566, + "z": 0.0 + }, + "primary_size": null, + "anchor": null, + "component_count": 1, + "resolved_parent_source": "_parent" + } + ], + "land_candidates": { + "source_count": 36, + "visible_count_required_by_spec": 24, + "selection_status": "blocked_missing_runtime_visible_land_rule", + "nodes": [ + { + "index": 7, + "name": "grid_0_5", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_0_5", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 0, + "y": 675, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -586.45, + "y": 383.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": -109.153, + "y": -77.8, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 8, + "name": "grid_0_4", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_0_4", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 0, + "y": 540, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -586.45, + "y": 248.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": -204.612, + "y": -125.53, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 9, + "name": "grid_1_5", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_1_5", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 135, + "y": 675, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -451.45, + "y": 383.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": -7.011, + "y": -128.871, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 10, + "name": "grid_0_3", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_0_3", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 0, + "y": 405, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -586.45, + "y": 113.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": -300.072, + "y": -173.26, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 11, + "name": "grid_1_4", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_1_4", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 135, + "y": 540, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -451.45, + "y": 248.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": -102.471, + "y": -176.601, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 12, + "name": "grid_2_5", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_2_5", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 270, + "y": 675, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -316.45, + "y": 383.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": 95.13, + "y": -179.942, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 13, + "name": "grid_0_2", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_0_2", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 0, + "y": 270, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -586.45, + "y": -21.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -395.531, + "y": -220.99, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 14, + "name": "grid_1_3", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_1_3", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 135, + "y": 405, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -451.45, + "y": 113.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": -197.93, + "y": -224.331, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 15, + "name": "grid_2_4", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_2_4", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 270, + "y": 540, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -316.45, + "y": 248.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": -0.329, + "y": -227.672, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 16, + "name": "grid_3_5", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_3_5", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 405, + "y": 675, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -181.45, + "y": 383.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": 197.272, + "y": -231.013, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 17, + "name": "grid_0_1", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_0_1", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 0, + "y": 135, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -586.45, + "y": -156.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -490.991, + "y": -268.719, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 18, + "name": "grid_1_2", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_1_2", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 135, + "y": 270, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -451.45, + "y": -21.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -293.39, + "y": -272.06, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 19, + "name": "grid_2_3", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_2_3", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 270, + "y": 405, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -316.45, + "y": 113.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": -95.789, + "y": -275.401, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 20, + "name": "grid_3_4", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_3_4", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 405, + "y": 540, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -181.45, + "y": 248.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": 101.812, + "y": -278.743, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 21, + "name": "grid_4_5", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_4_5", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 540, + "y": 675, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -46.45, + "y": 383.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": 299.413, + "y": -282.084, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 22, + "name": "grid_0_0", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_0_0", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -586.45, + "y": -291.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -586.45, + "y": -316.449, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 23, + "name": "grid_1_1", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_1_1", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 135, + "y": 135, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -451.45, + "y": -156.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -388.849, + "y": -319.79, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 24, + "name": "grid_2_2", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_2_2", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 270, + "y": 270, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -316.45, + "y": -21.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -191.248, + "y": -323.131, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 25, + "name": "grid_3_3", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_3_3", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 405, + "y": 405, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -181.45, + "y": 113.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": 6.353, + "y": -326.472, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 26, + "name": "grid_4_4", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_4_4", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 540, + "y": 540, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -46.45, + "y": 248.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": 203.954, + "y": -329.813, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 27, + "name": "grid_5_5", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_5_5", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 675, + "y": 675, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 88.55, + "y": 383.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": 401.555, + "y": -333.154, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 28, + "name": "grid_1_0", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_1_0", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 135, + "y": 0, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -451.45, + "y": -291.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -484.308, + "y": -367.52, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 29, + "name": "grid_2_1", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_2_1", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 270, + "y": 135, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -316.45, + "y": -156.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -286.707, + "y": -370.861, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 30, + "name": "grid_3_2", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_3_2", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 405, + "y": 270, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -181.45, + "y": -21.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -89.106, + "y": -374.202, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 31, + "name": "grid_4_3", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_4_3", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 540, + "y": 405, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -46.45, + "y": 113.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": 108.495, + "y": -377.543, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 32, + "name": "grid_5_4", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_5_4", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 675, + "y": 540, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 88.55, + "y": 248.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": 306.096, + "y": -380.884, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 33, + "name": "grid_2_0", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_2_0", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 270, + "y": 0, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -316.45, + "y": -291.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -382.167, + "y": -418.591, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 34, + "name": "grid_3_1", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_3_1", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 405, + "y": 135, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -181.45, + "y": -156.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -184.566, + "y": -421.932, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 35, + "name": "grid_4_2", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_4_2", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 540, + "y": 270, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -46.45, + "y": -21.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": 13.035, + "y": -425.273, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 36, + "name": "grid_5_3", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_5_3", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 675, + "y": 405, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 88.55, + "y": 113.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": 210.636, + "y": -428.614, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 37, + "name": "grid_3_0", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_3_0", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 405, + "y": 0, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -181.45, + "y": -291.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -280.025, + "y": -469.661, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 38, + "name": "grid_4_1", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_4_1", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 540, + "y": 135, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -46.45, + "y": -156.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -82.424, + "y": -473.002, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 39, + "name": "grid_5_2", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_5_2", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 675, + "y": 270, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 88.55, + "y": -21.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": 115.177, + "y": -476.344, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 40, + "name": "grid_4_0", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_4_0", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 540, + "y": 0, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -46.45, + "y": -291.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -177.884, + "y": -520.732, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 41, + "name": "grid_5_1", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_5_1", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 675, + "y": 135, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 88.55, + "y": -156.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": 19.717, + "y": -524.073, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 42, + "name": "grid_5_0", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_5_0", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 675, + "y": 0, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 88.55, + "y": -291.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -75.742, + "y": -571.803, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + } + ] + }, + "house_and_doghouse": { + "skin_cfg_default_records": [ + { + "id": 201001, + "skin_type": 1, + "skin_name": "默认小屋", + "parent_node": "Scene/FgLayer/FarmSkin/Layer2", + "position": { + "x": 347.6, + "y": 179.8 + }, + "spine_asset": "spine/v2/costume/house/201001", + "icon_asset": "gui/texture/skinDetail/img_skin_house/spriteFrame" + }, + { + "id": 205001, + "skin_type": 5, + "skin_name": "默认狗屋", + "parent_node": "Scene/FgLayer/FarmSkin", + "position": { + "x": 24.2, + "y": 223.9 + }, + "spine_asset": "spine/v2/costume/doghouse/205001", + "icon_asset": "gui/texture/skinDetail/img_skin_doghouse/spriteFrame" + } + ], + "doghouse_nodes": [ + { + "index": 45, + "name": "dogHouse", + "category": "world_decor", + "full_path": "farm_scene_v3_sprite/Scene/dogHouse", + "parent_path": "farm_scene_v3_sprite/Scene", + "parent_name": "Scene", + "local_position": { + "x": 30, + "y": 125, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 30.0, + "y": 81.434, + "z": 0.0 + }, + "world_position_transformed": { + "x": 30.0, + "y": 81.434, + "z": 0.0 + }, + "primary_size": { + "width": 150.0, + "height": 150.0 + }, + "anchor": null, + "component_count": 3, + "resolved_parent_source": "_parent" + }, + { + "index": 9, + "name": "dogHouse", + "category": "source_node", + "full_path": "farm_scene_v3/Scene/FgLayer/DogLayer/dogHouse", + "parent_path": "farm_scene_v3/Scene/FgLayer/DogLayer", + "parent_name": "DogLayer", + "local_position": { + "x": 24.266, + "y": 223.974, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 24.266, + "y": 180.408, + "z": 0.0 + }, + "world_position_transformed": { + "x": 24.266, + "y": 180.408, + "z": 0.0 + }, + "primary_size": null, + "anchor": { + "x": 0.5, + "y": 0.203 + }, + "component_count": 3, + "resolved_parent_source": "_children_positive_ref" + } + ] + }, + "bottom_menu": [ + { + "index": 6, + "name": "Menu", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu", + "parent_path": "main_ui_v2", + "parent_name": "main_ui_v2", + "local_position": { + "x": 0, + "y": -547, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 0.0, + "y": -547.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": 0.0, + "y": -547.0, + "z": 0.0 + }, + "primary_size": { + "width": 720.0, + "height": 150.0 + }, + "anchor": null, + "component_count": 5, + "resolved_parent_source": "_parent" + }, + { + "index": 8, + "name": "btn_layout", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout", + "parent_path": "main_ui_v2/Menu", + "parent_name": "Menu", + "local_position": { + "x": -360, + "y": 0, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -360.0, + "y": -547.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": -360.0, + "y": -547.0, + "z": 0.0 + }, + "primary_size": { + "width": 559.0, + "height": 100.0 + }, + "anchor": { + "x": 0, + "y": 0.5 + }, + "component_count": 3, + "resolved_parent_source": "_parent" + }, + { + "index": 10, + "name": "btn_warehouse", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_warehouse/btn_warehouse", + "parent_path": "main_ui_v2/Menu/btn_layout/Node_warehouse", + "parent_name": "Node_warehouse", + "local_position": { + "x": 0, + "y": 1, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -291.5, + "y": -546.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": -291.5, + "y": -546.0, + "z": 0.0 + }, + "primary_size": { + "width": 97.0, + "height": 117.0 + }, + "anchor": null, + "component_count": 5, + "resolved_parent_source": "_children_positive_ref" + }, + { + "index": 11, + "name": "btn_illustrated", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_illustrated/btn_illustrated", + "parent_path": "main_ui_v2/Menu/btn_layout/Node_illustrated", + "parent_name": "Node_illustrated", + "local_position": { + "x": 0, + "y": 1, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 40.0, + "y": -546.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": 40.0, + "y": -546.0, + "z": 0.0 + }, + "primary_size": { + "width": 97.0, + "height": 117.0 + }, + "anchor": null, + "component_count": 5, + "resolved_parent_source": "_children_positive_ref" + }, + { + "index": 12, + "name": "btn_farmSkin", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_farmSkin/btn_farmSkin", + "parent_path": "main_ui_v2/Menu/btn_layout/Node_farmSkin", + "parent_name": "Node_farmSkin", + "local_position": { + "x": 0, + "y": 1, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 150.5, + "y": -546.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": 150.5, + "y": -546.0, + "z": 0.0 + }, + "primary_size": { + "width": 97.0, + "height": 117.0 + }, + "anchor": null, + "component_count": 5, + "resolved_parent_source": "_children_positive_ref" + }, + { + "index": 25, + "name": "btn_shop", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_shop/btn_shop", + "parent_path": "main_ui_v2/Menu/btn_layout/Node_shop", + "parent_name": "Node_shop", + "local_position": { + "x": 0, + "y": 1, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -181.0, + "y": -546.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": -181.0, + "y": -546.0, + "z": 0.0 + }, + "primary_size": { + "width": 97.0, + "height": 117.0 + }, + "anchor": null, + "component_count": 5, + "resolved_parent_source": "_children_positive_ref" + }, + { + "index": 26, + "name": "btn_dog", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_dog/btn_dog", + "parent_path": "main_ui_v2/Menu/btn_layout/Node_dog", + "parent_name": "Node_dog", + "local_position": { + "x": 0, + "y": 1, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -70.5, + "y": -546.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": -70.5, + "y": -546.0, + "z": 0.0 + }, + "primary_size": { + "width": 97.0, + "height": 117.0 + }, + "anchor": null, + "component_count": 5, + "resolved_parent_source": "_children_positive_ref" + }, + { + "index": 49, + "name": "node_49", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/Node_Friend/node_49", + "parent_path": "main_ui_v2/Menu/Node_Friend", + "parent_name": "Node_Friend", + "local_position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 289.053, + "y": -538.676, + "z": 0.0 + }, + "world_position_transformed": { + "x": 289.053, + "y": -538.676, + "z": 0.0 + }, + "primary_size": null, + "anchor": null, + "component_count": 0, + "resolved_parent_source": "_children_positive_ref" + }, + { + "index": 51, + "name": "node_51", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/Node_task/node_51", + "parent_path": "main_ui_v2/Menu/Node_task", + "parent_name": "Node_task", + "local_position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -349.0, + "y": -424.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": -349.0, + "y": -424.0, + "z": 0.0 + }, + "primary_size": null, + "anchor": null, + "component_count": 0, + "resolved_parent_source": "_children_positive_ref" + }, + { + "index": 68, + "name": "Node_warehouse", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_warehouse", + "parent_path": "main_ui_v2/Menu/btn_layout", + "parent_name": "btn_layout", + "local_position": { + "x": 68.5, + "y": 0, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -291.5, + "y": -547.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": -291.5, + "y": -547.0, + "z": 0.0 + }, + "primary_size": { + "width": 97.0, + "height": 100.0 + }, + "anchor": null, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 69, + "name": "Node_shop", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_shop", + "parent_path": "main_ui_v2/Menu/btn_layout", + "parent_name": "btn_layout", + "local_position": { + "x": 179, + "y": 0, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -181.0, + "y": -547.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": -181.0, + "y": -547.0, + "z": 0.0 + }, + "primary_size": { + "width": 97.0, + "height": 100.0 + }, + "anchor": null, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 70, + "name": "Node_dog", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_dog", + "parent_path": "main_ui_v2/Menu/btn_layout", + "parent_name": "btn_layout", + "local_position": { + "x": 289.5, + "y": 0, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -70.5, + "y": -547.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": -70.5, + "y": -547.0, + "z": 0.0 + }, + "primary_size": { + "width": 97.0, + "height": 100.0 + }, + "anchor": null, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 71, + "name": "Node_illustrated", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_illustrated", + "parent_path": "main_ui_v2/Menu/btn_layout", + "parent_name": "btn_layout", + "local_position": { + "x": 400, + "y": 0, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 40.0, + "y": -547.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": 40.0, + "y": -547.0, + "z": 0.0 + }, + "primary_size": { + "width": 97.0, + "height": 100.0 + }, + "anchor": null, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 72, + "name": "Node_farmSkin", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_farmSkin", + "parent_path": "main_ui_v2/Menu/btn_layout", + "parent_name": "btn_layout", + "local_position": { + "x": 510.5, + "y": 0, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 150.5, + "y": -547.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": 150.5, + "y": -547.0, + "z": 0.0 + }, + "primary_size": { + "width": 97.0, + "height": 100.0 + }, + "anchor": null, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 73, + "name": "Node_Friend", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/Node_Friend", + "parent_path": "main_ui_v2/Menu", + "parent_name": "Menu", + "local_position": { + "x": 289.053, + "y": 8.324, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 289.053, + "y": -538.676, + "z": 0.0 + }, + "world_position_transformed": { + "x": 289.053, + "y": -538.676, + "z": 0.0 + }, + "primary_size": null, + "anchor": null, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 74, + "name": "Node_task", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/Node_task", + "parent_path": "main_ui_v2/Menu", + "parent_name": "Menu", + "local_position": { + "x": -349, + "y": 123, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -349.0, + "y": -424.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": -349.0, + "y": -424.0, + "z": 0.0 + }, + "primary_size": { + "width": 400.0, + "height": 114.0 + }, + "anchor": { + "x": 0, + "y": 0.5 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 76, + "name": "ver", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/ver", + "parent_path": "main_ui_v2/Menu", + "parent_name": "Menu", + "local_position": { + "x": 309.732, + "y": -67.798, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 309.732, + "y": -614.798, + "z": 0.0 + }, + "world_position_transformed": { + "x": 309.732, + "y": -614.798, + "z": 0.0 + }, + "primary_size": { + "width": 49.032, + "height": 50.4 + }, + "anchor": { + "x": 1, + "y": 0.5 + }, + "component_count": 4, + "resolved_parent_source": "_parent" + }, + { + "index": 132, + "name": "txt", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_warehouse/btn_warehouse/txt", + "parent_path": "main_ui_v2/Menu/btn_layout/Node_warehouse/btn_warehouse", + "parent_name": "btn_warehouse", + "local_position": { + "x": 0, + "y": -24.519, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -291.5, + "y": -570.519, + "z": 0.0 + }, + "world_position_transformed": { + "x": -291.5, + "y": -570.519, + "z": 0.0 + }, + "primary_size": { + "width": 51.983, + "height": 50.4 + }, + "anchor": null, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 133, + "name": "node_133", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_warehouse/btn_warehouse/node_133", + "parent_path": "main_ui_v2/Menu/btn_layout/Node_warehouse/btn_warehouse", + "parent_name": "btn_warehouse", + "local_position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -291.5, + "y": -546.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": -291.5, + "y": -546.0, + "z": 0.0 + }, + "primary_size": null, + "anchor": null, + "component_count": 0, + "resolved_parent_source": "_parent" + }, + { + "index": 134, + "name": "txt-001", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_shop/btn_shop/txt-001", + "parent_path": "main_ui_v2/Menu/btn_layout/Node_shop/btn_shop", + "parent_name": "btn_shop", + "local_position": { + "x": 0, + "y": -24.519, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -181.0, + "y": -570.519, + "z": 0.0 + }, + "world_position_transformed": { + "x": -181.0, + "y": -570.519, + "z": 0.0 + }, + "primary_size": { + "width": 51.983, + "height": 50.4 + }, + "anchor": null, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 135, + "name": "txt-002", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_dog/btn_dog/txt-002", + "parent_path": "main_ui_v2/Menu/btn_layout/Node_dog/btn_dog", + "parent_name": "btn_dog", + "local_position": { + "x": 0, + "y": -24.519, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -70.5, + "y": -570.519, + "z": 0.0 + }, + "world_position_transformed": { + "x": -70.5, + "y": -570.519, + "z": 0.0 + }, + "primary_size": { + "width": 51.983, + "height": 50.4 + }, + "anchor": null, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 136, + "name": "txt-001", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_illustrated/btn_illustrated/txt-001", + "parent_path": "main_ui_v2/Menu/btn_layout/Node_illustrated/btn_illustrated", + "parent_name": "btn_illustrated", + "local_position": { + "x": 0, + "y": -24.519, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 40.0, + "y": -570.519, + "z": 0.0 + }, + "world_position_transformed": { + "x": 40.0, + "y": -570.519, + "z": 0.0 + }, + "primary_size": { + "width": 51.983, + "height": 50.4 + }, + "anchor": null, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 137, + "name": "node_137", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_illustrated/btn_illustrated/node_137", + "parent_path": "main_ui_v2/Menu/btn_layout/Node_illustrated/btn_illustrated", + "parent_name": "btn_illustrated", + "local_position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 40.0, + "y": -546.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": 40.0, + "y": -546.0, + "z": 0.0 + }, + "primary_size": null, + "anchor": null, + "component_count": 0, + "resolved_parent_source": "_parent" + }, + { + "index": 139, + "name": "txt-001", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_farmSkin/btn_farmSkin/txt-001", + "parent_path": "main_ui_v2/Menu/btn_layout/Node_farmSkin/btn_farmSkin", + "parent_name": "btn_farmSkin", + "local_position": { + "x": 0, + "y": -24.519, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 150.5, + "y": -570.519, + "z": 0.0 + }, + "world_position_transformed": { + "x": 150.5, + "y": -570.519, + "z": 0.0 + }, + "primary_size": { + "width": 51.983, + "height": 50.4 + }, + "anchor": null, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 140, + "name": "node_140", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_farmSkin/btn_farmSkin/node_140", + "parent_path": "main_ui_v2/Menu/btn_layout/Node_farmSkin/btn_farmSkin", + "parent_name": "btn_farmSkin", + "local_position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 150.5, + "y": -546.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": 150.5, + "y": -546.0, + "z": 0.0 + }, + "primary_size": null, + "anchor": null, + "component_count": 0, + "resolved_parent_source": "_parent" + } + ] + }, + "blockers": [ + { + "id": "visible_land_count", + "status": "blocked", + "detail": "Static source prefab has 36 visual grid cells. The first-milestone spec requires 24 visible land plots, but the runtime rule selecting those 24 is not yet decoded." + }, + { + "id": "background_texture_binding", + "status": "blocked", + "detail": "Background ImageAsset entries are located, but final texture/SpriteFrame binding for Cocos 4 import is not yet resolved from metadata." + }, + { + "id": "cocos4_cli_build", + "status": "blocked", + "detail": "Cocos 4 alpha CLI reaches engine init, then fails because node_modules/gl/build/Release/webgl.node requires NODE_MODULE_VERSION 140 while local Node 24 provides 137." + } + ] +} diff --git a/assets/scenes/main_stage1.source_scene.json.meta b/assets/scenes/main_stage1.source_scene.json.meta new file mode 100644 index 0000000..203d423 --- /dev/null +++ b/assets/scenes/main_stage1.source_scene.json.meta @@ -0,0 +1,11 @@ +{ + "ver": "2.0.1", + "importer": "json", + "imported": true, + "uuid": "46aa1585-38e2-47f7-a4e5-ad5279b2c9be", + "files": [ + ".json" + ], + "subMetas": {}, + "userData": {} +} diff --git a/assets/scripts.meta b/assets/scripts.meta new file mode 100644 index 0000000..12327c8 --- /dev/null +++ b/assets/scripts.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "3047f5ff-1705-489f-8f88-d64e2eb33789", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/scripts/.gitkeep b/assets/scripts/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/assets/scripts/mock.meta b/assets/scripts/mock.meta new file mode 100644 index 0000000..cdb7dc1 --- /dev/null +++ b/assets/scripts/mock.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "31121ddd-5696-4588-b960-d64ac181dbfe", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/scripts/mock/.gitkeep b/assets/scripts/mock/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/assets/spine.meta b/assets/spine.meta new file mode 100644 index 0000000..da72f2e --- /dev/null +++ b/assets/spine.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "fb2e6ac5-f60e-4dda-811d-e0da00a80779", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/spine/.gitkeep b/assets/spine/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/assets/textures.meta b/assets/textures.meta new file mode 100644 index 0000000..f9b25d8 --- /dev/null +++ b/assets/textures.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "5e3eab9f-16d5-457d-bd69-25af825af2f1", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/textures/.gitkeep b/assets/textures/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/docs/cocos4_reconstruction_core.md b/docs/cocos4_reconstruction_core.md new file mode 100644 index 0000000..67cc757 --- /dev/null +++ b/docs/cocos4_reconstruction_core.md @@ -0,0 +1,27 @@ +# Cocos 4 Reconstruction Core + +This project rebuilds QQ Farm from the extracted original Cocos package using Cocos 4.0 and the Cocos 4 CLI. + +The source package is `/Users/hy/Documents/dev/qq_farm_godot_rebuild_20260616`. + +Rules: + +- Original extracted Cocos data is the layout authority. +- Godot output and screenshot-derived coordinates are not allowed. +- Every module pass must export source evidence, generate a diagnostic Canvas preview, attempt Cocos verification, produce an ROI report, and update rebuild docs. +- Runtime mocks may change visible state, but must not change recovered layout. + +First milestone scope: + +- `Canvas` +- main `Camera` +- root `scene` +- background layers +- visible land plots +- house +- doghouse +- bottom menu buttons + +Known first-stage blocker: + +- Static Cocos source currently exposes 36 visual land cells. The required 24 visible plots need runtime selection evidence before final Cocos node generation. diff --git a/docs/rebuild_list.md b/docs/rebuild_list.md new file mode 100644 index 0000000..031e70d --- /dev/null +++ b/docs/rebuild_list.md @@ -0,0 +1,17 @@ +# Rebuild List + +## First Stage + +- [x] Migrate project metadata to Cocos 4.0 CLI format. +- [x] Remove old Cocos Creator 3.8 project files. +- [x] Export first-stage source evidence into `source_export/`. +- [x] Generate diagnostic Canvas preview from exported evidence. +- [x] Generate first-stage Cocos-facing intermediate scene data. +- [x] Write ROI report. +- [x] Run Cocos 4 CLI verification and record current blocker. + +## Blocked + +- [ ] Decode runtime rule for selecting 24 visible land plots from 36 static visual grid cells. +- [ ] Resolve final Cocos 4 texture/SpriteFrame import bindings for background, land, house, doghouse, and bottom menu visuals. +- [ ] Fix Cocos 4 alpha CLI runtime ABI mismatch before producing real Cocos build screenshots. diff --git a/docs/rebuild_log.md b/docs/rebuild_log.md new file mode 100644 index 0000000..ac7ab40 --- /dev/null +++ b/docs/rebuild_log.md @@ -0,0 +1,34 @@ +# Rebuild Log + +## 2026-06-19 First Stage Start + +Commands run: + +```bash +python3 tools/extract_source_evidence.py +python3 tools/generate_cocos4_project.py +python3 tools/render_canvas_preview.py +python3 tools/compare_visual_rois.py +python3 tools/verify_cocos4_project.py +``` + +Outputs: + +- `source_export/source_nodes.json` +- `source_export/source_prefabs.json` +- `source_export/source_assets.json` +- `source_export/source_spriteframes.json` +- `source_export/source_spine.json` +- `source_export/source_animations.json` +- `source_export/source_runtime_notes.md` +- `source_export/source_blockers.md` +- `assets/scenes/main_stage1.source_scene.json` +- `artifacts/canvas_preview/stage1_source_preview.png` +- `artifacts/canvas_preview/stage1_source_preview_report.json` +- `artifacts/visual_compare/stage1_roi_report.json` +- `artifacts/cocos_capture/stage1_cocos_verify.json` + +Verification result: + +- Source extraction and diagnostic preview pass. +- Cocos 4 CLI build is blocked by `webgl.node` ABI mismatch. diff --git a/docs/rebuild_notes.md b/docs/rebuild_notes.md new file mode 100644 index 0000000..7ae23d4 --- /dev/null +++ b/docs/rebuild_notes.md @@ -0,0 +1,29 @@ +# Rebuild Notes + +## First Stage Source Evidence + +Used source inventory: + +- `/Users/hy/Documents/dev/qq_farm_godot_rebuild_20260616/source_first/out/main_scene_elements.json` + +Authoritative source files referenced by the inventory: + +- Startup scene: `assets/main/import/ee/ee605885-16e1-4a63-bf4b-d9663c5764b2.2fd9c.json` +- World visual prefab: `downloads/raw/remote/extraRes/import/0a/0ada99ac7.403b3.json` +- World mount prefab: `downloads/raw/remote/extraRes/import/0e/0ec3b3100.19268.json` +- Main UI prefab: `downloads/raw/remote/extraRes/import/0d/0d7027270.4bc05.json` +- Skin config: `downloads/raw/remote/delayRes/import/2d/2d201122-b5a7-4181-8f60-d67a399ec757.edfbe.json` + +Recovered evidence: + +- Startup root, `scene`, `ui`, main `Camera`, and `uiCamera`. +- Background source nodes from `farm_scene_v3_sprite`. +- 36 static land cell candidates under `Scaled/Rotate/GridOrigin`. +- Default house and doghouse records from `SkinCfg`. +- Bottom menu node chain under `main_ui_v2/Menu`. + +Not recovered yet: + +- Runtime rule selecting 24 visible land plots. +- Final Cocos 4 texture and SpriteFrame bindings. +- Cocos-produced screenshot, because the local Cocos 4 alpha CLI build is blocked by native ABI mismatch. diff --git a/source_export/source_animations.json b/source_export/source_animations.json new file mode 100644 index 0000000..3ebb96a --- /dev/null +++ b/source_export/source_animations.json @@ -0,0 +1,93 @@ +{ + "status": "not_in_first_stage_scope", + "animation_clips": [ + { + "id": "one_click_loop", + "asset_path": "gui/anim/OneClickOperationTools/anim_ui_loop", + "index": 118, + "role": "animation_clip", + "bundle": "extraRes", + "mode": "import", + "pack_key": null, + "pack_position": null, + "source_file": "downloads/raw/remote/extraRes/import/17/17c93ab6-b487-40b7-9a81-b787931b235f.831f6.json" + }, + { + "id": "one_click_click_effect", + "asset_path": "gui/anim/OneClickOperationTools/anim_ui_clickEffect1", + "index": 342, + "role": "animation_clip", + "bundle": "extraRes", + "mode": "import", + "pack_key": null, + "pack_position": null, + "source_file": "downloads/raw/remote/extraRes/import/40/40cc1e7e-d851-4ec8-ac89-836857c9fbf8.9b8b6.json" + }, + { + "id": "one_click_click", + "asset_path": "gui/anim/OneClickOperationTools/anim_ui_click", + "index": 1029, + "role": "animation_clip", + "bundle": "extraRes", + "mode": "import", + "pack_key": null, + "pack_position": null, + "source_file": "downloads/raw/remote/extraRes/import/c1/c1f26263-07c4-4875-b778-b8c86889d85d.159c2.json" + }, + { + "id": "one_click_into", + "asset_path": "gui/anim/OneClickOperationTools/anim_ui_into", + "index": 1314, + "role": "animation_clip", + "bundle": "extraRes", + "mode": "import", + "pack_key": null, + "pack_position": null, + "source_file": "downloads/raw/remote/extraRes/import/f6/f6bbd33f-5b38-4b44-abcd-b338d38a0da8.3383f.json" + }, + { + "id": "task_book_light_loop", + "asset_path": "gui/anim/btn_task/book_light_loop", + "index": 161, + "role": "animation_clip", + "bundle": "extraRes", + "mode": "import", + "pack_key": null, + "pack_position": null, + "source_file": "downloads/raw/remote/extraRes/import/1f/1ff9a8a2-2819-445d-9c7c-aeb7677551f0.83805.json" + }, + { + "id": "task_bg_light_loop", + "asset_path": "gui/anim/btn_task/bg_light_loop", + "index": 407, + "role": "animation_clip", + "bundle": "extraRes", + "mode": "import", + "pack_key": null, + "pack_position": null, + "source_file": "downloads/raw/remote/extraRes/import/4b/4b9a94ba-9ef8-470a-baf6-d2b34a511480.1facb.json" + }, + { + "id": "task_into", + "asset_path": "gui/anim/btn_task/ui_anim_into", + "index": 715, + "role": "animation_clip", + "bundle": "extraRes", + "mode": "import", + "pack_key": null, + "pack_position": null, + "source_file": "downloads/raw/remote/extraRes/import/8a/8a6b50ad-fbf9-4408-b58f-94b5b03f9226.aa450.json" + }, + { + "id": "task_out", + "asset_path": "gui/anim/btn_task/ui_anim_out", + "index": 1301, + "role": "animation_clip", + "bundle": "extraRes", + "mode": "import", + "pack_key": null, + "pack_position": null, + "source_file": "downloads/raw/remote/extraRes/import/f4/f4e1c3a2-7a53-4e46-a645-71c6e3bb4e53.618a6.json" + } + ] +} diff --git a/source_export/source_assets.json b/source_export/source_assets.json new file mode 100644 index 0000000..7f25fc3 --- /dev/null +++ b/source_export/source_assets.json @@ -0,0 +1,261 @@ +{ + "backgrounds": [ + { + "id": "scene_bg", + "asset_path": "scene/bg", + "index": 13, + "role": "large_scene_background_texture", + "bundle": "delayRes", + "mode": "import", + "pack_key": null, + "pack_position": null, + "source_file": "downloads/raw/remote/delayRes/import/14/146c722a-2371-420b-9958-6ff8ca81ff57.19fac.json" + }, + { + "id": "scene_fg", + "asset_path": "scene/fg", + "index": 172, + "role": "large_scene_foreground_texture", + "bundle": "delayRes", + "mode": "import", + "pack_key": null, + "pack_position": null, + "source_file": "downloads/raw/remote/delayRes/import/df/df3ba319-262f-49a8-9f74-afdc97dc0ab1.19fac.json" + }, + { + "id": "model_scene_bg", + "asset_path": "model/v3/scene/bg", + "index": 1152, + "role": "small_scene_background_fallback", + "bundle": "extraRes", + "mode": "import", + "pack_key": null, + "pack_position": null, + "source_file": "downloads/raw/remote/extraRes/import/db/dbe047f4-d92a-4abe-b7dd-c9fb7b784577.19fac.json" + }, + { + "id": "model_scene_fg", + "asset_path": "model/v3/scene/fg", + "index": 1289, + "role": "small_scene_foreground_fallback", + "bundle": "extraRes", + "mode": "import", + "pack_key": null, + "pack_position": null, + "source_file": "downloads/raw/remote/extraRes/import/f3/f3826219-91f1-43b2-9fa7-2c504543aee0.19fac.json" + } + ], + "config_assets": [ + { + "asset_path": "config/SkinCfg", + "index": 323, + "role": "skin_and_decor_runtime_config", + "bundle": "delayRes", + "mode": "import", + "pack_key": null, + "pack_position": null, + "source_file": "downloads/raw/remote/delayRes/import/2d/2d201122-b5a7-4181-8f60-d67a399ec757.edfbe.json", + "id": "skin_cfg", + "json_asset_name": "SkinCfg", + "record_count": 51, + "default_records": [ + { + "id": 201001, + "skin_type": 1, + "skin_name": "默认小屋", + "parent_node": "Scene/FgLayer/FarmSkin/Layer2", + "position": { + "x": 347.6, + "y": 179.8 + }, + "spine_asset": "spine/v2/costume/house/201001", + "icon_asset": "gui/texture/skinDetail/img_skin_house/spriteFrame" + }, + { + "id": 202001, + "skin_type": 2, + "skin_name": "默认木牌", + "parent_node": "Scene/FgLayer/Board", + "position": { + "x": -259.1, + "y": 104.1 + }, + "spine_asset": "spine/v2/costume/brand/202001", + "icon_asset": "gui/texture/skinDetail/img_skin_board/spriteFrame" + }, + { + "id": 203001, + "skin_type": 3, + "skin_name": "默认栅栏", + "parent_node": "Scene/FgLayer/FarmSkin/Layer3", + "position": { + "x": -185.4, + "y": -280.5 + }, + "spine_asset": "spine/v2/costume/fence/203001", + "icon_asset": "gui/texture/skinDetail/img_skin_barrier/spriteFrame" + }, + { + "id": 204001, + "skin_type": 4, + "skin_name": "空", + "parent_node": "Scene/FgLayer/Tower", + "position": { + "x": -454, + "y": 28.6 + }, + "spine_asset": null, + "icon_asset": null + }, + { + "id": 205001, + "skin_type": 5, + "skin_name": "默认狗屋", + "parent_node": "Scene/FgLayer/FarmSkin", + "position": { + "x": 24.2, + "y": 223.9 + }, + "spine_asset": "spine/v2/costume/doghouse/205001", + "icon_asset": "gui/texture/skinDetail/img_skin_doghouse/spriteFrame" + }, + { + "id": 206001, + "skin_type": 6, + "skin_name": "默认仓库", + "parent_node": "Scene/FgLayer/Storage", + "position": { + "x": -770.8, + "y": -28.6 + }, + "spine_asset": "spine/v2/costume/warehouse/206001", + "icon_asset": "gui/texture/skinDetail/img_skin_warehouse/spriteFrame" + }, + { + "id": 207001, + "skin_type": 7, + "skin_name": "默认街道", + "parent_node": "Scene/FgLayer/FarmSkin/Layer1", + "position": { + "x": 76.6, + "y": -193.5 + }, + "spine_asset": "spine/v2/costume/load/207001", + "icon_asset": "gui/texture/skinDetail/img_skin_road/spriteFrame" + }, + { + "id": 208001, + "skin_type": 8, + "skin_name": "默认围栏", + "parent_node": "Scene/FgLayer/FarmSkin/Layer1", + "position": { + "x": -629, + "y": 163.8 + }, + "spine_asset": "spine/v2/costume/fence_2/208001", + "icon_asset": "gui/texture/skinDetail/img_skin_fence/spriteFrame" + } + ] + }, + { + "asset_path": "config/SkinTypeCfg", + "index": 453, + "role": "skin_type_runtime_config", + "bundle": "delayRes", + "mode": "import", + "pack_key": null, + "pack_position": null, + "source_file": "downloads/raw/remote/delayRes/import/62/6276caa6-6ab0-472c-8a57-e32ce1dd5de2.f1c60.json", + "id": "skin_type_cfg", + "json_asset_name": "SkinTypeCfg", + "record_count": 8 + }, + { + "asset_path": "config/Plant", + "index": 422, + "role": "crop_runtime_config", + "bundle": "delayRes", + "mode": "import", + "pack_key": null, + "pack_position": null, + "source_file": "downloads/raw/remote/delayRes/import/52/524bdf1d-e595-4a42-941c-556b06fdbb4b.bce5d.json", + "id": "plant_cfg", + "json_asset_name": "Plant", + "record_count": 226, + "sample_records": [ + { + "id": 2020002, + "name": "白萝卜", + "level": null, + "stage_asset": null + }, + { + "id": 1020002, + "name": "白萝卜", + "level": null, + "stage_asset": null + }, + { + "id": 1020003, + "name": "胡萝卜", + "level": null, + "stage_asset": null + }, + { + "id": 1020059, + "name": "大白菜", + "level": null, + "stage_asset": null + }, + { + "id": 1020065, + "name": "大蒜", + "level": null, + "stage_asset": null + }, + { + "id": 1020064, + "name": "大葱", + "level": null, + "stage_asset": null + }, + { + "id": 1020060, + "name": "水稻", + "level": null, + "stage_asset": null + }, + { + "id": 1020061, + "name": "小麦", + "level": null, + "stage_asset": null + }, + { + "id": 1020004, + "name": "玉米", + "level": null, + "stage_asset": null + }, + { + "id": 1020066, + "name": "鲜姜", + "level": null, + "stage_asset": null + }, + { + "id": 1020005, + "name": "土豆", + "level": null, + "stage_asset": null + }, + { + "id": 1020071, + "name": "小白菜", + "level": null, + "stage_asset": null + } + ] + } + ] +} diff --git a/source_export/source_blockers.md b/source_export/source_blockers.md new file mode 100644 index 0000000..40ab321 --- /dev/null +++ b/source_export/source_blockers.md @@ -0,0 +1,5 @@ +# Source Blockers + +- `visible_land_count`: Static source prefab has 36 visual grid cells. The first-milestone spec requires 24 visible land plots, but the runtime rule selecting those 24 is not yet decoded. +- `background_texture_binding`: Background ImageAsset entries are located, but final texture/SpriteFrame binding for Cocos 4 import is not yet resolved from metadata. +- `cocos4_cli_build`: Cocos 4 alpha CLI reaches engine init, then fails because node_modules/gl/build/Release/webgl.node requires NODE_MODULE_VERSION 140 while local Node 24 provides 137. diff --git a/source_export/source_nodes.json b/source_export/source_nodes.json new file mode 100644 index 0000000..2fab030 --- /dev/null +++ b/source_export/source_nodes.json @@ -0,0 +1,3328 @@ +{ + "module": "main_scene_first_milestone", + "generated_at": "2026-06-19T09:41:41.461559+00:00", + "source_inventory": "/Users/hy/Documents/dev/qq_farm_godot_rebuild_20260616/source_first/out/main_scene_elements.json", + "design_resolution": { + "width": 720, + "height": 1280 + }, + "scope": [ + "Canvas", + "main Camera", + "root scene", + "background layers", + "visible land plots", + "house", + "doghouse", + "bottom menu buttons" + ], + "startup_scene": { + "id": "startup_scene", + "source": { + "asset_path": "db://assets/startup.scene", + "index": 1, + "bundle": "main", + "mode": "import", + "source_file": "source_raw/6A3BB7D3D4349E2050E7B701AAD51600_726750140f8084ebcbe5190fe9c198c9/assets/main/import/ee/ee605885-16e1-4a63-bf4b-d9663c5764b2.2fd9c.json" + }, + "node_count": 5, + "component_counts": { + "612d2P/T/VGz7Fm4Jof20+e": 1, + "cc.UITransform": 4, + "cc.Canvas": 1, + "cc.Widget": 3, + "cc.Camera": 2, + "95c7akihY5GNYe9/Wanw0Ab": 1 + }, + "roots": [ + 1 + ], + "elements": [ + { + "index": 1, + "name": "root", + "full_path": "root", + "position": { + "x": 360, + "y": 640, + "z": 0 + }, + "content_size": { + "width": 720, + "height": 1280 + }, + "component_types": [ + "612d2P/T/VGz7Fm4Jof20+e", + "cc.UITransform", + "cc.Canvas", + "cc.Widget" + ], + "children": [ + 2, + 3 + ] + }, + { + "index": 2, + "name": "scene", + "full_path": "root/scene", + "position": { + "x": 0, + "y": 0, + "z": 0 + }, + "content_size": { + "width": 3320, + "height": 2560 + }, + "component_types": [ + "cc.UITransform", + "cc.Widget" + ], + "children": [ + 4 + ] + }, + { + "index": 3, + "name": "ui", + "full_path": "root/ui", + "position": { + "x": 0, + "y": 0, + "z": 0 + }, + "content_size": { + "width": 720, + "height": 1280 + }, + "component_types": [ + "cc.UITransform", + "cc.Widget" + ], + "children": [ + 6 + ] + }, + { + "index": 4, + "name": "Camera", + "full_path": "root/scene/Camera", + "position": { + "x": 0, + "y": 0, + "z": 1000 + }, + "content_size": null, + "component_types": [ + "cc.Camera", + "cc.UITransform", + "95c7akihY5GNYe9/Wanw0Ab" + ], + "children": [] + }, + { + "index": 6, + "name": "uiCamera", + "full_path": "root/ui/uiCamera", + "position": { + "x": 0, + "y": 0, + "z": 1000 + }, + "content_size": null, + "component_types": [ + "cc.Camera" + ], + "children": [] + } + ] + }, + "prefab_sources": { + "farm_scene_v3_sprite": { + "asset_path": "scene/farm_scene_v3_sprite", + "index": 1635, + "role": "world_visual_prefab", + "bundle": "extraRes", + "mode": "pack", + "pack_key": "0ada99ac7", + "pack_position": 0, + "source_file": "downloads/raw/remote/extraRes/import/0a/0ada99ac7.403b3.json" + }, + "farm_scene_v3": { + "asset_path": "scene/farm_scene_v3", + "index": 3914, + "role": "world_mount_and_logic_prefab", + "bundle": "extraRes", + "mode": "pack", + "pack_key": "0ec3b3100", + "pack_position": 1, + "source_file": "downloads/raw/remote/extraRes/import/0e/0ec3b3100.19268.json" + }, + "main_ui_v2": { + "asset_path": "gui/prefab/main_ui_v2", + "index": 2487, + "role": "main_ui_prefab", + "bundle": "extraRes", + "mode": "pack", + "pack_key": "0d7027270", + "pack_position": 2, + "source_file": "downloads/raw/remote/extraRes/import/0d/0d7027270.4bc05.json" + } + }, + "canvas_and_cameras": [ + { + "index": 1, + "name": "root", + "full_path": "root", + "position": { + "x": 360, + "y": 640, + "z": 0 + }, + "content_size": { + "width": 720, + "height": 1280 + }, + "component_types": [ + "612d2P/T/VGz7Fm4Jof20+e", + "cc.UITransform", + "cc.Canvas", + "cc.Widget" + ], + "children": [ + 2, + 3 + ] + }, + { + "index": 2, + "name": "scene", + "full_path": "root/scene", + "position": { + "x": 0, + "y": 0, + "z": 0 + }, + "content_size": { + "width": 3320, + "height": 2560 + }, + "component_types": [ + "cc.UITransform", + "cc.Widget" + ], + "children": [ + 4 + ] + }, + { + "index": 3, + "name": "ui", + "full_path": "root/ui", + "position": { + "x": 0, + "y": 0, + "z": 0 + }, + "content_size": { + "width": 720, + "height": 1280 + }, + "component_types": [ + "cc.UITransform", + "cc.Widget" + ], + "children": [ + 6 + ] + }, + { + "index": 4, + "name": "Camera", + "full_path": "root/scene/Camera", + "position": { + "x": 0, + "y": 0, + "z": 1000 + }, + "content_size": null, + "component_types": [ + "cc.Camera", + "cc.UITransform", + "95c7akihY5GNYe9/Wanw0Ab" + ], + "children": [] + }, + { + "index": 6, + "name": "uiCamera", + "full_path": "root/ui/uiCamera", + "position": { + "x": 0, + "y": 0, + "z": 1000 + }, + "content_size": null, + "component_types": [ + "cc.Camera" + ], + "children": [] + } + ], + "background_nodes": [ + { + "index": 44, + "name": "default", + "category": "world_background", + "full_path": "farm_scene_v3_sprite/Scene/BgLayer/default", + "parent_path": "farm_scene_v3_sprite/Scene/BgLayer", + "parent_name": "BgLayer", + "local_position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 0.0, + "y": -43.566, + "z": 0.0 + }, + "world_position_transformed": { + "x": 0.0, + "y": -43.566, + "z": 0.0 + }, + "primary_size": { + "width": 2648.0, + "height": 2924.0 + }, + "anchor": null, + "component_count": 3, + "resolved_parent_source": "_children_positive_ref" + }, + { + "index": 47, + "name": "bg", + "category": "world_background", + "full_path": "farm_scene_v3_sprite/Scene/bg", + "parent_path": "farm_scene_v3_sprite/Scene", + "parent_name": "Scene", + "local_position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 0.0, + "y": -43.566, + "z": 0.0 + }, + "world_position_transformed": { + "x": 0.0, + "y": -43.566, + "z": 0.0 + }, + "primary_size": { + "width": 4320.0, + "height": 2560.0 + }, + "anchor": null, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 48, + "name": "BgLayer", + "category": "world_background", + "full_path": "farm_scene_v3_sprite/Scene/BgLayer", + "parent_path": "farm_scene_v3_sprite/Scene", + "parent_name": "Scene", + "local_position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 0.0, + "y": -43.566, + "z": 0.0 + }, + "world_position_transformed": { + "x": 0.0, + "y": -43.566, + "z": 0.0 + }, + "primary_size": null, + "anchor": null, + "component_count": 1, + "resolved_parent_source": "_parent" + } + ], + "land_candidates": { + "source_count": 36, + "visible_count_required_by_spec": 24, + "selection_status": "blocked_missing_runtime_visible_land_rule", + "nodes": [ + { + "index": 7, + "name": "grid_0_5", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_0_5", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 0, + "y": 675, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -586.45, + "y": 383.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": -109.153, + "y": -77.8, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 8, + "name": "grid_0_4", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_0_4", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 0, + "y": 540, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -586.45, + "y": 248.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": -204.612, + "y": -125.53, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 9, + "name": "grid_1_5", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_1_5", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 135, + "y": 675, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -451.45, + "y": 383.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": -7.011, + "y": -128.871, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 10, + "name": "grid_0_3", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_0_3", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 0, + "y": 405, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -586.45, + "y": 113.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": -300.072, + "y": -173.26, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 11, + "name": "grid_1_4", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_1_4", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 135, + "y": 540, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -451.45, + "y": 248.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": -102.471, + "y": -176.601, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 12, + "name": "grid_2_5", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_2_5", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 270, + "y": 675, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -316.45, + "y": 383.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": 95.13, + "y": -179.942, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 13, + "name": "grid_0_2", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_0_2", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 0, + "y": 270, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -586.45, + "y": -21.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -395.531, + "y": -220.99, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 14, + "name": "grid_1_3", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_1_3", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 135, + "y": 405, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -451.45, + "y": 113.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": -197.93, + "y": -224.331, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 15, + "name": "grid_2_4", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_2_4", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 270, + "y": 540, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -316.45, + "y": 248.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": -0.329, + "y": -227.672, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 16, + "name": "grid_3_5", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_3_5", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 405, + "y": 675, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -181.45, + "y": 383.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": 197.272, + "y": -231.013, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 17, + "name": "grid_0_1", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_0_1", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 0, + "y": 135, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -586.45, + "y": -156.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -490.991, + "y": -268.719, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 18, + "name": "grid_1_2", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_1_2", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 135, + "y": 270, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -451.45, + "y": -21.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -293.39, + "y": -272.06, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 19, + "name": "grid_2_3", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_2_3", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 270, + "y": 405, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -316.45, + "y": 113.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": -95.789, + "y": -275.401, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 20, + "name": "grid_3_4", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_3_4", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 405, + "y": 540, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -181.45, + "y": 248.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": 101.812, + "y": -278.743, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 21, + "name": "grid_4_5", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_4_5", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 540, + "y": 675, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -46.45, + "y": 383.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": 299.413, + "y": -282.084, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 22, + "name": "grid_0_0", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_0_0", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -586.45, + "y": -291.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -586.45, + "y": -316.449, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 23, + "name": "grid_1_1", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_1_1", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 135, + "y": 135, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -451.45, + "y": -156.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -388.849, + "y": -319.79, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 24, + "name": "grid_2_2", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_2_2", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 270, + "y": 270, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -316.45, + "y": -21.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -191.248, + "y": -323.131, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 25, + "name": "grid_3_3", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_3_3", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 405, + "y": 405, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -181.45, + "y": 113.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": 6.353, + "y": -326.472, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 26, + "name": "grid_4_4", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_4_4", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 540, + "y": 540, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -46.45, + "y": 248.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": 203.954, + "y": -329.813, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 27, + "name": "grid_5_5", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_5_5", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 675, + "y": 675, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 88.55, + "y": 383.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": 401.555, + "y": -333.154, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 28, + "name": "grid_1_0", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_1_0", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 135, + "y": 0, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -451.45, + "y": -291.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -484.308, + "y": -367.52, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 29, + "name": "grid_2_1", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_2_1", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 270, + "y": 135, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -316.45, + "y": -156.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -286.707, + "y": -370.861, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 30, + "name": "grid_3_2", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_3_2", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 405, + "y": 270, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -181.45, + "y": -21.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -89.106, + "y": -374.202, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 31, + "name": "grid_4_3", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_4_3", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 540, + "y": 405, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -46.45, + "y": 113.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": 108.495, + "y": -377.543, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 32, + "name": "grid_5_4", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_5_4", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 675, + "y": 540, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 88.55, + "y": 248.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": 306.096, + "y": -380.884, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 33, + "name": "grid_2_0", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_2_0", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 270, + "y": 0, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -316.45, + "y": -291.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -382.167, + "y": -418.591, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 34, + "name": "grid_3_1", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_3_1", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 405, + "y": 135, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -181.45, + "y": -156.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -184.566, + "y": -421.932, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 35, + "name": "grid_4_2", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_4_2", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 540, + "y": 270, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -46.45, + "y": -21.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": 13.035, + "y": -425.273, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 36, + "name": "grid_5_3", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_5_3", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 675, + "y": 405, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 88.55, + "y": 113.567, + "z": 0.0 + }, + "world_position_transformed": { + "x": 210.636, + "y": -428.614, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 37, + "name": "grid_3_0", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_3_0", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 405, + "y": 0, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -181.45, + "y": -291.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -280.025, + "y": -469.661, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 38, + "name": "grid_4_1", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_4_1", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 540, + "y": 135, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -46.45, + "y": -156.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -82.424, + "y": -473.002, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 39, + "name": "grid_5_2", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_5_2", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 675, + "y": 270, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 88.55, + "y": -21.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": 115.177, + "y": -476.344, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 40, + "name": "grid_4_0", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_4_0", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 540, + "y": 0, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -46.45, + "y": -291.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -177.884, + "y": -520.732, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 41, + "name": "grid_5_1", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_5_1", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 675, + "y": 135, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 88.55, + "y": -156.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": 19.717, + "y": -524.073, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 42, + "name": "grid_5_0", + "category": "visual_land_cell", + "full_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin/grid_5_0", + "parent_path": "farm_scene_v3_sprite/Scaled/Rotate/GridOrigin", + "parent_name": "GridOrigin", + "local_position": { + "x": 675, + "y": 0, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 88.55, + "y": -291.433, + "z": 0.0 + }, + "world_position_transformed": { + "x": -75.742, + "y": -571.803, + "z": 0.0 + }, + "primary_size": { + "width": 130.0, + "height": 130.0 + }, + "anchor": { + "x": 0, + "y": 0 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + } + ] + }, + "house_and_doghouse": { + "skin_cfg_default_records": [ + { + "id": 201001, + "skin_type": 1, + "skin_name": "默认小屋", + "parent_node": "Scene/FgLayer/FarmSkin/Layer2", + "position": { + "x": 347.6, + "y": 179.8 + }, + "spine_asset": "spine/v2/costume/house/201001", + "icon_asset": "gui/texture/skinDetail/img_skin_house/spriteFrame" + }, + { + "id": 205001, + "skin_type": 5, + "skin_name": "默认狗屋", + "parent_node": "Scene/FgLayer/FarmSkin", + "position": { + "x": 24.2, + "y": 223.9 + }, + "spine_asset": "spine/v2/costume/doghouse/205001", + "icon_asset": "gui/texture/skinDetail/img_skin_doghouse/spriteFrame" + } + ], + "doghouse_nodes": [ + { + "index": 45, + "name": "dogHouse", + "category": "world_decor", + "full_path": "farm_scene_v3_sprite/Scene/dogHouse", + "parent_path": "farm_scene_v3_sprite/Scene", + "parent_name": "Scene", + "local_position": { + "x": 30, + "y": 125, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 30.0, + "y": 81.434, + "z": 0.0 + }, + "world_position_transformed": { + "x": 30.0, + "y": 81.434, + "z": 0.0 + }, + "primary_size": { + "width": 150.0, + "height": 150.0 + }, + "anchor": null, + "component_count": 3, + "resolved_parent_source": "_parent" + }, + { + "index": 9, + "name": "dogHouse", + "category": "source_node", + "full_path": "farm_scene_v3/Scene/FgLayer/DogLayer/dogHouse", + "parent_path": "farm_scene_v3/Scene/FgLayer/DogLayer", + "parent_name": "DogLayer", + "local_position": { + "x": 24.266, + "y": 223.974, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 24.266, + "y": 180.408, + "z": 0.0 + }, + "world_position_transformed": { + "x": 24.266, + "y": 180.408, + "z": 0.0 + }, + "primary_size": null, + "anchor": { + "x": 0.5, + "y": 0.203 + }, + "component_count": 3, + "resolved_parent_source": "_children_positive_ref" + } + ] + }, + "bottom_menu_nodes": [ + { + "index": 6, + "name": "Menu", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu", + "parent_path": "main_ui_v2", + "parent_name": "main_ui_v2", + "local_position": { + "x": 0, + "y": -547, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 0.0, + "y": -547.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": 0.0, + "y": -547.0, + "z": 0.0 + }, + "primary_size": { + "width": 720.0, + "height": 150.0 + }, + "anchor": null, + "component_count": 5, + "resolved_parent_source": "_parent" + }, + { + "index": 8, + "name": "btn_layout", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout", + "parent_path": "main_ui_v2/Menu", + "parent_name": "Menu", + "local_position": { + "x": -360, + "y": 0, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -360.0, + "y": -547.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": -360.0, + "y": -547.0, + "z": 0.0 + }, + "primary_size": { + "width": 559.0, + "height": 100.0 + }, + "anchor": { + "x": 0, + "y": 0.5 + }, + "component_count": 3, + "resolved_parent_source": "_parent" + }, + { + "index": 10, + "name": "btn_warehouse", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_warehouse/btn_warehouse", + "parent_path": "main_ui_v2/Menu/btn_layout/Node_warehouse", + "parent_name": "Node_warehouse", + "local_position": { + "x": 0, + "y": 1, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -291.5, + "y": -546.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": -291.5, + "y": -546.0, + "z": 0.0 + }, + "primary_size": { + "width": 97.0, + "height": 117.0 + }, + "anchor": null, + "component_count": 5, + "resolved_parent_source": "_children_positive_ref" + }, + { + "index": 11, + "name": "btn_illustrated", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_illustrated/btn_illustrated", + "parent_path": "main_ui_v2/Menu/btn_layout/Node_illustrated", + "parent_name": "Node_illustrated", + "local_position": { + "x": 0, + "y": 1, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 40.0, + "y": -546.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": 40.0, + "y": -546.0, + "z": 0.0 + }, + "primary_size": { + "width": 97.0, + "height": 117.0 + }, + "anchor": null, + "component_count": 5, + "resolved_parent_source": "_children_positive_ref" + }, + { + "index": 12, + "name": "btn_farmSkin", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_farmSkin/btn_farmSkin", + "parent_path": "main_ui_v2/Menu/btn_layout/Node_farmSkin", + "parent_name": "Node_farmSkin", + "local_position": { + "x": 0, + "y": 1, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 150.5, + "y": -546.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": 150.5, + "y": -546.0, + "z": 0.0 + }, + "primary_size": { + "width": 97.0, + "height": 117.0 + }, + "anchor": null, + "component_count": 5, + "resolved_parent_source": "_children_positive_ref" + }, + { + "index": 25, + "name": "btn_shop", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_shop/btn_shop", + "parent_path": "main_ui_v2/Menu/btn_layout/Node_shop", + "parent_name": "Node_shop", + "local_position": { + "x": 0, + "y": 1, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -181.0, + "y": -546.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": -181.0, + "y": -546.0, + "z": 0.0 + }, + "primary_size": { + "width": 97.0, + "height": 117.0 + }, + "anchor": null, + "component_count": 5, + "resolved_parent_source": "_children_positive_ref" + }, + { + "index": 26, + "name": "btn_dog", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_dog/btn_dog", + "parent_path": "main_ui_v2/Menu/btn_layout/Node_dog", + "parent_name": "Node_dog", + "local_position": { + "x": 0, + "y": 1, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -70.5, + "y": -546.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": -70.5, + "y": -546.0, + "z": 0.0 + }, + "primary_size": { + "width": 97.0, + "height": 117.0 + }, + "anchor": null, + "component_count": 5, + "resolved_parent_source": "_children_positive_ref" + }, + { + "index": 49, + "name": "node_49", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/Node_Friend/node_49", + "parent_path": "main_ui_v2/Menu/Node_Friend", + "parent_name": "Node_Friend", + "local_position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 289.053, + "y": -538.676, + "z": 0.0 + }, + "world_position_transformed": { + "x": 289.053, + "y": -538.676, + "z": 0.0 + }, + "primary_size": null, + "anchor": null, + "component_count": 0, + "resolved_parent_source": "_children_positive_ref" + }, + { + "index": 51, + "name": "node_51", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/Node_task/node_51", + "parent_path": "main_ui_v2/Menu/Node_task", + "parent_name": "Node_task", + "local_position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -349.0, + "y": -424.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": -349.0, + "y": -424.0, + "z": 0.0 + }, + "primary_size": null, + "anchor": null, + "component_count": 0, + "resolved_parent_source": "_children_positive_ref" + }, + { + "index": 68, + "name": "Node_warehouse", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_warehouse", + "parent_path": "main_ui_v2/Menu/btn_layout", + "parent_name": "btn_layout", + "local_position": { + "x": 68.5, + "y": 0, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -291.5, + "y": -547.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": -291.5, + "y": -547.0, + "z": 0.0 + }, + "primary_size": { + "width": 97.0, + "height": 100.0 + }, + "anchor": null, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 69, + "name": "Node_shop", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_shop", + "parent_path": "main_ui_v2/Menu/btn_layout", + "parent_name": "btn_layout", + "local_position": { + "x": 179, + "y": 0, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -181.0, + "y": -547.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": -181.0, + "y": -547.0, + "z": 0.0 + }, + "primary_size": { + "width": 97.0, + "height": 100.0 + }, + "anchor": null, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 70, + "name": "Node_dog", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_dog", + "parent_path": "main_ui_v2/Menu/btn_layout", + "parent_name": "btn_layout", + "local_position": { + "x": 289.5, + "y": 0, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -70.5, + "y": -547.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": -70.5, + "y": -547.0, + "z": 0.0 + }, + "primary_size": { + "width": 97.0, + "height": 100.0 + }, + "anchor": null, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 71, + "name": "Node_illustrated", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_illustrated", + "parent_path": "main_ui_v2/Menu/btn_layout", + "parent_name": "btn_layout", + "local_position": { + "x": 400, + "y": 0, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 40.0, + "y": -547.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": 40.0, + "y": -547.0, + "z": 0.0 + }, + "primary_size": { + "width": 97.0, + "height": 100.0 + }, + "anchor": null, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 72, + "name": "Node_farmSkin", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_farmSkin", + "parent_path": "main_ui_v2/Menu/btn_layout", + "parent_name": "btn_layout", + "local_position": { + "x": 510.5, + "y": 0, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 150.5, + "y": -547.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": 150.5, + "y": -547.0, + "z": 0.0 + }, + "primary_size": { + "width": 97.0, + "height": 100.0 + }, + "anchor": null, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 73, + "name": "Node_Friend", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/Node_Friend", + "parent_path": "main_ui_v2/Menu", + "parent_name": "Menu", + "local_position": { + "x": 289.053, + "y": 8.324, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 289.053, + "y": -538.676, + "z": 0.0 + }, + "world_position_transformed": { + "x": 289.053, + "y": -538.676, + "z": 0.0 + }, + "primary_size": null, + "anchor": null, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 74, + "name": "Node_task", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/Node_task", + "parent_path": "main_ui_v2/Menu", + "parent_name": "Menu", + "local_position": { + "x": -349, + "y": 123, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -349.0, + "y": -424.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": -349.0, + "y": -424.0, + "z": 0.0 + }, + "primary_size": { + "width": 400.0, + "height": 114.0 + }, + "anchor": { + "x": 0, + "y": 0.5 + }, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 76, + "name": "ver", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/ver", + "parent_path": "main_ui_v2/Menu", + "parent_name": "Menu", + "local_position": { + "x": 309.732, + "y": -67.798, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 309.732, + "y": -614.798, + "z": 0.0 + }, + "world_position_transformed": { + "x": 309.732, + "y": -614.798, + "z": 0.0 + }, + "primary_size": { + "width": 49.032, + "height": 50.4 + }, + "anchor": { + "x": 1, + "y": 0.5 + }, + "component_count": 4, + "resolved_parent_source": "_parent" + }, + { + "index": 132, + "name": "txt", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_warehouse/btn_warehouse/txt", + "parent_path": "main_ui_v2/Menu/btn_layout/Node_warehouse/btn_warehouse", + "parent_name": "btn_warehouse", + "local_position": { + "x": 0, + "y": -24.519, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -291.5, + "y": -570.519, + "z": 0.0 + }, + "world_position_transformed": { + "x": -291.5, + "y": -570.519, + "z": 0.0 + }, + "primary_size": { + "width": 51.983, + "height": 50.4 + }, + "anchor": null, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 133, + "name": "node_133", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_warehouse/btn_warehouse/node_133", + "parent_path": "main_ui_v2/Menu/btn_layout/Node_warehouse/btn_warehouse", + "parent_name": "btn_warehouse", + "local_position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -291.5, + "y": -546.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": -291.5, + "y": -546.0, + "z": 0.0 + }, + "primary_size": null, + "anchor": null, + "component_count": 0, + "resolved_parent_source": "_parent" + }, + { + "index": 134, + "name": "txt-001", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_shop/btn_shop/txt-001", + "parent_path": "main_ui_v2/Menu/btn_layout/Node_shop/btn_shop", + "parent_name": "btn_shop", + "local_position": { + "x": 0, + "y": -24.519, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -181.0, + "y": -570.519, + "z": 0.0 + }, + "world_position_transformed": { + "x": -181.0, + "y": -570.519, + "z": 0.0 + }, + "primary_size": { + "width": 51.983, + "height": 50.4 + }, + "anchor": null, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 135, + "name": "txt-002", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_dog/btn_dog/txt-002", + "parent_path": "main_ui_v2/Menu/btn_layout/Node_dog/btn_dog", + "parent_name": "btn_dog", + "local_position": { + "x": 0, + "y": -24.519, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": -70.5, + "y": -570.519, + "z": 0.0 + }, + "world_position_transformed": { + "x": -70.5, + "y": -570.519, + "z": 0.0 + }, + "primary_size": { + "width": 51.983, + "height": 50.4 + }, + "anchor": null, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 136, + "name": "txt-001", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_illustrated/btn_illustrated/txt-001", + "parent_path": "main_ui_v2/Menu/btn_layout/Node_illustrated/btn_illustrated", + "parent_name": "btn_illustrated", + "local_position": { + "x": 0, + "y": -24.519, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 40.0, + "y": -570.519, + "z": 0.0 + }, + "world_position_transformed": { + "x": 40.0, + "y": -570.519, + "z": 0.0 + }, + "primary_size": { + "width": 51.983, + "height": 50.4 + }, + "anchor": null, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 137, + "name": "node_137", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_illustrated/btn_illustrated/node_137", + "parent_path": "main_ui_v2/Menu/btn_layout/Node_illustrated/btn_illustrated", + "parent_name": "btn_illustrated", + "local_position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 40.0, + "y": -546.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": 40.0, + "y": -546.0, + "z": 0.0 + }, + "primary_size": null, + "anchor": null, + "component_count": 0, + "resolved_parent_source": "_parent" + }, + { + "index": 139, + "name": "txt-001", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_farmSkin/btn_farmSkin/txt-001", + "parent_path": "main_ui_v2/Menu/btn_layout/Node_farmSkin/btn_farmSkin", + "parent_name": "btn_farmSkin", + "local_position": { + "x": 0, + "y": -24.519, + "z": 0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 150.5, + "y": -570.519, + "z": 0.0 + }, + "world_position_transformed": { + "x": 150.5, + "y": -570.519, + "z": 0.0 + }, + "primary_size": { + "width": 51.983, + "height": 50.4 + }, + "anchor": null, + "component_count": 2, + "resolved_parent_source": "_parent" + }, + { + "index": 140, + "name": "node_140", + "category": "hud_bottom_or_task", + "full_path": "main_ui_v2/Menu/btn_layout/Node_farmSkin/btn_farmSkin/node_140", + "parent_path": "main_ui_v2/Menu/btn_layout/Node_farmSkin/btn_farmSkin", + "parent_name": "btn_farmSkin", + "local_position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "local_scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "local_euler": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "world_position_sum": { + "x": 150.5, + "y": -546.0, + "z": 0.0 + }, + "world_position_transformed": { + "x": 150.5, + "y": -546.0, + "z": 0.0 + }, + "primary_size": null, + "anchor": null, + "component_count": 0, + "resolved_parent_source": "_parent" + } + ], + "asset_inputs": { + "backgrounds": [ + { + "id": "scene_bg", + "asset_path": "scene/bg", + "index": 13, + "role": "large_scene_background_texture", + "bundle": "delayRes", + "mode": "import", + "pack_key": null, + "pack_position": null, + "source_file": "downloads/raw/remote/delayRes/import/14/146c722a-2371-420b-9958-6ff8ca81ff57.19fac.json" + }, + { + "id": "scene_fg", + "asset_path": "scene/fg", + "index": 172, + "role": "large_scene_foreground_texture", + "bundle": "delayRes", + "mode": "import", + "pack_key": null, + "pack_position": null, + "source_file": "downloads/raw/remote/delayRes/import/df/df3ba319-262f-49a8-9f74-afdc97dc0ab1.19fac.json" + }, + { + "id": "model_scene_bg", + "asset_path": "model/v3/scene/bg", + "index": 1152, + "role": "small_scene_background_fallback", + "bundle": "extraRes", + "mode": "import", + "pack_key": null, + "pack_position": null, + "source_file": "downloads/raw/remote/extraRes/import/db/dbe047f4-d92a-4abe-b7dd-c9fb7b784577.19fac.json" + }, + { + "id": "model_scene_fg", + "asset_path": "model/v3/scene/fg", + "index": 1289, + "role": "small_scene_foreground_fallback", + "bundle": "extraRes", + "mode": "import", + "pack_key": null, + "pack_position": null, + "source_file": "downloads/raw/remote/extraRes/import/f3/f3826219-91f1-43b2-9fa7-2c504543aee0.19fac.json" + } + ], + "config_assets": [ + { + "asset_path": "config/SkinCfg", + "index": 323, + "role": "skin_and_decor_runtime_config", + "bundle": "delayRes", + "mode": "import", + "pack_key": null, + "pack_position": null, + "source_file": "downloads/raw/remote/delayRes/import/2d/2d201122-b5a7-4181-8f60-d67a399ec757.edfbe.json", + "id": "skin_cfg", + "json_asset_name": "SkinCfg", + "record_count": 51, + "default_records": [ + { + "id": 201001, + "skin_type": 1, + "skin_name": "默认小屋", + "parent_node": "Scene/FgLayer/FarmSkin/Layer2", + "position": { + "x": 347.6, + "y": 179.8 + }, + "spine_asset": "spine/v2/costume/house/201001", + "icon_asset": "gui/texture/skinDetail/img_skin_house/spriteFrame" + }, + { + "id": 202001, + "skin_type": 2, + "skin_name": "默认木牌", + "parent_node": "Scene/FgLayer/Board", + "position": { + "x": -259.1, + "y": 104.1 + }, + "spine_asset": "spine/v2/costume/brand/202001", + "icon_asset": "gui/texture/skinDetail/img_skin_board/spriteFrame" + }, + { + "id": 203001, + "skin_type": 3, + "skin_name": "默认栅栏", + "parent_node": "Scene/FgLayer/FarmSkin/Layer3", + "position": { + "x": -185.4, + "y": -280.5 + }, + "spine_asset": "spine/v2/costume/fence/203001", + "icon_asset": "gui/texture/skinDetail/img_skin_barrier/spriteFrame" + }, + { + "id": 204001, + "skin_type": 4, + "skin_name": "空", + "parent_node": "Scene/FgLayer/Tower", + "position": { + "x": -454, + "y": 28.6 + }, + "spine_asset": null, + "icon_asset": null + }, + { + "id": 205001, + "skin_type": 5, + "skin_name": "默认狗屋", + "parent_node": "Scene/FgLayer/FarmSkin", + "position": { + "x": 24.2, + "y": 223.9 + }, + "spine_asset": "spine/v2/costume/doghouse/205001", + "icon_asset": "gui/texture/skinDetail/img_skin_doghouse/spriteFrame" + }, + { + "id": 206001, + "skin_type": 6, + "skin_name": "默认仓库", + "parent_node": "Scene/FgLayer/Storage", + "position": { + "x": -770.8, + "y": -28.6 + }, + "spine_asset": "spine/v2/costume/warehouse/206001", + "icon_asset": "gui/texture/skinDetail/img_skin_warehouse/spriteFrame" + }, + { + "id": 207001, + "skin_type": 7, + "skin_name": "默认街道", + "parent_node": "Scene/FgLayer/FarmSkin/Layer1", + "position": { + "x": 76.6, + "y": -193.5 + }, + "spine_asset": "spine/v2/costume/load/207001", + "icon_asset": "gui/texture/skinDetail/img_skin_road/spriteFrame" + }, + { + "id": 208001, + "skin_type": 8, + "skin_name": "默认围栏", + "parent_node": "Scene/FgLayer/FarmSkin/Layer1", + "position": { + "x": -629, + "y": 163.8 + }, + "spine_asset": "spine/v2/costume/fence_2/208001", + "icon_asset": "gui/texture/skinDetail/img_skin_fence/spriteFrame" + } + ] + }, + { + "asset_path": "config/SkinTypeCfg", + "index": 453, + "role": "skin_type_runtime_config", + "bundle": "delayRes", + "mode": "import", + "pack_key": null, + "pack_position": null, + "source_file": "downloads/raw/remote/delayRes/import/62/6276caa6-6ab0-472c-8a57-e32ce1dd5de2.f1c60.json", + "id": "skin_type_cfg", + "json_asset_name": "SkinTypeCfg", + "record_count": 8 + }, + { + "asset_path": "config/Plant", + "index": 422, + "role": "crop_runtime_config", + "bundle": "delayRes", + "mode": "import", + "pack_key": null, + "pack_position": null, + "source_file": "downloads/raw/remote/delayRes/import/52/524bdf1d-e595-4a42-941c-556b06fdbb4b.bce5d.json", + "id": "plant_cfg", + "json_asset_name": "Plant", + "record_count": 226, + "sample_records": [ + { + "id": 2020002, + "name": "白萝卜", + "level": null, + "stage_asset": null + }, + { + "id": 1020002, + "name": "白萝卜", + "level": null, + "stage_asset": null + }, + { + "id": 1020003, + "name": "胡萝卜", + "level": null, + "stage_asset": null + }, + { + "id": 1020059, + "name": "大白菜", + "level": null, + "stage_asset": null + }, + { + "id": 1020065, + "name": "大蒜", + "level": null, + "stage_asset": null + }, + { + "id": 1020064, + "name": "大葱", + "level": null, + "stage_asset": null + }, + { + "id": 1020060, + "name": "水稻", + "level": null, + "stage_asset": null + }, + { + "id": 1020061, + "name": "小麦", + "level": null, + "stage_asset": null + }, + { + "id": 1020004, + "name": "玉米", + "level": null, + "stage_asset": null + }, + { + "id": 1020066, + "name": "鲜姜", + "level": null, + "stage_asset": null + }, + { + "id": 1020005, + "name": "土豆", + "level": null, + "stage_asset": null + }, + { + "id": 1020071, + "name": "小白菜", + "level": null, + "stage_asset": null + } + ] + } + ] + }, + "blockers": [ + { + "id": "visible_land_count", + "status": "blocked", + "detail": "Static source prefab has 36 visual grid cells. The first-milestone spec requires 24 visible land plots, but the runtime rule selecting those 24 is not yet decoded." + }, + { + "id": "background_texture_binding", + "status": "blocked", + "detail": "Background ImageAsset entries are located, but final texture/SpriteFrame binding for Cocos 4 import is not yet resolved from metadata." + }, + { + "id": "cocos4_cli_build", + "status": "blocked", + "detail": "Cocos 4 alpha CLI reaches engine init, then fails because node_modules/gl/build/Release/webgl.node requires NODE_MODULE_VERSION 140 while local Node 24 provides 137." + } + ] +} diff --git a/source_export/source_prefabs.json b/source_export/source_prefabs.json new file mode 100644 index 0000000..f72a19c --- /dev/null +++ b/source_export/source_prefabs.json @@ -0,0 +1,63 @@ +{ + "farm_scene_v3_sprite": { + "source": { + "asset_path": "scene/farm_scene_v3_sprite", + "index": 1635, + "role": "world_visual_prefab", + "bundle": "extraRes", + "mode": "pack", + "pack_key": "0ada99ac7", + "pack_position": 0, + "source_file": "downloads/raw/remote/extraRes/import/0a/0ada99ac7.403b3.json" + }, + "node_count": 131, + "category_counts": { + "source_node": 8, + "visual_land_cell": 36, + "visual_land_cell_child": 72, + "world_background": 3, + "world_decor": 1, + "world_layer": 11 + } + }, + "farm_scene_v3": { + "source": { + "asset_path": "scene/farm_scene_v3", + "index": 3914, + "role": "world_mount_and_logic_prefab", + "bundle": "extraRes", + "mode": "pack", + "pack_key": "0ec3b3100", + "pack_position": 1, + "source_file": "downloads/raw/remote/extraRes/import/0e/0ec3b3100.19268.json" + }, + "node_count": 119, + "category_counts": { + "skin_mount": 11, + "source_node": 36, + "visual_land_cell": 24, + "visual_land_cell_child": 48 + } + }, + "main_ui_v2": { + "source": { + "asset_path": "gui/prefab/main_ui_v2", + "index": 2487, + "role": "main_ui_prefab", + "bundle": "extraRes", + "mode": "pack", + "pack_key": "0d7027270", + "pack_position": 2, + "source_file": "downloads/raw/remote/extraRes/import/0d/0d7027270.4bc05.json" + }, + "node_count": 141, + "category_counts": { + "friend_visit_ui": 8, + "hud_bottom_or_task": 25, + "hud_left_setting": 29, + "hud_right": 35, + "hud_top": 39, + "main_ui_other": 5 + } + } +} diff --git a/source_export/source_runtime_notes.md b/source_export/source_runtime_notes.md new file mode 100644 index 0000000..f34dde1 --- /dev/null +++ b/source_export/source_runtime_notes.md @@ -0,0 +1,7 @@ +# Source Runtime Notes + +- Startup scene source has Canvas/root/ui/scene and two cameras. +- `farm_scene_v3_sprite` contains 36 static visual land cells under `Scaled/Rotate/GridOrigin`. +- First-stage spec requires 24 visible land plots, but the runtime rule selecting visible or unlocked plots is not decoded yet. +- Default house and doghouse come from `SkinCfg` records `201001` and `205001`, not only from the static visual prefab. +- Bottom menu source nodes are under `main_ui_v2/Menu`; feature logic for warehouse/shop/friend/task is outside first-stage scope. diff --git a/source_export/source_spine.json b/source_export/source_spine.json new file mode 100644 index 0000000..da54373 --- /dev/null +++ b/source_export/source_spine.json @@ -0,0 +1,30 @@ +{ + "status": "default house and doghouse reference Spine assets through SkinCfg; Cocos 4 import binding not generated yet", + "manifest": "/Users/hy/Documents/dev/qq_farm_godot_rebuild_20260616/downloads/spine_regions/spine_region_manifest.json", + "records": [ + { + "id": 201001, + "skin_type": 1, + "skin_name": "默认小屋", + "parent_node": "Scene/FgLayer/FarmSkin/Layer2", + "position": { + "x": 347.6, + "y": 179.8 + }, + "spine_asset": "spine/v2/costume/house/201001", + "icon_asset": "gui/texture/skinDetail/img_skin_house/spriteFrame" + }, + { + "id": 205001, + "skin_type": 5, + "skin_name": "默认狗屋", + "parent_node": "Scene/FgLayer/FarmSkin", + "position": { + "x": 24.2, + "y": 223.9 + }, + "spine_asset": "spine/v2/costume/doghouse/205001", + "icon_asset": "gui/texture/skinDetail/img_skin_doghouse/spriteFrame" + } + ] +} diff --git a/source_export/source_spriteframes.json b/source_export/source_spriteframes.json new file mode 100644 index 0000000..5a3d8bf --- /dev/null +++ b/source_export/source_spriteframes.json @@ -0,0 +1,4 @@ +{ + "status": "metadata_manifest_available_but_stage1_bindings_unresolved", + "manifest": "/Users/hy/Documents/dev/qq_farm_godot_rebuild_20260616/downloads/spriteframes/sprite_manifest.json" +} diff --git a/tools/compare_visual_rois.py b/tools/compare_visual_rois.py new file mode 100644 index 0000000..a2a2549 --- /dev/null +++ b/tools/compare_visual_rois.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python3 +"""Write a first-stage ROI validation report. + +This pass records why ROI cannot pass yet: no Cocos-produced screenshot exists +because the Cocos 4 alpha CLI is blocked by a native ABI mismatch. +""" + +from __future__ import annotations + +import json +from datetime import datetime, timezone +from pathlib import Path + + +PROJECT = Path(__file__).resolve().parents[1] + + +def main() -> None: + out_dir = PROJECT / "artifacts/visual_compare" + out_dir.mkdir(parents=True, exist_ok=True) + report = { + "generated_at": datetime.now(timezone.utc).isoformat(), + "module": "main_scene_first_milestone", + "status": "blocked", + "rois": ["world_static", "land_area", "decor_area", "bottom_buttons"], + "reason": "Cocos-produced screenshot is unavailable because Cocos 4 alpha CLI build fails on native webgl.node ABI mismatch.", + "diagnostic_preview": str(PROJECT / "artifacts/canvas_preview/stage1_source_preview.png"), + "target_thresholds": { + "static_bitmap_similarity": 0.99, + "object_center_delta_px": 2, + "object_size_delta_percent": 1, + }, + } + path = out_dir / "stage1_roi_report.json" + path.write_text(json.dumps(report, ensure_ascii=False, indent=2) + "\n", encoding="utf-8") + print(path) + + +if __name__ == "__main__": + main() diff --git a/tools/extract_source_evidence.py b/tools/extract_source_evidence.py new file mode 100644 index 0000000..f7f18af --- /dev/null +++ b/tools/extract_source_evidence.py @@ -0,0 +1,199 @@ +#!/usr/bin/env python3 +"""Export first-milestone source evidence for the Cocos 4 rebuild. + +The extractor consumes the already decoded source-first inventory from the +original Cocos package. It does not read Godot output and does not infer layout +from screenshots. +""" + +from __future__ import annotations + +import json +from datetime import datetime, timezone +from pathlib import Path +from typing import Any + + +PROJECT = Path(__file__).resolve().parents[1] +SOURCE_ROOT = Path("/Users/hy/Documents/dev/qq_farm_godot_rebuild_20260616") +SOURCE_INVENTORY = SOURCE_ROOT / "source_first/out/main_scene_elements.json" +OUT = PROJECT / "source_export" + + +def read_json(path: Path) -> Any: + with path.open("r", encoding="utf-8") as fh: + return json.load(fh) + + +def write_json(path: Path, value: Any) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(json.dumps(value, ensure_ascii=False, indent=2) + "\n", encoding="utf-8") + + +def write_text(path: Path, value: str) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(value, encoding="utf-8") + + +def find_default_records(config_assets: list[dict[str, Any]]) -> list[dict[str, Any]]: + for item in config_assets: + if item.get("id") == "skin_cfg": + return item.get("default_records", []) + return [] + + +def only_paths(elements: list[dict[str, Any]], *needles: str) -> list[dict[str, Any]]: + return [item for item in elements if any(needle in str(item.get("full_path")) for needle in needles)] + + +def build_stage1(data: dict[str, Any]) -> dict[str, Any]: + sprite_prefab = data["prefabs"]["farm_scene_v3_sprite"] + mount_prefab = data["prefabs"]["farm_scene_v3"] + main_ui = data["prefabs"]["main_ui_v2"] + + land_candidates = [ + item for item in sprite_prefab["elements"] + if item.get("category") == "visual_land_cell" + ] + background_nodes = [ + item for item in sprite_prefab["elements"] + if item.get("category") == "world_background" + or str(item.get("full_path")).endswith("/Scene/bg") + or "BgLayer" in str(item.get("full_path")) + ] + bottom_menu_nodes = only_paths( + main_ui["elements"], + "main_ui_v2/Menu", + "main_ui_v2/Menu/btn_layout", + "main_ui_v2/Menu/Node_task", + "main_ui_v2/Menu/Node_Friend", + ) + default_skin_records = find_default_records(data.get("config_assets", [])) + house_records = [ + item for item in default_skin_records + if item.get("skin_type") in {1, 5} + ] + doghouse_nodes = only_paths(sprite_prefab["elements"], "dogHouse") + only_paths(mount_prefab["elements"], "dogHouse") + + return { + "module": "main_scene_first_milestone", + "generated_at": datetime.now(timezone.utc).isoformat(), + "source_inventory": str(SOURCE_INVENTORY), + "design_resolution": data["summary"]["design_resolution"], + "scope": [ + "Canvas", + "main Camera", + "root scene", + "background layers", + "visible land plots", + "house", + "doghouse", + "bottom menu buttons", + ], + "startup_scene": data["startup_scene"], + "prefab_sources": { + "farm_scene_v3_sprite": sprite_prefab["source"], + "farm_scene_v3": mount_prefab["source"], + "main_ui_v2": main_ui["source"], + }, + "canvas_and_cameras": data["startup_scene"]["elements"], + "background_nodes": background_nodes, + "land_candidates": { + "source_count": len(land_candidates), + "visible_count_required_by_spec": 24, + "selection_status": "blocked_missing_runtime_visible_land_rule", + "nodes": land_candidates, + }, + "house_and_doghouse": { + "skin_cfg_default_records": house_records, + "doghouse_nodes": doghouse_nodes, + }, + "bottom_menu_nodes": bottom_menu_nodes, + "asset_inputs": { + "backgrounds": data.get("source_assets", {}).get("backgrounds", []), + "config_assets": data.get("config_assets", []), + }, + "blockers": [ + { + "id": "visible_land_count", + "status": "blocked", + "detail": "Static source prefab has 36 visual grid cells. The first-milestone spec requires 24 visible land plots, but the runtime rule selecting those 24 is not yet decoded.", + }, + { + "id": "background_texture_binding", + "status": "blocked", + "detail": "Background ImageAsset entries are located, but final texture/SpriteFrame binding for Cocos 4 import is not yet resolved from metadata.", + }, + { + "id": "cocos4_cli_build", + "status": "blocked", + "detail": "Cocos 4 alpha CLI reaches engine init, then fails because node_modules/gl/build/Release/webgl.node requires NODE_MODULE_VERSION 140 while local Node 24 provides 137.", + }, + ], + } + + +def main() -> None: + data = read_json(SOURCE_INVENTORY) + stage1 = build_stage1(data) + + sprite_prefab = data["prefabs"]["farm_scene_v3_sprite"] + mount_prefab = data["prefabs"]["farm_scene_v3"] + main_ui = data["prefabs"]["main_ui_v2"] + + write_json(OUT / "source_nodes.json", stage1) + write_json(OUT / "source_prefabs.json", { + "farm_scene_v3_sprite": { + "source": sprite_prefab["source"], + "node_count": len(sprite_prefab["elements"]), + "category_counts": sprite_prefab.get("category_counts", {}), + }, + "farm_scene_v3": { + "source": mount_prefab["source"], + "node_count": len(mount_prefab["elements"]), + "category_counts": mount_prefab.get("category_counts", {}), + }, + "main_ui_v2": { + "source": main_ui["source"], + "node_count": len(main_ui["elements"]), + "category_counts": main_ui.get("category_counts", {}), + }, + }) + write_json(OUT / "source_assets.json", stage1["asset_inputs"]) + write_json(OUT / "source_spriteframes.json", { + "status": "metadata_manifest_available_but_stage1_bindings_unresolved", + "manifest": str(SOURCE_ROOT / "downloads/spriteframes/sprite_manifest.json"), + }) + write_json(OUT / "source_spine.json", { + "status": "default house and doghouse reference Spine assets through SkinCfg; Cocos 4 import binding not generated yet", + "manifest": str(SOURCE_ROOT / "downloads/spine_regions/spine_region_manifest.json"), + "records": stage1["house_and_doghouse"]["skin_cfg_default_records"], + }) + write_json(OUT / "source_animations.json", { + "status": "not_in_first_stage_scope", + "animation_clips": data.get("source_assets", {}).get("animation_clips", []), + }) + + runtime_notes = """# Source Runtime Notes + +- Startup scene source has Canvas/root/ui/scene and two cameras. +- `farm_scene_v3_sprite` contains 36 static visual land cells under `Scaled/Rotate/GridOrigin`. +- First-stage spec requires 24 visible land plots, but the runtime rule selecting visible or unlocked plots is not decoded yet. +- Default house and doghouse come from `SkinCfg` records `201001` and `205001`, not only from the static visual prefab. +- Bottom menu source nodes are under `main_ui_v2/Menu`; feature logic for warehouse/shop/friend/task is outside first-stage scope. +""" + write_text(OUT / "source_runtime_notes.md", runtime_notes) + + blocker_lines = ["# Source Blockers", ""] + for item in stage1["blockers"]: + blocker_lines.append(f"- `{item['id']}`: {item['detail']}") + blocker_lines.append("") + write_text(OUT / "source_blockers.md", "\n".join(blocker_lines)) + + print(f"wrote {OUT / 'source_nodes.json'}") + print(f"land candidates: {stage1['land_candidates']['source_count']}") + print("visible land selection: blocked_missing_runtime_visible_land_rule") + + +if __name__ == "__main__": + main() diff --git a/tools/generate_cocos4_project.py b/tools/generate_cocos4_project.py new file mode 100644 index 0000000..c6f5874 --- /dev/null +++ b/tools/generate_cocos4_project.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python3 +"""Generate first-stage Cocos-facing scene data from source evidence. + +The Cocos 4 alpha CLI on this machine cannot currently build because of a +native ABI mismatch. This script therefore writes source-backed scene data that +can be consumed by a later Cocos 4 scene writer once the CLI/runtime is fixed. +""" + +from __future__ import annotations + +import json +from pathlib import Path +from typing import Any + + +PROJECT = Path(__file__).resolve().parents[1] +SOURCE_NODES = PROJECT / "source_export/source_nodes.json" + + +def read_json(path: Path) -> Any: + with path.open("r", encoding="utf-8") as fh: + return json.load(fh) + + +def mkdir_keep(path: Path) -> None: + path.mkdir(parents=True, exist_ok=True) + keep = path / ".gitkeep" + if not keep.exists(): + keep.write_text("", encoding="utf-8") + + +def main() -> None: + data = read_json(SOURCE_NODES) + for rel in [ + "assets/scenes", + "assets/prefabs", + "assets/scripts", + "assets/scripts/mock", + "assets/resources", + "assets/bundles", + "assets/textures", + "assets/spine", + "assets/audio", + "assets/configs", + "assets/i18n", + "artifacts/cocos_capture", + "artifacts/visual_compare", + ]: + mkdir_keep(PROJECT / rel) + + scene = { + "format": "cocos4_stage1_source_scene", + "status": "source_backed_intermediate_scene_data", + "design_resolution": data["design_resolution"], + "nodes": { + "startup": data["canvas_and_cameras"], + "backgrounds": data["background_nodes"], + "land_candidates": data["land_candidates"], + "house_and_doghouse": data["house_and_doghouse"], + "bottom_menu": data["bottom_menu_nodes"], + }, + "blockers": data["blockers"], + } + out = PROJECT / "assets/scenes/main_stage1.source_scene.json" + out.write_text(json.dumps(scene, ensure_ascii=False, indent=2) + "\n", encoding="utf-8") + print(out) + + +if __name__ == "__main__": + main() diff --git a/tools/render_canvas_preview.py b/tools/render_canvas_preview.py new file mode 100644 index 0000000..f06db45 --- /dev/null +++ b/tools/render_canvas_preview.py @@ -0,0 +1,93 @@ +#!/usr/bin/env python3 +"""Render a diagnostic first-stage preview from source evidence.""" + +from __future__ import annotations + +import json +from pathlib import Path +from typing import Any + +from PIL import Image, ImageDraw, ImageFont + + +PROJECT = Path(__file__).resolve().parents[1] +SOURCE_NODES = PROJECT / "source_export/source_nodes.json" +OUT_DIR = PROJECT / "artifacts/canvas_preview" + + +def read_json(path: Path) -> Any: + with path.open("r", encoding="utf-8") as fh: + return json.load(fh) + + +def cocos_to_image(point: dict[str, float], width: int, height: int) -> tuple[float, float]: + return width / 2 + float(point.get("x", 0)), height / 2 - float(point.get("y", 0)) + + +def draw_centered_rect(draw: ImageDraw.ImageDraw, node: dict[str, Any], canvas: tuple[int, int], outline: str, fill: str | None = None) -> None: + pos = node.get("world_position_transformed") or node.get("position") or {"x": 0, "y": 0} + size = node.get("primary_size") or node.get("content_size") or {"width": 40, "height": 40} + cx, cy = cocos_to_image(pos, canvas[0], canvas[1]) + w = float(size.get("width") or 40) + h = float(size.get("height") or 40) + box = [cx - w / 2, cy - h / 2, cx + w / 2, cy + h / 2] + draw.rectangle(box, outline=outline, fill=fill, width=2) + + +def draw_land_cell(draw: ImageDraw.ImageDraw, node: dict[str, Any], canvas: tuple[int, int]) -> None: + pos = node.get("world_position_transformed") or {"x": 0, "y": 0} + cx, cy = cocos_to_image(pos, canvas[0], canvas[1]) + size = node.get("primary_size") or {"width": 130, "height": 130} + w = float(size.get("width") or 130) + h = float(size.get("height") or 130) * 0.5 + pts = [(cx, cy - h / 2), (cx + w / 2, cy), (cx, cy + h / 2), (cx - w / 2, cy)] + draw.polygon(pts, outline="#2f7d32", fill="#86bf6a") + + +def main() -> None: + data = read_json(SOURCE_NODES) + width = int(data["design_resolution"]["width"]) + height = int(data["design_resolution"]["height"]) + img = Image.new("RGB", (width, height), "#d7efff") + draw = ImageDraw.Draw(img, "RGBA") + + for node in data["background_nodes"]: + draw_centered_rect(draw, node, (width, height), "#7a9f4b", "#b7d77a55") + + for node in data["land_candidates"]["nodes"]: + draw_land_cell(draw, node, (width, height)) + + for node in data["house_and_doghouse"]["doghouse_nodes"]: + draw_centered_rect(draw, node, (width, height), "#7a3f16", "#b8753555") + + for record in data["house_and_doghouse"]["skin_cfg_default_records"]: + pos = record.get("position") or {"x": 0, "y": 0} + cx, cy = cocos_to_image(pos, width, height) + label = str(record.get("skin_name", record.get("id"))) + draw.rectangle([cx - 55, cy - 35, cx + 55, cy + 35], outline="#5c2d91", fill="#c7a5ff66", width=2) + draw.text((cx - 48, cy - 8), label, fill="#2b1545") + + for node in data["bottom_menu_nodes"]: + draw_centered_rect(draw, node, (width, height), "#1f4f99", "#6fa8ff55") + + draw.rectangle([0, 0, width - 1, height - 1], outline="#222222", width=2) + draw.text((12, 12), "Stage1 diagnostic preview - source evidence only", fill="#111111") + draw.text((12, 34), f"land candidates: {data['land_candidates']['source_count']} / visible 24 blocked", fill="#8a1f11") + + OUT_DIR.mkdir(parents=True, exist_ok=True) + png = OUT_DIR / "stage1_source_preview.png" + report = OUT_DIR / "stage1_source_preview_report.json" + img.save(png) + report.write_text(json.dumps({ + "status": "generated", + "image": str(png), + "resolution": {"width": width, "height": height}, + "land_candidates_rendered": data["land_candidates"]["source_count"], + "visible_land_selection": data["land_candidates"]["selection_status"], + "note": "Diagnostic rendering only; it does not define final Cocos coordinates.", + }, indent=2) + "\n", encoding="utf-8") + print(png) + + +if __name__ == "__main__": + main() diff --git a/tools/verify_cocos4_project.py b/tools/verify_cocos4_project.py new file mode 100644 index 0000000..1c4dd13 --- /dev/null +++ b/tools/verify_cocos4_project.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python3 +"""Verify the Cocos 4 project and record current toolchain status.""" + +from __future__ import annotations + +import json +import subprocess +from datetime import datetime, timezone +from pathlib import Path + + +PROJECT = Path(__file__).resolve().parents[1] + + +def run(cmd: list[str]) -> dict[str, object]: + proc = subprocess.run(cmd, cwd=PROJECT, text=True, capture_output=True) + return { + "cmd": cmd, + "returncode": proc.returncode, + "stdout_tail": proc.stdout[-4000:], + "stderr_tail": proc.stderr[-4000:], + } + + +def main() -> None: + package = json.loads((PROJECT / "package.json").read_text(encoding="utf-8")) + checks = { + "generated_at": datetime.now(timezone.utc).isoformat(), + "package": { + "type": package.get("type"), + "version": package.get("version"), + "creator_version": package.get("creator", {}).get("version"), + }, + "cocos_version": run(["zsh", "-lc", "cocos --version"]), + "node_abi": run(["zsh", "-lc", "~/.local/tools/node-v24.14.1-darwin-arm64/bin/node -p 'process.version + \" abi=\" + process.versions.modules'"]), + "build": run(["zsh", "-lc", "rm -rf temp library build && cocos build --project . --platform web-mobile"]), + } + checks["status"] = "passed" if checks["build"]["returncode"] == 0 else "blocked" + checks["blocker"] = None if checks["status"] == "passed" else "Cocos 4 alpha CLI native gl module expects NODE_MODULE_VERSION 140; local Node 24 reports ABI 137." + + out = PROJECT / "artifacts/cocos_capture" + out.mkdir(parents=True, exist_ok=True) + path = out / "stage1_cocos_verify.json" + path.write_text(json.dumps(checks, ensure_ascii=False, indent=2) + "\n", encoding="utf-8") + print(path) + raise SystemExit(0 if checks["status"] == "passed" else 1) + + +if __name__ == "__main__": + main()