Blame view

src/models/Role.lua 3.61 KB
314bc5df   zhengshouren   提交服务器初始代码
1
2
  local Role = class("Role", require("shared.ModelBase"))
  
be83d162   zhouahaihai   登陆成功。 增加数据结构修正功能
3
4
5
6
7
8
9
10
11
  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)
  
314bc5df   zhengshouren   提交服务器初始代码
12
13
  function Role:ctor( properties )
  	Role.super.ctor(self, properties)
314bc5df   zhengshouren   提交服务器初始代码
14
  	self.ignoreHeartbeat = false
0a07bdd9   zhouahaihai   角色升级 。gm
15
  	self.heros = {}
314bc5df   zhengshouren   提交服务器初始代码
16
17
18
19
20
21
  end
  
  Role.schema = {
  	key 				= {"string"},
  	id 					= {"number"},
  	uid 				= {"string", ""},
314bc5df   zhengshouren   提交服务器初始代码
22
  	name 				= {"string", ""},
be83d162   zhouahaihai   登陆成功。 增加数据结构修正功能
23
24
25
26
  	sid 				= {"number", 0},
  	device 				= {"string", ""},
  	banTime 			= {"number", 0},
  	banType 			= {"number", 0},
0a07bdd9   zhouahaihai   角色升级 。gm
27
28
29
30
  	ltime 				= {"number", 0}, -- 最后登录时间
  	ctime 				= {"number", skynet.timex()},  -- 创建时间
  	ignoreMt			= {"number", 0},  -- 忽略维护拦截
  	sversion			= {"number", globalCsv.StructVersion or 0}, -- 重整数据版本
be83d162   zhouahaihai   登陆成功。 增加数据结构修正功能
31
32
33
34
35
  
  	-- roleInfo
  	level 				= {"number", 0},
  	diamond				= {"number", 0},
  	reDiamond			= {"number", 0},
6947e382   zhouahaihai   好感度, 皮肤
36
37
  	items				= {"string", ""},
  	loveStatus			= {"string", ""}, --统计角色的最高 好感度等级 类型相关 -- type=loveL type=loveL
314bc5df   zhengshouren   提交服务器初始代码
38
39
40
41
42
43
  }
  
  Role.fields = {
  	id = true,
  	uid = true,
  	sid = true,
be83d162   zhouahaihai   登陆成功。 增加数据结构修正功能
44
  	device = true,
314bc5df   zhengshouren   提交服务器初始代码
45
  	name = true,
be83d162   zhouahaihai   登陆成功。 增加数据结构修正功能
46
47
  	banTime = true,
  	banType = true,
0a07bdd9   zhouahaihai   角色升级 。gm
48
49
50
  	ltime = true,
  	ctime = true,
  	sversion = true,
be83d162   zhouahaihai   登陆成功。 增加数据结构修正功能
51
52
53
54
  	level = true,
  	diamond = true,
  	reDiamond = true,
  	items = true,
6947e382   zhouahaihai   好感度, 皮肤
55
  	loveStatus = true,
314bc5df   zhengshouren   提交服务器初始代码
56
57
  }
  
be83d162   zhouahaihai   登陆成功。 增加数据结构修正功能
58
  
0a07bdd9   zhouahaihai   角色升级 。gm
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
  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
  
6947e382   zhouahaihai   好感度, 皮肤
104
105
106
107
108
109
110
111
  -- 某些字段更新改变量 改变量的定义由字段自身决定 {{type = ""}, }
  function Role:changeUpdates(params, notNotify)
  	local changeUpdateFunc = {
  		["loveStatus"] = function(info)
  			self:setProperty("loveStatus", self:getProperty("loveStatus"):setv(info["field"], info["value"]))
  			return {type = "loveStatus", field = info["field"], value = info["value"]}
  		end,
  	}
0a07bdd9   zhouahaihai   角色升级 。gm
112
  
6947e382   zhouahaihai   好感度, 皮肤
113
114
115
116
117
118
119
120
121
122
123
124
  	local updates = {}
  	for _, one in ipairs(params) do
  		if changeUpdateFunc[one["type"]] then
  			table.insert(updates, changeUpdateFunc[one["type"]](one))
  		else
  			print("need handler for changeUpdate type : " .. params["type"])
  		end
  	end
  	if not notNotify and next(updates) then
  		SendPacket(actionCodes.Role_changeUpdate, MsgPack.pack(updates))
  	end
  end
be83d162   zhouahaihai   登陆成功。 增加数据结构修正功能
125
  
314bc5df   zhengshouren   提交服务器初始代码
126
127
128
  function Role:data()
  	return {
  		id = self:getProperty("id"),
be83d162   zhouahaihai   登陆成功。 增加数据结构修正功能
129
130
131
132
133
  		name = self:getProperty("name"),
  		level = self:getProperty("level"),
  		diamond = self:getProperty("diamond"),
  		reDiamond = self:getProperty("reDiamond"),
  		items = self:getProperty("items"):toNumMap(),
6947e382   zhouahaihai   好感度, 皮肤
134
  		loveStatus = self:getProperty("loveStatus"):toNumMap(),
314bc5df   zhengshouren   提交服务器初始代码
135
136
137
138
  	}
  end
  
  return Role