93 lines
3.0 KiB
Markdown
93 lines
3.0 KiB
Markdown
# Gift Zone CityTeam Mashup Design
|
||
|
||
## Goal
|
||
|
||
在现有 MVP 壳子上补齐三个紧邻切片:
|
||
|
||
- 礼物区从 2 册扩到 3 册,先把 `猫猫册` 做成可浏览的 MVP 版本
|
||
- 接通本地 `cityTeam` 选队入口,只做本地选择和展示,不做服务端排行
|
||
- 把 `主题大混战` 做成可进入的独立对局,并提供本地奖励回写
|
||
|
||
## Scope
|
||
|
||
### In
|
||
|
||
- `gift-zone` 增加 `cats` tab 和汇总计数
|
||
- `cityTeam` 选择页、本地入队状态、入口按钮
|
||
- `mashup` 入口从首页可进入独立对局
|
||
- `mashup` 使用已解锁城市元素混搭生成棋盘
|
||
- `mashup` 通关奖励写回本地存档
|
||
|
||
### Out
|
||
|
||
- 真正的分享卡片视觉内容
|
||
- 开房 PK
|
||
- 城市战队排行榜服务端逻辑
|
||
- 礼物区 `动物册 / 地图册`
|
||
- 地区级猫猫收集规则
|
||
|
||
## Design Decisions
|
||
|
||
### 1. 猫猫册口径
|
||
|
||
先用“已通关城市猫”作为 `猫猫册` MVP 口径,而不是文档里的“地区猫”正式口径。
|
||
|
||
原因:
|
||
|
||
- 现有存档里已经有 `collectedCats[]` 城市完成态
|
||
- 现有 CityManifest 已经有 `cat` 和 `cover.catThumb`
|
||
- 这样可以不引入新资源、不改通关发奖链路
|
||
|
||
后续若升级为“地区猫”,只需要替换 `cats` album 的数据投影层,不必重写礼物区 UI 框架。
|
||
|
||
### 2. cityTeam 入口
|
||
|
||
`cityTeam` 入口同时挂在两个地方:
|
||
|
||
- 礼物区顶部信息卡
|
||
- 主页右侧“排行榜”卡片
|
||
|
||
如果未选队,进入 `city-team-select` 选择页;如果已选队,则展示当前所属战队的本地状态说明。选择仅允许已解锁城市,首次选择后本地锁定。
|
||
|
||
### 3. 主题大混战实现方式
|
||
|
||
不把 `mashup` 硬塞进现有城市关卡合同,而是新增一条轻量 mode 路径:
|
||
|
||
- `scene-store` 增加 `mashup` scene
|
||
- 生成器增加 mashup board 构建辅助函数
|
||
- `gameplay` 复用现有 `GameSession`
|
||
- `main.js` 根据 scene metadata 渲染 mashup 标题、结果和奖励文案
|
||
|
||
这样不需要把 `contentSystem.getCity()` 改成兼容“虚拟城市”,能控制改动面。
|
||
|
||
### 4. 混战奖励
|
||
|
||
混战不计入城市关卡进度。通关奖励规则:
|
||
|
||
- 优先随机发一个当前已解锁城市的冰箱贴
|
||
- 如果随机命中的冰箱贴已拥有,则发 `shuffle +1`
|
||
|
||
奖励完全本地化,只做存档回写和结果展示。
|
||
|
||
## Data Flow
|
||
|
||
### Gift Zone
|
||
|
||
`playerState` -> `contentSystem.getGiftAlbums()` / `getGiftAlbumEntries()` -> `scene-store gift-zone` -> `main.js` 礼物区页面
|
||
|
||
### CityTeam
|
||
|
||
`playerState.cityTeam` -> `scene-store` 入口判断 / 选择写回 -> `main.js` 选择页与状态卡
|
||
|
||
### Mashup
|
||
|
||
首页 `mashup` tile -> `scene-store.openHomeTile('mashup')` -> 构建 mashup board + session -> `main.js` gameplay -> 通关后 `scene-store.completeMashupRun()`
|
||
|
||
## Testing
|
||
|
||
- 内容系统测试:礼物区 album 列表包含 `cats`,计数与条目投影正确
|
||
- scene-store 测试:cityTeam 选择页可打开、可选择、选后锁定
|
||
- scene-store 测试:`mashup` 在通关 2 城后可进入
|
||
- 对局/难度测试:mashup board 由多个城市元素组成且可复现
|
||
- scene-store 测试:mashup 通关可写入奖励
|