51 lines
6.1 KiB
Markdown
51 lines
6.1 KiB
Markdown
# C 老彩虹实现与验证
|
||
|
||
## 临时测试开关
|
||
|
||
`GameConfig.forceOldRainbowWinStreakC = true` 当前默认开启:强制使用 C 组,启动、登录、回首页、进关时设为十连胜,输赢或退出都保持十连胜;临时跳过连胜关卡解锁门槛。真实 AB 分组不被覆盖,候选池、空池跳过和帮助关限制不变。
|
||
|
||
测试完成后将此开关改为 `false`,重新启动即可恢复真实 AB 分组、解锁门槛和正常连胜增减规则。测试过程中保存在本地的十连胜不回滚,关闭后下一次失败会按正常规则清零。
|
||
|
||
## 行为
|
||
|
||
- `abTests.layer_two === 3` 启用 C;资格沿用连胜解锁、十连胜、主线限制。
|
||
- 1×1 单格块(`block === 0`)全局排除,不论普通块还是特殊机制块都不能进入三个候选池。
|
||
- 墙体和方块就绪后按三池优先级选择完整方块,待转场揭幕后播放独立的满瓶开场动画:从屏幕左侧外沿曲线飞入屏幕中心,短暂停留晃动,再从瓶子中心释放原有彩虹粒子到目标块。瓶子在释放后淡出;落地时转换,尾迹消散后开放操作,开场引导延后显示。保留真实 `color`、类型、附件及限制,以 `oldRainbow` 标记通色能力。
|
||
- 彩虹只能忽略门和单色地块的颜色要求;其他门、墙和方块机制照常判断。正常出门及锤子消除仍走原事件流程。
|
||
- 同局只发一次,复活不重发,重新开局重新判断资格。空池跳过,后续不补发;生产队列不入开局池。
|
||
- C 首页、胜负结算、连胜说明复用 B 展示,游戏底部使用 A 的四按钮居中布局;原底部瓶子与背景始终隐藏,只作为开场动画的图像模板。彩虹瓶只用于开场这一次动画,之后不收集、不再次施放,也不发放连胜锤子。空池直接跳过动画。
|
||
|
||
## 预制体
|
||
|
||
使用已有 `Block_Prop[25]` 的 `rainbow_old`。`bg` 使用对应形状的 `100color0~22`,`mask` 使用新提供的对应形状 `100color0_mask~100color22_mask` SpriteFrame;两组帧均在预制体内序列化绑定。保留两张大彩虹纹理并按整块尺寸适配。原底色隐藏,钥匙、花瓣及其他机制附件保留。
|
||
|
||
新遮罩接入及 0.5 秒入场/0.5 秒停顿调整后,35 项 C 彩虹回归通过。已核对 23 张遮罩引用和所有形状适配,并在浏览器第 1 关观察到新遮罩正常显示,控制台无警告或错误。
|
||
|
||
## 单格漏选修正(2026-09-20)
|
||
|
||
- 原 C 运行时和离线扫描共同漏掉了 B 已有的单格排除,因此一致性测试未发现需求遗漏。现将 `block === 0` 放在三池分类之前统一排除,覆盖普通块及所有特殊机制。
|
||
- 新增三个回归场景:各类单格均不入池、混合盘面只选择多格候选、全单格盘面跳过并释放操作且不补发。三项修复前均失败,修复后通过。
|
||
- 修正后五个 C 彩虹测试文件共 35 项通过,包含运行时与 2,030 份关卡静态扫描结果的一致性检查。
|
||
- 重新静态扫描 2,030 份配置,新增主线空池关卡:735、929、973、1103、1119、1646、1898、1915、1922、1950;遵循空池跳过且不补发规则。该检查没有恢复已取消的 100 关随机运行任务。
|
||
|
||
## 曲线入场改版验证(2026-09-20)
|
||
|
||
- 5 个 `tools/test-rainbow-old-*.cjs` 文件共 32 项通过;其中开场控制器 9 项覆盖屏幕外入场、变换后的父节点坐标、中央停留与发射、瓶子淡出、后台暂停、大帧间隔和中断清理。
|
||
- `test-first-game-entry.cjs` 的 78 项及底部布局的 5 项定向回归通过,确认 A/C 四按钮对齐、B 原布局和开场解锁时序。
|
||
- 动画控制器及其依赖的 TypeScript 语义检查 0 错误;`git diff --check` 通过。
|
||
- 参考用户视频第 9~13 秒,按最新要求调整为 0.5 秒曲线入场、0.5 秒中央轻晃停留、0.7 秒粒子飞行;瓶子在释放后 0.15 秒淡出,尾迹结束再解锁。入场到落地共 1.7 秒。
|
||
- 加速调整后,开场控制器 9 项回归通过;已刷新预览产物并在浏览器确认加速后的入场、中央释放、转换和尾迹结束,控制台无警告或错误。
|
||
- Cocos 预览的 Recompile 本轮未刷新缓存,使用当前两个修改脚本的 TypeScript 转译结果更新忽略目录中的预览产物,保留原 Cocos 模块注册后刷新。实际浏览器第 1 关观察到左侧入场、中央瓶子、中央发射、整块转换及瓶子消失;底部四按钮居中,动画期间倒计时未开始,结束后成功拖动彩虹块出门,控制台无警告或错误。尚未做手机验收。
|
||
- 用户要求的 100 关随机运行审查已终止,本轮没有继续该任务。
|
||
|
||
## 前一版底部固定瓶验证(2026-09-20,历史记录)
|
||
|
||
- 5 个 `tools/test-rainbow-old-*.cjs` 文件共 29 项通过,包括 2,030 份配置分类一致性、满瓶飞行、落地转换、尾迹结束后解锁、转场与前后台暂停、失败重试、单次转换、空池、门消除事件、23 种形状 × 10 种颜色及连续滚动覆盖。
|
||
- 本轮 `test-rainbow-streak.cjs`、`test-first-game-entry.cjs` 共 128 项:127 通过,1 项为已确认在 HEAD 上也失败的 B 彩虹能量旧期望,未调整原断言。新增 C 首入、后续进关的不同转场时序、销毁中断及满瓶隐藏不重排验证均通过。
|
||
- 修改的 TypeScript 转译检查通过;新视觉脚本语义检查通过;`git diff --check` 通过。
|
||
- 点击 Cocos 预览的 Recompile 更新缓存脚本后,在浏览器第 1 关观察到左下满瓶、飞行粒子、落地整块转换、尾迹结束后瓶子及背景隐藏,随后显示首关引导。动画期间倒计时未开始,结束后方块可正常拖动。未记录到警告或错误;尚未在手机上验收。
|
||
|
||
测试使用 Node 内置测试器;未安装本地 TypeScript 时,可将 `TYPESCRIPT_PATH` 指向编辑器附带的 `typescript.js`。
|
||
|
||
关卡结果见 [候选池扫描](rainbow-old-candidate-scan.md)。排除单格后,第二池兜底为共 81 个主线关卡;第 68 关自身仍选择第一池(6 个普通候选)。主线共 13 关三池为空,按约定跳过。
|