diff --git a/src/assets/images/luxun/place1/展品2.png b/src/assets/images/luxun/place1/展品2.png index e1d3f15..b47767f 100644 Binary files a/src/assets/images/luxun/place1/展品2.png and b/src/assets/images/luxun/place1/展品2.png differ diff --git a/src/assets/images/puzzle/home/孙中山.png b/src/assets/images/puzzle/home/孙中山.png new file mode 100644 index 0000000..04bbd55 Binary files /dev/null and b/src/assets/images/puzzle/home/孙中山.png differ diff --git a/src/assets/images/puzzle/home/孙中山导图.png b/src/assets/images/puzzle/home/孙中山导图.png new file mode 100644 index 0000000..c15c0c0 Binary files /dev/null and b/src/assets/images/puzzle/home/孙中山导图.png differ diff --git a/src/assets/images/puzzle/home/底图.png b/src/assets/images/puzzle/home/底图.png new file mode 100644 index 0000000..a96615d Binary files /dev/null and b/src/assets/images/puzzle/home/底图.png differ diff --git a/src/assets/images/puzzle/home/张乐平.png b/src/assets/images/puzzle/home/张乐平.png new file mode 100644 index 0000000..d25a52e Binary files /dev/null and b/src/assets/images/puzzle/home/张乐平.png differ diff --git a/src/assets/images/puzzle/home/拼图.png b/src/assets/images/puzzle/home/拼图.png new file mode 100644 index 0000000..94a4425 Binary files /dev/null and b/src/assets/images/puzzle/home/拼图.png differ diff --git a/src/assets/images/puzzle/home/效果图.png b/src/assets/images/puzzle/home/效果图.png new file mode 100644 index 0000000..c7ab73e Binary files /dev/null and b/src/assets/images/puzzle/home/效果图.png differ diff --git a/src/assets/images/puzzle/home/毛泽东.png b/src/assets/images/puzzle/home/毛泽东.png new file mode 100644 index 0000000..ce7fd91 Binary files /dev/null and b/src/assets/images/puzzle/home/毛泽东.png differ diff --git a/src/assets/images/puzzle/home/毛泽东导图.png b/src/assets/images/puzzle/home/毛泽东导图.png new file mode 100644 index 0000000..64fbaf1 Binary files /dev/null and b/src/assets/images/puzzle/home/毛泽东导图.png differ diff --git a/src/assets/images/puzzle/home/箭头指引.png b/src/assets/images/puzzle/home/箭头指引.png new file mode 100644 index 0000000..4068268 Binary files /dev/null and b/src/assets/images/puzzle/home/箭头指引.png differ diff --git a/src/assets/images/puzzle/home/聂耳.png b/src/assets/images/puzzle/home/聂耳.png new file mode 100644 index 0000000..806aeeb Binary files /dev/null and b/src/assets/images/puzzle/home/聂耳.png differ diff --git a/src/assets/images/puzzle/home/荣德生.png b/src/assets/images/puzzle/home/荣德生.png new file mode 100644 index 0000000..ab9b1b4 Binary files /dev/null and b/src/assets/images/puzzle/home/荣德生.png differ diff --git a/src/assets/images/puzzle/home/鲁迅.png b/src/assets/images/puzzle/home/鲁迅.png new file mode 100644 index 0000000..33d28cd Binary files /dev/null and b/src/assets/images/puzzle/home/鲁迅.png differ diff --git a/src/assets/images/puzzle/home/鲁迅导图.png b/src/assets/images/puzzle/home/鲁迅导图.png new file mode 100644 index 0000000..bdf6076 Binary files /dev/null and b/src/assets/images/puzzle/home/鲁迅导图.png differ diff --git a/src/assets/images/puzzle/home/黄炎培.png b/src/assets/images/puzzle/home/黄炎培.png new file mode 100644 index 0000000..a491e24 Binary files /dev/null and b/src/assets/images/puzzle/home/黄炎培.png differ diff --git a/src/assets/images/puzzle/home/黄炎培导图.png b/src/assets/images/puzzle/home/黄炎培导图.png new file mode 100644 index 0000000..2356e96 Binary files /dev/null and b/src/assets/images/puzzle/home/黄炎培导图.png differ diff --git a/src/assets/images/puzzle/huangyanpei/1.png b/src/assets/images/puzzle/huangyanpei/1.png new file mode 100644 index 0000000..e433051 Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/1.png differ diff --git a/src/assets/images/puzzle/huangyanpei/10.png b/src/assets/images/puzzle/huangyanpei/10.png new file mode 100644 index 0000000..20bbd41 Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/10.png differ diff --git a/src/assets/images/puzzle/huangyanpei/11.png b/src/assets/images/puzzle/huangyanpei/11.png new file mode 100644 index 0000000..5029885 Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/11.png differ diff --git a/src/assets/images/puzzle/huangyanpei/12.png b/src/assets/images/puzzle/huangyanpei/12.png new file mode 100644 index 0000000..4d1162c Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/12.png differ diff --git a/src/assets/images/puzzle/huangyanpei/13.png b/src/assets/images/puzzle/huangyanpei/13.png new file mode 100644 index 0000000..1782373 Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/13.png differ diff --git a/src/assets/images/puzzle/huangyanpei/14.png b/src/assets/images/puzzle/huangyanpei/14.png new file mode 100644 index 0000000..4ed192f Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/14.png differ diff --git a/src/assets/images/puzzle/huangyanpei/15.png b/src/assets/images/puzzle/huangyanpei/15.png new file mode 100644 index 0000000..7838f98 Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/15.png differ diff --git a/src/assets/images/puzzle/huangyanpei/16.png b/src/assets/images/puzzle/huangyanpei/16.png new file mode 100644 index 0000000..640bf30 Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/16.png differ diff --git a/src/assets/images/puzzle/huangyanpei/2.png b/src/assets/images/puzzle/huangyanpei/2.png new file mode 100644 index 0000000..9bbdc28 Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/2.png differ diff --git a/src/assets/images/puzzle/huangyanpei/3.png b/src/assets/images/puzzle/huangyanpei/3.png new file mode 100644 index 0000000..4b83dd3 Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/3.png differ diff --git a/src/assets/images/puzzle/huangyanpei/4.png b/src/assets/images/puzzle/huangyanpei/4.png new file mode 100644 index 0000000..00ea71d Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/4.png differ diff --git a/src/assets/images/puzzle/huangyanpei/5.png b/src/assets/images/puzzle/huangyanpei/5.png new file mode 100644 index 0000000..4de42d6 Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/5.png differ diff --git a/src/assets/images/puzzle/huangyanpei/6.png b/src/assets/images/puzzle/huangyanpei/6.png new file mode 100644 index 0000000..54ce4a6 Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/6.png differ diff --git a/src/assets/images/puzzle/huangyanpei/7.png b/src/assets/images/puzzle/huangyanpei/7.png new file mode 100644 index 0000000..10130c9 Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/7.png differ diff --git a/src/assets/images/puzzle/huangyanpei/8.png b/src/assets/images/puzzle/huangyanpei/8.png new file mode 100644 index 0000000..f7fc4c6 Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/8.png differ diff --git a/src/assets/images/puzzle/huangyanpei/9.png b/src/assets/images/puzzle/huangyanpei/9.png new file mode 100644 index 0000000..5c14432 Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/9.png differ diff --git a/src/assets/images/puzzle/huangyanpei/details/1.png b/src/assets/images/puzzle/huangyanpei/details/1.png new file mode 100644 index 0000000..e89dc18 Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/details/1.png differ diff --git a/src/assets/images/puzzle/huangyanpei/details/10.png b/src/assets/images/puzzle/huangyanpei/details/10.png new file mode 100644 index 0000000..f3bc39a Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/details/10.png differ diff --git a/src/assets/images/puzzle/huangyanpei/details/11.png b/src/assets/images/puzzle/huangyanpei/details/11.png new file mode 100644 index 0000000..164a63d Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/details/11.png differ diff --git a/src/assets/images/puzzle/huangyanpei/details/12.png b/src/assets/images/puzzle/huangyanpei/details/12.png new file mode 100644 index 0000000..c31cf57 Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/details/12.png differ diff --git a/src/assets/images/puzzle/huangyanpei/details/13.png b/src/assets/images/puzzle/huangyanpei/details/13.png new file mode 100644 index 0000000..74721f6 Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/details/13.png differ diff --git a/src/assets/images/puzzle/huangyanpei/details/14.png b/src/assets/images/puzzle/huangyanpei/details/14.png new file mode 100644 index 0000000..dae5571 Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/details/14.png differ diff --git a/src/assets/images/puzzle/huangyanpei/details/15.png b/src/assets/images/puzzle/huangyanpei/details/15.png new file mode 100644 index 0000000..85bb180 Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/details/15.png differ diff --git a/src/assets/images/puzzle/huangyanpei/details/16.png b/src/assets/images/puzzle/huangyanpei/details/16.png new file mode 100644 index 0000000..a8e00b3 Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/details/16.png differ diff --git a/src/assets/images/puzzle/huangyanpei/details/2.png b/src/assets/images/puzzle/huangyanpei/details/2.png new file mode 100644 index 0000000..9035430 Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/details/2.png differ diff --git a/src/assets/images/puzzle/huangyanpei/details/3.png b/src/assets/images/puzzle/huangyanpei/details/3.png new file mode 100644 index 0000000..311750a Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/details/3.png differ diff --git a/src/assets/images/puzzle/huangyanpei/details/4.png b/src/assets/images/puzzle/huangyanpei/details/4.png new file mode 100644 index 0000000..340c226 Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/details/4.png differ diff --git a/src/assets/images/puzzle/huangyanpei/details/5.png b/src/assets/images/puzzle/huangyanpei/details/5.png new file mode 100644 index 0000000..a39df86 Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/details/5.png differ diff --git a/src/assets/images/puzzle/huangyanpei/details/6.png b/src/assets/images/puzzle/huangyanpei/details/6.png new file mode 100644 index 0000000..4397f18 Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/details/6.png differ diff --git a/src/assets/images/puzzle/huangyanpei/details/7.png b/src/assets/images/puzzle/huangyanpei/details/7.png new file mode 100644 index 0000000..5e4df1d Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/details/7.png differ diff --git a/src/assets/images/puzzle/huangyanpei/details/8.png b/src/assets/images/puzzle/huangyanpei/details/8.png new file mode 100644 index 0000000..76665ef Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/details/8.png differ diff --git a/src/assets/images/puzzle/huangyanpei/details/9.png b/src/assets/images/puzzle/huangyanpei/details/9.png new file mode 100644 index 0000000..19c4e58 Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/details/9.png differ diff --git a/src/assets/images/puzzle/huangyanpei/黄炎培底图垫图.png b/src/assets/images/puzzle/huangyanpei/黄炎培底图垫图.png new file mode 100644 index 0000000..18794c6 Binary files /dev/null and b/src/assets/images/puzzle/huangyanpei/黄炎培底图垫图.png differ diff --git a/src/assets/images/puzzle/luxun/1.png b/src/assets/images/puzzle/luxun/1.png new file mode 100644 index 0000000..cda5858 Binary files /dev/null and b/src/assets/images/puzzle/luxun/1.png differ diff --git a/src/assets/images/puzzle/luxun/10.png b/src/assets/images/puzzle/luxun/10.png new file mode 100644 index 0000000..21aec68 Binary files /dev/null and b/src/assets/images/puzzle/luxun/10.png differ diff --git a/src/assets/images/puzzle/luxun/11.png b/src/assets/images/puzzle/luxun/11.png new file mode 100644 index 0000000..b0b9c55 Binary files /dev/null and b/src/assets/images/puzzle/luxun/11.png differ diff --git a/src/assets/images/puzzle/luxun/12.png b/src/assets/images/puzzle/luxun/12.png new file mode 100644 index 0000000..4721a5b Binary files /dev/null and b/src/assets/images/puzzle/luxun/12.png differ diff --git a/src/assets/images/puzzle/luxun/13.png b/src/assets/images/puzzle/luxun/13.png new file mode 100644 index 0000000..5170ed7 Binary files /dev/null and b/src/assets/images/puzzle/luxun/13.png differ diff --git a/src/assets/images/puzzle/luxun/14.png b/src/assets/images/puzzle/luxun/14.png new file mode 100644 index 0000000..307f53a Binary files /dev/null and b/src/assets/images/puzzle/luxun/14.png differ diff --git a/src/assets/images/puzzle/luxun/15.png b/src/assets/images/puzzle/luxun/15.png new file mode 100644 index 0000000..481406f Binary files /dev/null and b/src/assets/images/puzzle/luxun/15.png differ diff --git a/src/assets/images/puzzle/luxun/16.png b/src/assets/images/puzzle/luxun/16.png new file mode 100644 index 0000000..3e1f8d0 Binary files /dev/null and b/src/assets/images/puzzle/luxun/16.png differ diff --git a/src/assets/images/puzzle/luxun/2.png b/src/assets/images/puzzle/luxun/2.png new file mode 100644 index 0000000..9900c16 Binary files /dev/null and b/src/assets/images/puzzle/luxun/2.png differ diff --git a/src/assets/images/puzzle/luxun/3.png b/src/assets/images/puzzle/luxun/3.png new file mode 100644 index 0000000..f6b4de2 Binary files /dev/null and b/src/assets/images/puzzle/luxun/3.png differ diff --git a/src/assets/images/puzzle/luxun/4.png b/src/assets/images/puzzle/luxun/4.png new file mode 100644 index 0000000..f5e9eb4 Binary files /dev/null and b/src/assets/images/puzzle/luxun/4.png differ diff --git a/src/assets/images/puzzle/luxun/5.png b/src/assets/images/puzzle/luxun/5.png new file mode 100644 index 0000000..9d5edea Binary files /dev/null and b/src/assets/images/puzzle/luxun/5.png differ diff --git a/src/assets/images/puzzle/luxun/6.png b/src/assets/images/puzzle/luxun/6.png new file mode 100644 index 0000000..518662c Binary files /dev/null and b/src/assets/images/puzzle/luxun/6.png differ diff --git a/src/assets/images/puzzle/luxun/7.png b/src/assets/images/puzzle/luxun/7.png new file mode 100644 index 0000000..b5e94c3 Binary files /dev/null and b/src/assets/images/puzzle/luxun/7.png differ diff --git a/src/assets/images/puzzle/luxun/8.png b/src/assets/images/puzzle/luxun/8.png new file mode 100644 index 0000000..e659968 Binary files /dev/null and b/src/assets/images/puzzle/luxun/8.png differ diff --git a/src/assets/images/puzzle/luxun/9.png b/src/assets/images/puzzle/luxun/9.png new file mode 100644 index 0000000..57df4f0 Binary files /dev/null and b/src/assets/images/puzzle/luxun/9.png differ diff --git a/src/assets/images/puzzle/luxun/details/1.png b/src/assets/images/puzzle/luxun/details/1.png new file mode 100644 index 0000000..ed8ea11 Binary files /dev/null and b/src/assets/images/puzzle/luxun/details/1.png differ diff --git a/src/assets/images/puzzle/luxun/details/10.png b/src/assets/images/puzzle/luxun/details/10.png new file mode 100644 index 0000000..b7f5144 Binary files /dev/null and b/src/assets/images/puzzle/luxun/details/10.png differ diff --git a/src/assets/images/puzzle/luxun/details/11.png b/src/assets/images/puzzle/luxun/details/11.png new file mode 100644 index 0000000..92ce03f Binary files /dev/null and b/src/assets/images/puzzle/luxun/details/11.png differ diff --git a/src/assets/images/puzzle/luxun/details/12.png b/src/assets/images/puzzle/luxun/details/12.png new file mode 100644 index 0000000..fa14c08 Binary files /dev/null and b/src/assets/images/puzzle/luxun/details/12.png differ diff --git a/src/assets/images/puzzle/luxun/details/13.png b/src/assets/images/puzzle/luxun/details/13.png new file mode 100644 index 0000000..c364db5 Binary files /dev/null and b/src/assets/images/puzzle/luxun/details/13.png differ diff --git a/src/assets/images/puzzle/luxun/details/14.png b/src/assets/images/puzzle/luxun/details/14.png new file mode 100644 index 0000000..edefbd4 Binary files /dev/null and b/src/assets/images/puzzle/luxun/details/14.png differ diff --git a/src/assets/images/puzzle/luxun/details/15.png b/src/assets/images/puzzle/luxun/details/15.png new file mode 100644 index 0000000..f3fd7ad Binary files /dev/null and b/src/assets/images/puzzle/luxun/details/15.png differ diff --git a/src/assets/images/puzzle/luxun/details/16.png b/src/assets/images/puzzle/luxun/details/16.png new file mode 100644 index 0000000..7b49b1a Binary files /dev/null and b/src/assets/images/puzzle/luxun/details/16.png differ diff --git a/src/assets/images/puzzle/luxun/details/2.png b/src/assets/images/puzzle/luxun/details/2.png new file mode 100644 index 0000000..984d68c Binary files /dev/null and b/src/assets/images/puzzle/luxun/details/2.png differ diff --git a/src/assets/images/puzzle/luxun/details/3.png b/src/assets/images/puzzle/luxun/details/3.png new file mode 100644 index 0000000..39261dc Binary files /dev/null and b/src/assets/images/puzzle/luxun/details/3.png differ diff --git a/src/assets/images/puzzle/luxun/details/4.png b/src/assets/images/puzzle/luxun/details/4.png new file mode 100644 index 0000000..ffe031b Binary files /dev/null and b/src/assets/images/puzzle/luxun/details/4.png differ diff --git a/src/assets/images/puzzle/luxun/details/5.png b/src/assets/images/puzzle/luxun/details/5.png new file mode 100644 index 0000000..1a64d78 Binary files /dev/null and b/src/assets/images/puzzle/luxun/details/5.png differ diff --git a/src/assets/images/puzzle/luxun/details/6.png b/src/assets/images/puzzle/luxun/details/6.png new file mode 100644 index 0000000..774fee5 Binary files /dev/null and b/src/assets/images/puzzle/luxun/details/6.png differ diff --git a/src/assets/images/puzzle/luxun/details/7.png b/src/assets/images/puzzle/luxun/details/7.png new file mode 100644 index 0000000..9391811 Binary files /dev/null and b/src/assets/images/puzzle/luxun/details/7.png differ diff --git a/src/assets/images/puzzle/luxun/details/8.png b/src/assets/images/puzzle/luxun/details/8.png new file mode 100644 index 0000000..146d35f Binary files /dev/null and b/src/assets/images/puzzle/luxun/details/8.png differ diff --git a/src/assets/images/puzzle/luxun/details/9.png b/src/assets/images/puzzle/luxun/details/9.png new file mode 100644 index 0000000..488f8d2 Binary files /dev/null and b/src/assets/images/puzzle/luxun/details/9.png differ diff --git a/src/assets/images/puzzle/luxun/拼成功的底图-鲁迅.png b/src/assets/images/puzzle/luxun/拼成功的底图-鲁迅.png new file mode 100644 index 0000000..5056e62 Binary files /dev/null and b/src/assets/images/puzzle/luxun/拼成功的底图-鲁迅.png differ diff --git a/src/assets/images/puzzle/luxun/鲁迅碎片详情.png b/src/assets/images/puzzle/luxun/鲁迅碎片详情.png new file mode 100644 index 0000000..ff05dc4 Binary files /dev/null and b/src/assets/images/puzzle/luxun/鲁迅碎片详情.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/1.png b/src/assets/images/puzzle/sunzhongshan/1.png new file mode 100644 index 0000000..1232391 Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/1.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/10.png b/src/assets/images/puzzle/sunzhongshan/10.png new file mode 100644 index 0000000..8732356 Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/10.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/11.png b/src/assets/images/puzzle/sunzhongshan/11.png new file mode 100644 index 0000000..c534430 Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/11.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/12.png b/src/assets/images/puzzle/sunzhongshan/12.png new file mode 100644 index 0000000..e746ca0 Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/12.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/13.png b/src/assets/images/puzzle/sunzhongshan/13.png new file mode 100644 index 0000000..6c5d50f Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/13.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/14.png b/src/assets/images/puzzle/sunzhongshan/14.png new file mode 100644 index 0000000..706ab05 Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/14.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/15.png b/src/assets/images/puzzle/sunzhongshan/15.png new file mode 100644 index 0000000..618b459 Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/15.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/16.png b/src/assets/images/puzzle/sunzhongshan/16.png new file mode 100644 index 0000000..ba462ee Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/16.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/2.png b/src/assets/images/puzzle/sunzhongshan/2.png new file mode 100644 index 0000000..8bbc135 Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/2.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/3.png b/src/assets/images/puzzle/sunzhongshan/3.png new file mode 100644 index 0000000..731d5f3 Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/3.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/4.png b/src/assets/images/puzzle/sunzhongshan/4.png new file mode 100644 index 0000000..21ce039 Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/4.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/5.png b/src/assets/images/puzzle/sunzhongshan/5.png new file mode 100644 index 0000000..446bae2 Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/5.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/6.png b/src/assets/images/puzzle/sunzhongshan/6.png new file mode 100644 index 0000000..4f68f7c Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/6.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/7.png b/src/assets/images/puzzle/sunzhongshan/7.png new file mode 100644 index 0000000..bc30509 Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/7.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/8.png b/src/assets/images/puzzle/sunzhongshan/8.png new file mode 100644 index 0000000..7957cce Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/8.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/9.png b/src/assets/images/puzzle/sunzhongshan/9.png new file mode 100644 index 0000000..d3d9196 Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/9.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/details/1.png b/src/assets/images/puzzle/sunzhongshan/details/1.png new file mode 100644 index 0000000..ae4016f Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/details/1.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/details/10.png b/src/assets/images/puzzle/sunzhongshan/details/10.png new file mode 100644 index 0000000..ca4c383 Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/details/10.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/details/11.png b/src/assets/images/puzzle/sunzhongshan/details/11.png new file mode 100644 index 0000000..28ddc9a Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/details/11.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/details/12.png b/src/assets/images/puzzle/sunzhongshan/details/12.png new file mode 100644 index 0000000..6d2c17e Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/details/12.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/details/13.png b/src/assets/images/puzzle/sunzhongshan/details/13.png new file mode 100644 index 0000000..9b9947a Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/details/13.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/details/14.png b/src/assets/images/puzzle/sunzhongshan/details/14.png new file mode 100644 index 0000000..4ebec90 Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/details/14.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/details/15.png b/src/assets/images/puzzle/sunzhongshan/details/15.png new file mode 100644 index 0000000..a71ca6e Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/details/15.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/details/16.png b/src/assets/images/puzzle/sunzhongshan/details/16.png new file mode 100644 index 0000000..f98bc63 Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/details/16.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/details/2.png b/src/assets/images/puzzle/sunzhongshan/details/2.png new file mode 100644 index 0000000..ddd6ca1 Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/details/2.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/details/3.png b/src/assets/images/puzzle/sunzhongshan/details/3.png new file mode 100644 index 0000000..ba28057 Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/details/3.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/details/4.png b/src/assets/images/puzzle/sunzhongshan/details/4.png new file mode 100644 index 0000000..76505ef Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/details/4.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/details/5.png b/src/assets/images/puzzle/sunzhongshan/details/5.png new file mode 100644 index 0000000..ea138d9 Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/details/5.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/details/6.png b/src/assets/images/puzzle/sunzhongshan/details/6.png new file mode 100644 index 0000000..5770e87 Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/details/6.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/details/7.png b/src/assets/images/puzzle/sunzhongshan/details/7.png new file mode 100644 index 0000000..0eb8590 Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/details/7.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/details/8.png b/src/assets/images/puzzle/sunzhongshan/details/8.png new file mode 100644 index 0000000..d9a1de2 Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/details/8.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/details/9.png b/src/assets/images/puzzle/sunzhongshan/details/9.png new file mode 100644 index 0000000..4d4401f Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/details/9.png differ diff --git a/src/assets/images/puzzle/sunzhongshan/孙中山碎片详情.png b/src/assets/images/puzzle/sunzhongshan/孙中山碎片详情.png new file mode 100644 index 0000000..c682511 Binary files /dev/null and b/src/assets/images/puzzle/sunzhongshan/孙中山碎片详情.png differ diff --git a/src/components/guide/GuideSteps.tsx b/src/components/guide/GuideSteps.tsx index 8376aa1..d89a2c9 100644 --- a/src/components/guide/GuideSteps.tsx +++ b/src/components/guide/GuideSteps.tsx @@ -192,6 +192,7 @@ const GuideSteps = ({ animate={{ opacity: 1 }} exit={{ opacity: 0 }} transition={{ duration: 0.3, ease: "easeInOut" }} + onClick={handleTextClick} > {/* 引导板容器和背景 - 作为整体切换,确保 padding 和背景同步 */} {/* 只在 isVisible 为 true 时才渲染,避免阻塞 exit 动画 */} diff --git a/src/components/layout/ResidenceLayout.tsx b/src/components/layout/ResidenceLayout.tsx index e74c83c..b3f9137 100644 --- a/src/components/layout/ResidenceLayout.tsx +++ b/src/components/layout/ResidenceLayout.tsx @@ -15,7 +15,7 @@ import PuzzlePiecePortal from "@/components/puzzle/PuzzlePiecePortal"; * 支持拼图盒功能的故居列表 * 后续如需为其他故居添加拼图盒,只需在此数组中添加对应的故居名称即可 */ -const RESIDENCES_WITH_PUZZLE = ["chenyun"] as const; +const RESIDENCES_WITH_PUZZLE = ["chenyun", "huangyanpei","sunzhongshan","luxun"] as const; /** * 故居布局组件 diff --git a/src/components/puzzle/PuzzleSystem.tsx b/src/components/puzzle/PuzzleSystem.tsx index edecac1..27eca62 100644 --- a/src/components/puzzle/PuzzleSystem.tsx +++ b/src/components/puzzle/PuzzleSystem.tsx @@ -2,10 +2,24 @@ import { useState, useEffect } from "react"; import { useNavigate, useParams } from "react-router-dom"; import { cn, getBackgroundImage, getStaticImage } from "@/lib/utils"; import { usePuzzleStore } from "@/store/puzzleStore"; -import { getPuzzlePieceLayout } from "@/config/puzzleLayout"; import { getPuzzlePieceData } from "@/config/puzzleData"; +import { getPuzzlePiecePath, getPuzzleViewBox } from "@/config/puzzlePaths"; import { Image } from "@/components"; +/** + * 将英文故居名称转换为中文显示名称 + */ +const getResidenceDisplayName = (residence: string): string => { + const nameMap: Record = { + chenyun: "陈云", + huangyanpei: "黄炎培", + luxun: "鲁迅", + sunzhongshan: "孙中山", + }; + + return nameMap[residence] || residence; +}; + export interface PuzzleSystemProps { /** 是否可见 */ visible: boolean; @@ -15,6 +29,96 @@ export interface PuzzleSystemProps { residence: string; } +/** + * SVG拼图碎片组件 + */ +const PuzzlePieceSvg = ({ + residence, + pieceId, + isUnlocked, + isSelected, + isHovered, + onClick, + onHover, + onLeave, +}: { + residence: string; + pieceId: number; + isUnlocked: boolean; + isSelected: boolean; + isHovered: boolean; + onClick: () => void; + onHover: (id: number) => void; + onLeave: () => void; +}) => { + const pathData = getPuzzlePiecePath(residence, pieceId); + + if (!pathData) return null; + + // 为每个碎片生成唯一的pattern ID + const patternId = `pattern-${residence}-${pieceId}`; + + // 碎片图片路径 + const pieceImage = getStaticImage(`puzzle/${residence}/${pieceId}`); + + return ( + <> + + (isUnlocked ? onHover(pieceId) : undefined)} + onMouseLeave={onLeave} + style={{ + cursor: isUnlocked ? "pointer" : "not-allowed", + }} + className={cn(isUnlocked ? "puzzle-piece" : "")} + > + + + + + + + {/* 实际的路径:只有点击到路径填充区域才会触发 onClick */} + + + + ); +}; + /** * 拼图系统组件 * - 全屏弹窗,显示拼图碎片 @@ -27,6 +131,7 @@ const PuzzleSystem = ({ visible, onClose, residence }: PuzzleSystemProps) => { const { moduleName } = useParams<{ moduleName: string }>(); const { isPuzzleUnlocked, getPuzzleCollectProgress } = usePuzzleStore(); const [selectedPiece, setSelectedPiece] = useState(null); + const [hoveredPiece, setHoveredPiece] = useState(null); // 当弹窗关闭时重置选中状态 useEffect(() => { @@ -74,6 +179,11 @@ const PuzzleSystem = ({ visible, onClose, residence }: PuzzleSystemProps) => { // 生成16块碎片(1-16) const pieces = Array.from({ length: 16 }, (_, i) => i + 1); + // 将悬停的碎片放到最后渲染,保证 hover 层级在最上 + const renderPieces = + hoveredPiece != null + ? [...pieces.filter((p) => p !== hoveredPiece), hoveredPiece] + : pieces; // 获取收集进度 const collectProgress = getPuzzleCollectProgress(residence); @@ -119,7 +229,7 @@ const PuzzleSystem = ({ visible, onClose, residence }: PuzzleSystemProps) => { "[text-shadow:_-4px_-4px_0_#ae6400,_4px_-4px_0_#ae6400,_-4px_4px_0_#ae6400,_4px_4px_0_#ae6400,_-5px_0_0_#ae6400,_5px_0_0_#ae6400,_0_-5px_0_#ae6400,_0_5px_0_#ae6400,_0_0_20px_rgba(255,215,0,1),_0_0_40px_rgba(255,215,0,0.8),_0_0_60px_rgba(255,215,0,0.5)]" )} > - 陈云故居碎片 + {getResidenceDisplayName(residence)}故居碎片 { {/* 完整拼图底图 - 作为背景显示所有碎片拼好的样子 */}
-
+
- {/* 拼图容器 - 使用绝对定位,根据配置放置每个碎片 */} + {/* SVG拼图容器 - 使用3D变换和缩放 */}
- {pieces.map((pieceId) => { - const isUnlocked = isPuzzleUnlocked(residence, pieceId); - const layout = getPuzzlePieceLayout(residence, pieceId); + + {renderPieces.map((pieceId) => { + const isUnlocked = isPuzzleUnlocked(residence, pieceId); - // 碎片图片路径 - const pieceImage = getStaticImage( - `puzzle/${residence}/${pieceId}` - ); - - return ( -
handlePieceClick(pieceId)} - > -
- {/* 碎片图片 - 始终显示,未解锁的用CSS变黑 */} - {`碎片 - - {/* 选中效果遮罩 - 只对已解锁的碎片显示 */} - {/* {isSelected && isUnlocked && ( -
handlePieceClick(pieceId)} + onHover={(id) => setHoveredPiece(id)} + onLeave={() => setHoveredPiece(null)} /> - )} */} -
-
- ); - })} + ); + })} +
@@ -203,7 +291,7 @@ const PuzzleSystem = ({ visible, onClose, residence }: PuzzleSystemProps) => { {selectedPieceData && (
@@ -233,6 +321,7 @@ const PuzzleSystem = ({ visible, onClose, residence }: PuzzleSystemProps) => { {/* 前往按钮 */} {selectedPieceData && ( 前往按钮 -> = { - chenyun: { - // 碎片1 - 示例配置,请根据实际图片调整 - 1: { - position: { x: "0%", y: "0%" }, - size: { width: "25%", height: "25%" }, - }, - // 碎片2 - 2: { - position: { x: "23.3%", y: "0%" }, - size: { width: "25%", height: "25%" }, - }, - // 碎片3 - 3: { - position: { x: "39.8%", y: "0%" }, - size: { width: "25%", height: "25%" }, - }, - // 碎片4 - 4: { - position: { x: "70.8%", y: "0%" }, - size: { width: "25%", height: "25%" }, - }, - // 碎片5 - 5: { - position: { x: "0%", y: "15%" }, - size: { width: "25%", height: "25%" }, - }, - // 碎片6 - 6: { - position: { x: "16%", y: "23.2%" }, - size: { width: "25%", height: "25%" }, - }, - // 碎片7 - 7: { - position: { x: "47.2%", y: "15.2%" }, - size: { width: "25%", height: "25%" }, - }, - // 碎片8 - 8: { - position: { x: "63.4%", y: "23%" }, - size: { width: "25%", height: "25%" }, - }, - // 碎片9 - 9: { - position: { x: "0%", y: "47%" }, - size: { width: "25%", height: "25%" }, - }, - // 碎片10 - 10: { - position: { x: "23.3%", y: "39.1%" }, - size: { width: "25%", height: "25%" }, - }, - // 碎片11 - 11: { - position: { x: "39.8%", y: "47%" }, - size: { width: "25%", height: "25%" }, - }, - // 碎片12 - 12: { - position: { x: "70.9%", y: "39.1%" }, - size: { width: "25%", height: "25%" }, - }, - // 碎片13 - 13: { - position: { x: "0%", y: "63%" }, - size: { width: "25%", height: "25%" }, - }, - // 碎片14 - 14: { - position: { x: "16%", y: "71%" }, - size: { width: "25%", height: "25%" }, - }, - // 碎片15 - 15: { - position: { x: "47%", y: "63%" }, - size: { width: "25%", height: "25%" }, - }, - // 碎片16 - 16: { - position: { x: "63.4%", y: "71%" }, - size: { width: "25%", height: "25%" }, - }, - }, - // 后续可以添加其他故居的配置 - // sunzhongshan: { ... }, -}; - -/** - * 获取碎片的布局配置 - * @param residence 故居名称 - * @param pieceId 碎片ID - * @returns 布局配置,如果不存在则返回默认值 - */ -export const getPuzzlePieceLayout = ( - residence: string, - pieceId: number -): PuzzlePieceLayout => { - const residenceConfig = puzzleLayoutConfig[residence]; - const pieceConfig = residenceConfig?.[pieceId]; - if (pieceConfig) { - return pieceConfig; - } - // 默认布局(4x4网格) - const row = Math.floor((pieceId - 1) / 4); - const col = (pieceId - 1) % 4; - return { - position: { - x: `${col * 25}%`, - y: `${row * 25}%`, - }, - size: { - width: "25%", - height: "25%", - }, - }; -}; diff --git a/src/config/puzzlePaths.ts b/src/config/puzzlePaths.ts new file mode 100644 index 0000000..b9dbc4c --- /dev/null +++ b/src/config/puzzlePaths.ts @@ -0,0 +1,236 @@ +/** + * 拼图碎片路径配置 + * 从设计师提供的SVG文件中提取的路径数据 + */ + +export interface PuzzlePathConfig { + /** viewBox */ + viewBox: string; + /** 每个碎片的路径数据 */ + pieces: Record; +} + +/** + * 拼图路径配置 + * + * 注意:当前所有“故居”共用同一套拼图路径与 viewBox, + * 因此这里使用单例配置,而不是按 residence 区分。 + */ +export const puzzlePathConfig: PuzzlePathConfig = { + viewBox: "0 0 748.92 747.84", + pieces: { + 1: `M183.45,10.9c1.43,18.24,0.5,50.8,0.77,51.72c-0.08,0.84,0.36,4.83,1.93,7.2c1.57,2.37,4.26,3.11,6.05,3.09 + c4.55,0.77,11.08-0.12,15.31-2.06c4.24-1.94,8.62-4.28,13.33-4.36c9.76-0.15,16.29,3.39,19.44,9.75 + c2.45,4.95,3.29,11.07,3.43,15.04c0.14,3.97-1.91,10.2-5.1,15.06c-7.34,8.59-13.38,10.01-25.33,7.75 + c-3.65-1.19-6.82-3.14-10.27-4.77c-4.72-2.23-10.96-1.46-14.54,0.51s-4.59,7.35-4.63,12.61c-0.13,16.61,0.51,52.67,0.46,54.33 + c-0.16,6.05-1.08,6.68-7.29,6.7c-17.78,0.07-33.44,0.36-51.21,0.27c-10.85-0.05-13.97-4.2-13.55-15.12 + c1.61-7.09,4.37-14.05,4.78-21.55c0.29-5.41-0.92-9.5-3-13.6c-2.16-4.28-5.28-8.5-10.31-11.1c-9.71-5.03-19.45-4.09-28.1,2.52 + c-8.75,6.69-13.49,17.15-10.68,27.93c1.05,4.03,3.4,6.96,4.88,10.83c4.65,12.19,0.29,19.94-12.71,19.98 + c-15.78,0.05-31.55,0.02-47.33,0c-1.97,0-4,0.24-5.86-0.78c-0.8-0.62-1.06-1.45-1-2.43c0-56.64,0-113.27,0-169.9 + c0-2.6-0.65-5.47,2.57-6.88L5.42,3.69c1.5-1.09,3.23-0.57,4.84-0.57c56.4-0.03,112.8-0.03,169.2,0.02c0.76,0,3.2-0.03,3.99,1.71 + C184.24,6.59,183.39,10.12,183.45,10.9z`, + 2: `M188.09,4.59c0.34-0.32,0.67-0.64,1.01-0.97c1.71-1,3.58-0.5,5.36-0.5c57.1-0.03,114.19-0.03,171.29-0.02 + c2.46,0,5.04-0.47,7.01,1.64l-0.1-0.13c0.86,0.78,0.64,1.83,0.64,2.8c0,8.4-0.1,16.81-0.16,25.22c-0.06,8.83,0.27,17.45,0.16,26.47 + c-0.01,0.81,0.27,4.82-1.54,7.37c-0.37,0.52-2.22,2.48-4.72,2.88c-3.92,0.62-7.81-1.87-10.2-3.3c-9.85-5.19-22.79-7.85-31.85,0.15 + c-7.66,6.78-12.92,19.18-10.98,29.22c2.05,10.56,10.29,20.17,21.18,22.88c5.74,1.43,13.37,0.25,18.86-2.32 + c3.17-1.48,11.94-5.4,15.45-2.82c3.51,2.58,2.85,14.03,2.85,15.71c0.01,16.78-0.05,27.79-0.1,44.57c-0.02,7.54,1.14,9.39-6.28,9.43 + c-14.95,0.07-44.19-0.35-57.83-0.49c-13.71-0.14-13.6,9.56-9.52,21.11c0.95,2.48,4.19,13.86,4.91,16.49 + c1.31,12.36-3.74,22.23-14.7,26.03c-8.71,3.02-16.52,0.67-23.23-4.97c-7.61-6.39-11.27-14.58-9.49-24.8 + c1.1-6.29,4.93-11.64,5.87-17.96c0.68-3.65,1.86-6.97,1.2-9.34c-1.23-4.39-6.04-6.27-12.76-6.28c-18.11-0.04-35.98,0.13-54.1,0.1 + c-8.07-0.02-9.66-0.28-9.68-8.2c-0.03-17.28-0.23-30.62-0.23-47.91c0-1.16,0.19-6.27,0.33-7.43c0.92-7.48,6.57-9.02,13.69-6.59 + c1.53,0.52,7.65,4.16,12.64,5.39c6.31,1.55,11.68,0.63,13.36,0.19c22.13-5.1,23.79-31.22,15.62-45.19 + c-2.42-3.51-5.79-6.97-9.12-8.76c-4.83-2.59-9.77-2.78-15.6-1.85c-4.13,0.66-8.56,3.2-12.31,5.02c-3.17,1.54-8.76,3.65-12.39,2.43 + c-3.94-1.51-5.05-4.02-5.04-8.48c0.03-18.3,0.01-36.6,0.01-54.9C187.63,5.81,187.72,5.17,188.09,4.59z`, + 3: `M562.57,67.53c2.08,2.53,5.24,4.32,7.69,4.7c2.86,0.45,7.3-0.98,10.44-2.18c4.49-1.68,8.08-4.5,13.08-4.93 + c15.4-1.33,25.8,9.73,25.36,25.36c-0.45,15.95-9.07,27.01-24.1,26.05c-3.22-0.21-6.88-2.19-9.75-3.56 + c-2.55-1.22-5.45-2.78-8.15-3.67c-8.04-2.65-16.65,1.83-16.75,10.33c-0.21,16.95,0.72,33.3,0.69,50.26c0,1.83-0.01,5.52-0.11,7.34 + c-0.2,3.59-0.22,5.17-3.79,5.38c-1,0.06-1.99,0.1-2.99,0.1c-17.29,0.01-34.58,0.02-51.87,0c-1.66,0-3.32-0.06-4.96-0.39 + c-9.04-1.85-12.48-7.74-9.54-16.44c1.9-5.64,5.46-9.8,6.48-15.83c1.79-10.63-5.35-27.97-19.39-30.52 + c-15.49-3.9-30.73,4.53-33.85,18.02c-2.71,15.87,5.85,30.69,6.54,33.97c-0.1,7.9-2.7,11.8-10.45,12.03 + c-18.59,0.55-37.2,0.34-55.81,0.08c-4.51-0.06-5.88-1.99-5.93-7.41c-0.12-13.29-0.03-26.58-0.04-39.87c0-5.15,0.08-10.3-0.02-15.45 + c-0.17-8.76-5.19-12.58-13.8-10.63c-2.62,0.6-4.93,1.97-7.38,2.98c-14.18,5.81-26.27,1.72-33.54-11.36 + c-6.47-11.63-2.85-26.35,8.36-34.51c6.09-4.43,12.5-4.87,19.32-2.1c4.25,2.32,13.45,5.28,13.45,5.28 + c3.96,1.03,9.79-0.67,10.89-2.06c2.7-3.42,2.73-8.79,2.72-12.29c-0.07-15.58-0.04-31.15-0.01-46.73c0-1.63-0.41-3.32,0.45-4.88 + c0.33-0.31,0.66-0.63,0.99-0.94c1.53-1.01,3.24-0.52,4.86-0.53C439.39,3.09,497.12,3.1,554.86,3.1c6.39,0,7.14,0.76,7.14,7.16 + c0.01,12.15,0.02,24.29-0.02,36.44C561.97,48.31,560.76,65.58,562.57,67.53z`, + 4: `M684.07,182.22c-8.23,1.12-11.9,6.11-10.48,14.23c1.05,5.97,4.32,11.13,6.04,16.87 + c4.95,16.46-8.81,33.55-25.83,31.99c-9.08-0.84-18.04-6.51-20.55-16.1c-0.21-0.79-0.93-6.95,0.09-13.43 + c1.04-6.64,6.43-13.59,6.87-15.13c1.17-4.09,0.81-10.62-0.93-13.19c-2.09-3.09-7.34-4.96-12.48-5c-16.4-0.75-54.38,0.2-56.05,0.14 + c-6.08-0.25-6.48-0.21-6.57-6.84c-0.08-5.46-0.1-10.92-0.08-16.38c0.06-13.57-0.11-21.8-0.34-34.47c0.01-12.18,6.53-15.92,15.2-11 + c1.73,1.23,4.55,2.27,7,3.73c2.46,1.46,5.62,1.81,9.24,2.01c20.66,1.11,33.16-21.57,24.62-41.32c-2.32-5.37-5.42-10.4-10.5-13.09 + c-6.69-3.54-15.99-3.6-23.13-0.67c-2.36,0.97-9.25,6.83-17.86,3.5c-3.34-1.29-3.83-3.72-4.04-5.45c-0.44-3.46-0.27-6.84-0.32-9.02 + c-0.06-15.07,0.04-29.1,0.07-44.16c0-1.52-0.39-3.11,0.33-4.58c0.1-0.15,0.27-0.4,0.37-0.55c1.68-1.86,3.7-1.18,5.58-1.19 + C627.4,3.09,684.46,3.1,741.52,3.1c6.07,0,6.19,0.11,6.19,6.07c0.01,55.9-0.04,111.79,0.09,167.69c0.01,3.85-0.89,5.08-4.91,5.03 + c-17.8-0.22-35.6-0.11-53.4-0.08C687.68,181.81,685.82,181.4,684.07,182.22z`, + 5: `M69.29,372.08c-1.77-2.35-4.33-2.08-6.82-2.08c-15.96,0-31.92,0-47.88,0c-7.25,0-11.6-2.75-11.6-9.82 + c0-55.03,0.34-110.13,0.34-165.16c0-6.78,2.49-9.65,9.43-9.65c14.63-0.01,29.47,0,44.1-0.06c0.95,0,10.35-0.97,15-5.9 + c3.23-3.42,2.88-9.68,2.44-11.28s-3.2-9.48-4.62-13.01c-4.54-11.34-2.28-21.08,6.87-28.52c8.12-6.61,19.64-7.38,27.85-1.86 + c9.37,6.31,15.08,18.4,10.12,28.93c-1.69,3.58-7.53,18.17-3.55,24.79c2.12,4.55,8.04,6.74,12.41,6.8 + c11.96,0.19,23.93,0.08,35.89,0.09c6.98,0,11.76,0.08,18.73-0.12c3.51-0.1,5.99,1.71,5.96,5.6c-0.15,18.94,0.6,39.93,0.6,57.58 + c0,6.4-1.98,9.36-4.8,10.43c-2.09,0.79-7.93-1.39-11.77-2.8c-5.42-1.99-7.85-4.49-13.82-4.78c-9.29-1.46-18.61,2.59-23.83,10.11 + c-4.54,6.54-5.2,14.69-3.23,24.23c3.33,16.08,16.05,24.15,31.53,20.61c4.18-1.02,9.5-4.25,13.62-5.54 + c7.3-2.3,11.52,3.77,11.65,11.36c0.34,19.28-0.09,36.79,0,56.08c0.02,3.79-7.81,2.38-10.45,2.38c-17.79-0.02-28.83,0.17-46.62,0.18 + c-16.01,0.01-20.6,6.43-15.65,21.81c1.83,5.68,3.94,11.28,4.31,17.35c0.65,10.57-5,17.19-13.63,21.85 + c-8.29,4.48-16.22,3.79-23.73-2.08c-10.33-8.07-13.04-17.15-8.65-29.45c1.84-5.15,4.31-10.11,4.98-15.63 + C75.09,379.41,74.19,374.92,69.29,372.08z`, + 6: `M305.86,215.26c0.07-2.85-1.9-8.06-1.9-8.06s-2.16-6.41-3.35-9.49c-3.07-7.94,0.43-12.87,9.72-12.18 + c19.94-0.3,39.89-0.13,59.83-0.22c3.74-0.02,3.73,2.34,3.73,5.01c0,18.12,0.05,36.23,0.08,54.35c0,0.83,0,1.66,0.02,2.49 + c0.12,5.82,0.35,10.62,3.04,13.08c1.52,1.4,3.75,2.07,6.35,2.06c2.6-0.01,5.56-0.71,8.55-2.06c1.21-0.55,4.88-3.01,6.08-3.58 + c14.65-6.96,24.68,0.83,31.23,15.5c3.07,13.14-0.85,24.6-14.13,30.22c-0.76,0.32-1.57,0.54-2.36,0.81 + c-4.06,0.1-2.54,0.81-9.26-0.51c-3.11-0.3-8.08-3.03-10.76-4.25c-11.05-5.06-19.19-0.7-19.76,11.64c-0.52,11.28,0.03,21.6,0,32.9 + c-0.02,7.31-0.41,14.15-0.36,21.46c0.02,3.33-0.05,5.73-3.45,5.71c-18.94-0.09-37.89,0.07-56.83-0.16 + c-9.4-0.11-13.47-5.77-11.17-14.85c0.77-3.05,1.86-6.01,2.81-9.01c0.71-2.41,0.85-3.87,1.39-6.3c0.46-1.73,0.34-4.53,0.46-6.23 + c1.17-16.14-12.52-29.68-29.47-26.72c-8.52,1.49-15.11,4.54-19.06,10.88c-1.61,2.58-4.16,6.85-4.97,10.64 + c-0.3,1.42-0.44,6.48,0.1,10.08c0.9,5.97,2.96,11.32,3.93,14.25c4.03,12.16,2.16,18.12-10.77,18.18 + c-17.46,0.08-34.92-0.07-52.38,0.09c-3.88,0.04-5.26-1.14-5.22-5.11c0.12-10.21-0.4-20.09-0.67-30.02 + c-0.2-7.37-0.25-14.77,0.19-22.36c0.65-11.09-7.39-18.54-15.77-15.89c-2.63,1.04-7.28,2.86-9.96,3.72 + c-5.55,1.78-7.14,2.52-11.19,2.36c-2.43-0.1-6.26-0.54-10.11-3.01c-3.03-1.95-7.23-6.13-8.24-9.02c-2.58-7.41-4.83-13.99-1.6-22.08 + c3.24-8.1,8.83-12.75,15.77-14.68c7.15-1.23,11.96,0.75,17.07,3.48c2.04,1.09,5.68,1.93,7.84,2.79 + c10.06,3.98,16.45-2.03,16.66-12.83c0.22-11.11-0.56-19.98-0.55-31.1c0-8.3-0.09-17.51-0.23-25.8c-0.05-3.26,1.61-6.18,5.27-6.15 + c19.58,0.13,39.17,0.1,58.75,0.05c4.18-0.01,8.08,1,8.99,5.94s-3.48,12.44-5.93,18.89c-3.29,8.68-2.57,19.34,2.35,27.5 + c5.32,8.83,17.88,14.21,27.17,12.41c10.32-2,19.22-6.53,22.25-17.55C307.5,227.29,307.28,220.48,305.86,215.26z`, + 7: `M405.35,306.99c13.2,0.78,24.03-6.49,28.08-19.2c4.18-13.14-4.54-33.18-20.07-36.18 + c-5.66-1.1-11.76-0.44-16.9,1.52c-2.48,0.95-6.15,3.96-8.63,4.91c-7.6,2.93-10.83-1.78-10.95-9.88 + c-0.13-9.14-0.04-18.29-0.05-27.44c0-9.81,0.25-19.63-0.11-29.43c-0.18-4.98,1.63-6.16,6.31-6.08c15.96,0.25,31.93,0.13,47.89,0.07 + c2.81-0.01,8,0.37,10.75-0.14c10.43-1.93,11.55-8.68,8.13-19.07c-1.61-4.52-3.45-8.98-4.78-13.58 + c-4.35-15.02,7.02-30.59,22.65-31.2c18.05-0.71,29.93,19.07,21.79,36.31c-1.63,3.45-3.7,6.68-4.02,10.65 + c-0.78,9.82,1.44,16.15,11.27,16.74c5.48,0.33,15.26,0.22,20.75,0.24c13.64,0.05,25.21,0.53,38.85,0.36 + c3.93-0.05,5.28,0.04,5.24,3.95c-0.17,18.63-0.07,37.27-0.17,55.9c-0.06,10.14-5.98,14.06-15.52,10.26 + c-6.02-2.4-11.82-5.15-18.62-4.89c-15.68,0.61-26.26,13.86-24.64,31.21c1.35,14.47,15.79,25.83,29.94,23.6 + c4.5-0.71,8.62-2.31,12.57-4.57c9.77-5.58,16.15-1.89,16.23,9.47c0.13,18.13-0.01,36.27,0.17,54.41c0.04,4.01-1.44,5.12-5.27,5.09 + c-18.63-0.15-37.27-0.13-55.9-0.04c-13.03,0.06-18.09,7.23-14.01,19.63c1.76,5.36,4.31,10.48,5.19,16.12 + c1.95,12.54-5.36,23.58-18.01,27.35c-10.86,3.24-22.75-2.91-28.01-14.51c-0.68-1.51-1.22-3.09-1.83-4.63 + c-0.95-7.61,1.9-14.36,4.74-21.12c1.09-2.6,2.15-5.2,2.42-8.07c0.88-9.5-3.4-14.61-13-14.7c-18.11-0.17-36.23-0.07-54.35-0.08 + c-6.64,0-6.65-0.01-6.65-6.57c0.01-17.45-0.01-34.9,0.05-52.35c-0.47-10.08,2.9-13.59,14.67-8.96 + C393.57,302.85,401.04,306.93,405.35,306.99z`, + 8: `M629.94,230.44c2.79,11.07,11.69,17,21.52,18.56c11.58,1.84,20.63-4.03,27.25-12.14 + c6.03-7.39,6.34-14.84,3.67-23.85c-1.55-5.25-3.72-10.32-5.24-15.58c-2.16-7.49,1.02-12.56,8.65-12.7 + c19.45-0.35,38.92-0.16,58.38-0.21c2.35-0.01,3.34,1.06,3.2,3.35c-0.05,0.83,0,1.66,0,2.49c0,58.05-0.05,116.1,0.1,174.15 + c0.01,4.34-1,5.6-5.46,5.52c-17.13-0.28-34.26-0.09-51.39-0.14c-2.14-0.01-4.33-0.17-6.41-0.65c-6.06-1.39-8.94-5.92-7.36-11.92 + c1.26-4.8,4.87-11.36,5.73-13.76c0.86-2.39,1.99-12.1,0.35-17.91c-3.05-10.78-14.65-18.93-26.46-18.95 + c-10.96-0.02-23.24,6.84-26.23,17.22c-2.4,8.31-1.18,15.14,1.5,22.88c0.4,1.15,5.06,13.48,3.58,18.95 + c-1.13,4.19-6.09,5.56-10.48,5.59c-10.47,0.08-20.93,0.02-31.4,0.02c-7.48,0-14.95,0.02-22.43-0.01c-1.98-0.01-3.05-0.14-4.86-1.26 + c-2.48-2.15-1.54-9.35-1.55-12.13c-0.05-16.62,0-49.03-1.11-56.53c-0.68-4.62-7.4-6.68-12.01-5.84c-3.85,0.7-8.51,3.06-12.01,4.54 + c-8.85,3.77-14.4,4.46-22.56-1.3c-8.48-5.99-13.2-14.55-10.87-24.5c2.45-10.52,7.78-16.83,18.01-19.9 + c5.28-1.58,19.8,4.62,22.43,5.63c6.06,2.34,13.76-0.58,16.42-5.16c1.6-2.75,1.67-8.7,1.71-12.62c0.18-16.62-0.42-27.93-0.4-44.55 + c0.01-12.12-0.51-12.38,11.44-12.38c16.29,0,31.89-0.3,48.18-0.27c12.63,0.02,15.62,5.72,11.53,17.83 + c-0.43,1.26-4.5,7.61-5.07,9.76C628.81,218.73,628.59,224.07,629.94,230.44z`, + 9: `M84.53,496.23c-15.47,3.69-25.25,18.2-19.18,34.57c1.32,3.57,3.21,8.61,4.34,12.23 + c2.6,8.32,0.13,14.79-8.37,16.34c-0.51,0.09-2.99,0.59-6.16,0.79c-7.03,0.45-17.55-0.33-20.05-0.32 + c-12.31,0.09-11.59-0.64-23.9-0.66c-5.69-0.01-6.59-0.92-6.59-6.71c-0.01-57.89-0.01-115.78,0-173.67c0-5.73,1.55-4.91,7.33-4.96 + c15.8-0.14,48.31-0.41,48.81-0.39c12.8,0.41,10.63,12.15,7.98,18.03c-2.65,5.88-3.64,13.67-4.71,20 + c-0.19,11.72,9.54,25.17,27.93,26.67c15.17-3.79,23.79-9.77,26.43-19.23c1.6-6.87,1.65-12.89-0.91-19.63 + c-1.42-3.73-3.96-9.23-4.64-13.19c0.26-8.24,2.91-11.04,11.14-12.26c19.13-0.28,38.4-0.05,57.53,0.1c5.13,0.04,5.27,0.77,5.29,6.86 + c-0.49,18.23-0.42,34.83-0.39,52.63c0.01,6.26,0.63,13.65,5.04,15.12c4.03,1.34,9.64,1.78,16.52-0.91 + c4.19-1.64,7.81-3.04,12.15-4.21c4.76-1.28,9.51,0.13,13.82,2.35c10.32,6.41,14.51,22.51,5.88,36.66 + c-9.32,9.9-15.34,13.23-27.83,8.04c-2.46-1.02-4.66-2.5-7.15-3.43c-6.84-5.12-17.59-0.66-18.03,8.82 + c-0.14,2.99-0.39,8.57-0.39,11.56c0,14.97-0.21,29.06-0.27,44.03c-0.03,7.55-2.64,8.64-9.99,8.66c-17.63,0.05-31.79,0.11-49.43,0 + c-5.91-0.04-11.34-1.3-13.63-7.83c-0.7-5.73,0.3-11.21,2.35-16.57c1.9-4.98,3.19-10.04,3.15-15.49 + c-0.1-13.19-7.41-22.07-20.48-23.96C94.1,495.68,88.65,495.09,84.53,496.23z`, + 10: `M279.15,622.5c-10.41,0.05-25.44-10.63-23.06-25.85c0.58-4.52,4.45-12.5,6.79-18.7 + c4.57-12.09-0.28-19.29-13.16-19.36c-18.79-0.1-37.57-0.13-56.36,0.06c-4.18,0.04-5.46-1.31-5.41-5.44 + c0.19-17.62,0.09-35.24,0.1-52.87c0-1.33-0.03-2.67,0.15-3.98c1.12-8.23,5.66-10.84,13.25-7.51c3.49,1.53,6.79,3.47,10.49,4.56 + c11.1,3.29,23.31-0.74,29.65-9.87c7.39-10.63,6.91-25.35-1.16-35.38c-6.76-8.41-15.31-11.09-26.41-6.87 + c-3.57,1.36-7.42,3.47-11.05,4.65c-6.31,2.05-14.6-1.71-14.68-8.22c-0.27-20.28-0.13-40.56-0.21-60.85 + c-0.01-3.74,2.38-3.71,5.04-3.71c17.62,0.03,35.25-0.15,52.87-0.02c14.69,0.11,18.02-4.24,14.67-19.64 + c-2.06-5.45-7.6-16.09-3.03-29.96c4.1-10.45,17.91-15.38,28.82-12.69c11.81,2.91,17.14,13.49,17.61,22.41 + c0.28,5.31-1.35,6.93-2.74,12.17c-1.58,5.95-3.62,11.51-3.58,14.62c0.11,7.11,3.04,10.64,10,12.18c3.46,0.76,6.95,0.57,10.43,0.58 + c16.46,0.06,32.92,0.18,49.38-0.06c4.69-0.07,6.58,1.25,6.53,6.14c-0.18,18.45,0.01,36.91-0.11,55.36 + c-0.06,9.82-6.09,13.5-14.95,9.12c-8.87-4.38-17.61-7.63-27.61-3.22c-13.81,6.09-20.41,24.02-13.79,38.43 + c6.79,14.78,22.15,20.26,36.66,13.1c2.38-1.18,4.69-2.58,7.19-3.44c5.82-2.01,10.2,0.38,11.81,6.36c0.51,1.89,0.68,3.93,0.68,5.91 + c0.05,17.62-0.05,35.25,0.1,52.87c0.03,3.86-1.12,5.28-5.11,5.23c-18.45-0.2-36.91-0.06-55.36-0.22 + c-13.01-0.11-18.55,7.33-14.2,19.69c1.93,5.49,4.04,10.9,4.59,16.76c1.14,12.15-6.95,21.77-13.23,25.4 + C288.04,621.84,285.07,622.48,279.15,622.5z`, + 11: `M500.83,558.56c-0.93-0.24-2.9-0.39-3.85-0.52c-8.34-0.97-10.63-5.7-9.18-12.35c0.67-5.07,3.86-7.4,5.45-11.59 + c6.43-16.99-2.21-35.06-18.65-38.69c-5.09-1.12-10.21-1.04-15.06,1.33c-14.07,3.64-21.77,18.71-17.25,34.16 + c1.21,4.13,3.09,8.06,4.58,12.12c3.42,9.28-0.88,15.47-10.82,15.51c-17.97,0.06-35.93-0.07-53.9,0.14 + c-4.22,0.05-5.44-1.39-5.38-5.48c0.23-16.8,0.18-33.6,0.23-50.4c0-1.83,0.03-3.67-0.12-5.48c-0.9-10.26-8.89-15.19-18.45-11.38 + c-1.53,0.61-2.98,1.46-4.43,2.28c-11.41,6.43-19.98,5.03-28.86-4.75c-7.9-8.7-8.9-22.77-2.27-31.88 + c7.33-10.07,17.79-12.99,29.03-8.08c2.74,1.2,5.37,2.68,8.18,3.67c9.76,3.44,16.22-0.78,16.68-11.1c0.31-6.97,0.1-13.97,0.11-20.96 + c0.01-12.31,0.1-24.62-0.07-36.93c-0.05-3.78,0.97-5.31,5.05-5.28c17.97,0.15,35.93-0.06,53.9-0.01 + c10.87,0.03,14.23,4.78,11.17,15.41c-1.79,6.2-4.65,12.11-5.11,18.67c-1.89,16.38,8.5,29.12,24.49,30.05 + c15.36,0.89,28.31-11.34,28.55-26.89c0.09-5.57-0.93-10.89-3.21-15.98c-1.02-2.27-2.02-4.57-2.8-6.93 + c-2.84-8.6,1.04-14.21,10.09-14.28c19.28-0.15,38.57-0.03,57.85-0.19c3.74-0.03,4.9,1.33,4.87,4.96 + c-0.17,18.78-0.04,37.57-0.25,56.35c-0.14,12.92,6.99,17.92,18.98,12.99c2.61-1.07,5.22-2.18,7.89-3.1 + c14.8-5.11,26.57,1.47,30.1,16.78c3.02,13.1-2.26,23.32-15.96,30.86c-7.16,1.34-13.89,0.02-20.22-3.43 + c-13.4-7.3-21.26-1.61-20.68,13.08c0.67,17.09,0.05,34.24,0.19,51.36c0.04,4.41-1.27,6.14-6,6.08 + C537.4,558.41,519.11,558.56,500.83,558.56z`, + 12: `M672.86,356.02c-2.51,6.41,0.79,18.02,13.81,17.95c20.1,0.13,35.75-0.18,55.04-0.12 + c2.71,0.01,5.6,0.85,5.59,3.82c-0.1,60.36,0.04,119.05,0.02,179.41c0,0.5-0.1,0.99-0.15,1.49c-2.03,2.03-6.17,0.87-8.61,0.87 + c-17.12,0.05-26.27-0.3-43.38-0.28c-2.15,0-11.08-0.45-13.17,0.28c-8.84-0.48-10.79,8.3-8.45,16.77c1.81,6.57,5.42,11.45,6.51,18.3 + c2.11,13.13-5.76,25.93-18.87,28.22c-12.96,1.83-24.63-5.18-27.84-18.37c-1.17-5.93-0.47-11.13,1.66-16.63 + c1.5-3.86,2.98-8.83,4.44-12.75c2.93-7.91-2.42-14.53-11.76-14.76c-9.63-0.21-19.27-0.05-28.91-0.07 + c-9.3-0.02-18.61,0.09-27.91-0.04c-6.26-0.09-7.03-0.57-7.07-6.76c-0.1-18.11-0.14-37.05,0-55.16c0.07-9.12,6.63-8.8,14.74-7.82 + c4.5,1.73,9.52,4.26,14.18,5.47c10.07,2.64,20.93-3.05,25.73-12.36c6.72-13.04,6.13-25.16-2.43-34.24 + c-7.31-7.75-15.25-11.85-26.54-7.29c-2.62,1.06-9.63,3.35-12.33,4.23c-6.6,2.15-12.85-1.87-13.32-7.23 + c-0.48-5.35,0.15-50.06,0.08-57.77c0.12-6.36,1.52-7.71,7.82-7.74c15.45-0.08,55.13,1.59,59.91,0.1c8.64-1.2,8.83-10.58,6.17-18.91 + c-2.18-6.81-4.82-11.61-5.42-18.83c-1.06-12.89,6.43-21.57,18.36-24.77c12.02-3.23,23.2,1.76,28.07,13.54 + c2.84,3.48,2.84,14.33-0.1,18.72C676.25,349.18,675.38,349.61,672.86,356.02z`, + 13: `M158.93,683.51c7.6-1.54,8.41-3.24,12.33-4.54c8.68-2.89,12.81,0.42,12.66,9.57 + c-0.33,19.46-0.3,34.43,0.16,52.58c0.03,4.07-1,5.48-3.9,5.47c-19.8-0.07-39.6-0.1-59.4-0.09c-36.94,0.01-73.88-0.05-110.81,0.19 + c-5.19,0.03-6.37-1.64-6.36-6.56c0.16-57.4,0.22-112.35,0.06-169.76c-0.01-4.91,0.91-7.27,6.13-7.15 + c14.89,0.4,21.99,0.35,37.35,0.26c7.15-0.04,14.42,0.15,21.69-3.87c2.87-1.59,5.56-5.31,4.74-13.79 + c-0.96-2.82-2.49-10.03-3.69-12.78c-7.03-16.06,0.1-29.51,17.18-33.81c0.64-0.16,11.94,0,16.36,2.63 + c12.01,5.79,14.96,16.29,10.18,29.27c-0.82,2.22-3.34,7.88-3.93,11.68c-0.73,4.66-1.17,9.25-0.75,10.78 + c0.76,2.79,2.86,4.51,3.28,5.26c3.46,4.47,10.74,4.2,15.7,4.24c17.26,0.14,30.99,0.14,48.25,0.17c7.71,0.01,8.18,2.39,8.19,10.06 + c0.02,17.26-0.44,31.02-0.06,48.28c0.19,8.42-2.29,17.32-15.1,11.43c-2.43-1.79-8.68-4.5-15.04-6 + c-18.33-1.94-30.25,13.79-28.97,26.61c0.98,9.84,2.51,19.41,11.03,25.64C142.42,683.83,151.33,685.05,158.93,683.51z`, + 14: `M385.72,672.62c-5.94-0.44-10.23,1.91-11.61,7.64c-0.65,2.72-0.08,42.36-0.13,59.34 + c-0.02,6.16-0.66,6.76-6.97,6.76c-57.57,0.08-115.14,0.08-172.71,0.33c-5.2,0.02-6.43-1.62-6.34-6.55 + c0.32-17.63,0-33.67,0.07-51.31c0.05-11.57-6.48-17.41-17.48-13.67c-0.98,0.33-4.28,2.83-7.6,3.9c-4.42,1.42-9.07,1.44-10.17,1.44 + c-3.21-0.01-4.19-0.08-7.28-0.98c-1.74-0.51-4.01-1.36-5.1-2.05c-12.5-7.87-16.11-26.46-6.48-38.65c3.59-4.55,6.97-6.42,13.06-7.76 + c6.53-1.19,12.01,0.88,17.79,3.98c2.28,1.41,6.27,2.76,8.86,3.34c4.52,1,9.59-0.83,11.82-4.17c1.92-2.89,2.76-11.82,2.7-15.86 + s0.19-42.7-0.32-49.06c-0.27-3.3-0.06-6.58,3.25-6.68c6.61-0.19,15.48,0,22.1,0c12.29-0.01,22.86-0.38,35.16-0.33 + c10.88,0.04,15.08,4.02,10.26,15.95c-1.43,5.12-3.59,8.99-5.64,14.87c-1.23,6.94-1.3,11.86,2.35,18.99 + c6.35,11.99,24.47,16.96,34.45,12.87c12.8-5.24,19.69-18.4,17.63-33.86c-0.97-4.23-3.46-11.29-4.58-15.46 + c-2.56-9.53,0.83-13.4,10.58-13.4c19.7,0,35.7,0.37,54.84,0.18c5.81,0.03,4.79,3.5,4.81,9.58c0.07,17.47,0.09,28.18,0.1,45.65 + c0,1.33-0.05,9.66,0,10.99c0.41,10.02,6.99,12.08,16.18,8.29c3.53-1.46,7.61-4.38,11.29-5.49c13.88-4.19,27.74,6.89,29.47,21.38 + c1.71,14.38-7.59,22.68-13.59,26.47c-1.87,0.29-5.38,2.24-10.2,1.61c-4.14-0.54-10.64-5.06-11.97-5.66 + C390.15,673.37,387.41,672.75,385.72,672.62z`, + 15: `M532.16,626.84c-13.24-1.71-28.15,9.06-29.54,23.72c-1.05,11.14,2.42,20.46,11.85,26.84 + c9.32,6.31,19.4,6.22,28.74,0.56c12.05-7.3,18.75-1.95,18.33,11.04c-0.55,17.28-0.17,34.59-0.04,51.89 + c0.02,3.53-0.9,4.95-4.81,4.94c-32.42-0.01-64.84,0.31-97.26,0.31c-25.77,0-51.54-0.37-77.31-0.37c-4.22,0-5.41-1.44-5.37-5.51 + c0.19-17.3,0.08-34.59,0.11-51.89c-0.68-5.66,1.37-12.28,7.2-12.22c4.4,0.05,11.68,4.63,18.71,7.14 + c8.81,3.14,17.57-2.42,17.94-2.64c3.09-1.76,6.65-5.09,8.63-8.11c7.95-12.16,6.14-31.17-9.19-41.4c-5.63-3.76-11.83-3.9-18.18-2.29 + c-4.21,1.06-8.05,3.11-12.1,4.61c-9.37,4.42-14.44,0.68-14.4-9.56c-0.34-7.48-0.09-14.97-0.1-22.45 + c-0.01-11.14-0.09-22.29,0.04-33.43c0.07-6.28,1.96-5.7,8.2-5.74c15.14-0.1,30.01-0.31,45.14-0.33c3.15,0,7.14,0.15,10.29-0.22 + c11.28-1.34,12.95-9.42,10.87-18.47c-1.12-4.87-2.57-6.19-5.49-11.91c-1.9-3.72-2.5-11.3,0.55-18.4c1.65-3.82,4.99-7.68,8.33-10.33 + c0.16-0.13,0.36-0.18,0.55-0.27c0.01,0,7.59-4.17,16.16-3.73c7.27,0.37,14.86,5.54,18.15,10.29c3.28,4.75,5.16,15.55,1.07,24.55 + c-1.06,2.33-4.08,7.38-4.84,11.2c-0.39,1.99-0.93,8.02,0.93,11.13c2.7,4.53,8.52,6.04,11.09,6.11c0.83,0.04,23.75,0.56,41.65,0.54 + c7.02-0.01,15.74,0,17.73,0.09c1.99,0.09,5.41-1.42,5.12,1.33c-0.28,2.75,0.12,17.35,0,30.44c-0.13,13.77,1.53,28.83-0.11,36.06 + c-1.51,6.64-11.54,4.01-13.52,3.5C542.63,632.62,538.99,627.12,532.16,626.84z`, + 16: `M747.08,562.77c0.08,1.99,0.35,7.73,0.35,9.72c0.01,57.38-0.05,110.21-0.06,167.59c0,6.6,0,6.61-6.35,6.61 + c-56.72,0.01-113.43-0.03-170.15,0.14c-5.02,0.02-6.59-1.36-6.5-6.45c0.3-16.13,0.08-32.27,0.13-48.4 + c0.01-3.85-0.24-7.67-1.2-11.37c-1.71-6.57-6.14-9.24-12.77-7.8c-3.1,0.67-5.93,2.1-8.76,3.52c-13.94,7.02-27.51,2.59-33.94-11.02 + c-5.96-12.61-0.55-25.37,10.34-31.73c4.64-2.88,13.55-4.56,19.08-0.59c1.9,1.36,7.36,3.92,9.54,4.72 + c12.25,4.02,20.47-4.99,17.67-15.95c0.15-15.96-0.63-29.73-0.62-45.69c0.01-13.89-0.49-14.06,13.6-14.06 + c16.12,0,32.13,0.65,48.25,0.7c10.44,0.03,12.43,4.13,10.02,14.37c-1.44,6.13-4.98,12.07-5.91,18.41 + c-1.51,10.34,2.48,20.53,11.27,26.42c8.66,5.81,20.86,6.17,30.07,0.62c9.31-5.6,13.22-15.81,12.35-26.81 + c-0.34-4.32-1.87-9.39-3.65-13.36c-1.09-2.43-2.12-3.98-2.87-6.53c-2.54-8.62,0.07-11.89,8.9-13.78 + c18.77-0.05,35.67-0.2,54.43-0.17C742.23,561.91,745.52,560.97,747.08,562.77z`, + }, +}; + +/** + * 获取碎片的路径数据 + * @param residence 故居名称 + * @param pieceId 碎片ID + * @returns 路径数据字符串 + */ +export const getPuzzlePiecePath = ( + _residence: string, + pieceId: number +): string | null => { + // 所有故居共用同一套路径数据;residence 参数保留用于兼容调用方 + return puzzlePathConfig.pieces[pieceId] ?? null; +}; + +/** + * 获取拼图的viewBox + * @param residence 故居名称 + * @returns viewBox字符串 + */ +export const getPuzzleViewBox = (_residence: string): string => { + // 所有故居共用同一套 viewBox;residence 参数保留用于兼容调用方 + return puzzlePathConfig.viewBox ?? "0 0 748.92 747.84"; +}; diff --git a/src/main.tsx b/src/main.tsx index 6db5e81..ddc49e4 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -2,6 +2,12 @@ import { StrictMode } from "react"; import { createRoot } from "react-dom/client"; import "./index.css"; import App from "./App"; +import { + useChenyunStore, + useHuangyanpeiStore, + usePuzzleStore, + useClueStore, +} from "./store"; // 在开发模式的移动端启用 vConsole(需先安装 vconsole 依赖) if (import.meta.env.DEV && typeof window !== "undefined") { @@ -22,6 +28,43 @@ if (import.meta.env.DEV && typeof window !== "undefined") { } } +// 全局键盘快捷键:Ctrl+Shift+R 重置所有缓存 +const setupGlobalKeyboardShortcuts = () => { + if (typeof window !== "undefined") { + document.addEventListener("keydown", (event) => { + // Ctrl+Shift+R: 重置所有缓存 + if (event.ctrlKey && event.shiftKey && event.key === "R") { + event.preventDefault(); // 阻止默认的页面刷新行为 + + // 显示确认对话框 + const confirmed = window.confirm( + "确定要重置所有缓存吗?这将清除所有已收集的拼图碎片、已完成的展品和线索。" + ); + + if (confirmed) { + try { + // 重置所有store + useChenyunStore.getState().resetAll(); + useHuangyanpeiStore.getState().resetAll(); + usePuzzleStore.getState().resetAll(); + useClueStore.getState().resetAll(); + + // 显示成功消息 + alert("所有缓存已重置!页面将刷新。"); + window.location.reload(); + } catch (error) { + console.error("重置缓存时出错:", error); + alert("重置缓存失败,请查看控制台错误信息。"); + } + } + } + }); + } +}; + +// 设置全局键盘快捷键 +setupGlobalKeyboardShortcuts(); + const rootElement = document.getElementById("root"); if (!rootElement) { throw new Error("Root element not found"); diff --git a/src/pages/chenyun/internalization.tsx b/src/pages/chenyun/internalization.tsx index e391cfe..3c21111 100644 --- a/src/pages/chenyun/internalization.tsx +++ b/src/pages/chenyun/internalization.tsx @@ -118,8 +118,10 @@ const ChenyunInternalization = () => { const [showVideo, setShowVideo] = useState(false); const [postGuideVisible, setPostGuideVisible] = useState(false); const [showLetter, setShowLetter] = useState(false); + const [showLetterVideo, setShowLetterVideo] = useState(false); const [showStudyGuide, setShowStudyGuide] = useState(false); const videoRef = useRef(null); + const letterVideoRef = useRef(null); const audioRef = useRef(null); useEffect(() => { @@ -145,6 +147,15 @@ const ChenyunInternalization = () => { }); } }; + + // 信件视频加载完成后自动播放 + const handleLetterVideoCanPlay = () => { + if (showLetterVideo && letterVideoRef.current) { + letterVideoRef.current.play().catch((error) => { + console.warn("信件视频播放失败:", error); + }); + } + }; const anchors: VideoAnchor[] = useMemo( () => QUIZ_ANCHORS.map((item) => { @@ -413,10 +424,25 @@ const ChenyunInternalization = () => { // 提交信件的逻辑(values 为多个填空的内容) console.log("提交信件", values); setShowLetter(false); - setShowStudyGuide(true); + setShowLetterVideo(true); }} /> + {/* 信件关闭后的视频 */} + {showLetterVideo && ( +