1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import { _decorator, sys } from 'cc';
- import { Singleton } from '../core/manager/Singleton';
- import Utils from '../core/utils/Utils';
- import { GameConst } from '../core/common/GameConst';
- const { ccclass, property } = _decorator;
- @ccclass("SettingData")
- class SettingData extends Singleton{
- private _data: any = null;
- public get data() {
- if (!this._data) {
- this.loadFromCache();
- }
- return this._data;
- }
- /**
- * 读取数据缓存
- */
- public loadFromCache(){
- let l = sys.localStorage.getItem(GameConst.localCache.settingData);
- if(l){
- this._data = JSON.parse(Utils.decrypt(l));
- }else{
- //没有数据保存一份默认的初始数据
- this._data = {
- bgMusic: true,//背景音乐开关
- soundFx: true,//音效开关
- vibration: false//震动开关
- }
- this.saveToCache();
- }
- return this.data;
- }
- /**
- * 得到设置的数据数组
- */
- public getSettingDatas() {
- const displayNames = ["背景音乐", "音效", "震动"];
- const dataKeys = Object.keys(this.data);
- // 确保字段顺序一致
- return dataKeys.map((key, index) => ({
- name: displayNames[index],
- selected: this.data[key]
- }));
- }
- /**
- * 保存到缓存中
- */
- public saveToCache(){
- const data = JSON.stringify(this.data);
- //序列化JSON字符串过后加密存储
- sys.localStorage.setItem(GameConst.localCache.settingData, Utils.encrypt(data));
- }
- /**
- * 删除缓存
- */
- public remove(){
- sys.localStorage.removeItem(GameConst.localCache.settingData);
- this.loadFromCache();
- }
- }
- //全局单例
- export const settingData = SettingData.ins();
|