分支: claude-session-a/battle-skill-item-pet-system
负责范围: Phase 1 战斗系统 + Phase 3 物品交互
Phase 1: 战斗系统完善(P0)
1.1 完整战斗指令UI
文件: assets/cocos/BattleView.ts, assets/game/Battle.ts, assets/net/ProtocolParser.ts
1.1.1 战斗指令面板重构
- 将现有3个按钮(攻击/防御/逃跑)扩展为6个:攻击、防御、道具、宠物、技能、逃跑
- 点击"攻击"后弹出敌方目标选择面板(列出所有敌方角色,带HP信息)
- 点击"道具"后弹出背包道具选择面板(显示可用道具列表)
- 点击"宠物"后弹出宠物选择面板(显示我方宠物列表,可切换出战宠物)
- 点击"技能"后弹出宠物技能选择面板(显示当前宠物的技能列表)
- 每个子面板需要有"返回"按钮回到主指令面板
协议发送:
- 攻击:
BattleAction.ATTACK|targetBid|0|0| - 防御:
BattleAction.DEFEND|0|0|0| - 道具:
BattleAction.ITEM|targetBid|0|itemSlot| - 宠物:
BattleAction.PET_ATTACK|targetBid|skillId|0| - 技能:
BattleAction.SKILL|targetBid|skillId|0| - 逃跑:
BattleAction.ESCAPE|0|0|0|
1.1.2 战斗角色展示
- 敌方角色区域(右上): 显示每个敌人的名称、等级、HP条
- 我方角色区域(左下): 显示玩家名称、HP/MP条 + 出战宠物名称、HP条
- HP条使用不同颜色: HP满=绿色, HP低=红色
- 角色死亡时显示灰色/删除线标记
1.1.3 战斗日志完善
- 多行滚动日志(最多20行,显示最近8行)
- 不同颜色区分消息类型:
- 普通消息: 白色
- 伤害: 红色
- 治疗: 绿色
- 状态变化: 紫色
- 系统提示: 黄色
- 回合开始时显示
--- 第 N 回合 ---
1.1.4 战斗协议完善
-
ProtocolParser.ts中完善parseBattleCommand的 BC/BP/BA/BU 解析 -
Battle.ts中增加sendItem,sendPetSwitch,sendPetSkill方法 - 处理战斗中的 HP 实时更新(从 BA 协议解析)
1.2 战斗动画与特效
文件: 新建 assets/cocos/BattleAnim.ts, 修改 BattleView.ts
1.2.1 伤害数字弹出
- 创建 floating text 动画节点
- 攻击命中时在被攻击者位置弹出红色伤害数字
- 治疗时弹出绿色治疗数字
- MISS 时弹出灰色 "MISS" 文字
1.2.2 状态效果显示
- 中毒/睡眠/混乱/眩晕 状态图标显示在角色旁边
- 状态生效/解除时在日志中显示对应颜色的文字
Phase 3: 物品交互完善(P1)
3.1 地面物品拾取/丢弃
文件: assets/cocos/MapRenderer.ts, assets/cocos/InputController.ts, assets/cocos/GameApp.ts
3.1.1 地面物品渲染
- 在
GameApp.ts中处理CA协议返回的ItemObjData和GoldObjData - 在地图上绘制物品图标(使用
adrnIndex中的 sprite) - 物品名称悬浮提示(鼠标悬停/触摸时显示)
- 金币用特殊图标显示
3.1.2 拾取交互
- 点击地面物品弹出拾取确认窗口
- 发送
PI协议拾取:sendPickItem(ws, x, y, dir) - 发送
DI协议丢弃:sendDropItem(ws, x, y, itemIndex) - 发送
DG协议丢弃金币: 需要新建sendDropGold函数
3.2 物品详情
文件: assets/cocos/InventoryView.ts
3.2.1 物品属性面板
- 点击背包中的物品弹出详情面板
- 显示: 名称、类型、等级、耐久度、属性、描述
- 操作按钮: 使用(消耗品)/ 装备(装备品)/ 丢弃
- 装备后更新 EquipmentSystem 状态
3.2.2 物品堆叠
- 同类物品合并显示(名称+数量)
- 拆分堆叠功能(输入拆分数量)
3.3 银行/仓库
文件: 新建 assets/cocos/BankView.ts(ItemBank.ts 已有数据层)
- 银行窗口UI(标题栏可拖拽)
- 左侧: 银行存款列表
- 右侧: 背包物品列表(可双击存入)
- 存款/取款按钮
- 与
GameClient连接发送对应协议
技术规范
- Layer: 所有
new cc.Node()创建的子节点必须node.layer = 1 << 25 - UITransform: 所有 UI 子节点必须
addComponent(UITransform) - 拖拽: 所有弹窗窗口添加
titleBar+makeDraggable() - 协议: 保持
|分隔字段格式 - 无注释: 命名即文档,只在非显而易见处写注释
Commit 格式
[session-a] feat: 简短描述
评论
评论功能即将上线,敬请期待。