Hero.lua 2.47 KB
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", 0},        -- 觉醒等级
	skillL      = {"string", ""},       -- 技能等级 1=1 2=1 3=1
	talent      = {"string", ""},       -- 0=阶段 1=1 2=1 3=1 4=1 四个天赋当前阶段的等级  阶段默认为1  等级默认为0
	battleV     = {"number", 0},		-- 保存战斗力
	loveExp     = {"number", 0},        --好感度经验
	loveL     = {"number", 0},          --好感度等级
	skin     = {"number", 0},          --皮肤 0 、 1、 2、 3 
}

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, loveL = true, skin = 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"),
		loveExp = self:getProperty("loveExp"),
		loveL = self:getProperty("loveL"),
		skin = self:getProperty("skin"),
	}
end

return Hero