miduo_client/Assets/ManagedResources/~Lua/Modules/RoleInfo/RoleEquipPanel.lua

1067 lines
42 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

require("Base/BasePanel")
local spcialConfig = ConfigManager.GetConfig(ConfigName.SpecialConfig)
local equipConfig = ConfigManager.GetConfig(ConfigName.EquipConfig)
RoleEquipPanel = Inherit(BasePanel)
--local SortTypeConst = {
-- Natural = 1,--品阶 ur+ --> r 6 --> 1
-- Lv = 2
--}
local PosIdConst = {
All = 0,
--全部
WuQi = 1,
--武器
ZhanFu = 2,
--战服
TouShi = 3,
--头饰
ZhanXue = 4,
--战靴
Hun = 5,
--魂宝
Ling = 6
--灵宝
}
local this = RoleEquipPanel
--当前英雄穿的装备
local curHeroEquipDatas = {}
--当前英雄
local curHeroData
local heroListData
local curSelectEquipData
local index
local indexBtnNum = 0
local typeTab = {Language[10427], Language[10428], Language[10429], Language[10430], Language[10505], Language[10506]}
local tabs = {}
local openThisPanel
local effectList = {}
local orginLayer1
local orginLayer
local isUpZhen = false
local teamHero = {}
local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
local jewerConfigs = ConfigManager.GetConfig(ConfigName.JewelConfig)
local currPageIndex = 0
local curEquipTreasureDatas = {}
local isCanUpEquipTreasure = false
--初始化组件用于子类重写RoleEquipChangePopup
function RoleEquipPanel:InitComponent()
orginLayer = 10
orginLayer1 = {0, 0, 0, 0, 0, 0}
this.bg2 = Util.GetGameObject(self.transform, "bg2")
screenAdapte(this.bg2)
this.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform, {showType = UpViewOpenType.ShowLeft})
this.btnBack = Util.GetGameObject(self.transform, "btnBack/btnBack")
--英雄
this.heroBg = Util.GetGameObject(self.transform, "bg/heroInfo/bg"):GetComponent("Image")
this.heroLv = Util.GetGameObject(self.transform, "bg/heroInfo/lv/Text"):GetComponent("Text")
this.heroIcon = Util.GetGameObject(self.transform, "bg/heroInfo/icon"):GetComponent("Image")
Util.GetGameObject(self.transform, "bg/heroInfo/pos"):SetActive(false)
--this.heroPosIcon = Util.GetGameObject(self.transform, "bg/heroInfo/pos/icon"):GetComponent("Image")
this.heroProIcon = Util.GetGameObject(self.transform, "bg/heroInfo/pro/Image"):GetComponent("Image")
--this.heroStage = Util.GetGameObject(self.transform, "bg/heroInfo/heroStage"):GetComponent("Image")
Util.GetGameObject(self.transform, "bg/heroInfo/heroStage"):SetActive(false)
this.heroStarGrid = Util.GetGameObject(self.transform, "bg/heroInfo/star")
this.heroStarPre = Util.GetGameObject(self.transform, "bg/heroInfo/starPre")
--英雄身上的装备
this.equipGrid = Util.GetGameObject(self.transform, "bg/equipInfo")
local scale = (Screen.width / Screen.height / 1080 * 1920 + 1) / 2
if scale < 1 then
for i = 1, this.equipGrid.transform.childCount do
Util.SetParticleScale(Util.GetGameObject(this.equipGrid.transform:GetChild(i - 1), "effect"), scale)
end
end
--装备list
this.effect = Util.GetGameObject(self.transform, "bg/effect")
for i = 0, 6 do
tabs[i] = Util.GetGameObject(self.transform, "Tabs/Btn" .. i)
effectList[i] = Util.GetGameObject(self.transform, "bg/equipInfo/equip" .. i .. "/effect")
end
this.selectBtn = Util.GetGameObject(self.gameObject, "selectBtn")
this.btnPrant = Util.GetGameObject(self.gameObject, "Tabs")
this.equipPre = Util.GetGameObject(self.gameObject, "equipPre")
this.grid = Util.GetGameObject(self.gameObject, "scroll/grid")
this.selsectSkillImage = Util.GetGameObject(self.gameObject, "selsectSkillImage")
this.ShaiXuanBtn = Util.GetGameObject(self.gameObject, "ShaiXuanBtn")
this.ShaiXuanBtn:SetActive(false)
this.ShaiXuanBtnLv = Util.GetGameObject(self.gameObject, "ShaiXuanBtn/Lv")
this.ShaiXuanBtnQu = Util.GetGameObject(self.gameObject, "ShaiXuanBtn/Qu")
this.leftBtn = Util.GetGameObject(self.transform, "leftBtn/GameObject")
this.rightBtn = Util.GetGameObject(self.transform, "rightBtn/GameObject")
this.allEquipUp = Util.GetGameObject(self.transform, "allEquipUp")
this.allEquipDown = Util.GetGameObject(self.transform, "allEquipDown")
this.allEquipUpRedPoint = Util.GetGameObject(self.transform, "allEquipUp/redPoint")
this.ScrollBar = Util.GetGameObject(self.gameObject, "Scrollbar"):GetComponent("Scrollbar")
local v2 = Util.GetGameObject(self.gameObject, "scroll"):GetComponent("RectTransform").rect
this.ScrollView =
SubUIManager.Open(
SubUIConfig.ScrollCycleView,
Util.GetGameObject(self.transform, "scroll").transform,
this.equipPre,
this.ScrollBar,
Vector2.New(-v2.x * 2, -v2.y * 2),
1,
5,
Vector2.New(50, 15)
)
this.ScrollView.moveTween.MomentumAmount = 1
this.ScrollView.moveTween.Strength = 1
this.force = Util.GetGameObject(self.transform, "powerBtn/value"):GetComponent("Text")
this.itemNumText = Util.GetGameObject(self.transform, "itemNumText"):GetComponent("Text")
this.upLvEffect = Util.GetGameObject(self.transform, "powerBtn/effect")
this.equipTreasureBtn = Util.GetGameObject(self.transform, "equipTreasureBtn")
this.treasure1 = Util.GetGameObject(self.transform, "bg/equipInfo/equip5")
this.treasure2 = Util.GetGameObject(self.transform, "bg/equipInfo/equip6")
this.treasurePage1 = Util.GetGameObject(self.transform, "Tabs/Btn5")
this.treasurePage2 = Util.GetGameObject(self.transform, "Tabs/Btn6")
this.emptyObj = Util.GetGameObject(self.transform, "emptyObj")
this.emptyObj.gameObject:SetActive(false)
end
--绑定事件(用于子类重写)
function RoleEquipPanel:BindEvent()
Util.AddClick(
this.btnBack,
function()
PlaySoundWithoutClick(SoundConfig.Sound_UICancel)
if openThisPanel.RefreshHeroDatas then
openThisPanel:RefreshHeroDatas(curHeroData, HeroManager.GetAllHeroDatas())
end
self:ClosePanel()
end
)
Util.AddClick(
this.leftBtn,
function()
this:LeftBtnOnClick()
end
)
Util.AddClick(
this.rightBtn,
function()
this:RightBtnOnClick()
end
)
Util.AddOnceClick(
this.allEquipUp,
function()
this:AllEquipUpBtnOnClick()
end
)
Util.AddOnceClick(
this.allEquipDown,
function()
this:AllEquipDownBtnOnClick()
end
)
for i = 0, 6 do
Util.AddClick(
tabs[i],
function()
if i == indexBtnNum then
indexBtnNum = PosIdConst.All
this:OnClickAllBtn()
else
indexBtnNum = i
this:OnClickTabBtn(indexBtnNum)
end
end
)
end
Util.AddClick(
this.equipTreasureBtn,
function()
if LengthOfTable(curEquipTreasureDatas) < 2 then
PopupTipPanel.ShowTip(Language[11825])
return
end
UIManager.OpenPanel(UIName.EquipTreasureResonancePanel, curHeroData)
end
)
end
--添加事件监听(用于子类重写)
function RoleEquipPanel:AddListener()
Game.GlobalEvent:AddEvent(GameEvent.Treasure.TreasureLvUp, this.CurrEquipDataChange)
end
--移除事件监听(用于子类重写)
function RoleEquipPanel:RemoveListener()
Game.GlobalEvent:RemoveEvent(GameEvent.Treasure.TreasureLvUp, this.CurrEquipDataChange)
end
function this.CurrEquipDataChange()
this.ShowHeroEquip()
if indexBtnNum == PosIdConst.All then
this:OnClickAllBtn()
else
this:OnClickTabBtn(indexBtnNum)
end
end
--界面打开时调用(用于子类重写)
function RoleEquipPanel:OnOpen(...)
local data = {...}
if data[1] then
curHeroData = data[1]
HeroManager.roleEquipPanelCurHeroData = data[1]
else
curHeroData = HeroManager.roleEquipPanelCurHeroData
end
if data[2] then
heroListData = data[2]
HeroManager.roleEquipPanelHeroListData = data[2]
else
heroListData = HeroManager.GetAllHeroDatas()
end
openThisPanel = data[3]
isUpZhen = data[4]
end
function RoleEquipPanel:OnShow()
for i = 1, #heroListData do
if curHeroData == heroListData[i] then
index = i
end
end
for i = 1, 6 do
if (effectList[i] ~= nil) then
effectList[i]:SetActive(false)
end
end
indexBtnNum = PosIdConst.All
teamHero = FormationManager.GetAllFormationHeroId()
this.ShowHeroEquip(true)
this:OnClickAllBtn()
this.UpView:OnOpen({showType = UpViewOpenType.ShowLeft, panelType = PanelType.Main})
end
function this:OnSortingOrderChange()
Util.AddParticleSortLayer(this.effect, this.sortingOrder - orginLayer)
orginLayer = this.sortingOrder
end
--右切换按钮点击
function this:RightBtnOnClick()
index = (index + 1 <= #heroListData and index + 1 or 1)
curHeroData = heroListData[index]
this.ShowHeroEquip()
if indexBtnNum == PosIdConst.All then
this:OnClickAllBtn()
else
this:OnClickTabBtn(indexBtnNum)
end
end
--左切换按钮点击
function this:LeftBtnOnClick()
index = (index - 1 > 0 and index - 1 or #heroListData)
curHeroData = heroListData[index]
this.ShowHeroEquip()
if indexBtnNum == PosIdConst.All then
this:OnClickAllBtn()
else
this:OnClickTabBtn(indexBtnNum)
end
end
--一键装备
function this:AllEquipUpBtnOnClick()
local allEquipIds = {}
local allTreasureIds = {}
--计算英雄身上的所有装备位的装备
local curHeroEquipDatas = {}
for k, v in ipairs(curHeroData.equipIdList) do
local equipData = EquipManager.GetSingleHeroSingleEquipData(v, curHeroData.dynamicId)
if equipData ~= nil then
curHeroEquipDatas[equipData.equipConfig.Position] = equipData
else
LogBlue("没有得到equipData")
end
end
--宝物数据
for k, v in ipairs(curHeroData.jewels) do
local equipData = EquipTreasureManager.GetSingleTreasureByIdDyn(v)
if equipData ~= nil then
curHeroEquipDatas[equipData.equipType + 4] = equipData
end
end
local equipEffectPos = {}
local treasureEffectPos = {}
--如果身上的装备 带锁 则不替换
for i = 1, 6 do
local curPosEquip = {}
local index = i
if index == 5 or index == 6 and isCanUpEquipTreasure then
curPosEquip =
EquipTreasureManager.GetTreasureDataByPos(
index,
curHeroData.dynamicId,
curHeroData.heroConfig.PropertyName
)
else
--获取到所有未装备的装备
curPosEquip = BagManager.GetEquipDataByEquipPosition(curHeroData.heroConfig.Profession, index)
end
--计算每个位置可装备的装备战力 取战力最大的装备
if curPosEquip and #curPosEquip > 0 then
local equiData = {}
local indexMaxPower = 0
if curHeroEquipDatas[index] then
equiData = curHeroEquipDatas[index]
if curHeroEquipDatas[index].idDyn then
indexMaxPower = EquipTreasureManager.CalculateWarForce(curHeroEquipDatas[index].idDyn)
else
indexMaxPower = EquipManager.CalculateWarForce(curHeroEquipDatas[index].id)
end
end
for i = 1, #curPosEquip do
local addPower = 0
local curEquip = curPosEquip[i]
if curEquip then
if curEquip.idDyn then
addPower = EquipTreasureManager.CalculateWarForce(curEquip.idDyn)
else
addPower = EquipManager.CalculateWarForce(curEquip.id)
end
end
if addPower >= indexMaxPower then
indexMaxPower = addPower
equiData = curEquip
end
end
if equiData.idDyn and isCanUpEquipTreasure and ((curHeroEquipDatas[index] and equiData.idDyn ~= curHeroEquipDatas[index].idDyn) or (not curHeroEquipDatas[index])) then
table.insert(allTreasureIds, equiData.idDyn)
else
if not equiData.idDyn and (not curHeroEquipDatas[index] or tonumber(equiData.id) ~= tonumber(curHeroEquipDatas[index].id))then
table.insert(allEquipIds, tostring(equiData.id))
end
end
--特效
if curHeroEquipDatas[equiData.position] then
if equiData.idDyn then
if equiData.idDyn ~= curHeroEquipDatas[equiData.position].idDyn then
table.insert(treasureEffectPos, i)
end
else
if equiData.id ~= curHeroEquipDatas[equiData.position].id then
table.insert(equipEffectPos, i)
end
end
else
--table.insert(showEffectPos,i)
end
end
end
if (allEquipIds and #allEquipIds > 0) or (isCanUpEquipTreasure and allTreasureIds and #allTreasureIds > 0) then
--isCanUpEquipTreasure
if allEquipIds and #allEquipIds > 0 then
for i = 1, #allEquipIds do
LogGreen(curHeroData.dynamicId .. " " .. allEquipIds[i])
end
--穿装备协议
NetManager.EquipWearRequest(
curHeroData.dynamicId,
allEquipIds,
1,
function()
this.UpdateEquipPosHeroData(1, 4, allEquipIds)
--特效播放
if equipEffectPos then
for i = 1, #equipEffectPos do
effectList[equipEffectPos[i]]:SetActive(false)
effectList[equipEffectPos[i]]:SetActive(true)
end
end
end
)
end
--穿戴宝物
if allTreasureIds and #allTreasureIds > 0 then
--for i = 1, #allEquipIds do
-- Log(curHeroData.dynamicId.. " "..curHeroData.id .." "..curHeroData.lv.." 一键宝物 "..i.." "..allEquipIds[i])
--end
--穿装备协议
NetManager.EquipWearRequest(
curHeroData.dynamicId,
allTreasureIds,
2,
function()
this.UpdateEquipPosHeroData(2, 4, allTreasureIds)
--特效播放
for i, v in pairs(treasureEffectPos) do
effectList[v]:SetActive(false)
effectList[v]:SetActive(true)
end
end
)
end
else
if not allEquipIds or #allEquipIds < 1 then
PopupTipPanel.ShowTip(Language[11826])
else
PopupTipPanel.ShowTip(Language[11827])
end
end
PlaySoundWithoutClick(SoundConfig.Sound_Wear)
this.ShowHeroEquip()
end
--一键卸下
function this:AllEquipDownBtnOnClick()
if
(curHeroData.equipIdList and #curHeroData.equipIdList > 0) or
(curHeroData.jewels and #curHeroData.jewels > 0 and isCanUpEquipTreasure)
then
if curHeroData.equipIdList and #curHeroData.equipIdList > 0 then
NetManager.EquipUnLoadOptRequest(
curHeroData.dynamicId,
curHeroData.equipIdList,
1,
function()
this.UpdateEquipPosHeroData(1, 5, curHeroData.equipIdList)
end
)
end
--寶物
if curHeroData.jewels and #curHeroData.jewels > 0 then
-- 一键卸下音效
NetManager.EquipUnLoadOptRequest(
curHeroData.dynamicId,
curHeroData.jewels,
2,
function()
this.UpdateEquipPosHeroData(2, 5, curHeroData.jewels)
end
)
end
else
PopupTipPanel.ShowTip(Language[11828])
end
PlaySoundWithoutClick(SoundConfig.Sound_TakeOff)
this.ShowHeroEquip()
-- this:OnClickTabBtn(indexBtnNum)
end
function this.ShowHeroEquip()
--装备
if curHeroData and spcialConfig then
local config = spcialConfig[40]
if config then
local limits = string.split(config.Value, "|")
if limits then
local heroConfig = ConfigManager.GetConfigData(ConfigName.HeroConfig, curHeroData.id)
local lvs = string.split(limits[1], "#")
local stars = string.split(limits[2], "#")
if
PlayerManager.level >= tonumber(lvs[2]) and heroConfig ~= nil and
heroConfig.MaxRank >= tonumber(stars[2])
then
isCanUpEquipTreasure = true
this.equipTreasureBtn.gameObject:SetActive(true)
this.treasure1.gameObject:SetActive(true)
this.treasure2.gameObject:SetActive(true)
this.treasurePage1.gameObject:SetActive(true)
this.treasurePage2.gameObject:SetActive(true)
else
isCanUpEquipTreasure = false
this.equipTreasureBtn.gameObject:SetActive(false)
this.treasure1.gameObject:SetActive(false)
this.treasure2.gameObject:SetActive(false)
this.treasurePage1.gameObject:SetActive(false)
this.treasurePage2.gameObject:SetActive(false)
end
end
end
end
this.heroBg.sprite = Util.LoadSprite(GetHeroCardQuantityImage[curHeroData.heroConfig.Quality])
this.heroLv.text = curHeroData.lv
this.heroIcon.sprite = Util.LoadSprite(curHeroData.painting)
--this.heroPosIcon.sprite = Util.LoadSprite(curHeroData.professionIcon)
this.heroProIcon.sprite = Util.LoadSprite(GetProStrImageByProNum(curHeroData.heroConfig.PropertyName))
--this.heroStage.sprite = Util.LoadSprite(HeroStageSprite[curHeroData.heroConfig.HeroStage])
SetHeroStars(this.heroStarGrid, curHeroData.star)
--装备的数据
curHeroEquipDatas = {}
for i = 1, #curHeroData.equipIdList do
local equipData = EquipManager.GetSingleHeroSingleEquipData(curHeroData.equipIdList[i], curHeroData.dynamicId)
if equipData ~= nil then
curHeroEquipDatas[equipData.equipConfig.Position] = equipData
end
end
--宝器的数据
curEquipTreasureDatas = {}
--LogError("#curHeroData.jewels "..#curHeroData.jewels)
for i = 1, #curHeroData.jewels do
local treasureData = EquipTreasureManager.GetSingleEquipTreasreData(curHeroData.jewels[i])
if treasureData ~= nil then
local id = treasureData.id
local pos = jewerConfigs[id].Location + 4
curEquipTreasureDatas[pos] = treasureData
end
end
--this.equipTreasureBtn:SetActive(LengthOfTable(curEquipTreasureDatas) >= 2)
for i = 1, this.equipGrid.transform.childCount do
local go = this.equipGrid.transform:GetChild(i - 1).gameObject
local effect = Util.GetGameObject(go.transform, "effect")
screenAdapte(effect)
Util.AddParticleSortLayer(effect, this.sortingOrder - orginLayer1[i])
orginLayer1[i] = this.sortingOrder
effectList[i] = effect
local lvObj = Util.GetGameObject(go.transform, "lv")
local refineObj = Util.GetGameObject(go.transform, "refine")
if curHeroEquipDatas[i] then
Util.GetGameObject(go.transform, "frame"):SetActive(true)
Util.GetGameObject(go.transform, "mask"):SetActive(false)
--Util.GetGameObject(go.transform,"proIcon"):SetActive(false)
Util.GetGameObject(go.transform, "frame/icon"):GetComponent("Image").sprite =
Util.LoadSprite(curHeroEquipDatas[i].icon)
Util.GetGameObject(go.transform, "frame"):GetComponent("Image").sprite =
Util.LoadSprite(curHeroEquipDatas[i].frame)
--Util.GetGameObject(go.transform,"proIcon"):GetComponent("Image").sprite=Util.LoadSprite(curHeroEquipDatas[i].frame)
if lvObj then
lvObj:SetActive(false)
end
if refineObj then
refineObj:SetActive(false)
end
EquipManager.SetEquipStarShow(
Util.GetGameObject(go.transform, "frame/star"),
curHeroEquipDatas[i].itemConfig.Id
)
elseif curEquipTreasureDatas[i] then
Util.GetGameObject(go.transform, "frame"):SetActive(true)
Util.GetGameObject(go.transform, "mask"):SetActive(false)
--Util.GetGameObject(go.transform,"proIcon"):SetActive(true)
Util.GetGameObject(go.transform, "frame/icon"):GetComponent("Image").sprite =
Util.LoadSprite(curEquipTreasureDatas[i].icon)
Util.GetGameObject(go.transform, "frame"):GetComponent("Image").sprite =
Util.LoadSprite(curEquipTreasureDatas[i].frame)
--Util.GetGameObject(go.transform,"proIcon"):GetComponent("Image").sprite=Util.LoadSprite(GetProStrImageByProNum(curEquipTreasureDatas[i].itemConfig.PropertyName))
Util.GetGameObject(go.transform, "frame/star"):SetActive(false)
Util.GetGameObject(go.transform, "num").gameObject:SetActive(false)
if curEquipTreasureDatas[i].lv > 0 and lvObj then
lvObj:GetComponent("Text").text = curEquipTreasureDatas[i].lv
lvObj:SetActive(true)
else
lvObj:SetActive(false)
end
if curEquipTreasureDatas[i].refineLv > 0 then
refineObj:GetComponent("Text").text = "+" .. curEquipTreasureDatas[i].refineLv
refineObj:SetActive(true)
else
refineObj:SetActive(false)
end
else
Util.GetGameObject(go.transform, "frame"):SetActive(false)
Util.GetGameObject(go.transform, "mask"):SetActive(true)
if Util.GetGameObject(go.transform, "num") then
Util.GetGameObject(go.transform, "num").gameObject:SetActive(false)
end
if lvObj then
lvObj:SetActive(false)
end
if refineObj then
refineObj:SetActive(false)
end
end
local iconBtn = Util.GetGameObject(go.transform, "icon")
Util.AddOnceClick(
iconBtn,
function()
if curHeroEquipDatas[i] then
curSelectEquipData = curHeroEquipDatas[i]
UIManager.OpenPanel(UIName.RoleEquipChangePopup, this, 2, curHeroData, curHeroEquipDatas[i])
elseif curEquipTreasureDatas[i] then
if itemConfig[curEquipTreasureDatas[i].id].ItemType == ItemType.EquipTreasure then
local pos = 0
local jewerConfig =
ConfigManager.TryGetConfigData(ConfigName.JewelConfig, curEquipTreasureDatas[i].id)
if jewerConfig then
if jewerConfig.Location == 1 then
pos = 5
elseif jewerConfig.Location == 2 then
pos = 6
end
UIManager.OpenPanel(
UIName.RoleEquipTreasureChangePopup,
this,
2,
curHeroData,
curEquipTreasureDatas[i],
nil,
pos
)
end
end
end
end
)
end
local allAddProVal = HeroManager.CalculateHeroAllProValList(1, curHeroData.dynamicId, false)
this.force.text = allAddProVal[HeroProType.WarPower]
end
function this:SetSelectBtn()
this.selectBtn:SetActive(indexBtnNum ~= PosIdConst.All)
if indexBtnNum ~= PosIdConst.All then
this.selectBtn.transform:SetParent(tabs[indexBtnNum].transform)
this.selectBtn.transform.localPosition = Vector3(0, -8, 0)
--this.selectBtn.transform.localScale = Vector3.one
--this.selectBtn:GetComponent("Image"):SetNativeSize()
Util.GetGameObject(this.selectBtn.transform, "Text"):GetComponent("Text").text = typeTab[indexBtnNum]
end
end
--点击全部按钮
function this:OnClickAllBtn()
this:SetSelectBtn()
local itemData = BagManager.GetEquipDataByEquipPosition(curHeroData.heroConfig.Profession)
this:SortEquipDatas(itemData)
local count = 0
for i=1,#itemData do
count = count + itemData[i].num
end
--加上宝器数据
local curAllEquipTreasure = EquipTreasureManager.GetAllTreasures(curHeroData.heroConfig.PropertyName)
--宝器排序
for i = 1, #curAllEquipTreasure do
table.insert(itemData, curAllEquipTreasure[i])
end
this.itemNumText.text = Language[10188] .. count + LengthOfTable(curAllEquipTreasure)
this:SetItemData(itemData)
end
--点击装备按钮
function this:OnClickTabBtn(_index)
this:SetSelectBtn()
if _index < 5 then
local allEquip = BagManager.GetEquipDataByEquipPosition(curHeroData.heroConfig.Profession, _index)
this:SortEquipDatas(allEquip)
local count = 0
for i=1,#allEquip do
count = count + allEquip[i].num
end
this.itemNumText.text = Language[10188] .. count
this:SetItemData(allEquip)
else
local allEquipTreasure
allEquipTreasure =
EquipTreasureManager.GetAllTreasuresByLocation(_index - 4, curHeroData.heroConfig.PropertyName)
table.sort(
allEquipTreasure,
function(a, b)
if a.refineLv == b.refineLv then
if a.lv == b.lv then
return a.id > b.id
else
return a.lv > b.lv
end
else
return a.refineLv > b.refineLv
end
end
)
this.itemNumText.text = Language[10188] .. LengthOfTable(allEquipTreasure)
this:SetItemData(allEquipTreasure)
end
end
--设置背包列表数据
local curHeroCanUpEquipTabs = {}
function this:SetItemData(_itemDatas)
if LengthOfTable(_itemDatas) == 0 then
this.emptyObj.gameObject:SetActive(true)
else
this.emptyObj.gameObject:SetActive(false)
end
--this:SortEquipDatas(_itemDatas)
--做装备叠加特殊组拼数据
-- local equips = {}
-- for i = 1, #_itemDatas do
-- --table.insert(equips,v)
-- if equips[_itemDatas[i].id] then
-- equips[_itemDatas[i].id].num = equips[_itemDatas[i].id].num + 1
-- else
-- equips[_itemDatas[i].id] = _itemDatas[i]
-- equips[_itemDatas[i].id].num = 1
-- end
-- end
-- local showList = {}
-- for i, v in pairs(equips) do
-- table.insert(showList, v)
-- end
this.ScrollView:SetData(
_itemDatas,
function(index, go)
this.SingleItemDataShow(go, _itemDatas[index])
end
)
end
function this.SingleItemDataShow(_go, _itemData)
if not itemConfig[_itemData.id] then
return
end
local frame = Util.GetGameObject(_go.transform, "frame"):GetComponent("Image")
local icon = Util.GetGameObject(_go.transform, "icon"):GetComponent("Image")
local name = Util.GetGameObject(_go.transform, "name"):GetComponent("Text")
local star = Util.GetGameObject(_go.transform, "star")
local proIcon = Util.GetGameObject(_go.transform, "proIcon")
local jewerConfig = ConfigManager.TryGetConfigData(ConfigName.JewelConfig, _itemData.id)
local pos = 0
if jewerConfig then
Util.GetGameObject(_go.transform, "num").gameObject:SetActive(false)
if jewerConfig.Location == 1 then
pos = 5
else
if jewerConfig.Location == 2 then
pos = 6
end
end
else
Util.GetGameObject(_go.transform, "num").gameObject:SetActive(true)
Util.GetGameObject(_go.transform, "num"):GetComponent("Text").text = _itemData.num
end
local lvObj = Util.GetGameObject(_go.transform, "lv"):GetComponent("Text")
local refineObj = Util.GetGameObject(_go.transform, "refine"):GetComponent("Text")
if itemConfig[_itemData.id].ItemType == ItemType.EquipTreasure then
icon.sprite = Util.LoadSprite(_itemData.icon)
frame.sprite = Util.LoadSprite(_itemData.frame)
proIcon:SetActive(true)
proIcon:GetComponent("Image").sprite =
Util.LoadSprite(GetProStrImageByProNum(_itemData.itemConfig.PropertyName))
name.text = itemConfig[_itemData.id].Name
star:SetActive(false)
Util.GetGameObject(_go.transform, "redPoint"):SetActive(false)
lvObj.text = _itemData.lv
if _itemData.lv > 0 then
lvObj.gameObject:SetActive(true)
else
lvObj.gameObject:SetActive(false)
end
refineObj.text = "+" .. _itemData.refineLv
if _itemData.refineLv > 0 then
refineObj.gameObject:SetActive(true)
else
refineObj.gameObject:SetActive(false)
end
-- 0.查看属性 1.穿戴 2.卸下 3.交换
--宝物界面
Util.AddOnceClick(
Util.GetGameObject(_go.transform, "icon"),
function()
if curEquipTreasureDatas[pos] then
UIManager.OpenPanel(
UIName.RoleEquipTreasureChangePopup,
this,
3,
curHeroData,
curEquipTreasureDatas[pos],
_itemData,
pos
)
else
UIManager.OpenPanel(UIName.RoleEquipTreasureChangePopup, this, 1, curHeroData, _itemData, nil, pos)
end
end
)
else
frame.sprite = Util.LoadSprite(_itemData.frame)
icon.sprite = Util.LoadSprite(_itemData.icon)
lvObj.gameObject:SetActive(false)
refineObj.gameObject:SetActive(false)
proIcon:SetActive(false)
name.text = _itemData.itemConfig.Name
star:SetActive(true)
EquipManager.SetEquipStarShow(star, _itemData.itemConfig.Id)
local redPoint = Util.GetGameObject(_go.transform, "redPoint")
if curHeroCanUpEquipTabs and #curHeroCanUpEquipTabs > 0 then
local isShow = false
for i = 1, #curHeroCanUpEquipTabs do
if curHeroCanUpEquipTabs[i] == _itemData.id then
isShow = true
end
end
if isShow then
redPoint:SetActive(true)
else
redPoint:SetActive(false)
end
else
redPoint:SetActive(false)
end
Util.GetGameObject(_go.transform, "num"):GetComponent("Text").text = _itemData.num
Util.AddOnceClick(
Util.GetGameObject(_go.transform, "icon"),
function()
if curHeroEquipDatas[equipConfig[_itemData.id].Position] then
local nextEquipData = EquipManager.GetSingleEquipData(_itemData.id)
UIManager.OpenPanel(
UIName.RoleEquipChangePopup,
this,
3,
curHeroData,
curHeroEquipDatas[equipConfig[_itemData.id].Position],
nextEquipData,
equipConfig[_itemData.id].Position
)
else
UIManager.OpenPanel(
UIName.RoleEquipChangePopup,
this,
1,
curHeroData,
_itemData,
equipConfig[_itemData.id].Position
)
end
end
)
end
end
--刷新当前英雄装备坑位的信息
function this.UpdateEquipPosHeroData(_equipOrTreasure, _type, _selectEquipDataList, _oldSelectEquip, position) --type
--1 穿单件装备 2 卸单件装备 3 替换单件装备 4 一键穿装备 5一键脱装备
if _type == 1 then
effectList[position]:SetActive(false)
effectList[position]:SetActive(true)
if _equipOrTreasure == 1 then
curSelectEquipData = _selectEquipDataList[1]
--装备绑英雄
EquipManager.SetEquipUpHeroDid(curSelectEquipData.id, curHeroData.dynamicId)
--英雄加装备
table.insert(curHeroData.equipIdList, curSelectEquipData.id)
HeroManager.SetHeroEquipIdList(curHeroData.dynamicId, curHeroData.equipIdList)
else
curEquipTreasureDatas = _selectEquipDataList[1]
--装备绑英雄
EquipTreasureManager.SetEquipTreasureUpHeroDid(curEquipTreasureDatas.idDyn, curHeroData.dynamicId)
--英雄加装备
table.insert(curHeroData.jewels, curEquipTreasureDatas.idDyn)
end
elseif _type == 2 then
if _equipOrTreasure == 1 then
--装备解绑英雄
curSelectEquipData = _selectEquipDataList[1]
EquipManager.DeleteSingleEquip(curSelectEquipData.id, curHeroData.dynamicId)
for i = 1, #curHeroData.equipIdList do
if tonumber(curHeroData.equipIdList[i]) == tonumber(curSelectEquipData.id) then
--英雄删除装备
table.remove(curHeroData.equipIdList, i)
break
end
end
HeroManager.SetHeroEquipIdList(curHeroData.dynamicId, curHeroData.equipIdList)
else
curEquipTreasureDatas = _selectEquipDataList[1]
EquipTreasureManager.SetEquipTreasureUpHeroDid(curEquipTreasureDatas.idDyn, "")
for i = 1, #curHeroData.jewels do
if curHeroData.jewels[i] == curEquipTreasureDatas.idDyn then
--英雄删除装备
table.remove(curHeroData.jewels, i)
break
end
end
end
elseif _type == 3 then
effectList[position]:SetActive(false)
effectList[position]:SetActive(true)
if _equipOrTreasure == 1 then
curSelectEquipData = _selectEquipDataList[1]
EquipManager.SetEquipUpHeroDid(curSelectEquipData.id, curHeroData.dynamicId)
--穿
if _oldSelectEquip and tonumber(_oldSelectEquip.id) ~= tonumber(curSelectEquipData.id) then
EquipManager.DeleteSingleEquip(_oldSelectEquip.id, curHeroData.dynamicId)
end
--英雄替换新选择装备
if curHeroEquipDatas[curSelectEquipData.equipConfig.Position] then
for i = 1, #curHeroData.equipIdList do
if
tonumber(curHeroData.equipIdList[i]) ==
tonumber(curHeroEquipDatas[curSelectEquipData.equipConfig.Position].id)
then
curHeroData.equipIdList[i] = curSelectEquipData.id
break
end
end
end
HeroManager.SetHeroEquipIdList(curHeroData.dynamicId, curHeroData.equipIdList)
else
curEquipTreasureDatas = _selectEquipDataList[1]
--新装备绑英雄
EquipTreasureManager.SetEquipTreasureUpHeroDid(curEquipTreasureDatas.idDyn, curHeroData.dynamicId)
if _oldSelectEquip then
--被替换装备解绑英雄
EquipTreasureManager.SetEquipTreasureUpHeroDid(_oldSelectEquip.idDyn, "")
end
--英雄替换新选择装备
for i = 1, #curHeroData.jewels do
if curHeroData.jewels[i] == _oldSelectEquip.idDyn then
curHeroData.jewels[i] = curEquipTreasureDatas.idDyn
end
end
end
elseif _type == 4 then
--一键穿 把身上装备解绑英雄id
if _equipOrTreasure == 1 then
-- for i=1,#_selectEquipDataList do
-- local temp = EquipManager.GetSingleHeroSingleEquipData(_selectEquipDataList[i],curHeroData.dynamicId)
-- if not temp then
-- LogBlue(_selectEquipDataList[i].." "..curHeroData.dynamicId)
-- end
-- end
--宝物
for n, m in ipairs(_selectEquipDataList) do
local isadd = true
for i = 1, #curHeroData.equipIdList do
if equipConfig[tonumber(curHeroData.equipIdList[i])].Position == equipConfig[tonumber(m)].Position then
EquipManager.DeleteSingleEquip(curHeroData.equipIdList[i], curHeroData.dynamicId)
curHeroData.equipIdList[i] = m
HeroManager.GetHeroEquipIdList1(curHeroData.dynamicId, m)
isadd = false
break
end
end
if isadd then
table.insert(curHeroData.equipIdList, m)
end
end
EquipManager.UpdateEquipData(_selectEquipDataList, curHeroData.dynamicId)
else
for k, v in ipairs(curHeroData.jewels) do
EquipTreasureManager.SetTreasureUpOrDown(v, "0")
end
curHeroData.jewels = {}
for i = 1, #_selectEquipDataList do
--把选择的装备绑上英雄
EquipTreasureManager.SetTreasureUpOrDown(_selectEquipDataList[i], curHeroData.dynamicId)
--穿
--再把英雄装备list 清空并添加上新选择的装备
table.insert(curHeroData.jewels, _selectEquipDataList[i])
end
end
elseif _type == 5 then
--一键脱 把身上装备英雄id置为“0” 再把英雄装备list清空
if _equipOrTreasure == 1 then
if _selectEquipDataList then
for i = 1, #_selectEquipDataList do
EquipManager.DeleteSingleEquip(_selectEquipDataList[i], curHeroData.dynamicId)
end
end
curHeroData.equipIdList = {}
HeroManager.SetHeroEquipIdList(curHeroData.dynamicId, {})
curHeroData.equipIdList = {}
else
if _selectEquipDataList then
for i = 1, #_selectEquipDataList do
EquipTreasureManager.SetTreasureUpOrDown(_selectEquipDataList[i], "")
end
curHeroData.jewels = {}
end
end
end
--刷新界面
this.ShowHeroEquip()
--上阵刷新红点
LogBlue("961:"..#HeroManager.GetHeroIsUpEquip(curHeroData.dynamicId))
LogBlue(tostring(isUpZhen))
this.allEquipUpRedPoint:SetActive(#HeroManager.GetHeroIsUpEquip(curHeroData.dynamicId) > 0 and isUpZhen)
--刷新当前英雄可穿装备
if indexBtnNum == PosIdConst.All then
this:OnClickAllBtn()
else
this:OnClickTabBtn(indexBtnNum)
end
--对比战力并更新战力值 播放战力变更动画
HeroManager.CompareWarPower(curHeroData.dynamicId)
end
--选择图片设置父级
function this.SelectImageSetParent(_objPoint)
this.selsectSkillImage:SetActive(false)
this.selsectSkillImage.transform:SetParent(_objPoint.transform)
this.selsectSkillImage.transform.localScale = Vector3.one
this.selsectSkillImage.transform.localPosition = Vector3.zero
end
--界面关闭时调用(用于子类重写)
function RoleEquipPanel:OnClose()
end
function this:AddRedPointVale(_equipDatas)
for j = 1, #_equipDatas do
_equipDatas[j].isRedPointShow = 1
for i = 1, #curHeroCanUpEquipTabs do
if curHeroCanUpEquipTabs[i] == _equipDatas[j].id then
_equipDatas[j].isRedPointShow = 2
end
end
end
end
function this:SortEquipDatas(_equipDatas)
LogBlue("995:"..#HeroManager.GetHeroIsUpEquip(curHeroData.dynamicId))
LogBlue(tostring(isUpZhen))
if teamHero[curHeroData.dynamicId] then
isUpZhen = true
this.allEquipUpRedPoint:SetActive(#HeroManager.GetHeroIsUpEquip(curHeroData.dynamicId) > 0)
curHeroCanUpEquipTabs = HeroManager.GetHeroIsUpEquip(curHeroData.dynamicId)
else
isUpZhen = false
this.allEquipUpRedPoint:SetActive(false)
curHeroCanUpEquipTabs = {}
end
this:AddRedPointVale(_equipDatas)
table.sort(
_equipDatas,
function(a, b)
if a.isRedPointShow == b.isRedPointShow then
if a.itemConfig.Quantity == b.itemConfig.Quantity then
if equipConfig[a.id].Position == equipConfig[b.id].Position then
return a.id > b.id
else
return equipConfig[a.id].Position < equipConfig[b.id].Position
end
else
return a.itemConfig.Quantity > b.itemConfig.Quantity
end
else
return a.isRedPointShow > b.isRedPointShow
end
end
)
end
-- --做装备叠加特殊组拼数据
-- function this:EquipDJDatas(_itemDatas)
-- local equips = {}
-- for i = 1, #_itemDatas do
-- if equips[_itemDatas[i].id] then
-- equips[_itemDatas[i].id].num = equips[_itemDatas[i].id].num + 1
-- else
-- equips[_itemDatas[i].id] = _itemDatas[i]
-- equips[_itemDatas[i].id].num = 1
-- end
-- end
-- local showList = {}
-- for i, v in pairs(equips) do
-- table.insert(showList, v)
-- end
-- return showList
-- end
--界面销毁时调用(用于子类重写)
function RoleEquipPanel:OnDestroy()
SubUIManager.Close(this.UpView)
this.ScrollView = nil
end
return RoleEquipPanel