Hero.lua 2.54 KB
local Hero = class("Hero", require("shared.ModelBase"))

local HeroPlugin = import(".HeroPlugin")
HeroPlugin.bind(Hero)

Hero.schema = {
	key 		= { "string" },
	id 			= {"number"},
	type 		= {"number", 0},
    level       = {"number", 1},        -- 等级
    breakL      = {"number", 0},        -- 突破等级
    wakeL       = {"number", 0},        -- 觉醒等级
    skillL      = {"string", ""},       -- 技能等级 1=0 2=0 3=0
    talent      = {"string", ""},       -- 0=阶段 1=1 2=1 3=1 4=1 四个天赋当前阶段的等级  阶段默认为1  等级默认为0
	battleV     = {"number", 0},		-- 保存战斗力


}

Hero.fields = {
	id 	= true,
	type = true,
    level = true,
    breakL = true,
    wakeL = true,
    skillL = true,
    talent = true,
	battleV = true,
}

function Hero:ctor( properties )
	Hero.super.ctor(self, properties)
end

function Hero:notifyUpdateProperty(field, newValue, oldValue)
    local updateData = {
        id = self:getProperty("id"),
        datas = {
        	{
        		key = field,
        		newValue = newValue,
        		oldValue = oldValue or "",
        	},
    	}
    }

    SendPacket(actionCodes.Hero_updateProperty, MsgPack.pack(updateData))
end

function Hero:notifyUpdateProperties(params)
    local updateData = {
        id = self:getProperty("id"),
        datas = params
    }

    SendPacket(actionCodes.Hero_updateProperty, MsgPack.pack(updateData))
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}
    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"),
        skillL = self:getProperty("skillL"),
        talent  = self:getProperty("talent"),
		battleV = self:getProperty("battleV"),
	}
end

return Hero