settingData.ts 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import { _decorator, sys } from "cc";
  2. import { constants } from "./constants";
  3. import { utils } from "./utils";
  4. const { ccclass, property } = _decorator;
  5. @ccclass("settingData")
  6. export class settingData {
  7. public static instance: settingData = null;
  8. public data: any = null;
  9. /**单例*/
  10. public static ins() {
  11. if (!this.instance) {
  12. this.instance = new settingData();
  13. }
  14. return this.instance;
  15. }
  16. /**
  17. * 读取数据缓存
  18. */
  19. public loadFromCache(){
  20. let l = sys.localStorage.getItem(constants.localCache.settingData);
  21. if(l){
  22. this.data = JSON.parse(utils.decrypt(l));
  23. }else{
  24. //没有数据保存一份默认的初始数据
  25. this.data = {
  26. //背景音乐开关
  27. bg_music_status: true,
  28. //音效开关
  29. sound_status: true,
  30. //震动开关
  31. shock_status: false
  32. }
  33. this.saveToCache();
  34. }
  35. }
  36. /*修改音效状态
  37. */
  38. public changeStatus(idx: number){
  39. if(idx == 0){
  40. this.data.bg_music_status = !this.data.bg_music_status;
  41. }else if(idx == 1){
  42. this.data.sound_status = !this.data.sound_status;
  43. }else if(idx == 2){
  44. this.data.shock_status = !this.data.shock_status;
  45. }
  46. this.saveToCache();
  47. }
  48. /**
  49. * 得到设置的数据数组
  50. */
  51. public getSettingDatas():Array<any>{
  52. let datas:Array<any> = [
  53. {name: "背景音乐",
  54. selected: this.data.bg_music_status
  55. },
  56. {name: "音效",
  57. selected: this.data.sound_status
  58. },
  59. {name: "震动",
  60. selected: this.data.sound_status
  61. }
  62. ];
  63. return datas;
  64. }
  65. /**
  66. * 保存到缓存中
  67. */
  68. public saveToCache(){
  69. const data = JSON.stringify(this.data);
  70. //序列化JSON字符串过后加密存储
  71. sys.localStorage.setItem(constants.localCache.settingData, utils.encrypt(data));
  72. }
  73. /**
  74. * 删除缓存
  75. */
  76. public remove(){
  77. sys.localStorage.removeItem(constants.localCache.settingData);
  78. this.loadFromCache();
  79. }
  80. }
  81. export default settingData.ins();