local Role = class("Role", require("shared.ModelBase")) local RolePlugin = import(".RolePlugin") local RoleTask = import(".RoleTask") local RoleActivity = import(".RoleActivity") local RoleChangeStruct = import(".RoleChangeStruct") RolePlugin.bind(Role) RoleTask.bind(Role) RoleActivity.bind(Role) RoleChangeStruct.bind(Role) function Role:ctor( properties ) Role.super.ctor(self, properties) self.ignoreHeartbeat = false self.heros = {} end Role.schema = { key = {"string"}, id = {"number"}, uid = {"string", ""}, name = {"string", ""}, sid = {"number", 0}, device = {"string", ""}, banTime = {"number", 0}, banType = {"number", 0}, ltime = {"number", 0}, -- 最后登录时间 ctime = {"number", skynet.timex()}, -- 创建时间 ignoreMt = {"number", 0}, -- 忽略维护拦截 sversion = {"number", globalCsv.StructVersion or 0}, -- 重整数据版本 -- roleInfo level = {"number", 0}, diamond = {"number", 0}, reDiamond = {"number", 0}, items = {"string", ""} } Role.fields = { id = true, uid = true, sid = true, device = true, name = true, banTime = true, banType = true, ltime = true, ctime = true, sversion = true, level = true, diamond = true, reDiamond = true, items = true, } function Role:notifyUpdateProperty(field, newValue, oldValue, extraValue) local updateData = { { key = field, newValue = newValue, oldValue = oldValue or "", extraValue = extraValue, } } SendPacket(actionCodes.Role_updateProperty, MsgPack.pack(updateData)) end function Role:updateProperty(params) params = params or {} if not self.fields[params.field] then return end local oldValue = self:getProperty(params.field) local ret = {key = params.field, oldValue = oldValue} if params.value then ret.newValue = params.value self:setProperty(params.field, params.value) elseif params.delta then self:incrProperty(params.field, params.delta) ret.newValue = self:getProperty(params.field) else return end if not params.notNotify then SendPacket(actionCodes.Role_updateProperty, MsgPack.pack({ret})) end end function Role:updateProperties(params, notNotify) for field, value in pairs(params) do self:setProperty(field, value) end if not notNotify then SendPacket(actionCodes.Role_updateProperties, MsgPack.pack(params)) end end function Role:notifyUpdateProperties(params) SendPacket(actionCodes.Role_updateProperties, MsgPack.pack(params)) end function Role:data() return { id = self:getProperty("id"), name = self:getProperty("name"), level = self:getProperty("level"), diamond = self:getProperty("diamond"), reDiamond = self:getProperty("reDiamond"), items = self:getProperty("items"):toNumMap(), } end return Role