feat: add puzzle residence configuration and reflection progress logic

- Introduced `puzzleResidences.ts` to define puzzle residence configurations including properties like display name, position, and puzzle availability.
- Added `reflectionProgress.ts` to manage badge unlocking logic based on place completion, including functions to determine unlocked badges and video sources for scenes.
This commit is contained in:
zhongyidian committed 2026-04-27 11:49:30 +08:00
1 parent e0fa47d21a
commit f5f36f75b5
153 files changed
+3846 -2352

No files matched your search

+267 -21
View File
@@ -20,7 +20,7 @@ export const puzzleDataConfig: Record<string, Record<number, PuzzlePieceData>> =
chenyun: {
// 碎片1 - 示例数据,请根据实际情况修改
1: {
title: '水乡少年·艰率成长',
title: '水乡少年·艰辛成长',
detailImage: 'chenyun/details/1',
route: 'place1',
},
@@ -208,7 +208,7 @@ export const puzzleDataConfig: Record<string, Record<number, PuzzlePieceData>> =
},
// 碎片16
16: {
title: '黄炎培的”实业救国“情怀”',
title: '黄炎培的“实业救国”情怀',
detailImage: 'huangyanpei/details/16',
route: 'internalization',
},
@@ -220,7 +220,7 @@ export const puzzleDataConfig: Record<string, Record<number, PuzzlePieceData>> =
route: 'place1',
},
2: {
title: '郑观应的推荐信郑观应的推荐信',
title: '郑观应的推荐信',
detailImage: 'sunzhongshan/details/2',
route: 'place1',
},
@@ -260,7 +260,7 @@ export const puzzleDataConfig: Record<string, Record<number, PuzzlePieceData>> =
route: 'place3',
},
10: {
title: '《中国国民党第一次全国代表大会宣言》',
title: '《中国国民党第一次 全国代表大会宣言》',
detailImage: 'sunzhongshan/details/10',
route: 'place3',
},
@@ -285,7 +285,7 @@ export const puzzleDataConfig: Record<string, Record<number, PuzzlePieceData>> =
route: 'reflection3',
},
15: {
title: '振兴中华对新时代青年的意义',
title: '振兴中华对新时代 青年的意义',
detailImage: 'sunzhongshan/details/15',
route: 'internalization',
},
@@ -297,7 +297,7 @@ export const puzzleDataConfig: Record<string, Record<number, PuzzlePieceData>> =
},
luxun: {
1: {
title: '鲁迅1927年南下广州时的照片',
title: '鲁迅1927年南下 广州时的照片',
detailImage: 'luxun/details/1',
route: 'place1',
},
@@ -364,7 +364,7 @@ export const puzzleDataConfig: Record<string, Record<number, PuzzlePieceData>> =
14: {
title: '鲁迅创作历程',
detailImage: 'luxun/details/14',
route: 'reflection1',
route: 'reflection',
},
15: {
title: '鲁迅精神的总结',
@@ -372,7 +372,7 @@ export const puzzleDataConfig: Record<string, Record<number, PuzzlePieceData>> =
route: 'reflection3',
},
16: {
title: '鲁迅在木刻上对青年的培养',
title: '鲁迅对青年的培养',
detailImage: 'luxun/details/16',
route: 'internalization',
},
@@ -391,73 +391,319 @@ export const puzzleDataConfig: Record<string, Record<number, PuzzlePieceData>> =
3: {
title: '中共二大旧址',
detailImage: 'maozedong/details/3',
route: 'place1',
route: 'place2',
},
4: {
title: '《向导》周刊三篇文章',
detailImage: 'maozedong/details/4',
route: 'place1',
route: 'place2',
},
5: {
title: '中共三大会议召开',
detailImage: 'maozedong/details/5',
route: 'place1',
route: 'place3',
},
6: {
title: '《孙中山手书名单》',
detailImage: 'maozedong/details/6',
route: 'place1',
route: 'place3',
},
7: {
title: '《孙文越飞联合宣言》',
detailImage: 'maozedong/details/7',
route: 'place1',
route: 'place3',
},
8: {
title: '毛泽东签发的两份中共四大通知',
detailImage: 'maozedong/details/8',
route: 'place1',
route: 'place4',
},
9: {
title: '中共四大立碑处',
detailImage: 'maozedong/details/9',
route: 'place1',
route: 'place4',
},
10: {
title: '毛泽东中国社会分析',
detailImage: 'maozedong/details/10',
route: 'place1',
route: 'place4',
},
11: {
title: '湖南农民运动考察报告',
detailImage: 'maozedong/details/11',
route: 'place1',
route: 'place4',
},
12: {
title: '少一人的全家福',
detailImage: 'maozedong/details/12',
route: 'place1',
route: 'place4',
},
13: {
title: '筹备方向的定夺',
detailImage: 'maozedong/details/13',
route: 'place1',
route: 'reflection',
},
14: {
title: '基层声音的汇聚',
detailImage: 'maozedong/details/14',
route: 'place1',
route: 'reflection',
},
15: {
title: '毛泽东思想的确立',
detailImage: 'maozedong/details/15',
route: 'place1',
route: 'internalization',
},
16: {
title: '毛泽东思想活的灵魂',
detailImage: 'maozedong/details/16',
route: 'internalization',
},
},
nieer: {
1: {
title: '九·一八事变',
detailImage: 'nieer/details/1',
route: 'place1',
},
2: {
title: '聂耳发表了《中国歌舞短论》',
detailImage: 'nieer/details/2',
route: 'place1',
},
3: {
title: '聂耳加入左翼文艺团体',
detailImage: 'nieer/details/3',
route: 'place1',
},
4: {
title: '英雄儿女胶片',
detailImage: 'nieer/details/4',
route: 'place2',
},
5: {
title: '志同道合',
detailImage: 'nieer/details/5',
route: 'place2',
},
6: {
title: '聂耳手写《义勇军进行曲》',
detailImage: 'nieer/details/6',
route: 'place3',
},
7: {
title: '聂耳在海外定稿曲谱',
detailImage: 'nieer/details/7',
route: 'place3',
},
8: {
title: '风云儿女上映',
detailImage: 'nieer/details/8',
route: 'place4',
},
9: {
title: '刘良模指挥数千人齐唱',
detailImage: 'nieer/details/9',
route: 'place4',
},
10: {
title: '国歌选定',
detailImage: 'nieer/details/10',
route: 'place5',
},
11: {
title: '国歌入宪',
detailImage: 'nieer/details/11',
route: 'place5',
},
12: {
title: '国歌立法',
detailImage: 'nieer/details/12',
route: 'place5',
},
13: {
title: '新中国奏响国歌的场景(上)',
detailImage: 'nieer/details/13',
route: 'place6',
},
14: {
title: '新中国奏响国歌的场景(下)',
detailImage: 'nieer/details/14',
route: 'place6',
},
15: {
title: '聂耳「人民音乐家」',
detailImage: 'nieer/details/15',
route: 'internalization',
},
16: {
title: '国歌精神的当代传承',
detailImage: 'nieer/details/16',
route: 'internalization',
},
},
zhangleping: {
1: {
title: '童年的回忆 (张乐平,1983)',
detailImage: 'zhangleping/details/1',
route: 'place1',
},
2: {
title: '张母的绣品',
detailImage: 'zhangleping/details/2',
route: 'place1',
},
3: {
title: '穷凶极恶的结果 (张乐平,1937)',
detailImage: 'zhangleping/details/3',
route: 'place2',
},
4: {
title: '长沙大火前夕 张乐平在街头墙上挥笔作画',
detailImage: 'zhangleping/details/4',
route: 'place2',
},
5: {
title: '侵略者的坟墓 (张乐平,1938)',
detailImage: 'zhangleping/details/5',
route: 'place2',
},
6: {
title: '早期三毛',
detailImage: 'zhangleping/details/6',
route: 'place3',
},
7: {
title: '三毛成长(三毛流浪记)',
detailImage: 'zhangleping/details/7',
route: 'place3',
},
8: {
title: '三毛新生(《向日葵》张乐平,1950-1965)',
detailImage: 'zhangleping/details/8',
route: 'place3',
},
9: {
title: '张乐平和儿童互通书信',
detailImage: 'zhangleping/details/9',
route: 'place4',
},
10: {
title: '儿童园丁',
detailImage: 'zhangleping/details/10',
route: 'place4',
},
11: {
title: '朋友画我的瓷板画(右)',
detailImage: 'zhangleping/details/11',
route: 'place5',
},
12: {
title: '朋友画我的瓷板画(左)',
detailImage: 'zhangleping/details/12',
route: 'place5',
},
13: {
title: '名人留言板',
detailImage: 'zhangleping/details/13',
route: 'place5',
},
14: {
title: '画自己',
detailImage: 'zhangleping/details/14',
route: 'place5',
},
15: {
title: '平民立场',
detailImage: 'zhangleping/details/15',
route: 'internalization',
},
16: {
title: '笔耕不辍',
detailImage: 'zhangleping/details/16',
route: 'internalization',
},
},
rongdesheng: {
1: {
title: '荣德生像',
detailImage: 'rongdesheng/details/1',
route: 'place1',
},
2: {
title: '民国时期上海的钱庄',
detailImage: 'rongdesheng/details/2',
route: 'place1',
},
3: {
title: '福新面粉厂',
detailImage: 'rongdesheng/details/3',
route: 'place2',
},
4: {
title: '“兵船”牌面粉商标',
detailImage: 'rongdesheng/details/4',
route: 'place2',
},
5: {
title: '上海申新第九纺织厂门楼(1933年旧照)',
detailImage: 'rongdesheng/details/5',
route: 'place2',
},
6: {
title: '“人钟牌”棉纱商标',
detailImage: 'rongdesheng/details/6',
route: 'place2',
},
7: {
title: '国际劳工局赞美申新三纺织厂劳工自治区',
detailImage: 'rongdesheng/details/7',
route: 'place2',
},
8: {
title: '上海申新一厂和八厂于1937年被日本飞机炸毁',
detailImage: 'rongdesheng/details/8',
route: 'place3',
},
9: {
title: '《人报》报道 乐农氏再度捐助面粉一万包',
detailImage: 'rongdesheng/details/9',
route: 'place3',
},
10: {
title: '心正思无邪 意诚言必中题字',
detailImage: 'rongdesheng/details/10',
route: 'place3',
},
11: {
title: '荣德生被绑架新闻报道',
detailImage: 'rongdesheng/details/11',
route: 'place4',
},
12: {
title: '荣德生拒绝荣氏工业结构外迁的报道',
detailImage: 'rongdesheng/details/12',
route: 'place4',
},
13: {
title: '毛泽东主席、陈毅副总理在荣毅仁陪同下,参观公私合营上海申新第九纺织厂',
detailImage: 'rongdesheng/details/13',
route: 'place4',
},
14: {
title: '荣德生与张 一九四九年九月,荣德生致函第一届全国政协謇的合影',
detailImage: 'rongdesheng/details/14',
route: 'place4',
},
15: {
title: '坚韧不拔',
detailImage: 'rongdesheng/details/15',
route: 'internalization',
},
16: {
title: '社会责任担当',
detailImage: 'rongdesheng/details/16',
route: 'internalization',
},
},
// 后续可以添加其他故居的数据
// sunzhongshan: { ... },
+102
View File
@@ -0,0 +1,102 @@
export interface PuzzleResidenceConfig {
residence: string
displayName: string
moduleName: string
left: string
top: string
image: string
hasPuzzle: boolean
hasMap?: boolean
mapImage?: string
}
export const PUZZLE_RESIDENCES: PuzzleResidenceConfig[] = [
{
residence: 'maozedong',
displayName: '毛泽东旧居',
moduleName: 'revolutionary',
left: '30%',
top: '35%',
image: '毛泽东',
hasPuzzle: true,
hasMap: true,
mapImage: '毛泽东导图',
},
{
residence: 'sunzhongshan',
displayName: '孙中山故居',
moduleName: 'revolutionary',
left: '12%',
top: '51%',
image: '孙中山',
hasPuzzle: true,
hasMap: true,
mapImage: '孙中山导图',
},
{
residence: 'luxun',
displayName: '鲁迅故居',
moduleName: 'cultural',
left: '26.3%',
top: '74%',
image: '鲁迅',
hasPuzzle: true,
hasMap: true,
mapImage: '鲁迅导图',
},
{
residence: 'huangyanpei',
displayName: '黄炎培故居',
moduleName: 'cultural',
left: '44%',
top: '67%',
image: '黄炎培',
hasPuzzle: true,
hasMap: true,
mapImage: '黄炎培导图',
},
{
residence: 'nieer',
displayName: '聂耳旧居',
moduleName: 'artistic',
left: '62%',
top: '60%',
image: '聂耳',
hasPuzzle: true,
hasMap: false,
},
{
residence: 'zhangleping',
displayName: '张乐平故居',
moduleName: 'artistic',
left: '73%',
top: '33%',
image: '张乐平',
hasPuzzle: true,
hasMap: false,
},
{
residence: 'rongdesheng',
displayName: '荣德生旧居',
moduleName: 'economic',
left: '90%',
top: '45%',
image: '荣德生',
hasPuzzle: true,
hasMap: false,
},
{
residence: 'chenyun',
displayName: '陈云故居',
moduleName: 'economic',
left: '80%',
top: '76%',
image: '陈云',
hasPuzzle: true,
hasMap: true,
mapImage: '陈云导图',
},
]
export const DEFAULT_PUZZLE_RESIDENCE =
PUZZLE_RESIDENCES.find((item) => item.hasPuzzle)?.residence || 'maozedong'