import { JsonAsset, sys } from "cc"; // 定义今天的数据类 export class LocalTodayData { private _todayData: TodayData; constructor() { let defaultData: TodayData = { lookVedionum: 0, isUnlockAll: false, UnLockAllTimes: 0 } this._todayData = sys.localStorage.getItem("todayData") ? Object.assign(defaultData, JSON.parse(sys.localStorage.getItem("todayData"))) : defaultData } get todayData(): TodayData { return this._todayData; } set todayData(data: Partial) { Object.assign(this._todayData, data); this.saveTodayData(); } // 获取用户数据 getTodayData(): TodayData { return this._todayData; } // 设置用户数据 setTodayData(data: Partial): void { Object.assign(this._todayData, data); this.saveTodayData(); } // 保存用户数据到本地存储 public saveTodayData(): void { sys.localStorage.setItem("todayData", JSON.stringify(this._todayData)); } } export const Today = new LocalTodayData(); // 定义用户数据管理类 export class LocalDataMgr { private _userData: UserData; private _lixiantime: number; private _lixiantime2: string; constructor() { this.lixianTime2 = "" let defaultData: UserData = { unlockUnits: [], sound: true, music: true, openid: "demo", leveltime: 120 } this._userData = sys.localStorage.getItem("userData") ? Object.assign(defaultData, JSON.parse(sys.localStorage.getItem("userData"))) : defaultData this.lixianTime = sys.localStorage.getItem("lixianTime") || 0 } get lixianTime() { return this._lixiantime } set lixianTime(time: number) { this._lixiantime = time sys.localStorage.setItem("lixianTime", time) } get lixianTime2() { return this._lixiantime2 } set lixianTime2(time: string) { this._lixiantime2 = time sys.localStorage.setItem("lixianTime2", time) } get userData(): UserData { return this._userData; } // 获取用户数据 getUserData(): UserData { return this._userData; } // 设置用户数据 setUserData(data: Partial): void { Object.assign(this._userData, data) this.saveUserData(); } // 保存用户数据到本地存储 saveUserData(): void { sys.localStorage.setItem("userData", JSON.stringify(this._userData)); } startgametime: number = 0; entergametime: number = 0 } export const User = new LocalDataMgr(); export interface usercards { id: number, level: number, num: number } // 用户数据接口 export interface UserData { unlockUnits: Array; sound: boolean; music: boolean; openid: string; leveltime: number; } export interface TodayData { lookVedionum: number; isUnlockAll: boolean; UnLockAllTimes: number; } export interface DifficutyData { difficutyCount: number; scales: Array } export class UserDifficutyData { private _difficutyData: DifficutyData; createOrDeleteOtherScale() { const targetCount = this._difficutyData.difficutyCount; const currentScales = this._difficutyData.scales; const defaultScales = [1.18, 1.16, 1.14, 0.3976, 0.3690, 0.3029, 0.0667, 0.0766, 0.0531, 0.0716]; if (currentScales.length > targetCount) { currentScales.splice(targetCount, currentScales.length - targetCount); } else if (currentScales.length < targetCount) { for (let i = currentScales.length; i < targetCount; i++) { let value: number; if (i < defaultScales.length) { value = defaultScales[i]; } else { value = Math.random() * 0.035 + 0.04; } currentScales.push(value); } } for (let i = 0; i < targetCount; i++) { if (currentScales[i] === undefined || currentScales[i] === null) { if (i < defaultScales.length) { currentScales[i] = defaultScales[i]; } else { currentScales[i] = Math.random() * 0.035 + 0.04; } } } // 保存修改后的数据 this.saveDifficutyData(); } constructor() { let defaultData = { difficutyCount: 10, scales: [1.18, 1.16, 1.14, 0.3976, 0.3690, 0.3029, 0.0667, 0.0766, 0.0531, 0.0716] } this._difficutyData = sys.localStorage.getItem("difficutyData") ? Object.assign(defaultData, JSON.parse(sys.localStorage.getItem("difficutyData"))) : defaultData } get difficutyData(): DifficutyData { return this._difficutyData; } set difficutyData(data: Partial) { Object.assign(this._difficutyData, data); this.saveDifficutyData(); } // 获取难度数据 getDifficutyData(): DifficutyData { return this._difficutyData; } // 设置难度数据 setDifficutyData(data: Partial): void { Object.assign(this._difficutyData, data); this.saveDifficutyData(); } // 保存用户数据到本地存储 public saveDifficutyData(): void { sys.localStorage.setItem("difficutyData", JSON.stringify(this._difficutyData)); } setDataToDefault() { let defaultData = { difficutyCount: 10, scales: [1.18, 1.16, 1.14, 0.3976, 0.3690, 0.3029, 0.0667, 0.0766, 0.0531, 0.0716] } this._difficutyData = defaultData; this.saveDifficutyData(); } } export const Difficulty = new UserDifficutyData(); export interface SkinData { singleSelect:string multiSelect:string selectedSkinList:Array } export class UserSkinData { private _skinData: SkinData; constructor() { let defaultData: SkinData = { singleSelect: "true", multiSelect: "false", selectedSkinList: [] } this._skinData = sys.localStorage.getItem("skinData") ? Object.assign(defaultData, JSON.parse(sys.localStorage.getItem("skinData"))) : defaultData } get skinData(): SkinData { return this._skinData; } set skinData(data: Partial) { Object.assign(this._skinData, data); this.saveSkinData(); } // 获取皮肤数据 getSkinData(): SkinData { return this._skinData; } // 设置皮肤数据 setSkinData(data: Partial): void { Object.assign(this._skinData, data); this.saveSkinData(); } // 保存用户数据到本地存储 public saveSkinData(): void { sys.localStorage.setItem("skinData", JSON.stringify(this._skinData)); } addSelectSkin(key:number) { let index = this._skinData.selectedSkinList.indexOf(key) if(index == -1) { this._skinData.selectedSkinList.push(key) } this.saveSkinData() } removeSelectSkin(key:number) { let index = this._skinData.selectedSkinList.indexOf(key) if(index != -1) { this._skinData.selectedSkinList.splice(index,1) } this.saveSkinData() } removeAllSelectSkin() { this._skinData.selectedSkinList = [] this.saveSkinData() } addAllSelectSkin() { this._skinData.selectedSkinList = [] let allSkinkeys = getSelectAllKeys() for(let i = 0;i < allSkinkeys.length;i++) { this._skinData.selectedSkinList.push(allSkinkeys[i]) } this.saveSkinData() } } export const Skin = new UserSkinData(); export interface MapData { types:Array selectedMaps:Array } export class UserMapData { private _mapData: MapData; constructor() { let defaultData: MapData = { types: ["全部","爆量"], selectedMaps: [] } this._mapData = sys.localStorage.getItem("mapData") ? Object.assign(defaultData, JSON.parse(sys.localStorage.getItem("mapData"))) : defaultData } get mapData(): MapData { return this._mapData; } set mapData(data: Partial) { Object.assign(this._mapData, data); this.saveMapData(); } // 获取地图数据 getMapData(): MapData { return this._mapData; } // 设置地图数据 setMapData(data: Partial): void { Object.assign(this._mapData, data); this.saveMapData(); } // 保存用户数据到本地存储 public saveMapData(): void { sys.localStorage.setItem("mapData", JSON.stringify(this._mapData)); } } export interface SuperFindData { title:string levelDesc:string imgPath:string } export class UserSuperFindData { private _superFindData: SuperFindData; constructor() { let obj = Skin.getSkinData().selectedSkinList[0] let defaultData: SuperFindData = { title: `找到${Difficulty.getDifficutyData().difficutyCount}个跳舞的小熊`, levelDesc: `疯狂最强找茬-找小熊-第${1}关`, imgPath: `image/bg1` } this._superFindData = sys.localStorage.getItem("superFindData") ? Object.assign(defaultData, JSON.parse(sys.localStorage.getItem("superFindData"))) : defaultData } get superFindData(): SuperFindData { return this._superFindData; } set superFindData(data: Partial) { Object.assign(this._superFindData, data); this.saveSuperFindData(); } // 获取疯狂找茬数据 getSuperFindData(): SuperFindData { return this._superFindData; } // 设置疯狂找茬数据 setSuperFindData(data: Partial): void { Object.assign(this._superFindData, data); this.saveSuperFindData(); } // 保存数据到本地存储 public saveSuperFindData(): void { sys.localStorage.setItem("superFindData", JSON.stringify(this._superFindData)); } } export const selectedSkinList: { [key: number]: string } = { //假设30个数据 1: "spine/hecha", 2: "spine/hecha", 3: "spine/hecha", 4: "spine/hecha", 5: "spine/hecha", 6: "spine/hecha", 7: "spine/hecha", 8: "spine/hecha", 9: "spine/hecha", 10: "spine/hecha", 11: "spine/hecha", 12: "spine/hecha", 13: "spine/hecha", 14: "spine/hecha", 15: "spine/hecha", 16: "spine/hecha", 17: "spine/hecha", 18: "spine/hecha", 19: "spine/hecha", 20: "spine/hecha", 21: "spine/hecha", 22: "spine/hecha", 23: "spine/hecha", 24: "spine/hecha", 25: "spine/hecha", 26: "spine/hecha", 27: "spine/hecha", 28: "spine/hecha", 29: "spine/hecha", 30: "spine/hecha", }; /** * 获取 selectedSkinList 中所有的键 * @returns 包含所有键的数字数组 */ export function getSelectAllKeys(): number[] { return Object.keys(selectedSkinList).map(Number); }