M2 回合制调度:速度/阵营/队伍顺序规则、先制第一轮、4v4 调试入口与调度测试

- BattleRuntime 调度替换为完整规则:速度高优先、同速玩家优先、同阵营同速 PartyOrder 小优先;先制第一轮玩家全先行,第二轮恢复普通排序;RemainingTurnOrder 同步按调度序输出
- TurnBattleComponent 开局行动者为敌人时自动推进,协程等待 UI 监听注册避免先手事件丢失
- 调试入口支持 1v1 / 2v2 / 4v4 与先制开关;新增敌人队伍预设 4005(四普通敌人)
- UI:修复 UIForm 复用导致第二次开战按钮监听丢失;EnemySlots/TurnSlots 改为按数量复用 item,图标同一单位不重复加载
- EditMode 新增 10 个调度用例(共 35 个):排序规则、先制两轮、重复敌人分别击杀、4v4 创建、死亡移出候选、固定随机序列复现
This commit is contained in:
huangjun
2026-09-02 10:12:30 +08:00
parent 7dcac0ac87
commit 202ab337f9
14 changed files with 605 additions and 85 deletions
+25 -3
View File
@@ -36,7 +36,7 @@ Play Mode:未验证 / 通过(操作步骤、可见结果、截图或录像
| --- | --- | --- |
| M0 战斗壳层与单局基础状态 | Main 场景可打开和关闭半透明战斗壳层,地图更新暂停 | 已完成 |
| M1 架构收敛与 1v1 攻击闭环 | 玩家攻击、敌人反击并产生胜负 | 已完成 |
| M2 4v4 调度、先制与确定性随机 | 多人队伍按实时速度行动,普通和先制顺序正确 | 未开始 |
| M2 4v4 调度、先制与确定性随机 | 多人队伍按实时速度行动,普通和先制顺序正确 | 已完成 |
| M3 技能、目标、MP 与数值效果 | 攻击和技能可合法选目标并结算 HP/MP | 未开始 |
| M4 状态、眩晕与速度变化 | 眩晕跳过行动,速度变化立即刷新顺序 | 未开始 |
| M5 逃跑、结束矩阵与单局回写 | 四种结果正确,连续战斗继承 HP/MP | 未开始 |
@@ -50,7 +50,7 @@ Play Mode:未验证 / 通过(操作步骤、可见结果、截图或录像
| --- | --- | --- | --- | --- | --- |
| M0 | 已完成 | 通过(2026-08-31,dotnet build SepCore.Runtime.csproj 0 错误;Unity 编辑器内 Play Mode 实测编译通过) | 不适用(M0 无 EditMode 用例) | 通过(2026-08-31,见 M0 证据) | 已记录(M0 小节) |
| M1 | 已完成 | 通过(2026-09-02,dotnet build SepCore.Runtime.csproj 0 错误 0 警告;Unity 编辑器内编译通过) | 通过(2026-09-02,25 个 BattleRuntime 纯逻辑用例全部通过) | 通过(2026-09-02,见 M1 证据) | 已记录(M1 小节) |
| M2 | 未开始 | 未验证 | 未验证 | 未验证 | 未记录 |
| M2 | 已完成 | 通过(2026-09-02,dotnet build SepCore.Runtime.csproj 0 错误 0 警告;Unity 编辑器内编译通过) | 通过(2026-09-02,35 个 BattleRuntime 纯逻辑用例全部通过) | 通过(2026-09-02,见 M2 证据) | 已记录(M2 小节) |
| M3 | 未开始 | 未验证 | 未验证 | 未验证 | 未记录 |
| M4 | 未开始 | 未验证 | 未验证 | 未验证 | 未记录 |
| M5 | 未开始 | 未验证 | 未验证 | 未验证 | 未记录 |
@@ -452,7 +452,7 @@ Play Mode:通过(2026-09-02,Debugger -> Battle/Shell 实测:
调度仍按单位创建顺序轮流,M2 由完整速度/先制规则替换
```
### [ ] M2 1 至 4 人多对多、先制与确定性调度
### [x] M2 1 至 4 人多对多、先制与确定性调度
目标:一次完成完整的行动顺序模型。
@@ -479,6 +479,28 @@ Play Mode 验收:
- 两个相同 EnemyConfig 的敌人可以分别选择、受伤和死亡。
- 相同初始状态和随机序列产生相同行动记录。
验证证据:
```text
代码状态:已完成
Unity 编译:通过(2026-09-02,dotnet build SepCore.Runtime.csproj 0 错误 0 警告;Unity 编辑器内编译通过)
EditMode:通过(2026-09-02,BattleRuntime 纯逻辑用例 35 个全部通过;M2 新增调度用例 10 个:
速度排序、跨阵营同速玩家优先、同阵营同速 PartyOrder、2v2 每轮各行动一次、
先制第一轮玩家全先行且第二轮恢复速度序、非先制首轮直接速度序、
重复敌人配置分别击杀、4v4 创建 8 单位、轮到前阵亡移出候选集、4v4 固定随机序列复现)
Play Mode:通过(2026-09-02,Debugger -> Battle/Shell 实测:
1. 调试入口 1v1 / 2v2 / 4v4 与先制开关可用;
2. 普通模式按速度、阵营和队伍顺序行动,先制第一轮玩家全先行、第二轮恢复;
3. 2v2 两个相同敌人可分别受伤和死亡;
4. 每轮各单位最多行动一次,TurnSlots 按调度顺序显示;
5. 完成一场后 Close 再 Open 可正常重开并继续行动(修复 UIForm 复用导致按钮监听丢失);
6. 敌人数量固定时 EnemySlots/TurnSlots 复用 item,不再逐次销毁实例化。
截图:未提供)
提交或差异:未提交(working tree 差异:调度规则与先制、调试入口扩展、TurnSlots/EnemySlots 复用、
敌人图标数据、新增队伍预设 4005、EditMode 调度用例)
剩余问题:无阻塞。行动间歇时长仍为组件常量 0.6f;敌人目标选择(选中态视觉)按文档留到 M3/M7
```
### [ ] M3 技能、目标、MP 与数值效果
目标:让当前配表中的数值型攻击和技能完整可用。