feat: 实现避难所仓储系统与生存状态HUD改进

- 新增避难所仓储功能,支持物品在随身背包与仓储间转移
- 添加生存状态图标资源与状态阈值告警系统
- 重构HUD界面,优化状态显示与操作流程
- 扩展游戏核心系统,增加仓储相关动作和校验
- 更新文档说明仓储规则与实现细节
This commit is contained in:
2026-04-28 22:58:49 +08:00
parent e783e6e533
commit 6234a50bdb
27 changed files with 1455 additions and 1024 deletions
+12 -1
View File
@@ -93,6 +93,12 @@ Buff 必须具备可解释来源与可清除/可缓解路径:
- 背包容量 `bagCapacity`:体积上限
- 容器(箱子/仓库)容量 `storageCapacity`:体积上限
当前实现采用:
- `Field Bag`:在线行动时唯一权威随身背包
- `Shelter Storage`:避难所内的长期仓储层
- 主 HUD 只摘要显示随身容量,完整整理在独立背包弹层完成
设计理由:
- 体积比“格子”更适合废土资源管理的“取舍”表达
@@ -108,6 +114,12 @@ Buff 必须具备可解释来源与可清除/可缓解路径:
- 基地可修理(消耗材料 + 时间)
- 野外可应急修理(更高成本/更低效率)
### 3.3.4 仓储访问规则
- 仓储不是全地图随时可开,而是地点约束能力
- 当前版本仅在 `home / Shelter-7` 允许取放仓储
- 配方在避难所内可以读取仓储材料,避免“物资明明囤着却不能做”的违和感
## 3.4 制作、烹饪、锻造与科研
### 3.4.1 配方数据结构(通用)
@@ -328,4 +340,3 @@ stateDiagram-v2
- 风险定价:高风险区域的补给更贵、材料更便宜
经济更完整设计见:[05-数值与经济.md](./05-%E6%95%B0%E5%80%BC%E4%B8%8E%E7%BB%8F%E6%B5%8E.md)
+21 -2
View File
@@ -54,6 +54,7 @@ flowchart TB
- 容量计算(体积/堆叠)
- 移入移出、消耗、掉落
- 装备槽与耐久更新
- 随身背包与避难所仓储之间的转移
边界:
@@ -99,7 +100,15 @@ flowchart TB
- 监听世界事件(到达地点、获得物品、完成战斗等)
- 驱动任务事件池与奖励发放
### 8.3.7 ContentService(内容服务
### 8.3.7 ViewProjection(视图投影层
职责:
-`GameState` 投影成 HUD 可直接消费的 `GameView`
- 产出生存阈值告警、仓储可访问性、战斗与事件视图
- 保证 UI 不需要反向猜测领域规则
### 8.3.8 ContentService(内容服务)
职责:
@@ -107,6 +116,17 @@ flowchart TB
- 提供按 ID 与按标签检索能力
- 提供校验:唯一性、引用完整性、字段类型、循环依赖检查
### 8.3.9 当前代码映射
当前仓库中已经开始按模块边界落地:
- `packages/game-core/src/systems/inventory-system.ts`
- `packages/game-core/src/systems/place-system.ts`
- `packages/game-core/src/systems/effect-system.ts`
- `packages/game-core/src/systems/survival-system.ts`
- `packages/game-core/src/systems/quest-system.ts`
- `packages/game-core/src/view-projection.ts`
## 8.4 数据与配置组织(建议)
### 8.4.1 文件结构建议
@@ -182,4 +202,3 @@ flowchart TB
- 存档迁移
- 内容校验:
- CI 中运行 Schema 校验与引用完整性检查
+4 -1
View File
@@ -94,8 +94,10 @@ UI 组件 <- Query Cache <- 最新 GameView
- `apps/web/public/generated/ui/character-preview.png`:角色立绘
- `apps/web/public/generated/ui/item-atlas.png`:物资图集原图
- `apps/web/public/generated/ui/equipment-atlas.png`:装备图集原图
- `apps/web/public/generated/ui/status-atlas.png`:生存状态图集原图
- `apps/web/public/generated/ui/items/*`:切分后的物资图标
- `apps/web/public/generated/ui/equipment/*`:切分后的装备槽素材
- `apps/web/public/generated/ui/status/*`:切分后的生存状态图标
对应映射入口:
@@ -105,6 +107,7 @@ UI 组件 <- Query Cache <- 最新 GameView
- 地点图使用整图背景,服务于中央场景和左侧路线卡。
- 物资与装备图使用 atlas + 裁切结果,服务于快捷栏、库存卡、角色槽位。
- 生存状态图使用 atlas + 裁切结果,服务于状态效果卡和后续中断提示。
- 所有引用都走 `uiAssets.ts`,避免组件里散落硬编码路径。
## 12.6 HUD 信息职责
@@ -138,7 +141,7 @@ UI 组件 <- Query Cache <- 最新 GameView
- 角色立绘与槽位矩阵
- 属性与状态效果
- 快捷栏
- 完整库存管理
- 完整库存与避难所仓储管理
- 任务与休整
### 12.6.5 BottomDock
@@ -95,7 +95,7 @@ TinyWaste Online 不是网页式信息展示项目,而是一款:
中频系统改用面板弹出:
- 背包
- 背包 / 避难所仓储
- 蓝图
- 任务
- 完整日志
@@ -151,6 +151,12 @@ TinyWaste Online 不是网页式信息展示项目,而是一款:
当前项目已经有 `Quick Slots + Inventory` 雏形,下一步建议补 `Shelter Storage`
当前实现进度:
- 已经落地 `Field Bag + Shelter Storage` 双层库存
- 仅位于 `home / Shelter-7` 时可访问避难所仓储
- 避难所内制作会同时读取背包与仓储材料,避免资源可见却不可用
### 13.6.3 物品状态
每个背包物品后续建议支持:
@@ -275,17 +281,20 @@ TinyWaste Online 不是网页式信息展示项目,而是一款:
## 13.11 当前代码层面的下一批重点
1. `engine.ts` 继续拆成子模块:
- `time-system`
1. 当前已拆出的运行时模块:
- `inventory-system`
- `combat-system`
- `event-system`
- `place-system`
- `effect-system`
- `survival-system`
- `quest-system`
- `view-projection`
2. 为状态阈值、背包容量、战斗结算分别补单元测试
3. 引入基地仓库与背包转移逻辑
4. 为背包、任务、蓝图面板补筛选与分类
5. 为状态系统引入更明确的阶段化惩罚定义
2. 下一轮继续拆出:
- `combat-system`
- `event-system`
3. 为状态阈值、背包容量、战斗结算分别补单元测试
4. 继续强化基地仓储:分类、批量整理、仓储专属配方
5. 为背包、任务、蓝图面板补筛选与分类
6. 为状态系统引入更明确的阶段化惩罚定义
## 13.12 结论