LevelsData.ts 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import { _decorator, sys} from 'cc';
  2. import { csvMgr } from '../core/csv/CsvManager';
  3. import Data from '../core/manager/Data';
  4. import { GameConst } from '../core/common/GameConst';
  5. import Utils from '../core/utils/Utils';
  6. import { Singleton } from '../core/manager/Singleton';
  7. const { ccclass, property } = _decorator;
  8. @ccclass("LevelsData")
  9. export class LevelsData extends Singleton{
  10. private _data: any = null;
  11. public get data() {
  12. if (!this._data) {
  13. this.loadFromCache();
  14. }
  15. return this._data;
  16. }
  17. /**
  18. * 读取数据缓存
  19. */
  20. public loadFromCache(){
  21. let l = sys.localStorage.getItem(GameConst.localCache.levelsData);
  22. if(l){
  23. this._data = JSON.parse(Utils.decrypt(l));
  24. }else{
  25. //没有数据保存一份默认的初始数据
  26. this._data = {
  27. }
  28. this.saveToCache();
  29. }
  30. return this.data;
  31. }
  32. /**
  33. * 得到模型名字数组
  34. */
  35. public getModesNames():Array<any>{
  36. let modelNames = csvMgr.getTableArr("model_names")
  37. return modelNames.map(item => item.name);
  38. }
  39. /**
  40. * 得到当前关卡下的数据
  41. */
  42. public getCurLevelInfo(){
  43. let levels = csvMgr.getTableArr("levels");
  44. let lv = Data.user.lv - 1;
  45. if(lv > levels.length){
  46. return levels[levels.length -1];
  47. }else{
  48. return levels[lv];
  49. }
  50. }
  51. /**
  52. * 保存到缓存中
  53. */
  54. public saveToCache(){
  55. const data = JSON.stringify(this.data);
  56. //序列化JSON字符串过后加密存储
  57. sys.localStorage.setItem(GameConst.localCache.levelsData, Utils.encrypt(data));
  58. }
  59. /**
  60. * 删除缓存
  61. */
  62. public remove(){
  63. sys.localStorage.removeItem(GameConst.localCache.levelsData);
  64. this.loadFromCache();
  65. }
  66. }
  67. //全局单例
  68. export const levelsData = LevelsData.ins();