【皮肤】添加皮肤属性加成

dev_chengFeng
jiaoyangna 2020-11-03 19:37:05 +08:00
parent e92e63444b
commit 1fcdf5b2a6
5 changed files with 71 additions and 9 deletions

View File

@ -1547,6 +1547,7 @@ function this.GetProAndValByFormula(proTable, specialProVal, curProId, curProVal
end
end
end
--团队加成
function this.GetAllHeroTeamAddProVal(teamHeroInfos,curteamHeroDid)
local teamProVal = {}
@ -1558,9 +1559,11 @@ function this.GetAllHeroTeamAddProVal(teamHeroInfos,curteamHeroDid)
local falismanSingleHeroProVal, falismanLvProVal, falismanAllHeroProVal, falismanSpecialProVal =
CalculateHeroUpTalismanProAddVal(teamHeroInfos[i].heroId,nil,nil, curteamHeroDid and HeroManager.GetSingleHeroData(curteamHeroDid).heroConfig.PropertyName or nil)
local soulPrinSingleHeroProVal,soulPrinLvProVal,soulPrinAllHeroProVal,soulPrinSpecialProVal = CalculateSoulPrintAddVal(teamHeroInfos[i].heroId)
local heroSkinSingleProVal, heroSkinAllHeroProVal = HeroSkinManager.CaculateSkinProVal(teamHeroInfos[i].heroId)
this.DoubleTableCompound(teamProVal, heroSkillAllHeroProVal)
this.DoubleTableCompound(teamProVal, falismanAllHeroProVal)
this.DoubleTableCompound(teamProVal,soulPrinAllHeroProVal)
this.DoubleTableCompound(teamProVal, soulPrinAllHeroProVal)
this.DoubleTableCompound(teamProVal, heroSkinAllHeroProVal)
end
end
--光环加成
@ -1568,6 +1571,7 @@ function this.GetAllHeroTeamAddProVal(teamHeroInfos,curteamHeroDid)
this.DoubleTableCompound(teamProVal, aureoleProAdd)
return teamProVal
end
--计算英雄身上所有属性加成(包括装备就、异妖的加成)
--_type==1 计算当前英雄的所有属性 _type==2 根据_heroDid之后_breakId传过来的值进行计算 _isAllHeroProVal==true 团体加成综合 用字段_allHeroProVal
function this.CalculateHeroAllProValList(_type, _heroDid, isWar, _breakId, _upStarId, _isAllHeroProVal, _allHeroProVal)
@ -1648,6 +1652,8 @@ function this.CalculateHeroAllProValList(_type, _heroDid, isWar, _breakId, _upSt
-- end
-- end
-- end
--法宝的属性加成 falismanProAdd
local falismanSingleHeroProVal, falismanLvProVal, falismanAllHeroProVal, falismanSpecialProVal = {}, {}, {}, {}
if _type == 1 then
@ -1719,7 +1725,10 @@ function this.CalculateHeroAllProValList(_type, _heroDid, isWar, _breakId, _upSt
-- end
-- end
--end
local heroSkinSingleProVal, heroSkinAllHeroProVal = HeroSkinManager.CaculateSkinProVal(curHeroData.dynamicId)
this.DoubleTableCompound(allAddProVal, heroSkinSingleProVal)
this.DoubleTableCompound(allAddProVal, heroSkinAllHeroProVal)
--单体所有属性合并
this.DoubleTableCompound(allAddProVal, allPokemonPeiJianAddPro)
this.DoubleTableCompound(allAddProVal, guildSkillAllProAdd)
@ -3246,4 +3255,18 @@ function this.SortHeroDatas(_heroDatas)
end
end)
end
--脱下皮肤
function this.ChangeDownSkinId(heroSId,skinId)
for k,v in pairs(heroDatas) do
if v.id == heroSId and v.skinId == skinId then
v.vskinId = 0
v.skinConfig = heroConfig[v.id]
v.live = GetResourcePath(v.skinConfig.Live)
v.painting = GetResourcePath(v.skinConfig.Painting)
v.icon = GetResourcePath(v.skinConfig.Icon)
v.scale = v.skinConfig.Scale
v.position = v.skinConfig.Position
end
end
end
return this

View File

@ -1,8 +1,9 @@
HeroSkinManager = {}
local this = HeroSkinManager
local skinConfig = ConfigManager.GetConfig(ConfigName.HeroSkin)
this.skinDatas = {}
function this.Initialize()
this.skinDatas = {}
end
function this.InitialSkin(msg,index)
if not index or index == 0 then
@ -10,12 +11,12 @@ function this.InitialSkin(msg,index)
for i = 1, #msg.skinInfo do
this.skinDatas[msg.skinInfo[i].skinId] = {}
this.skinDatas[msg.skinInfo[i].skinId].id = msg.skinInfo[i].skinId
this.skinDatas[msg.skinInfo[i].skinId].overTime = msg.skinInfo[i].overTime
this.skinDatas[msg.skinInfo[i].skinId].overTime = msg.skinInfo[i].overTime - PlayerManager.serverTime
end
else
this.skinDatas[msg.skinInfo.skinId] = {}
this.skinDatas[msg.skinInfo.skinId].id = msg.skinInfo.skinId
this.skinDatas[msg.skinInfo.skinId].overTime = msg.skinInfo.overTime
this.skinDatas[msg.skinInfo.skinId].overTime = msg.skinInfo.overTime - PlayerManager.serverTime
end
this.UpdateSkinDatasOverTime()
end
@ -31,6 +32,8 @@ function this.UpdateSkinDatasOverTime()
v.overTime = v.overTime - 1
if v.overTime == 0 then
this.RemoveSkin(v.id)
local heroId = ConfigManager.GetConfigData(ConfigName.HeroSkin,v.id).HeroId
HeroManager.ChangeDownSkinId(heroId,v.id)
end
end
end
@ -43,10 +46,45 @@ function this.RemoveSkin(id)
end
function this.IsExist(id)
LogGreen("id:"..id.." IsExist:"..tostring(this.skinDatas[id]))
if this.skinDatas[id] then
return true
else
return false
end
end
function this.CaculateSkinProVal(_heroId)
local heroSkinSingleProVal = {}
local heroSkinAllHeroProVal = {}
local heroData = HeroManager.GetSingleHeroData(_heroId)
if heroData.skinId ~= 0 then
local config = ConfigManager.GetConfigDataByKey(ConfigName.HeroSkin,"Type",heroData.skinId)
if config.MonomerProperty and #config.MonomerProperty > 0 then
for _,v in ipairs(config.MonomerProperty) do
if not heroSkinSingleProVal[v[1]] then
heroSkinSingleProVal[v[1]] = 0
end
if not heroSkinAllHeroProVal[v[1]] then
heroSkinAllHeroProVal[v[1]] = 0
end
heroSkinAllHeroProVal[v[1]] = heroSkinAllHeroProVal[v[1]] + v[2]
end
end
end
for _,v in pairs(this.skinDatas) do
if heroData.skinId ~= v.id then
local config = ConfigManager.GetConfigDataByKey(ConfigName.HeroSkin,"Type",v.id)
if config.UnlockProperty and #config.UnlockProperty > 0 then
for _,n in ipairs(config.UnlockProperty) do
if not heroSkinAllHeroProVal[n[1]] then
heroSkinAllHeroProVal[n[1]] = 0
end
heroSkinAllHeroProVal[n[1]] = heroSkinAllHeroProVal[n[1]] + n[2]
end
end
end
end
return heroSkinSingleProVal, heroSkinAllHeroProVal
end
return this

View File

@ -128,7 +128,6 @@ function this.HeroSkinUseIndication(buffer)
else
LogBlue("没有皮肤")
end
HeroSkinManager.InitialSkin(msg)
end
function this.SiTuaTionInfoIndication(buffer)
local data = buffer:DataByte()

View File

@ -75,7 +75,8 @@ function RewardItemSingleShowPopup:BindEvent()
elseif itemConfigData.ItemType == ItemType.ChangeName then
UIManager.OpenPanel(UIName.CreateNamePopup)
elseif itemConfigData.ItemType == ItemType.Skin then
MsgPanel.ShowTwo(string.format("分解后可获得%s%s,是否继续分解",200,itemConfig[16].Name),function()
local group = ConfigManager.GetConfigData(ConfigName.RewardGroup,itemConfig[itemSid].ResolveReward).ShowItem
MsgPanel.ShowTwo(string.format("分解后可获得%s个%s,是否继续分解",group[2],itemConfig[group[1]].Name),function()
end, function()
local curResolveAllItemList = {}
table.insert(curResolveAllItemList,{itemId = itemSid,itemNum = 1})
@ -93,7 +94,8 @@ function RewardItemSingleShowPopup:BindEvent()
end)
Util.AddClick(this.btnJump, function()
if itemConfigData.ItemType == ItemType.Skin then
if HeroSkinManager.IsExist(itemSid) then
local skinId = ConfigManager.GetConfigData(ConfigName.HeroSkin,itemSid).Type
if HeroSkinManager.IsExist(skinId) then
PopupTipPanel.ShowTip("已解锁该皮肤,请在皮肤有效期之后再解锁")
else
local curResolveAllItemList = {}

View File

@ -106,7 +106,7 @@ function RoleSkinPanel:SetSingleData(go,data)
parent.curLiveObj = HeroManager.LoadHerolive(curHeroData,parent.curObj)
PopupTipPanel.ShowTip("已更换皮肤!")
isUnLoadLive = false
this:OnOpen(curHeroData,skins,parent)
this:OnShow(0,parent,curHeroData)
end)
end)
else