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

408 lines
14 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)
local itemConfig=ConfigManager.GetConfig(ConfigName.ItemConfig)
RoleGiftPanel = Inherit(BasePanel)
local isGonming = 0
local tableName={ "礼物","碎片"}
local isUpZhen = false
local this = RoleGiftPanel
local indexBtnNum=0
local tabs={}
local redTabs={}
local curHeroData=nil
local teamHero
local v1
local allUpIds={}
local allEquip={}
local index=0
local lv,curNum,maxNum
local heroListData
local isDown=false
--初始化组件用于子类重写RoleEquipChangePopup
function RoleGiftPanel:InitComponent()
this.spLoader = SpriteLoader.New()
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")
for i = 1, 2 do
tabs[i] = Util.GetGameObject(self.transform, "Tabs/Btn" .. i)
local nameTxt=Util.GetGameObject(tabs[i], "Text"):GetComponent("Text")
nameTxt.fontSize = GetCurLanguage() == 0 and 48 or 40
nameTxt.text=tableName[i]
redTabs[i] = Util.GetGameObject(tabs[i], "red")
if i==2 then
tabs[i]:SetActive(false)
end
--effectList[i] = Util.GetGameObject(self.transform, "bg/equipInfo/equip" .. i .. "/effect")
end
this.titleTxt=Util.GetGameObject(self.gameObject, "title"):GetComponent("Text")
this.titleTxt.text="神将礼物"
this.selectBtn = Util.GetGameObject(self.gameObject, "selectBtn")
this.btnPrant = Util.GetGameObject(self.gameObject, "Tabs")
this.equipPreList2 = {}
this.equipPreList = {}
this.equipPre = Util.GetGameObject(self.gameObject, "equipPre")
this.upItemPre = Util.GetGameObject(self.gameObject, "upItemPre")
this.grid = Util.GetGameObject(self.gameObject, "scroll/grid")
this.selsectSkillImage = Util.GetGameObject(self.gameObject, "selsectSkillImage")
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.allEquipUpRedPoint:SetActive(false)
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.width, v2.height),1 , 5, Vector2.New(40, 15))
this.ScrollView.moveTween.MomentumAmount = 1
this.ScrollView.moveTween.Strength = 1
v1 = Util.GetGameObject(self.gameObject, "upScroll"):GetComponent("RectTransform").rect
this.UpScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, Util.GetGameObject(self.transform, "upScroll").transform,this.upItemPre, nil,Vector2.New(v1.width,v1.height),1 ,4, Vector2.New(50,42))
this.UpScrollView.moveTween.MomentumAmount = 1
this.UpScrollView.moveTween.Strength = 1
Util.GetGameObject(self.transform, "powerBtn"):GetComponent("Image").sprite = this.spLoader:LoadSprite("t_tongyong-zhanli_zh")
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.emptyObj = Util.GetGameObject(self.transform, "emptyObj")
this.emptyObj.gameObject:SetActive(false)
this.mask = Util.GetGameObject(self.gameObject, "mask")
this.mask:SetActive(false)
this.collectImg=Util.GetGameObject(self.gameObject, "collectImg"):GetComponent("Image")
this.lvTxt=Util.GetGameObject(self.gameObject, "lvTxt"):GetComponent("Text")
this.collectImg.sprite=this.spLoader:LoadSprite("gh_tt_8")
this.btn_help=Util.GetGameObject(self.gameObject, "btn_help")
end
--绑定事件(用于子类重写)
function RoleGiftPanel:BindEvent()
Util.AddClick(this.btn_help,function()
UIManager.OpenPanel(UIName.HelpPopup, HELP_TYPE.Gift,0,0)
end)
Util.AddClick(this.collectImg.gameObject,function()
local data = {}
local singData = {}
singData.title = "当前礼物总加成"
singData.pro = IncarnationManager.GetproDesLst(GiftManager.GetHeroGiftAddPro(curHeroData.dynamicId),"00FF00")
singData.tip ="" --"总加成包括化身之力提供的属性"
table.insert(data,singData)
UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.IncarnationDes,data)
end)
Util.AddClick(this.btnBack,function()
PlaySoundWithoutClick(SoundConfig.Sound_UICancel)
self:ClosePanel()
end)
Util.AddClick(this.leftBtn,function()
index = (index - 1 > 0 and index - 1 or #heroListData)
curHeroData = heroListData[index]
this.RefreshWindowData()
end)
Util.AddClick(this.rightBtn,function()
index = (index + 1 <= #heroListData and index + 1 or 1)
curHeroData = heroListData[index]
this.RefreshWindowData()
end)
Util.AddOnceClick(this.allEquipUp,function()
local canNum=curNum-#allUpIds
if canNum>0 then
local list={}
for i=1,#allEquip do
if i<=canNum then
if CheckListIsContainValue1(allUpIds,allEquip[i].id)==false then
table.insert(list,allEquip[i].id)
end
end
end
NetManager.GiftEquipWearRequest(1,curHeroData.dynamicId,list,function()
GiftManager.SetHeroGift(curHeroData.dynamicId,list,1)
this.RefreshWindowData()
end)
end
end)
Util.AddOnceClick(this.allEquipDown,function()
LogError("allupids len 1111111111111111======"..#allUpIds)
isDown=true
NetManager.GiftEquipWearRequest(2,curHeroData.dynamicId,allUpIds,function()
isDown=false
LogError("allupids len======"..#allUpIds)
GiftManager.SetHeroGift(curHeroData.dynamicId,allUpIds,2)
this.RefreshWindowData()
end)
end)
for i = 1, 2 do
Util.AddClick(tabs[i],function()
-- isPlayAnim = true
if i == indexBtnNum then
return
end
indexBtnNum = i
this:OnClickTabBtn(indexBtnNum)
end)
end
end
--添加事件监听(用于子类重写)
function RoleGiftPanel:AddListener()
Game.GlobalEvent:AddEvent(GameEvent.Bag.BagGold, this.RefreshWindowData)
end
--移除事件监听(用于子类重写)
function RoleGiftPanel:RemoveListener()
Game.GlobalEvent:RemoveEvent(GameEvent.Bag.BagGold, this.RefreshWindowData)
end
--界面打开时调用(用于子类重写)
function RoleGiftPanel:OnOpen(...)
local data = {...}
curHeroData=data[1]
if data[2] then
heroListData = data[2]
else
heroListData = HeroManager.GetAllHeroDatas()
end
end
function RoleGiftPanel:OnShow()
for i = 1, #heroListData do
if curHeroData == heroListData[i] then
index = i
end
end
teamHero = FormationManager.GetAllMainFormationHeroId()
this.RefreshWindowData()
end
function this:OnSortingOrderChange()
end
function this.RefreshWindowData()
local WarPower = 0
if isDown then
return
end
isUpZhen=teamHero[curHeroData.dynamicId]
if isUpZhen then
WarPower = HeroPowerManager.GetHeroPower(curHeroData.dynamicId, FormationTypeDef.FORMATION_NORMAL)
else
WarPower = HeroPowerManager.GetHeroPower(curHeroData.dynamicId)
end
this.force.text = WarPower
--显示上面赠送的
local list=GiftManager.GetHeroGifts(curHeroData.dynamicId)
lv,curNum,maxNum=GiftManager.GetCollectLvAndNum()
this.lvTxt.text="收集度"..lv..""
--LogError("lv========="..lv.." curnum=="..curNum.." maxNum=="..maxNum)
--local maxNum=20
local giftDatas={}
allUpIds={}
for i=1,maxNum do
local data={}
data.type=1
data.qua=0
data.id=0
if i<=#list then
data.type=2
data.id=list[i]
data.qua=itemConfig[list[i]].Quantity
table.insert(allUpIds,data.id)
end
table.insert(giftDatas,data)
end
table.sort(giftDatas,function(a,b)
if a.type==b.type then
if a.qua and a.qua==b.qua then
return a.id<b.id
else
return a.qua>b.qua
end
else
return a.type>b.type
end
end)
this.UpScrollView:SetData(giftDatas,
function(index, go)
this.SingleUpItemShow(go, giftDatas[index],index)
end
)
--显示下面可赠送的
this:OnClickTabBtn(1)
end
--显示上面几个
function this.SingleUpItemShow(_go,data,_index)
_go:SetActive(true)
_go.transform:SetAsFirstSibling()
local frame=_go:GetComponent("Image")
local icon=Util.GetGameObject(_go,"icon"):GetComponent("Image")
local name=Util.GetGameObject(_go,"name"):GetComponent("Text")
local lockObj=Util.GetGameObject(_go,"lock")
local lockText=Util.GetGameObject(_go,"Text"):GetComponent("Text")
local add=Util.GetGameObject(_go,"add")
if data.id and data.id~=0 then
frame.sprite=this.spLoader:LoadSprite(GetQuantityImageByquality(itemConfig[data.id].Quantity))
icon.gameObject:SetActive(true)
name.gameObject:SetActive(true)
lockObj:SetActive(false)
lockText.gameObject:SetActive(false)
add:SetActive(false)
name.text=itemConfig[data.id].Name
icon.sprite=this.spLoader:LoadSprite(GetResourcePath(itemConfig[data.id].ResourceID))
Util.AddOnceClick(icon.gameObject,function()
if curHeroData==nil then
return
end
BagManager.isBagPanel=false
UIManager.OpenPanel(UIName.RewardEquipSingleShowPopup2,this,data,2,false,nil,curHeroData,4)
end
)
else
frame.sprite=this.spLoader:LoadSprite("r_characterbg_blue")
icon.gameObject:SetActive(false)
name.gameObject:SetActive(false)
if _index>curNum then
lockObj:SetActive(true)
add:SetActive(false)
lockText.gameObject:SetActive(true)
lockText.text="收集度"..lv+1 .."级解锁"
else
lockObj:SetActive(false)
lockText.gameObject:SetActive(false)
add:SetActive(true)
end
end
end
--点击装备按钮
function this:OnClickTabBtn(_index)
indexBtnNum = _index
this:SetSelectBtn()
allEquip = BagManager.GetBagItemDataByItemType(ItemBaseType.HeroGift)
-- this:SortEquipDatas(allEquip)
local count = 0
for i=1,#allEquip do
count = count + 1
if CheckListIsContainValue1(allUpIds,allEquip[i].id) then
allEquip[i].isUp=1
else
allEquip[i].isUp=2
end
end
table.sort(allEquip,function(a,b)
if a.isUp==b.isUp then
if a.quality==b.quality then
return a.id<b.id
else
return a.quality>b.quality
end
else
return a.isUp > b.isUp
end
end)
--"装备数量:"
this.itemNumText.text = "礼物种类:" .. count
this:SetItemData(allEquip)
--this.CheckRedTab()
end
function this:SetItemData(_itemDatas)
if LengthOfTable(_itemDatas) == 0 then
this.emptyObj.gameObject:SetActive(true)
else
this.emptyObj.gameObject:SetActive(false)
end
for k,v in pairs(this.equipPreList) do
v.gameObject:SetActive(false)
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
if not this.equipPreList[_go] then
this.equipPreList[_go] = SubUIManager.Open(SubUIConfig.ItemView,_go.transform)
end
local redPoint = Util.GetGameObject(_go.transform, "redPoint")
redPoint:SetActive(false)
this.equipPreList[_go].gameObject:SetActive(true)
this.equipPreList[_go].transform:SetAsFirstSibling()
if itemConfig[_itemData.id].ItemType == ItemType.Equip then
this.equipPreList[_go]:OnOpen(false,{_itemData.id,_itemData.num}, 1.1, true, false, false, orginLayer,_itemData.idDyn)
-- 0.查看属性 1.穿戴 2.卸下 3.交换
--宝物界面
Util.AddOnceClick(Util.GetGameObject(_go.transform, "mask"),function()
BagManager.isBagPanel=true
if CheckListIsContainValue1(allUpIds,_itemData.id) then
UIManager.OpenPanel(UIName.RewardEquipSingleShowPopup2,this,_itemData,0,false,nil,curHeroData,4)
else
UIManager.OpenPanel(UIName.RewardEquipSingleShowPopup2,this,_itemData,3,false,nil,curHeroData,4)
end
end
)
end
end
function this:SetSelectBtn()
this.selectBtn:SetActive(true)
this.selectBtn.transform:SetParent(tabs[indexBtnNum].transform)
this.selectBtn:GetComponent("RectTransform").anchoredPosition3D = Vector3(-12.28, 1.08, 0)
this.selectBtn.transform:SetSiblingIndex(1)
Util.GetGameObject(this.selectBtn.transform, "Text"):GetComponent("Text").text = GetCurLanguage() == 0 and tableName[indexBtnNum] or "<size=40>"..tableName[indexBtnNum].."</size>"--typeTab[indexBtnNum]
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 RoleGiftPanel:OnClose()
BagManager.isBagPanel=false
end
--界面销毁时调用(用于子类重写)
function RoleGiftPanel:OnDestroy()
end
return RoleGiftPanel