123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- import { gameMethod } from "../../common/gameMethod";
- import { SevBack } from "../../common/Xys";
- import { NetworkEvent } from "../../data/const/EventConst";
- import GameController from "../../GameController";
- import EventMng from "../../manager/EventMng";
- export default class IDataModel {
- protected modelName: string = 'default';
- /**
- * 本地缓存的数据
- */
- private _dLocalData = {};
- constructor(modelName = 'default') {
- this.modelName = modelName;
- this.LoadStorage();
- EventMng.on(NetworkEvent.NET_MSG_REGISTER, this.onRegister.bind(this), this);
- }
- protected onRegister() {
- }
- clear() {
- }
- protected LoadStorage() {
- let localStorage = cc.sys.localStorage.getItem(`model_${this.modelName}`)
- if (gameMethod.isEmpty(localStorage)) {
- this._dLocalData = {}
- this.Save();
- } else {
- let data = JSON.parse(localStorage);
- this._dLocalData = data;
- }
- }
- /**
- * protected 只让实现类操作数据 也就是model类型操作数据 对外提供别的方法
- * @param sKey
- * @param defaultValue
- */
- protected Query(sKey: string, defaultValue: any = null) {
- if (this._dLocalData[sKey] != undefined) {
- return this._dLocalData[sKey];
- }
- return defaultValue;
- }
- /**
- * 设置成功返回 true,反之返回 false 用于是否保存数据
- * @param sKey
- * @param value
- */
- protected Set(sKey: string, value: string | number) {
- if (this._dLocalData[sKey] && this._dLocalData[sKey] == value) {
- return false;//一样就不要改了
- }
- this._dLocalData[sKey] = value;
- return true;
- }
- protected Save() {
- cc.sys.localStorage.setItem(`model_${this.modelName}`, JSON.stringify(this._dLocalData));
- }
- public getModelName() {
- return this.modelName
- }
- /**
- * 发送登录协议
- * @param msg
- */
- sendLogin(url: string, param: Object = {}, cb1: Function = (sev: SevBack) => { }) {
- GameController.network.sendLogin(url, param, cb1)
- }
- /**
- * 发送业务协议
- * @param param 参数
- * @param cb1 处理回传的sevback之后调用
- * @param cb2 处理回传的sevback之前调用
- * @param deal(1) 处理回传的sevback 1:处理通用回调 2:处理通用回调(不处理弹窗) 3:不处理通用回调
- * 待业务处理后,执行network.dealLeftSevback即可处理未处理的事件
- */
- send(url: string, param: Object = {}, cb1?: (sev: SevBack) => void, cb2?: (sev: SevBack) => void, deal: number = 1, needWait: boolean = false) {
- GameController.network.send(url, param, cb1, cb2, deal, needWait)
- }
- /**
- * 数据处理
- * @param result 后端发回的数据(在serverData处理完后触发)
- */
- doSevback(result: SevBack) { }
- /**
- * 事件处理
- * @param result 后端发回的数据
- */
- doEvent(result: SevBack) { }
- }
|