Hero.lua 2.71 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", 1},		-- 觉醒等级
	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
	equip       = {"string",""},        --装备 type=level
	rune       = {"string",""},        --零件 type=id
}

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: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, 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"),
		skillL = self:getProperty("skillL"),
		talent  = self:getProperty("talent"),
		battleV = self:getProperty("battleV"),
		loveExp = self:getProperty("loveExp"),
		loveL = self:getProperty("loveL"),
		skin = self:getProperty("skin"),
		equip = self:getProperty("equip"),
		rune = self:getProperty("rune"),
	}
end

function Hero:getStampId()
    local typs = {
        [1]=50,
        [2]=51,
        [3]=52,
    }
    return typs[csvdb["unitCsv"][self:getProperty("type")].camp]
end

return Hero