IDataModel.ts 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import EventMng from "../../manager/EventMng";
  2. import GameController from "../../GameController";
  3. import { SevBack } from "../../common/Xys";
  4. import { gameMethod } from "../../common/gameMethod";
  5. export default class IDataModel {
  6. protected modelName: string = 'default';
  7. /**
  8. * 本地缓存的数据
  9. */
  10. private _dLocalData = {};
  11. constructor(modelName = 'default') {
  12. this.modelName = modelName;
  13. this.LoadStorage();
  14. }
  15. clear() {
  16. }
  17. protected LoadStorage() {
  18. let localStorage = cc.sys.localStorage.getItem(`model_${this.modelName}`)
  19. if (gameMethod.isEmpty(localStorage)) {
  20. this._dLocalData = {}
  21. this.Save();
  22. } else {
  23. let data = JSON.parse(localStorage);
  24. this._dLocalData = data;
  25. }
  26. }
  27. /**
  28. * protected 只让实现类操作数据 也就是model类型操作数据 对外提供别的方法
  29. * @param sKey
  30. * @param defaultValue
  31. */
  32. protected Query(sKey: string, defaultValue: any = null) {
  33. if (this._dLocalData[sKey] != undefined) {
  34. return this._dLocalData[sKey];
  35. }
  36. return defaultValue;
  37. }
  38. /**
  39. * 设置成功返回 true,反之返回 false 用于是否保存数据
  40. * @param sKey
  41. * @param value
  42. */
  43. protected Set(sKey: string, value: string | number) {
  44. if (this._dLocalData[sKey] && this._dLocalData[sKey] == value) {
  45. return false;//一样就不要改了
  46. }
  47. this._dLocalData[sKey] = value;
  48. return true;
  49. }
  50. protected Save() {
  51. cc.sys.localStorage.setItem(`model_${this.modelName}`, JSON.stringify(this._dLocalData));
  52. }
  53. public getModelName(){
  54. return this.modelName
  55. }
  56. /**
  57. * 发送登录协议
  58. * @param msg
  59. */
  60. sendLogin(url: string, param: Object = {}, cb1: Function = (sev: SevBack) => { }) {
  61. GameController.network.sendLogin(url, param, cb1)
  62. }
  63. /**
  64. * 发送业务协议
  65. * @param param 参数
  66. * @param cb1 处理回传的sevback之后调用
  67. * @param cb2 处理回传的sevback之前调用
  68. * @param deal(1) 处理回传的sevback 1:处理通用回调 2:处理通用回调(不处理弹窗) 3:不处理通用回调
  69. * 待业务处理后,执行network.dealLeftSevback即可处理未处理的事件
  70. */
  71. send(url: string, param: Object = {}, cb1?: (sev: SevBack) => void, cb2?: (sev: SevBack) => void, deal: number = 1, needWait:boolean = false) {
  72. GameController.network.send(url, param, cb1, cb2, deal, needWait)
  73. }
  74. /**
  75. * 数据处理
  76. * @param result 后端发回的数据(在serverData处理完后触发)
  77. */
  78. doSevback(result: SevBack) { }
  79. /**
  80. * 事件处理
  81. * @param result 后端发回的数据
  82. */
  83. doEvent(result: SevBack) { }
  84. }