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:
manpengan
2026-03-28 23:31:52 +08:00
parent 18cd4d8409
commit 212b12ab6b
15 changed files with 470 additions and 439 deletions

View File

@@ -1,9 +1,13 @@
module.exports = {
import { createLevelPresets } from '../shared/level-presets.js'
export const beijing = {
id: 'beijing',
contentVersion: 1,
continentId: 'asia',
countryId: 'china',
regionId: 'north_china',
sortOrder: 1,
unlockAfterCityId: null,
unlockAfterCityId: 'tokyo',
bundle: {
packId: 'main',
preload: 'startup',
@@ -13,7 +17,7 @@ module.exports = {
nameEn: 'Beijing',
bgColor: '#CC2936',
tagline: '天安门前看猫猫',
funFact: '北京是世界上拥有最多宫殿的城市',
funFact: '北京是中国的历史文化名城',
},
cover: {
catImage: 'images/cats/cat_beijing.png',
@@ -23,43 +27,33 @@ module.exports = {
cat: {
id: 'cat_beijing',
name: '京京',
intro: '戴虎头帽的橘猫,最爱在胡同里晒太阳',
baseColor: '#F28C28',
pattern: 'tabby',
patternColor: '#D4761A',
accessory: '虎头帽',
expression: 'smile',
},
passport: {
stampId: 'stamp_beijing',
stampLabel: '北京',
},
elements: [
{ id: 'beijing_01', name: '糖葫芦', category: 'food', rarity: 'core', image: 'images/elements/beijing/beijing_01.png', tags: ['sweet', 'street-food', 'red'] },
{ id: 'beijing_02', name: '京剧脸谱', category: 'culture', rarity: 'core', image: 'images/elements/beijing/beijing_02.png', tags: ['opera', 'mask', 'colorful'] },
{ id: 'beijing_03', name: '天安门', category: 'landmark', rarity: 'core', image: 'images/elements/beijing/beijing_03.png', tags: ['building', 'red', 'iconic'] },
{ id: 'beijing_04', name: '烤鸭', category: 'food', rarity: 'core', image: 'images/elements/beijing/beijing_04.png', tags: ['meat', 'famous', 'golden'] },
{ id: 'beijing_05', name: '兔儿爷', category: 'culture', rarity: 'core', image: 'images/elements/beijing/beijing_05.png', tags: ['toy', 'festival', 'rabbit'] },
{ id: 'beijing_06', name: '长城砖', category: 'landmark', rarity: 'core', image: 'images/elements/beijing/beijing_06.png', tags: ['wall', 'historic', 'grey'] },
{ id: 'beijing_07', name: '故宫角楼', category: 'landmark', rarity: 'core', image: 'images/elements/beijing/beijing_07.png', tags: ['palace', 'golden', 'ancient'] },
{ id: 'beijing_08', name: '豆汁', category: 'food', rarity: 'core', image: 'images/elements/beijing/beijing_08.png', tags: ['drink', 'green', 'local'] },
{ id: 'beijing_09', name: '铜锣', category: 'item', rarity: 'core', image: 'images/elements/beijing/beijing_09.png', tags: ['instrument', 'golden', 'round'] },
{ id: 'beijing_10', name: '毛笔', category: 'item', rarity: 'core', image: 'images/elements/beijing/beijing_10.png', tags: ['writing', 'black', 'thin'] },
{ id: 'beijing_11', name: '鸟巢', category: 'landmark', rarity: 'core', image: 'images/elements/beijing/beijing_11.png', tags: ['stadium', 'modern', 'steel'] },
{ id: 'beijing_12', name: '冰糖葫芦', category: 'food', rarity: 'core', image: 'images/elements/beijing/beijing_12.png', tags: ['candy', 'stick', 'red'] },
{ id: 'beijing_13', name: '四合院门', category: 'culture', rarity: 'accent', image: 'images/elements/beijing/beijing_13.png', tags: ['door', 'red', 'traditional'] },
{ id: 'beijing_14', name: '景泰蓝', category: 'item', rarity: 'accent', image: 'images/elements/beijing/beijing_14.png', tags: ['craft', 'blue', 'enamel'] },
],
levelPresets: [
{ id: 1, difficultyTier: 'intro', seedBase: 11001, elementCount: 6, piecesPerElement: 3, layers: 2, density: 'low', targetPassRate: 0.95, targetDurationSec: [60, 120] },
{ id: 2, difficultyTier: 'easy', seedBase: 11002, elementCount: 7, piecesPerElement: 3, layers: 2, density: 'low', targetPassRate: 0.90, targetDurationSec: [60, 120] },
{ id: 3, difficultyTier: 'normal', seedBase: 11003, elementCount: 8, piecesPerElement: 3, layers: 3, density: 'medium', targetPassRate: 0.80, targetDurationSec: [90, 150] },
{ id: 4, difficultyTier: 'normal', seedBase: 11004, elementCount: 9, piecesPerElement: 3, layers: 3, density: 'medium', targetPassRate: 0.70, targetDurationSec: [90, 150] },
{ id: 5, difficultyTier: 'hard', seedBase: 11005, elementCount: 10, piecesPerElement: 3, layers: 4, density: 'medium_high', targetPassRate: 0.60, targetDurationSec: [120, 180] },
{ id: 6, difficultyTier: 'boss', seedBase: 11006, elementCount: 10, piecesPerElement: [3,3,3,3,3,6,3,3,3,3], layers: 4, density: 'high', targetPassRate: 0.55, targetDurationSec: [120, 240] },
{ id: 'beijing_01', name: '天安门', category: 'landmark', rarity: 'core', image: 'images/elements/beijing/beijing_01.png', tags: ['gate', 'red'] },
{ id: 'beijing_02', name: '鸟巢', category: 'landmark', rarity: 'core', image: 'images/elements/beijing/beijing_02.png', tags: ['stadium'] },
{ id: 'beijing_03', name: '糖葫芦', category: 'food', rarity: 'core', image: 'images/elements/beijing/beijing_03.png', tags: ['sweet'] },
{ id: 'beijing_04', name: '烤鸭', category: 'food', rarity: 'core', image: 'images/elements/beijing/beijing_04.png', tags: ['duck'] },
{ id: 'beijing_05', name: '豆汁', category: 'food', rarity: 'core', image: 'images/elements/beijing/beijing_05.png', tags: ['drink'] },
{ id: 'beijing_06', name: '京剧脸谱', category: 'culture', rarity: 'core', image: 'images/elements/beijing/beijing_06.png', tags: ['opera'] },
{ id: 'beijing_07', name: '兔儿爷', category: 'culture', rarity: 'core', image: 'images/elements/beijing/beijing_07.png', tags: ['folk'] },
{ id: 'beijing_08', name: '毛笔', category: 'item', rarity: 'core', image: 'images/elements/beijing/beijing_08.png', tags: ['brush'] },
{ id: 'beijing_09', name: '铜锣', category: 'item', rarity: 'core', image: 'images/elements/beijing/beijing_09.png', tags: ['instrument'] },
{ id: 'beijing_10', name: '银杏叶', category: 'nature', rarity: 'core', image: 'images/elements/beijing/beijing_10.png', tags: ['leaf'] },
{ id: 'beijing_11', name: '玉兰花', category: 'nature', rarity: 'core', image: 'images/elements/beijing/beijing_11.png', tags: ['flower'] },
{ id: 'beijing_12', name: '白鸽', category: 'nature', rarity: 'core', image: 'images/elements/beijing/beijing_12.png', tags: ['bird'] },
],
levelPresets: createLevelPresets(11000),
shareCard: {
titleUnlocked: '我解锁了北京猫!',
titlePassport: '北京护照盖章完成',
},
}
export default beijing