From 1fcdf5b2a6a713a13319c2525723edabdd7a0329 Mon Sep 17 00:00:00 2001 From: jiaoyangna <3046463818@qq.com> Date: Tue, 3 Nov 2020 19:37:05 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E7=9A=AE=E8=82=A4=E3=80=91=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E7=9A=AE=E8=82=A4=E5=B1=9E=E6=80=A7=E5=8A=A0=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../~Lua/Modules/Hero/HeroManager.lua | 27 +++++++++++- .../~Lua/Modules/Hero/HeroSkinManager.lua | 44 +++++++++++++++++-- .../~Lua/Modules/Net/IndicationManager.lua | 1 - .../Popup/RewardItemSingleShowPopup.lua | 6 ++- .../~Lua/Modules/RoleInfo/RoleSkinPanel.lua | 2 +- 5 files changed, 71 insertions(+), 9 deletions(-) diff --git a/Assets/ManagedResources/~Lua/Modules/Hero/HeroManager.lua b/Assets/ManagedResources/~Lua/Modules/Hero/HeroManager.lua index 4238536b8e..57f6f6cfcf 100644 --- a/Assets/ManagedResources/~Lua/Modules/Hero/HeroManager.lua +++ b/Assets/ManagedResources/~Lua/Modules/Hero/HeroManager.lua @@ -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 \ No newline at end of file diff --git a/Assets/ManagedResources/~Lua/Modules/Hero/HeroSkinManager.lua b/Assets/ManagedResources/~Lua/Modules/Hero/HeroSkinManager.lua index 2986161796..f6c45e8512 100644 --- a/Assets/ManagedResources/~Lua/Modules/Hero/HeroSkinManager.lua +++ b/Assets/ManagedResources/~Lua/Modules/Hero/HeroSkinManager.lua @@ -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 \ No newline at end of file diff --git a/Assets/ManagedResources/~Lua/Modules/Net/IndicationManager.lua b/Assets/ManagedResources/~Lua/Modules/Net/IndicationManager.lua index bc06e4961c..665fad442f 100644 --- a/Assets/ManagedResources/~Lua/Modules/Net/IndicationManager.lua +++ b/Assets/ManagedResources/~Lua/Modules/Net/IndicationManager.lua @@ -128,7 +128,6 @@ function this.HeroSkinUseIndication(buffer) else LogBlue("没有皮肤") end - HeroSkinManager.InitialSkin(msg) end function this.SiTuaTionInfoIndication(buffer) local data = buffer:DataByte() diff --git a/Assets/ManagedResources/~Lua/Modules/Popup/RewardItemSingleShowPopup.lua b/Assets/ManagedResources/~Lua/Modules/Popup/RewardItemSingleShowPopup.lua index 075e677aaf..ceb7bbc8db 100644 --- a/Assets/ManagedResources/~Lua/Modules/Popup/RewardItemSingleShowPopup.lua +++ b/Assets/ManagedResources/~Lua/Modules/Popup/RewardItemSingleShowPopup.lua @@ -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 = {} diff --git a/Assets/ManagedResources/~Lua/Modules/RoleInfo/RoleSkinPanel.lua b/Assets/ManagedResources/~Lua/Modules/RoleInfo/RoleSkinPanel.lua index 2a1942d629..a58958dd66 100644 --- a/Assets/ManagedResources/~Lua/Modules/RoleInfo/RoleSkinPanel.lua +++ b/Assets/ManagedResources/~Lua/Modules/RoleInfo/RoleSkinPanel.lua @@ -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