nav: 统一 NavNode schema + runtime/roadmap 分离 + 城市补父级
- navigation/nav-schema.js: 统一 NavNode schema 定义 - navigation/runtime-nav.js: MVP runtime(仅 6 城市 active) - navigation/future-catalog.js: 路线图数据(不进 runtime) - 旧索引文件标注 @deprecated,重定向到新路径 - 6 城市补 countryId/regionId - game-design 明确 MVP vs V1.1+ 导航边界 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -75,160 +75,124 @@
|
||||
|
||||
## 2. 地图结构
|
||||
|
||||
### 2.1 导航层级
|
||||
### 2.1 MVP 导航(当前实现)
|
||||
|
||||
MVP 只开放亚洲 6 城市,直入城市选择页,不启用完整多级导航。
|
||||
|
||||
```
|
||||
洲(3x3 棋盘)
|
||||
└── 国家(3x3 棋盘,超过 9 国分页)
|
||||
└── 城市(3x3 棋盘,超过 9 城分页)
|
||||
└── 关卡(单局游戏)
|
||||
启动 → 亚洲城市页(3x3 棋盘,6 城市)→ 关卡
|
||||
```
|
||||
|
||||
中国因城市数量多(40 城),额外增加"地区"层级:
|
||||
- 跳过洲选择页(只有 1 个洲,多余点击)
|
||||
- 跳过国家/地区层级
|
||||
- 6 城市平铺在一页 3x3 棋盘中
|
||||
- 其他洲的入口不显示
|
||||
|
||||
**MVP 城市列表(固定 6 城):**
|
||||
|
||||
| 序号 | 城市 | 国家 | 解锁条件 |
|
||||
|------|------|------|---------|
|
||||
| 1 | 北京 | 中国 | 默认解锁 |
|
||||
| 2 | 东京 | 日本 | 通关北京 |
|
||||
| 3 | 曼谷 | 泰国 | 通关东京 |
|
||||
| 4 | 首尔 | 韩国 | 通关曼谷 |
|
||||
| 5 | 新加坡 | 新加坡 | 通关首尔 |
|
||||
| 6 | 伊斯坦布尔 | 土耳其 | 通关新加坡 |
|
||||
|
||||
### 2.2 V1.1+ 完整导航(后续启用)
|
||||
|
||||
城市数量超过 9 时启用完整多级导航,每页 3×3 棋盘,超过 9 项翻页。
|
||||
|
||||
```
|
||||
亚洲 → 中国 → 地区(3x3)→ 城市(3x3)→ 关卡
|
||||
亚洲 → 日本 → 城市(3x3)→ 关卡
|
||||
洲选择(3x3)
|
||||
└── 国家选择(3x3,分页)
|
||||
└── 城市选择(3x3,分页)
|
||||
└── 关卡
|
||||
```
|
||||
|
||||
### 2.2 洲选择页(第 1 级)
|
||||
|
||||
1 页,3×3 棋盘:
|
||||
中国因城市多(41 城),额外增加地区层级:
|
||||
|
||||
```
|
||||
┌────────┬────────┬────────┐
|
||||
│ 亚洲 │ 欧洲 │ 北美洲 │
|
||||
├────────┼────────┼────────┤
|
||||
│ 南美洲 │ 非洲 │ 大洋洲 │
|
||||
├────────┼────────┼────────┤
|
||||
│ │ │ │
|
||||
└────────┴────────┴────────┘
|
||||
亚洲 → 中国 → 地区(3x3)→ 城市(3x3)
|
||||
亚洲 → 日本 → 城市(3x3)
|
||||
```
|
||||
|
||||
6 个洲,3 个空位留给未来扩展。MVP 只开放亚洲,其余显示锁定 + "即将开放"。
|
||||
#### 洲选择页
|
||||
|
||||
每个洲的封面:洲标志性图案 + 解锁进度(如"6/70 城市已解锁")。
|
||||
6 个洲,1 页:亚洲、欧洲、北美洲、南美洲、非洲、大洋洲。
|
||||
|
||||
### 2.3 国家选择页(第 2 级)
|
||||
#### 亚洲国家页
|
||||
|
||||
#### 亚洲 — 2 页
|
||||
18 国,分 2 页:
|
||||
- Page 1: 中国、日本、韩国、泰国、新加坡、越南、马来西亚、印度尼西亚、菲律宾
|
||||
- Page 2: 印度、阿联酋、土耳其、以色列、尼泊尔、柬埔寨、斯里兰卡、缅甸、蒙古
|
||||
|
||||
Page 1:
|
||||
```
|
||||
┌────────┬────────┬────────┐
|
||||
│ 中国 │ 日本 │ 韩国 │
|
||||
├────────┼────────┼────────┤
|
||||
│ 泰国 │ 新加坡 │ 越南 │
|
||||
├────────┼────────┼────────┤
|
||||
│马来西亚│印度尼西亚│ 菲律宾│
|
||||
└────────┴────────┴────────┘
|
||||
```
|
||||
#### 中国地区页
|
||||
|
||||
Page 2:
|
||||
```
|
||||
┌────────┬────────┬────────┐
|
||||
│ 印度 │ 阿联酋 │ 土耳其 │
|
||||
├────────┼────────┼────────┤
|
||||
│ 以色列 │ 尼泊尔 │ 柬埔寨 │
|
||||
├────────┼────────┼────────┤
|
||||
│斯里兰卡│ 缅甸 │ 蒙古 │
|
||||
└────────┴────────┴────────┘
|
||||
```
|
||||
8 个地区,1 页:
|
||||
|
||||
#### 欧洲 — 2 页
|
||||
| 地区 | 城市 | 数量 |
|
||||
|------|------|------|
|
||||
| 华北 | 北京、天津、石家庄、太原、呼和浩特 | 5 |
|
||||
| 东北 | 沈阳、长春、哈尔滨、大连 | 4 |
|
||||
| 华东 | 上海、南京、杭州、合肥、福州、南昌、济南、苏州、厦门、青岛、宁波 | 11(2 页) |
|
||||
| 华中 | 郑州、武汉、长沙 | 3 |
|
||||
| 华南 | 广州、深圳、南宁、海口、三亚 | 5 |
|
||||
| 西南 | 成都、重庆、贵阳、昆明、拉萨 | 5 |
|
||||
| 西北 | 西安、兰州、西宁、银川、乌鲁木齐 | 5 |
|
||||
| 港澳台 | 香港、澳门、台北 | 3 |
|
||||
|
||||
Page 1:
|
||||
```
|
||||
法国、英国、意大利、西班牙、德国、荷兰、瑞士、奥地利、捷克
|
||||
```
|
||||
> 港澳台统一为 3 城(香港、澳门、台北),文档和索引一致。
|
||||
|
||||
Page 2:
|
||||
```
|
||||
希腊、俄罗斯、葡萄牙、挪威、瑞典、丹麦、芬兰、冰岛、匈牙利
|
||||
```
|
||||
### 2.3 导航数据合同
|
||||
|
||||
#### 北美洲 — 1 页
|
||||
```
|
||||
美国、加拿大、墨西哥 + 6 空位
|
||||
```
|
||||
所有导航层级使用统一的 NavNode schema(定义在 `js/content/navigation/nav-schema.js`):
|
||||
|
||||
#### 南美洲 — 1 页
|
||||
```
|
||||
巴西、阿根廷、秘鲁、智利、哥伦比亚 + 4 空位
|
||||
```
|
||||
| 字段 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| `type` | string | `continent` / `country` / `region` / `city-group` |
|
||||
| `id` | string | 全局唯一标识 |
|
||||
| `parentId` | string\|null | 父节点 id,洲级为 null |
|
||||
| `name` | string | 中文名 |
|
||||
| `nameEn` | string | 英文名 |
|
||||
| `sortOrder` | number | 同级排序 |
|
||||
| `themeColor` | string | 主题色 HEX |
|
||||
| `childType` | string\|null | 子节点类型:`country` / `region` / `city` / null |
|
||||
| `childIds` | string[] | 当前可消费的子节点 id(仅已启用的) |
|
||||
| `pageSize` | number | 每页格子数,默认 9 |
|
||||
| `isEnabled` | boolean | 当前版本是否启用 |
|
||||
| `isUnlockedByDefault` | boolean | 是否默认解锁 |
|
||||
|
||||
#### 非洲 — 1 页
|
||||
```
|
||||
埃及、南非、摩洛哥、肯尼亚 + 5 空位
|
||||
```
|
||||
分页通过 `shared/pagination.js` 的 `paginate(childIds, pageSize)` 动态计算,不手写 page 常量。
|
||||
|
||||
#### 大洋洲 — 1 页
|
||||
```
|
||||
澳大利亚、新西兰 + 7 空位
|
||||
```
|
||||
**数据文件分层:**
|
||||
|
||||
### 2.4 中国地区选择页(第 3 级,仅中国)
|
||||
| 文件 | 用途 | 是否进入 runtime |
|
||||
|------|------|-----------------|
|
||||
| `navigation/runtime-nav.js` | 当前版本可消费的导航节点 | ✅ 是 |
|
||||
| `navigation/future-catalog.js` | 未来版本城市/国家/地区规划 | ❌ 否 |
|
||||
| `navigation/nav-schema.js` | NavNode schema 定义 + 验证 | ✅ 是(类型定义) |
|
||||
| `docs/city-roadmap.md` | 全量 127 城市路线图 | ❌ 否 |
|
||||
|
||||
中国 40 个城市按地区分组,1 页 3×3:
|
||||
|
||||
```
|
||||
┌────────┬────────┬────────┐
|
||||
│ 华北 │ 东北 │ 华东 │
|
||||
├────────┼────────┼────────┤
|
||||
│ 华中 │ 华南 │ 西南 │
|
||||
├────────┼────────┼────────┤
|
||||
│ 西北 │ 港澳台 │ │
|
||||
└────────┴────────┴────────┘
|
||||
```
|
||||
|
||||
各地区包含城市:
|
||||
|
||||
| 地区 | 城市 | 数量 | 页数 |
|
||||
|------|------|------|------|
|
||||
| 华北 | 北京、天津、石家庄、太原、呼和浩特 | 5 | 1 |
|
||||
| 东北 | 沈阳、长春、哈尔滨、大连 | 4 | 1 |
|
||||
| 华东 | 上海、南京、杭州、合肥、福州、南昌、济南、苏州、厦门、青岛、宁波 | 11 | 2 |
|
||||
| 华中 | 郑州、武汉、长沙 | 3 | 1 |
|
||||
| 华南 | 广州、深圳、南宁、海口、三亚 | 5 | 1 |
|
||||
| 西南 | 成都、重庆、贵阳、昆明、拉萨 | 5 | 1 |
|
||||
| 西北 | 西安、兰州、西宁、银川、乌鲁木齐 | 5 | 1 |
|
||||
| 港澳台 | 香港、澳门、台北 | 3 | 1 |
|
||||
|
||||
### 2.5 城市选择页(第 3/4 级)
|
||||
|
||||
#### 其他国家(非中国)— 直接展示城市
|
||||
|
||||
| 国家 | 城市数 | 页数 |
|
||||
|------|--------|------|
|
||||
| 日本 | 4(东京、大阪、京都、札幌) | 1 |
|
||||
| 韩国 | 3(首尔、釜山、济州) | 1 |
|
||||
| 泰国 | 3(曼谷、清迈、普吉) | 1 |
|
||||
| 美国 | 7(纽约、洛杉矶、旧金山、拉斯维加斯、华盛顿、芝加哥、迈阿密) | 1 |
|
||||
| 意大利 | 4(罗马、米兰、威尼斯、佛罗伦萨) | 1 |
|
||||
| 其他国家 | 1-3 | 1 |
|
||||
|
||||
所有国家的城市数均 ≤ 9,无需分页(除华东 11 城需 2 页外)。
|
||||
|
||||
### 2.6 城市封面设计
|
||||
### 2.4 城市封面设计
|
||||
|
||||
每个格子显示:
|
||||
- 该城市/国家/洲的特色猫猫头像(已解锁:彩色,未解锁:灰色剪影)
|
||||
- 猫猫头像(已解锁:彩色,未解锁:灰色剪影)
|
||||
- 名称(中文)
|
||||
- 进度信息(已解锁:"X/6 关",未解锁:"🔒")
|
||||
- 进度(已解锁:"X/6 关",未解锁:"🔒")
|
||||
|
||||
### 2.7 分页交互
|
||||
### 2.5 分页交互
|
||||
|
||||
- 左右滑动翻页,底部圆点指示器
|
||||
- 首次进入默认第 1 页
|
||||
- 翻页动画 0.3s 弹性过渡
|
||||
- MVP 只有 1 页 6 城市,无需翻页
|
||||
|
||||
### 2.8 解锁规则
|
||||
### 2.6 解锁规则
|
||||
|
||||
- 同一层级内顺序解锁(通关前一个解锁下一个)
|
||||
- 同级顺序解锁(通关前一个解锁下一个)
|
||||
- 第一个项目默认解锁
|
||||
- 跨层级:通关一个国家所有城市后,解锁下一个国家
|
||||
- 中国地区内:通关华北所有城市后解锁东北,以此类推
|
||||
- MVP 只开放亚洲洲,亚洲内只开放中国(北京)和已有 MVP 城市
|
||||
- MVP:北京默认解锁,顺序通关解锁后续城市
|
||||
- V1.1+:跨层级解锁(通关一个国家所有城市后解锁下一个国家)
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user