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}, -- 信赖 } 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} 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} 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") } 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