Hero.lua
3.46 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
local Hero = class("Hero", require("shared.ModelBase"))
local HeroPlugin = import(".HeroPlugin")
HeroPlugin.bind(Hero)
Hero.schema = {
id = {"number"},
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", {}}, -- 火花属性
}
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:notifyUpdateProperties(params)
local updateData = {
id = self:getProperty("id"),
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"),
}
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