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