石器时代重构-6.10

分支: 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 协议返回的 ItemObjDataGoldObjData
  • 在地图上绘制物品图标(使用 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.tsItemBank.ts 已有数据层)

  • 银行窗口UI(标题栏可拖拽)
  • 左侧: 银行存款列表
  • 右侧: 背包物品列表(可双击存入)
  • 存款/取款按钮
  • GameClient 连接发送对应协议

技术规范

  1. Layer: 所有 new cc.Node() 创建的子节点必须 node.layer = 1 << 25
  2. UITransform: 所有 UI 子节点必须 addComponent(UITransform)
  3. 拖拽: 所有弹窗窗口添加 titleBar + makeDraggable()
  4. 协议: 保持 | 分隔字段格式
  5. 无注释: 命名即文档,只在非显而易见处写注释

Commit 格式

[session-a] feat: 简短描述

评论

评论功能即将上线,敬请期待。