From 7a6cd423fc6bd8cbc593b520d8ca404c76504319 Mon Sep 17 00:00:00 2001 From: KaGaMi_PC Date: Mon, 16 Jun 2025 07:59:50 +0800 Subject: [PATCH] Init --- .gitattributes | 2 + .gitignore | 3 + .vs/ProjectEvaluation/test.metadata.v7.bin | Bin 0 -> 158711 bytes .vs/ProjectEvaluation/test.projects.v7.bin | Bin 0 -> 88192 bytes .vs/Test/DesignTimeBuild/.dtbcache.v2 | Bin 0 -> 82815 bytes ...3f07b048-c1be-4df3-acd2-3be585060024.vsidx | Bin 0 -> 44043 bytes .vs/Test/FileContentIndex/read.lock | 0 .vs/Test/v17/.futdcache.v2 | Bin 0 -> 106 bytes .vs/Test/v17/.suo | Bin 0 -> 17920 bytes .vscode/launch.json | 47 ++ .vscode/settings.json | 3 + .vscode/tasks.json | 18 + PROJECT_STRUCTURE.md | 112 +++ Test.csproj | 8 + Test.sln | 19 + .../textures/PixPin_2025-06-15_11-35-40.png | Bin 0 -> 8087 bytes .../PixPin_2025-06-15_11-35-40.png.import | 34 + assets/textures/icon.svg | 1 + assets/textures/icon.svg.import | 37 + data/README.md | 59 ++ data/config/crafting_recipes.json | 17 + data/config/inventory_categories.json | 20 + data/config/items.csv | 13 + data/config/items.csv.import | 10 + data/config/resource_categories.json | 50 ++ data/translations/.gdignore | 2 + data/translations/items.Category.translation | Bin 0 -> 771 bytes data/translations/items.CraftTime.translation | Bin 0 -> 692 bytes .../items.Description.translation | Bin 0 -> 1054 bytes data/translations/items.IconPath.translation | Bin 0 -> 999 bytes data/translations/items.Name.translation | Bin 0 -> 735 bytes .../items.PowerConsumption.translation | Bin 0 -> 707 bytes data/translations/items.Recipe.translation | Bin 0 -> 765 bytes project.godot | 35 + scenes/CraftingItem.tscn | 129 +++ scenes/CraftingQueue.tscn | 69 ++ scenes/InventoryItem.tscn | 64 ++ scenes/ItemPanel.tscn | 127 +++ scenes/game_scene.tscn | 228 ++++++ scenes/main_menu.tscn | 70 ++ scenes/ss | 64 ++ scenes/test.tscn | 26 + scripts/core/GameScene.cs | 136 ++++ scripts/data/CraftingRecipeManager.cs | 143 ++++ scripts/data/GameData.cs | 197 +++++ scripts/data/ResourceCategoryManager.cs | 169 ++++ scripts/inventory/InventoryCategoryManager.cs | 121 +++ scripts/inventory/InventoryManager.cs | 368 +++++++++ scripts/inventory/InventoryTableManager.cs | 265 +++++++ scripts/production/CraftingQueueManager.cs | 384 +++++++++ scripts/production/ManualCollectionPanel.cs | 192 +++++ scripts/production/ResourceGrid.cs | 33 + scripts/ui/DynamicTabManager.cs | 733 ++++++++++++++++++ scripts/ui/MainMenu.cs | 60 ++ 54 files changed, 4068 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .vs/ProjectEvaluation/test.metadata.v7.bin create mode 100644 .vs/ProjectEvaluation/test.projects.v7.bin create mode 100644 .vs/Test/DesignTimeBuild/.dtbcache.v2 create mode 100644 .vs/Test/FileContentIndex/3f07b048-c1be-4df3-acd2-3be585060024.vsidx create mode 100644 .vs/Test/FileContentIndex/read.lock create mode 100644 .vs/Test/v17/.futdcache.v2 create mode 100644 .vs/Test/v17/.suo create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 .vscode/tasks.json create mode 100644 PROJECT_STRUCTURE.md create mode 100644 Test.csproj create mode 100644 Test.sln create mode 100644 assets/textures/PixPin_2025-06-15_11-35-40.png create mode 100644 assets/textures/PixPin_2025-06-15_11-35-40.png.import create mode 100644 assets/textures/icon.svg create mode 100644 assets/textures/icon.svg.import create mode 100644 data/README.md create mode 100644 data/config/crafting_recipes.json create mode 100644 data/config/inventory_categories.json create mode 100644 data/config/items.csv create mode 100644 data/config/items.csv.import create mode 100644 data/config/resource_categories.json create mode 100644 data/translations/.gdignore create mode 100644 data/translations/items.Category.translation create mode 100644 data/translations/items.CraftTime.translation create mode 100644 data/translations/items.Description.translation create mode 100644 data/translations/items.IconPath.translation create mode 100644 data/translations/items.Name.translation create mode 100644 data/translations/items.PowerConsumption.translation create mode 100644 data/translations/items.Recipe.translation create mode 100644 project.godot create mode 100644 scenes/CraftingItem.tscn create mode 100644 scenes/CraftingQueue.tscn create mode 100644 scenes/InventoryItem.tscn create mode 100644 scenes/ItemPanel.tscn create mode 100644 scenes/game_scene.tscn create mode 100644 scenes/main_menu.tscn create mode 100644 scenes/ss create mode 100644 scenes/test.tscn create mode 100644 scripts/core/GameScene.cs create mode 100644 scripts/data/CraftingRecipeManager.cs create mode 100644 scripts/data/GameData.cs create mode 100644 scripts/data/ResourceCategoryManager.cs create mode 100644 scripts/inventory/InventoryCategoryManager.cs create mode 100644 scripts/inventory/InventoryManager.cs create mode 100644 scripts/inventory/InventoryTableManager.cs create mode 100644 scripts/production/CraftingQueueManager.cs create mode 100644 scripts/production/ManualCollectionPanel.cs create mode 100644 scripts/production/ResourceGrid.cs create mode 100644 scripts/ui/DynamicTabManager.cs create mode 100644 scripts/ui/MainMenu.cs diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8ad74f7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0af181c --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +# Godot 4+ specific ignores +.godot/ +/android/ diff --git a/.vs/ProjectEvaluation/test.metadata.v7.bin b/.vs/ProjectEvaluation/test.metadata.v7.bin new file mode 100644 index 0000000000000000000000000000000000000000..4aa7c54ff6da7ec32021ad44c10ac41d827bc03d GIT binary patch literal 158711 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 CL=X1> literal 0 HcmV?d00001 diff --git a/.vs/ProjectEvaluation/test.projects.v7.bin b/.vs/ProjectEvaluation/test.projects.v7.bin new file mode 100644 index 0000000000000000000000000000000000000000..2804777a539f1525410fa8be360e60bbf49fe6e6 GIT binary patch literal 88192 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 Lo?Kl7 literal 0 HcmV?d00001 diff --git a/.vs/Test/DesignTimeBuild/.dtbcache.v2 b/.vs/Test/DesignTimeBuild/.dtbcache.v2 new file mode 100644 index 0000000000000000000000000000000000000000..a7fa6893b0607525f9803c85a85adf0e7d45d186 GIT binary patch literal 82815 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 literal 0 HcmV?d00001 diff --git a/.vs/Test/v17/.suo b/.vs/Test/v17/.suo new file mode 100644 index 0000000000000000000000000000000000000000..f2539a1b35f3cace30d1495db62278afb4374f89 GIT binary patch literal 17920 zcmeHOU5p!76&`O=NC*(xq-h9gvdtf%+1ZZ&?F}^X+Uq3kZnKRyyCE@xv1c}M>Rm6k zH_eh=f#9V)PJ#BRs0CQf}N_t9-}Pbngg zX*X`(yvZ!a5$%S%Xa$BAI<)II7HI)J3HL{Djj= z2H!fsRK^v*5>cW`z$)7Gxfl39iJY|nulU)}b2Vm?uz@l66W@Im2!Np<(2SCj*i?`67^|H;Ra|F20+N6fUhZBD>L*_DKZdfTErv1RtpM*Z##({amr>3L9jvP4g=Sc>inV-l{Nx+rW@uT^mT?4e z>Q)R1=$tzAzByoL4>G`8f+lE!(o>+yAti`k0yG}SGYZ-!Ro6oV_^E4=r@Z1njIvxW z2F_iV|GWI(%>L=}e-#|*9`1Jjr`<_gw_KA$X-J_WzAM<>EX&-4M5;m(l~95u`K-^% z0OZd@m?G}mUgZz>N;#`3v`a}lRcmeY3W9Kzh^eratX;{&%44c&)J{M$a9vf|LT*;OQm3s1nJsWW=T zZ(sl8SZ#Vebga1vXr#JkE8f@|(jW24(5jq0-9G<=Sou8k zFVcSr97o|sI~ackHKqO24u0-aRalJNm8a3`Gic{v2l(y$KLYFh zxYE01yuFZvQWFvbZSjEoX`BAW(AL*#?VW;!X8=2j)f~YnIr3vj%L7PbPlDD+k4;*Kg2%Nb6Usj z>u=XLM+9BzHA&D9t|0$S1G9nglj^9YHu7L6Pbd7p z!395e9qPc;{b+x3F5Ck5AL>)|t$Uq++6t2Y|K5{?e>{slup*>Q1#v&@&X73y&SH0% z!B1-9*~Oixh;n17F@@YL_68FYi8dVfC>^!v$*hkci`F!FFe5nQkK)JH4LrH;P}?zp zF%BOm&)Q8u0BK>w!Xh4lhL(jiHt@E$>hv8f*9*C$TRLZ5+sOiN4t)uW-c16Jihj}8 zIw@k4$jc!XM+uf>%#WA`FcAxico=oEi`KJcKlEe$D$2{>zx2w1^mo_o>;3xgx4!+t z+||{YRrme#+K*4ZaD3w1*Jppm^|i|ouj|NqGSL39yt%@qE0dRfb06|8TdH+|mDVTS z5I|bsYl22Vt=Do!SZM|?r-!o+x^dtD^o!p zZ4YWA%-JvYJYu*~>o5C!Y$Yfp8CYAz4AAj99Gk7Kq*-Ur4V*CYq;U$Pp+8^8KE^Xw zrdgg3s{=g0Ci24?wm17vUHo#7+3PUAOvos^*1eb5_np@dzx0=1T;6bTV*Rl4)~o+H z@yw3j4E=K8&-v%BpQn2rA)~}5H@

jcvm}`H}JB54Qa~-m0Wk-rJM3Hv&zoh&d?$ z2WO^?C%rAwH^o~6mb-pG_IO3PAolwdbdw-7qc8@k!YdKNcU0&LG3W#l#CU3(L>U#< zV;XU47!lM+plncRLksY<81T6_;4_F~RPp^x@M`=WQ4C-G+xD`KYXb24p#{>9iMi;P8n$;4V!!byJH5)resjYRHWGRbBH3R6QIs zja)n)(}R;f<%ho1fQH|NsFn%@Q(;XV3? z`}38Va_Q`RejqzrG0T;#KNgBavqmXDJ7rE+E7>XvWh?n|VFn+@+_XMb$XE5;ls>JW zHp{3!KYt++Nk&7VL`>C&LJ2jLPDa#NERs;QNGK2sYGJe(T6nhe&Q(gq*=nIQT{eq) zwQ$ZHxE1}uJ|OPaa779SyHnT3QuZi=k7ULM{DByW&F_yGfj~Tq3`XMpng+oZn|Dga&593Z+8=Dm?;`#%fL5)% z;bqHi5~Z%Ul5pa(JW1-Tm0j428gBqrpaG0y-{C1lzj(T}%uyOXck8R`!wO*sZtlZs z=lspOrO`eAv(saz=YI>eM(*_aUtJfotiZbec@Fkr4!l{k4|hpi`rj#ay!tKe=WkB@ z^x;kk`(Uo&Y^>E81n$2y_)eE}ut@^_1=4Bf#BZI)(ZaX>iDk(So=o!pVOFZWN%;SL zywA}K@H&24bMpMt+xe@s_ADEaE&~~G|E}%v^FJKiAsF1wA1A~uh-ugRAh>_fHh%6H z^!qZn;ZMQ}w^m}xb_e1K*o5_SSl&O_gLZZTyw3kxl=U)xJN_|H0C|C40{a;_?>}xw zdwbi!&$B0q-=Z)6|ImKE&)Yw|`FI*DV83mNijL69`77@W@eYazcK24Q!AUfRiO#_} zveZem^PL9|UHYH)+h>0F)rBit9{+BM_;2VTCo{-*=~5@X|H*n`A}x1Ik_ zZh!MtWjy?1e)HPZ*GFHU?ec%K`xm#5|DE!$EB|@^`r(oPUe7SC8TwqZZcUx1Y+g371k zVdZGr!o1d}&8PKZrM89l0VnZuKXkJ|{~`XlhC+@|UEzX!*w>$WxLp4!#Bclh2ZE8l aP+*Y+?)3UM9B+AL$nO5X$c1;i{{MeH&`_ZO literal 0 HcmV?d00001 diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..f233d82 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,47 @@ +{ + "version": "2.0.0", + "configurations": [ + { + "name": "Play in Editor", + "type": "godot-mono", + "mode": "playInEditor", + "request": "launch" + }, + { + "name": "Launch", + "type": "godot-mono", + "request": "launch", + "mode": "executable", + "preLaunchTask": "build", + "executable": "", + // See which arguments are available here: + // https://docs.godotengine.org/en/stable/getting_started/editor/command_line_tutorial.html + "executableArguments": [ + "--path", + "${workspaceRoot}" + ] + }, + { + "name": "Launch (Select Scene)", + "type": "godot-mono", + "request": "launch", + "mode": "executable", + "preLaunchTask": "build", + "executable": "", + // See which arguments are available here: + // https://docs.godotengine.org/en/stable/getting_started/editor/command_line_tutorial.html + "executableArguments": [ + "--path", + "${workspaceRoot}", + "${command:SelectLaunchScene}" + ] + }, + { + "name": "Attach", + "type": "godot-mono", + "request": "attach", + "address": "localhost", + "port": 23685 + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..a8033a3 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "godotTools.editorPath.godot4": "k:\\Tool_Dev\\Godot\\Godot_v4.3-stable_mono_win64.exe" +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..01a6eb9 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,18 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "command": "", + "type": "process", + "args": [ + "--build-solutions", + "--path", + "${workspaceRoot}", + "--no-window", + "-q" + ], + "problemMatcher": "$msCompile" + } + ] +} \ No newline at end of file diff --git a/PROJECT_STRUCTURE.md b/PROJECT_STRUCTURE.md new file mode 100644 index 0000000..916d21b --- /dev/null +++ b/PROJECT_STRUCTURE.md @@ -0,0 +1,112 @@ +# 项目结构说明 + +## 📁 项目根目录结构 + +``` +test/ +├── 📁 scripts/ # 脚本文件(按功能分类) +│ ├── 📁 core/ # 核心系统脚本 +│ ├── 📁 data/ # 数据管理脚本 +│ ├── 📁 inventory/ # 库存系统脚本 +│ ├── 📁 production/ # 生产系统脚本 +│ └── 📁 ui/ # 用户界面脚本 +├── 📁 scenes/ # 场景文件 +├── 📁 data/ # 数据文件 +│ ├── 📁 config/ # 配置文件 +│ ├── 📁 translations/ # 本地化文件 +│ └── 📁 imports/ # 导入配置文件 +├── 📁 assets/ # 资源文件 +└── 📄 project.godot # 项目配置文件 +``` + +## 📂 详细文件分类 + +### 🔧 scripts/ - 脚本文件 + +#### 📁 core/ - 核心系统 +- `GameScene.cs` - 主游戏场景控制器 + +#### 📁 data/ - 数据管理 +- `GameData.cs` - 游戏数据管理器 +- `ResourceCategoryManager.cs` - 资源分类管理器 + +#### 📁 inventory/ - 库存系统 +- `InventoryManager.cs` - 库存管理器(单例) +- `InventoryTableManager.cs` - 库存表格UI管理器 +- `InventoryCategoryManager.cs` - 库存分类管理器 + +#### 📁 production/ - 生产系统 +- `ManualCollectionPanel.cs` - 手动采集面板 +- `ResourceGrid.cs` - 资源网格组件 + +#### 📁 ui/ - 用户界面 +- `DynamicTabManager.cs` - 动态标签页管理器(管理"合成"和"生产线"标签) +- `MainMenu.cs` - 主菜单控制器 + +### 📁 scenes/ - 场景文件 +- `game_scene.tscn` - 主游戏场景 +- `ItemPanel.tscn` - 物品面板模板 +- `InventoryItem.tscn` - 库存物品模板 + +### 📁 data/ - 数据文件 + +#### 📁 config/ - 配置文件 +- `items.csv` - 物品数据配置 +- `resource_categories.json` - 资源分类配置 +- `inventory_categories.json` - 库存分类配置 + +#### 📁 translations/ - 本地化文件 +- `items.*.translation` - 物品数据本地化文件(Godot自动生成) + +#### 📁 imports/ - 导入配置 +- `*.import` - Godot资源导入配置文件 + +### 📁 assets/ - 资源文件 +- 图片、音频、字体等游戏资源 + +## 🎮 游戏标签页结构 + +### 📋 合成标签 +包含以下分类: +- **手动采集** - 可手动采集的基础资源 +- **基础资源** - 原始材料 +- **液体资源** - 液体类资源 +- **冶炼成品** - 冶炼后的材料 +- **建筑设施** - 基础建筑和设备 + +### 🏭 生产线标签 +包含以下分类: +- **生产设备** - 高级生产设备(组装机、化工厂等) + +## 🎯 设计原则 + +1. **功能分离**: 按照功能模块分类存放脚本 +2. **数据分离**: 配置文件与自动生成文件分开存放 +3. **清晰结构**: 每个文件夹都有明确的职责 +4. **易于维护**: 相关功能的文件集中管理 + +## 📋 自动加载顺序 + +项目中的自动加载脚本按以下顺序加载: +1. `GameData` - 游戏基础数据 +2. `ResourceCategoryManager` - 资源分类管理 +3. `InventoryManager` - 库存管理 +4. `InventoryCategoryManager` - 库存分类管理 + +## 🔄 依赖关系 + +- UI层依赖于数据层和库存层 +- 生产系统依赖于库存系统 +- 所有系统都依赖于核心数据管理器 + +## ⚠️ 重要维护说明 + +### 防止 Translation 文件自动生成 + +Godot 会自动将 CSV 文件识别为本地化资源并生成 `.translation` 文件。为了保持 `data/config/` 文件夹的整洁: + +1. **CSV 导入设置**:确保 `data/config/items.csv.import` 使用 `importer="keep"` +2. **文件夹隔离**:使用 `.gdignore` 文件让 Godot 忽略 `translations/` 和 `imports/` 文件夹 +3. **定期清理**:如果发现 config 文件夹中出现新的 `.translation` 文件,及时删除 + +详细说明请参考 `data/README.md` 文件。 \ No newline at end of file diff --git a/Test.csproj b/Test.csproj new file mode 100644 index 0000000..53cc1f1 --- /dev/null +++ b/Test.csproj @@ -0,0 +1,8 @@ + + + net6.0 + net7.0 + net8.0 + true + + \ No newline at end of file diff --git a/Test.sln b/Test.sln new file mode 100644 index 0000000..91ba11d --- /dev/null +++ b/Test.sln @@ -0,0 +1,19 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test", "Test.csproj", "{70D23D50-B427-4816-A2C3-FF2056DA4396}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + ExportDebug|Any CPU = ExportDebug|Any CPU + ExportRelease|Any CPU = ExportRelease|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {70D23D50-B427-4816-A2C3-FF2056DA4396}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {70D23D50-B427-4816-A2C3-FF2056DA4396}.Debug|Any CPU.Build.0 = Debug|Any CPU + {70D23D50-B427-4816-A2C3-FF2056DA4396}.ExportDebug|Any CPU.ActiveCfg = ExportDebug|Any CPU + {70D23D50-B427-4816-A2C3-FF2056DA4396}.ExportDebug|Any CPU.Build.0 = ExportDebug|Any CPU + {70D23D50-B427-4816-A2C3-FF2056DA4396}.ExportRelease|Any CPU.ActiveCfg = ExportRelease|Any CPU + {70D23D50-B427-4816-A2C3-FF2056DA4396}.ExportRelease|Any CPU.Build.0 = ExportRelease|Any CPU + EndGlobalSection +EndGlobal diff --git a/assets/textures/PixPin_2025-06-15_11-35-40.png b/assets/textures/PixPin_2025-06-15_11-35-40.png new file mode 100644 index 0000000000000000000000000000000000000000..639e87837f8174db60112a6b1a4c510ab6f684ac GIT binary patch literal 8087 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 QerX4`)_>!RcX~ws7gLp}G5`Po literal 0 HcmV?d00001 diff --git a/assets/textures/PixPin_2025-06-15_11-35-40.png.import b/assets/textures/PixPin_2025-06-15_11-35-40.png.import new file mode 100644 index 0000000..1e3d717 --- /dev/null +++ b/assets/textures/PixPin_2025-06-15_11-35-40.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://x8myw44ubs8k" +path="res://.godot/imported/PixPin_2025-06-15_11-35-40.png-f7908b72324f2ad4749c15407276e01d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/PixPin_2025-06-15_11-35-40.png" +dest_files=["res://.godot/imported/PixPin_2025-06-15_11-35-40.png-f7908b72324f2ad4749c15407276e01d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/icon.svg b/assets/textures/icon.svg new file mode 100644 index 0000000..9d8b7fa --- /dev/null +++ b/assets/textures/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/textures/icon.svg.import b/assets/textures/icon.svg.import new file mode 100644 index 0000000..f7cddc9 --- /dev/null +++ b/assets/textures/icon.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ddesmcbvjwu20" +path="res://.godot/imported/icon.svg-958a189a5c2fe57391e3d9b3ea181aa4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/icon.svg" +dest_files=["res://.godot/imported/icon.svg-958a189a5c2fe57391e3d9b3ea181aa4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/data/README.md b/data/README.md new file mode 100644 index 0000000..eaebc92 --- /dev/null +++ b/data/README.md @@ -0,0 +1,59 @@ +# 数据文件夹说明 + +## 📁 文件夹结构 + +### 📁 config/ - 配置文件 +包含游戏的核心配置文件: +- `items.csv` - 物品数据配置 +- `resource_categories.json` - 资源分类配置 +- `inventory_categories.json` - 库存分类配置 +- `items.csv.import` - CSV文件的导入设置 + +### 📁 translations/ - 本地化文件 +存放 Godot 自动生成的本地化文件(.translation)。 +这个文件夹包含 `.gdignore` 文件,告诉 Godot 忽略其中的内容。 + +### 📁 imports/ - 导入配置备份 +存放导入配置文件的备份。 +这个文件夹包含 `.gdignore` 文件,告诉 Godot 忽略其中的内容。 + +## ⚠️ 重要说明 + +### 防止 Translation 文件自动生成 + +如果你发现 `config/` 文件夹中又出现了 `.translation` 文件,说明 CSV 文件的导入设置被重置了。 + +**解决方法:** + +1. 检查 `data/config/items.csv.import` 文件 +2. 确保内容如下: + ``` + [remap] + + importer="keep" + type="" + + [deps] + + source_file="res://data/config/items.csv" + + [params] + ``` + +3. 如果不是这样,请修改为上述内容 +4. 删除任何新生成的 `.translation` 文件: + ```bash + del data\config\*.translation + ``` + +### 为什么会生成 Translation 文件? + +Godot 默认将 CSV 文件识别为本地化资源,会自动生成 `.translation` 文件。 +通过将导入器设置为 "keep",我们告诉 Godot 将 CSV 文件保持原样,不进行特殊处理。 + +## 🔧 维护建议 + +1. **不要手动编辑** `.import` 文件,除非必要 +2. **定期检查** config 文件夹,确保没有新的 translation 文件生成 +3. **备份重要配置** 在修改配置文件前先备份 +4. **使用版本控制** 跟踪配置文件的变化 \ No newline at end of file diff --git a/data/config/crafting_recipes.json b/data/config/crafting_recipes.json new file mode 100644 index 0000000..1b8dc1a --- /dev/null +++ b/data/config/crafting_recipes.json @@ -0,0 +1,17 @@ +{ + "recipes": [ + { + "id": "iron_ingot_smelting", + "outputItem": "iron_ingot", + "outputQuantity": 1, + "craftingMethod": "冶炼", + "craftingTime": 1.0, + "ingredients": [ + { + "itemId": "iron_ore", + "quantity": 1 + } + ] + } + ] +} \ No newline at end of file diff --git a/data/config/inventory_categories.json b/data/config/inventory_categories.json new file mode 100644 index 0000000..9bbd156 --- /dev/null +++ b/data/config/inventory_categories.json @@ -0,0 +1,20 @@ +{ + "categories": [ + { + "categoryName": "原材料", + "items": [ + "iron_ore", + "copper_ore", + "coal_ore", + "water" + ] + }, + { + "categoryName": "炼制成品", + "items": [ + "iron_ingot", + "copper_ingot" + ] + } + ] +} \ No newline at end of file diff --git a/data/config/items.csv b/data/config/items.csv new file mode 100644 index 0000000..bb30920 --- /dev/null +++ b/data/config/items.csv @@ -0,0 +1,13 @@ +Id,Name,Category,Description,Recipe,CraftTime,PowerConsumption,IconPath +iron_ore,铁矿,RawMaterial,基础原材料,可用于冶炼铁块,null,0,0,res://assets/textures/items/iron_ore.png +copper_ore,铜矿,RawMaterial,基础原材料,可用于冶炼铜块,null,0,0,res://assets/textures/items/copper_ore.png +stone_ore,石矿,RawMaterial,基础建筑材料,可用于建造建筑,null,0,0,res://assets/textures/items/stone_ore.png +coal_ore,煤矿,RawMaterial,重要的能源资源,可用于发电,null,0,0,res://assets/textures/items/coal_ore.png +water,水,RawMaterial,基础资源,可用于多种生产,null,0,0,res://assets/textures/items/water.png +crude_oil,原油,RawMaterial,重要的能源资源,可用于生产燃料,null,0,0,res://assets/textures/items/crude_oil.png +iron_ingot,铁块,ProcessedMaterial,由铁矿冶炼而成的基础材料,iron_ore:1,1.0,60.0,res://assets/textures/items/iron_ingot.png +copper_ingot,铜块,ProcessedMaterial,由铜矿冶炼而成的基础材料,copper_ore:1,1.0,60.0,res://assets/textures/items/copper_ingot.png +smelter,冶炼厂,Building,用于冶炼矿石的基础建筑,iron_ingot:4;copper_ingot:2,3.0,360.0,res://assets/textures/buildings/smelter.png +miner,采矿机,Building,自动采集矿石的基础建筑,iron_ingot:3;copper_ingot:1,2.0,420.0,res://assets/textures/buildings/miner.png +assembler,组装机,ProductionDevice,高级生产设备,可制造复杂物品,iron_ingot:6;copper_ingot:4,5.0,480.0,res://assets/textures/buildings/assembler.png +chemical_plant,化工厂,ProductionDevice,专业化工生产设备,可处理液体,iron_ingot:8;copper_ingot:6,6.0,600.0,res://assets/textures/buildings/chemical_plant.png \ No newline at end of file diff --git a/data/config/items.csv.import b/data/config/items.csv.import new file mode 100644 index 0000000..62cf302 --- /dev/null +++ b/data/config/items.csv.import @@ -0,0 +1,10 @@ +[remap] + +importer="keep" +type="" + +[deps] + +source_file="res://data/config/items.csv" + +[params] diff --git a/data/config/resource_categories.json b/data/config/resource_categories.json new file mode 100644 index 0000000..14fc9bc --- /dev/null +++ b/data/config/resource_categories.json @@ -0,0 +1,50 @@ +[ + { + "categoryName": "手动采集", + "itemIds": [ + "iron_ore", + "copper_ore", + "coal_ore", + "stone_ore", + "water", + "crude_oil" + ] + }, + { + "categoryName": "基础资源", + "itemIds": [ + "iron_ore", + "copper_ore", + "stone_ore", + "coal_ore" + ] + }, + { + "categoryName": "液体资源", + "itemIds": [ + "water", + "crude_oil" + ] + }, + { + "categoryName": "冶炼", + "itemIds": [ + "iron_ingot", + "copper_ingot" + ] + }, + { + "categoryName": "建筑设施", + "itemIds": [ + "smelter", + "miner" + ] + }, + { + "categoryName": "生产设备", + "itemIds": [ + "assembler", + "chemical_plant" + ] + } +] \ No newline at end of file diff --git a/data/translations/.gdignore b/data/translations/.gdignore new file mode 100644 index 0000000..e881406 --- /dev/null +++ b/data/translations/.gdignore @@ -0,0 +1,2 @@ +# Godot 会忽略这个文件夹中的所有文件 +# 这些是自动生成的本地化文件,不需要被 Godot 处理 \ No newline at end of file diff --git a/data/translations/items.Category.translation b/data/translations/items.Category.translation new file mode 100644 index 0000000000000000000000000000000000000000..f361fc55413c8ee1f0328df95d628da235951ea2 GIT binary patch literal 771 zcmbV~&r1S96vwBs-#?J3s8fa!6p>xBNP^O1l%XC9qGeqNU0Zi$W|is^5kb)3(7}tB zPSJnh9}->a(j~lSeV;n9K|%E3!<+Y=H}Aa}CXr0USlfK?U7!bygLu(33+5Tmq=aru zOLtAjhTJkrd}5Kc`^b%@w7>X1BuxUrrBf0H*DS}-EzNZ_X>gmf5$~R@7dY#OQs7eR zSuR;Gg60X%2C>ZPGN-wE+Tv^&VY*}-bGI!}C+P~)&bE$8LzqPuB4ZsO2%44FL!qB; zsulBjvBKsl7xwFebYqhqgFKBI(_Nl*#3`fa3;-I8Yyf+|@GB>1}9ORktc$!;7B$?eNKM z6tSwS@+#-E2Q!|$he~;D)f1~em*qnJ5W4E4^r_9=7rLvOpT62OpfA)&__i85&tkvv d@8zDnu0~ajZ$WhK?IMN3ZBO5bW=i1ue*)=RvTXnW literal 0 HcmV?d00001 diff --git a/data/translations/items.CraftTime.translation b/data/translations/items.CraftTime.translation new file mode 100644 index 0000000000000000000000000000000000000000..96833bbae2f6233f6c48ffe8585c7bce6f916be1 GIT binary patch literal 692 zcma))Jxc>Y5Qf*U_#IM2Q4kEoMvLTByh0F!l!C$~jg80V+$4wh5q390Y%Ii|VG#ry zODnOHjSI4gML?l=`xfbzIFiIZ^rFdN^ zHjBw%hhU2sHn?iInpXqCmNBiiyepwc0ji|5^rQN4oARXJ)Ce**0rFsw>9ANFcT?9E zweWy#lNR=8LuRl@%^<%3N|M)f#mB*^pE*D$Bcs*tgk=)*Rg80BXB4yGDPs=UU=q+t z;(X?V#)fYCzCd}X7C{=~qWpCP_p3AUzI^Ud`;Fe@eUhIxHO%Bav9BMN#^^e?Tj%sX zjP9k=&eFZi+|;>ihy83~zlpCOpZ2J>(NnHXumP;Zw_C6nu@CkD{ddaY;Jy9;%Flcs literal 0 HcmV?d00001 diff --git a/data/translations/items.Description.translation b/data/translations/items.Description.translation new file mode 100644 index 0000000000000000000000000000000000000000..3ac27ba9bc2d04d8a4424daa27473442a6c65065 GIT binary patch literal 1054 zcmWFv4svFI0u~_648&|eEDFT_1tpoenN_JNAw`LK#W{&3nfZA@VF&;zWPkMayO3j( zHcX5dngggv0*H%Ji}Op1l2hYz@{<#D;!E=5i<49HQW^M=#fj;u z#SH8~4p>Jj12>SFkyxA&Uy_)Vlghvg8PerQ_B>_1~KsgYGnY*m$wb^1IA7+lXS;gFMNPL*Oh4m_t)j)BW z{hJq-iJSoP^`IDLPjgxBCkG^ZVB(Sve$N7cYC)+6gh8oI9*A3j3ZBm2^?YH&)4uu7 z=1zDvZRYzuJx}}BKcBMV$*#VqZQGtV?Rh!5@#);@#HgEtq;B`F=W8coF>?2=mkkS^ zf@K+Aw)ehR*7$r@%Zui{&vs3Cv9$$AqBx*`;`1q6p;lv&UNYS@=Cm+kE@XSZQj0m@;ZxC#Q63;>^2jVk~E literal 0 HcmV?d00001 diff --git a/data/translations/items.IconPath.translation b/data/translations/items.IconPath.translation new file mode 100644 index 0000000000000000000000000000000000000000..e3121bccf4bd8c985516a418c1a02dc3aa5355ed GIT binary patch literal 999 zcmWFv4svFI0u~_648&|eEDFT_1tpoenN_JNAw`LK#W{&3nfZA@VF&;z3_JI3=8{_> z!Z0ynXbzwv2_P;?EzU13N=}W>$xlwqi7&~IFHTO)OJ(3gmdi`bO=aK&isYsi7bm8t z7BjE|Iba>B4BS9wMq+VBd`V(bPAUU0kegJRoSj+%6#&^(TvC*omk!ZZoLrPyPy!TW zU|tDzyQ%8r+Oym=LIB|WH5k&QvrxU z4g&!$ApVa81d#Y*K(+!9YeB^ffHcTJ1t2y9VkRI4IV4|M;GPnY2030Eh!63#>b->W zb%8WU4G6~t|Fs2D3?Q|dKnxTARJ8h#E|8-D6a(ppnY*m$wOKomFAKzKK0fj?k64~2c%91NnFyw@0lx*4-yBd z2PHLmAoc~R<@#rJ^yp;dUR73WzswDTz}1&=|sXlq*LJheMzWbor(8 TY?A*0gA|-qfWgWT1kB<94VDCt literal 0 HcmV?d00001 diff --git a/data/translations/items.Name.translation b/data/translations/items.Name.translation new file mode 100644 index 0000000000000000000000000000000000000000..952d9ed7b47dc7cd87d0364af442db834e2205b4 GIT binary patch literal 735 zcma))&npCB7{_0~e?=0al&MwXfQv0k6c;IKxk#DDcw3X*8O=LuHy2qgHx~z&-8O}b zi;yCv_79QE%qF+JIEn8w_SGCHPks8%^PT5?o_F4PBa4w~R*q_D6{rOrU}4KK;>HeN zU$Qk*#5BjSOxWK+g)3v{?=NjLlhXT-)}yEk*j!i%Tjy%b(zTfCSgO#u$yrPAovFn+ zYk(8yLTFJgSRE371!qlo+|a~^>S${*&YF>~CG<`1lnt6B9NRFX-^+w<8(R)c#wtJv z_?^awhkyH0HDM)_DK6h%w0{tr53nBYn*l*z;lROs63Io73%fC6LQG``hu-D113b`rT9W9{pXpo~~Ihm<6xLd&T?{Bui4v x-}sU_Bk`_onR}G?uJ5VL&7DvgiF{sNGErC$I5 literal 0 HcmV?d00001 diff --git a/data/translations/items.PowerConsumption.translation b/data/translations/items.PowerConsumption.translation new file mode 100644 index 0000000000000000000000000000000000000000..95bc78a53cbca61bb1680b49c7f47b840d114ebd GIT binary patch literal 707 zcma))yGjE=6o$upyoCrV3WCAdXpt;Nw-5v&rJ$17*tkqKL$YKqab`DOKrF<^ut;NL z=^Nxh?6k2iv`g_1wRIBRXS7!L2wZ)v@R}&G+t~l%?%tL{Onko zu5wJ@7B1v|kTKc1lg~@BWv%@uM_`%-k}FY{7B?JWnU3KLLs{JAY&yK=nl;X%P-Fep=ZC2rXsXEe+-ptdN+K{pifP@Tkm8mtD|Ix=mS26-?D zs11>czmTqJPv5Sspr$hj@(`!xk6om1pVm9_v0a3o0&_s``yk)*iID#=e|bNTnkGzW zU-NqLBo^|unvDeQrTfw6+%#$(>RX?q_0- inventory = new Dictionary(); + + // UI引用 + private Label powerGenerationLabel; + private Label powerConsumptionLabel; + private Label powerStorageLabel; + private Label powerDischargeLabel; + private TabContainer categoryTabs; + private CraftingQueueManager craftingQueue; + + public override void _Ready() + { + GD.Print("GameScene _Ready 开始"); + + // 获取UI引用 + powerGenerationLabel = GetNode