import { defineStore } from 'pinia' export const useSceneStore = defineStore('scene', { state: () => ({ // 当前场景索引 currentSceneIndex: 0, // 场景数据 scenes: [ { id: 'qianmen', name: '前门商圈', title: '前门商圈', description: '现场感受舞龙舞狮、京韵大鼓等非遗表演,逛非遗文创市集,买老字号限定年货套餐,让您一站式解锁购、赏、品三重年味。', interactivePoint: '点击逛民俗市集,速速收集「非遗福印」', image: '/images/qianmen.jpg', video: '/videos/qianmen.mp4', audio: '/audios/qianmen.mp3' }, { id: 'chongwen', name: '崇文门商圈', title: '崇文商圈', description: '崇文喜市年货节,16款国货新品首发亮相,4大特色主题区精彩呈现,节庆饰品、移动书屋、票根联动······', interactivePoint: '滑动探索商圈,集齐「国潮福字」', image: '/images/chongwen.jpg', video: '/videos/chongwen.mp4', panorama: 'https://example.com/chongwen-panorama' }, { id: 'wangfujing', name: '王府井商圈', title: '王府井商圈', description: '12家知名品牌的首秀首展,线上线下充分联动,凸显国际化、艺术化、节日化定位。在南街门头打造金福临门主题景观、北街门头设置金马迎春装饰装置,同步布局金袋纳福打卡点位及金树挂彩树木亮化工程,全方位营造浓厚节日氛围。', interactivePoint: '从南街门头金福临门主题景观进入,路过金袋纳福打卡点位及金树挂彩树木亮化工程,到北街门头金马迎春装饰装置。领取「金袋福卡」', image: '/images/wangfujing.jpg', video: '/videos/wangfujing.mp4' }, { id: 'longfusi', name: '隆福寺商圈', title: '隆福寺', description: '文化市集潮玩地,文艺青年的新春必打卡地来啦!隆福寺新春文化市集将艺术与消费完美融合。', interactivePoint: '探索文创好物,点亮「文化福灯」', image: '/images/longfusi.jpg', video: '/videos/longfusi.mp4' }, { id: 'dongzhimen', name: '东直门商圈', title: '东直门商圈', description: '团圆家宴终点站,东直门簋街化身团圆守岁主场。', interactivePoint: '美食相关,领取「团圆福筷」', image: '/images/dongzhimen.jpg', video: '/videos/dongzhimen.mp4' } ], // 场景激活状态 activatedScenes: [], // 场景交互状态 interactiveStatus: {} }), getters: { // 获取当前场景 currentScene: (state) => state.scenes[state.currentSceneIndex], // 获取场景总数 sceneCount: (state) => state.scenes.length, // 判断场景是否激活 isSceneActivated: (state) => (sceneId) => state.activatedScenes.includes(sceneId), // 判断场景交互是否完成 isInteractiveComplete: (state) => (sceneId) => state.interactiveStatus[sceneId] === true }, actions: { // 设置当前场景 setCurrentScene(index) { this.currentSceneIndex = index }, // 激活场景 activateScene(sceneId) { if (!this.activatedScenes.includes(sceneId)) { this.activatedScenes.push(sceneId) } }, // 设置场景交互状态 setInteractiveStatus(sceneId, status) { this.interactiveStatus[sceneId] = status }, // 重置场景状态 resetSceneState() { this.currentSceneIndex = 0 this.activatedScenes = [] this.interactiveStatus = {} } } })