import { RewardItem, RewardData } from './RewardData'; export class RewardDataManager { private static _instance: RewardDataManager; private rewardData: RewardData; private constructor() { this.rewardData = new RewardData(); this.initRewards(); } public static get instance(): RewardDataManager { if (!this._instance) { this._instance = new RewardDataManager(); } return this._instance; } public getAllRewards(): RewardItem[] { return this.rewardData.getAllRewards(); } public unlockReward(id: string): boolean { return this.rewardData.unlockReward(id); } public getRewardById(id: string): RewardItem | undefined { return this.rewardData.getRewardById(id); } // 加载/保存功能 public loadRewards() { // 从本地存储加载解锁状态 const savedData = localStorage.getItem('rewardData'); if (savedData) { const parsed = JSON.parse(savedData); parsed.forEach((item: any) => { const reward = this.getRewardById(item.id); if (reward) { reward.unlocked = item.unlocked; } }); } } public saveRewards() { // 保存解锁状态到本地存储 const rewards = this.getAllRewards(); const saveData = rewards.map(reward => ({ id: reward.id, unlocked: reward.unlocked })); localStorage.setItem('rewardData', JSON.stringify(saveData)); } private initRewards() { // 这里定义所有奖励的初始数据 const rewardItems: RewardItem[] = [ { id: "0", name: "蓝柑橘", spriteFrame: null, unlocked: false }, { id: "1", name: "紫晶之吻", spriteFrame: null, unlocked: false }, { id: "2", name: "星芒幻境", spriteFrame: null, unlocked: false }, { id: "3", name: "琥珀气泡", spriteFrame: null, unlocked: false }, { id: "4", name: "樱桃琉璃", spriteFrame: null, unlocked: false }, { id: "5", name: "青柠蜜语", spriteFrame: null, unlocked: false }, { id: "6", name: "霓虹之夏", spriteFrame: null, unlocked: false }, { id: "7", name: "落日熔金", spriteFrame: null, unlocked: false }, { id: "8", name: "彩虹冰摇", spriteFrame: null, unlocked: false }, { id: "9", name: "莓果青柠", spriteFrame: null, unlocked: false } , { id: "10", name: "星穹之泪", spriteFrame: null, unlocked: false } , { id: "11", name: "碧海琉璃", spriteFrame: null, unlocked: false } , { id: "12", name: "莓屿霞光", spriteFrame: null, unlocked: false } , { id: "13", name: "琥珀凝脂", spriteFrame: null, unlocked: false } , { id: "14", name: "焦糖幻境", spriteFrame: null, unlocked: false } , { id: "15", name: "紫雾轻语", spriteFrame: null, unlocked: false } , { id: "16", name: "蜜柚晨风", spriteFrame: null, unlocked: false } , { id: "17", name: "绯色", spriteFrame: null, unlocked: false } , { id: "18", name: "青柠谜语", spriteFrame: null, unlocked: false } , { id: "19", name: "橄榄玉露", spriteFrame: null, unlocked: false } , { id: "20", name: "粉晶迷迭", spriteFrame: null, unlocked: false } , { id: "21", name: "莓柚星芒", spriteFrame: null, unlocked: false } , { id: "22", name: "樱桃绯雪", spriteFrame: null, unlocked: false } , { id: "23", name: "蜜桃幻境", spriteFrame: null, unlocked: false } , { id: "24", name: "紫荆之环", spriteFrame: null, unlocked: false } , { id: "25", name: "红梅夜曲", spriteFrame: null, unlocked: false } , { id: "26", name: "炽焰", spriteFrame: null, unlocked: false } , { id: "27", name: "青柠马天尼", spriteFrame: null, unlocked: false } , { id: "28", name: "草莓马天尼", spriteFrame: null, unlocked: false } , { id: "29", name: "莓果青柠", spriteFrame: null, unlocked: false } , { id: "30", name: "紫葡星坠", spriteFrame: null, unlocked: false } , { id: "31", name: "草莓绯梦", spriteFrame: null, unlocked: false } ]; rewardItems.forEach(reward => { this.rewardData.addReward(reward); }); } }