UNPKG

gamecloud

Version:
74 lines (60 loc) 2.1 kB
# assistant ## 概述 assistant 系列类用于将**用户对象**的指定字段扩展为JSON对象,并对其进行综合管理。 assistant 以JSON格式从数据库读取字段值,将其转化为内存对象,当数据发生变化时,自动将字段序列化成字符串并写入数据库 ## 目录结构 所有用户自定义 assistant 类集中存储于 /app/model/assistant 目录中。 ## 编写 assistant ```js const facade = require('gamecloud'); class task extends facade.Assistant { /** * 构造函数 * @param {BaseUserEntity} parent 用户角色对象 */ constructor(parent) { super(parent, 'task'); //指定 task 扩展角色表中的'task'字段为JSON对象 } /** * 获取序列化字符串,同时复位脏数据标志 * @note 基类已实现,可重载 */ ToString(){ this.dirty = false; return JSON.stringify(this.v); } /** * 利用来自持久化层的数据进行初始化 * @note 基类已实现,可重载 */ LoadData (val) { try { this.v = (!val||val == "" ) ? {} : JSON.parse(val); } catch(e){ this.v = {}; } } /** * 获取JSON对象中的属性值 * @note 基类已实现,可重载 */ GetRecord($type){ return this.v[$type] || 0; } /** * 获取JSON对象中的属性值 * @note 基类已实现,可重载 */ SetRecord($type, val){ this.v[$type] = val || 0; this.dirty = true; //该数值会被系统自动监测到从而引发自动存储 } } ``` ## 使用 assistant 在用户登录、创建角色(user)时,所有的 assistant 将被自动创建新的实例并放入 user.baseMgr 中, 例如: ```js //调用 assistant 的实例 user.baseMgr.task 的接口方法 Execute,为用户登记任务完成记录:'达成通关新的关卡' user.baseMgr.task.Execute(em_Condition_Type.gateMaxNo, 1, em_Condition_Checkmode.add); ```