IDataModel.ts 2.8 KB

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