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() { const saved = sys.localStorage.getItem("difficutyData"); this._difficutyData = saved ? Object.assign({}, DEFAULT_DIFFICULTY_DATA, JSON.parse(saved)) : {...DEFAULT_DIFFICULTY_DATA}; } 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() { this._difficutyData = {...DEFAULT_DIFFICULTY_DATA}; this.createOrDeleteOtherScale(); } } const DEFAULT_DIFFICULTY_DATA: DifficutyData = { difficutyCount: 10, scales: [1.18, 1.16, 1.14, 0.3976, 0.3690, 0.3029, 0.0667, 0.0766, 0.0531, 0.0716] }; export const Difficulty = new UserDifficutyData(); export interface SkinData { singleSelect:string multiSelect:string selectedSkinList:Array } export class UserSkinData { private _skinData: SkinData; private _selectSkins:string[] = [] 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 } getSelectSkinPath():string[] { let selectSkinsKeys = this._skinData.selectedSkinList this._selectSkins = [] for(let key of selectSkinsKeys) { let skin = allSkinList[key] this._selectSkins.push(skin) } this._selectSkins = this._selectSkins.length > 0?this._selectSkins:[defaultSkin] return this._selectSkins } setSelectStatu(singleSelect:boolean) { this._skinData.singleSelect = singleSelect.toString() this._skinData.multiSelect = (!singleSelect).toString() this.saveSkinData() } 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 = getAllSkinKeys() for(let i = 0;i < allSkinkeys.length;i++) { this._skinData.selectedSkinList.push(allSkinkeys[i]) } this.saveSkinData() } clearData() { let defaultData: SkinData = { singleSelect: "true", multiSelect: "false", selectedSkinList: [] } this._skinData = defaultData this.saveSkinData() } } export const Skin = new UserSkinData(); export interface MapData { types:Array selectedMaps:Array } export class UserMapData { private _mapData: MapData; private _selectMaps:string[] = [] 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(); } getSelectMapPath():string[] { let selectMapKeys = this._mapData.selectedMaps this._selectMaps = [] for(let key of selectMapKeys) { let map = allMapList[key] this._selectMaps.push(map) } this._selectMaps = this._selectMaps.length > 0?this._selectMaps:[defaultMap] return this._selectMaps } // 获取地图数据 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)); } clearData() { let defaultData: MapData = { types: ["全部","爆量"], selectedMaps: [] } this._mapData = defaultData this.saveMapData() } addSelectMap(key:number) { let index = this._mapData.selectedMaps.indexOf(key) if(index == -1) { this._mapData.selectedMaps.push(key) } this.saveMapData() } removeSelectMap(key:number) { let index = this._mapData.selectedMaps.indexOf(key) if(index != -1) { this._mapData.selectedMaps.splice(index,1) } this.saveMapData() } removeAllSelectMap() { this._mapData.selectedMaps = [] this.saveMapData() } addAllSelectMap() { this._mapData.selectedMaps = [] let allMapkeys = getAllMapKeys() for(let i = 0;i < allMapkeys.length;i++) { this._mapData.selectedMaps.push(allMapkeys[i]) } this.saveMapData() } getLastLevelMapKey(currentBgKey:number):number { if(this._mapData.selectedMaps.length == 0) { let curkeyIndex = getAllMapKeys().indexOf(currentBgKey) let result = curkeyIndex > 0?getAllMapKeys()[curkeyIndex - 1]:getAllMapKeys()[getAllMapKeys().length - 1] return result; } let index = this._mapData.selectedMaps.indexOf(currentBgKey) if(index > 0) { return this._mapData.selectedMaps[index - 1] } return this._mapData.selectedMaps[this._mapData.selectedMaps.length - 1] } getNextLevelMapKey(currentBgKey:number):number { if (this._mapData.selectedMaps.length == 0) { let curkeyIndex = getAllMapKeys().indexOf(currentBgKey) let result = curkeyIndex < getAllMapKeys().length - 1?getAllMapKeys()[curkeyIndex + 1]:getAllMapKeys()[0] return result; } let index = this._mapData.selectedMaps.indexOf(currentBgKey) if(index < this._mapData.selectedMaps.length - 1) { return this._mapData.selectedMaps[index + 1] } return this._mapData.selectedMaps[0] } } export const UserMap = new UserMapData() export const defaultMap = "image/bg1" export interface SuperFindData { title:string levelDesc:string imgPath:string currentBgKey:number } 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`, currentBgKey:1 } 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)); } clearData() { let defaultData: SuperFindData = { title: `找到${Difficulty.getDifficutyData().difficutyCount}个跳舞的小熊`, levelDesc: `疯狂最强找茬-找小熊-第${1}关`, imgPath: `image/bg1`, currentBgKey:1 } this._superFindData = defaultData this.saveSuperFindData() } lastLevel() { let lastKey = UserMap.getLastLevelMapKey(this._superFindData.currentBgKey) this._superFindData.currentBgKey = lastKey this.setTitle() this._superFindData.levelDesc = `疯狂最强找茬-找小熊-第${lastKey}关` this._superFindData.imgPath = allMapList[lastKey] this.saveSuperFindData() } nextLevel() { let nextKey = UserMap.getNextLevelMapKey(this._superFindData.currentBgKey) this._superFindData.currentBgKey = nextKey this.setTitle() this._superFindData.levelDesc = `疯狂最强找茬-找小熊-第${nextKey}关` this._superFindData.imgPath = allMapList[nextKey] this.saveSuperFindData() } setTitle() { this._superFindData.title = `找到${Difficulty.getDifficutyData().difficutyCount}个跳舞的小熊` console.log(this._superFindData.title) this.saveSuperFindData() } } export const SuperFind = new UserSuperFindData(); // export const canSelectedSkinList: { [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", // }; export const allSkinList: { [key: number]: string } = { //假设30个数据 1: "prefab/spine/spine01", 2: "prefab/spine/spine02", 3: "prefab/spine/spine03", 4: "prefab/spine/spine04", 5: "prefab/spine/spine05", 6: "prefab/spine/spine06", 7: "prefab/spine/spine07", 8: "prefab/spine/spine08", 9: "prefab/spine/spine09", 10: "prefab/spine/spine10", 11: "prefab/spine/spine11", 12: "prefab/spine/spine12", // 13: "prefab/spine/spine13", // 14: "prefab/spine/spine14", // 15: "prefab/spine/spine15", // 16: "prefab/spine/spine16", // 17: "prefab/spine/spine17", // 18: "prefab/spine/spine18", // 19: "prefab/spine/spine19", // 20: "prefab/spine/spine20", // 21: "prefab/spine/spine21", // 22: "prefab/spine/spine22", // 23: "prefab/spine/spine23", // 24: "prefab/spine/spine24", // 25: "prefab/spine/spine25", // 26: "prefab/spine/spine26", // 27: "prefab/spine/spine27", // 28: "prefab/spine/spine28", // 29: "prefab/spine/spine29", // 30: "prefab/spine/spine30", }; export const defaultSkin = "prefab/spine/spine01" export const allMapList: { [key: number]: string } = { // 背景图片资源 1: "image/bg1", 2: "image/bg2", 3: "image/bg3", 4: "image/bg4", 5: "image/bg5", 6: "image/bg6", 7: "image/bg7", 8: "image/bg8", 9: "image/bg9", 10: "image/bg10", 11: "image/bg11", // 12: "image/bg12", // 13: "image/bg13", // 14: "image/bg14", // 15: "image/bg15", // 16: "image/bg16", // 17: "image/bg17", // 18: "image/bg18", // 19: "image/bg19", // 20: "image/bg20", // 21: "image/bg21", // 22: "image/bg22", // 23: "image/bg23", // 24: "image/bg24", // 25: "image/bg25", // 26: "image/bg26", // 27: "image/bg27", // 28: "image/bg28", // 29: "image/bg29", // 30: "image/bg30", }; /** * 获取 所有皮肤 中所有的键 * @returns 包含所有键的数字数组 */ export function getAllSkinKeys(): number[] { return Object.keys(allSkinList).map(Number); } /** * 获取 所有地图 中所有的键 * @returns 包含所有键的数字数组 */ export function getAllMapKeys(): number[] { return Object.keys(allMapList).map(Number); }