import { _decorator, sys } from "cc"; import Utils from "../Common/Utils"; import { CommonConfig } from "../Config/CommonConfig"; import AudioManager from "./AudioManager"; const { ccclass, property } = _decorator; @ccclass('PlayerDataManager') export default class PlayerDataManager { private static _I: PlayerDataManager = null; public static get I(): PlayerDataManager { if (!PlayerDataManager._I) { PlayerDataManager._I = new PlayerDataManager(); PlayerDataManager._I.init() } return PlayerDataManager._I; } private isShakeOn: boolean = true; //震动 private isMusicOn: boolean = true; //音乐 private isSoundOn: boolean = true; //音效 private guideMainFinished: boolean = false; //主界面引导是否完成 private guideTalkFinished: boolean = false; //聊天界面引导是否完成 public get IsShakeOn() : boolean {return this.isShakeOn;} public get IsMusicOn() : boolean {return this.isMusicOn;} public get IsSoundOn() : boolean {return this.isSoundOn;} public get GuideMainFinished() : boolean {return this.guideMainFinished;} public get GuideTalkFinished() : boolean {return this.guideTalkFinished;} private init(){ this.InitPlayerData(); } public initEmpty(){ } private InitPlayerData() { // this.isShakeOn = PlayerDataManager.getForKey(CommonConfig.StorageConfig.SETTING_SHAKEON, true) this.isMusicOn = PlayerDataManager.getForKey(CommonConfig.StorageConfig.SETTING_MUSIC, true) this.isSoundOn = PlayerDataManager.getForKey(CommonConfig.StorageConfig.SETTING_SOUND, true) this.guideMainFinished = PlayerDataManager.getForKey(CommonConfig.StorageConfig.GUIDE_MAIN, false) this.guideTalkFinished = PlayerDataManager.getForKey(CommonConfig.StorageConfig.GUIDE_TALK, false) console.log("InitPlayerData", `music=${this.isMusicOn}, sound=${this.isSoundOn}, guideMain=${this.guideMainFinished}, guideTalk=${this.guideTalkFinished}`) } public SetMusicOn(bo: boolean) { if (this.isMusicOn == bo) return this.isMusicOn = bo PlayerDataManager.setForKey(CommonConfig.StorageConfig.SETTING_MUSIC, bo) if (bo) AudioManager.I.ReplayMusic() else AudioManager.I.StopMusic() } public SetSoundOn(bo: boolean) { if (this.isSoundOn == bo) return this.isSoundOn = bo PlayerDataManager.setForKey(CommonConfig.StorageConfig.SETTING_SOUND, bo) } /**主界面引导完成*/ public SetGuideMainFinish(bo: boolean) { if (this.guideMainFinished == bo) return this.guideMainFinished = bo PlayerDataManager.setForKey(CommonConfig.StorageConfig.GUIDE_MAIN, bo) } /**聊天界面引导完成*/ public SetGuideTalkFinish(bo: boolean) { if (this.guideTalkFinished == bo) return this.guideTalkFinished = bo PlayerDataManager.setForKey(CommonConfig.StorageConfig.GUIDE_TALK, bo) } /** * 类型内部处理,外层部分类型 isBindingId //标识位数据需要绑定 playerid的时候,默认值为 true,若是传 false,则不进入绑定 * */ static setForKey(key: number | string, data) { if (!key || void (0) === data) { Utils.Log("key can`t nil"); return; } key = key + ""; sys.localStorage.setItem(key, JSON.stringify(data)); } static getForKey(key: number | string, defaultVal): any { if (!key) { Utils.Log("key can`t nil"); return; } key = key + ""; let jsonObj; try { let str = sys.localStorage.getItem(key); try { jsonObj = JSON.parse(str); } catch (error) { jsonObj = str; } } catch (error) { Utils.Log(`getForKey--->>>解析${key}的值的时候报错`); } if (jsonObj == null){ jsonObj = defaultVal; } return jsonObj; } static removeForKey(key: number | string): void { key = key + ""; sys.localStorage.setItem(key, ""); } /**清档 */ static clearAll(): void { sys.localStorage.clear(); } }