Hero.lua
3.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
local Hero = class("Hero", require("shared.ModelBaseMysql"))
local HeroPlugin = import(".HeroPlugin")
HeroPlugin.bind(Hero)
Hero.schema = {
id = {"number", 0, "pri"},
roleid = {"number", 0, "index"},
type = {"number", 0},
level = {"number", 1}, -- 等级
breakL = {"number", 0}, -- 突破等级
wakeL = {"number", 1}, -- 觉醒等级
talent = {"string", ""}, -- 0=阶段 1=1 2=1 3=1 4=1 四个天赋当前阶段的等级 阶段默认为1 等级默认为0
battleV = {"number", 0}, -- 保存战斗力
-- loveExp = {"number", 0}, --好感度经验
-- loveL = {"number", 0}, --好感度等级
equip = {"string",""}, --装备 type=level
rune = {"string",""}, --零件 type=id
faith = {"number", 0}, -- 信赖
spark = {"table", {}}, -- 火花属性
genius = {"string", "" }, --天赋点 4=10201 5=10201 6=10203 7=10204
}
function Hero:ctor( properties )
Hero.super.ctor(self, properties)
end
function Hero:notifyUpdateProperty(field, newValue, oldValue)
local datas = {
id = self:getProperty("id"),
datas = {
{
key = field,
newValue = newValue,
oldValue = oldValue,
}
}
}
self:notifyUpdateProperties(datas)
end
function Hero:getSimpleHeroId()
return self:getProperty("id") % (self:getProperty("roleid") * MAX_HERO_NUM)
end
function Hero:notifyUpdateProperties(params)
local updateData = {
id = self:getSimpleHeroId(),
datas = params
}
SendPacket(actionCodes.Hero_updateProperty, MsgPack.pack(updateData))
end
function Hero:updateProperties(params, notNotify)
self:setProperties(params)
local check = {level = true, breakL = true, wakeL = true, talent = true, loveL = true, equip = true, rune = true, spark = true}
local datas = {}
local updateBV = false
for k , v in pairs(params) do
if check[k] then updateBV = true end
table.insert(datas, {key = k, newValue = self:getProperty(k)})
end
if updateBV then
local orginValue = self:getProperty("battleV")
local curValue = self:saveBattleValue()
if orginValue ~= curValue then
table.insert(datas, { key = "battleV", newValue = curValue })
end
end
if not notNotify then
self:notifyUpdateProperties(datas)
end
end
function Hero:updateProperty(params)
if not params.field or (not params.delta and not params.value) then
return
end
if params.delta then
self:incrProperty(params.field, params.delta)
elseif params.value then
self:setProperty(params.field, params.value)
end
local datas = {}
table.insert(datas, {key = params.field, newValue = self:getProperty(params.field)})
local check = {level = true, breakL = true, wakeL = true, talent = true, loveL = true, equip = true, rune = true, spark = true}
if check[params.field] then
local orginValue = self:getProperty("battleV")
local curValue = self:saveBattleValue()
if orginValue ~= curValue then
table.insert(datas, { key = "battleV", newValue = curValue })
end
end
self:notifyUpdateProperties(datas)
end
function Hero:data()
return {
id = self:getProperty("id"),
type = self:getProperty("type"),
level = self:getProperty("level"),
breakL = self:getProperty("breakL"),
wakeL = self:getProperty("wakeL"),
talent = self:getProperty("talent"),
battleV = self:getProperty("battleV"),
-- loveExp = self:getProperty("loveExp"),
-- loveL = self:getProperty("loveL"),
equip = self:getProperty("equip"),
rune = self:getProperty("rune"),
faith = self:getProperty("faith"),
spark = self:getProperty("spark"),
genius = self:getProperty("genius"),
}
end
function Hero:getCamp()
return csvdb["unitCsv"][self:getProperty("type")].camp
end
function Hero:getRare()
return csvdb["unitCsv"][self:getProperty("type")].rare
end
function Hero:getPosition()
return csvdb["unitCsv"][self:getProperty("type")].position
end
return Hero