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

485 lines
18 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 upSuitId={}
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, "listObj/bg/Scrollbar"):GetComponent("Scrollbar")
local v2 = Util.GetGameObject(self.gameObject, "listObj/bg/scroll"):GetComponent("RectTransform").rect
this.ScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, Util.GetGameObject(self.transform, "listObj/bg/scroll").transform,
this.equipPre, this.ScrollBar,Vector2.New(v2.width, v2.height),1 , 4, Vector2.New(40, 25))
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,65))
this.UpScrollView.moveTween.MomentumAmount = 1
this.UpScrollView.moveTween.Strength = 1
Util.GetGameObject(self.transform, "powerBtn"):GetComponent("Image").sprite = this.spLoader:LoadSprite("UI_hz_shenjiang_15_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, "listObj/bg/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")
this.listObj = Util.GetGameObject(self.transform, "listObj")
this.listCloseBtn = Util.GetGameObject(self.transform, "listObj/bg/btn_close")
Util.GetGameObject(self.transform, "listObj/bg/title (1)"):GetComponent("Text").text="神将礼物"
this.proTitle = Util.GetGameObject(self.transform, "proTitle/name/text"):GetComponent("Text")
this.proTitle.text="当前礼物加成"
this.proGrid = Util.GetGameObject(self.transform, "pro")
this.proPre=Util.GetGameObject(self.transform, "pro/name")
--this.tipInfo = Util.GetGameObject(self.transform, "tipInfo"):GetComponent("Text")
this.proEmptyObj = Util.GetGameObject(self.transform, "proEmptyObj")
Util.GetGameObject(self.transform, "proEmptyObj/TextImage/Text"):GetComponent("Text").text="暂无加成属性"
end
--绑定事件(用于子类重写)
function RoleGiftPanel:BindEvent()
Util.AddClick(this.listCloseBtn,function()
this.listObj:SetActive(false)
end)
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={}
table.sort(allEquip,function(a,b)
return equipConfig[a.id].ExhibitionScore>equipConfig[b.id].ExhibitionScore
end)
for i=1,#allEquip do
if i<=canNum then
if CheckListIsContainValue1(allUpIds,allEquip[i].id)==false and CheckListIsContainValue1(upSuitId,equipConfig[allEquip[i].id].SuiteID)==false then
table.insert(list,allEquip[i].id)
table.insert(upSuitId,equipConfig[allEquip[i].id].SuiteID)
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()
isDown=true
NetManager.GiftEquipWearRequest(2,curHeroData.dynamicId,allUpIds,function()
isDown=false
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
this.listObj:SetActive(false)
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()
if #list>=50 then
curNum=#list+6
maxNum=#list+6
else
curNum=50
maxNum=50
end
this.lvTxt.text="收集度"..lv..""
LogError("lv========="..lv.." curnum=="..curNum.." maxNum=="..maxNum)
--maxNum=0
local giftDatas={}
allUpIds={}
upSuitId={}
for i=1,maxNum do
local data={}
data.type=1
data.qua=0
data.id=0
data.isRed=false
if i<=#list then
data.type=2
data.id=list[i]
data.qua=itemConfig[list[i]].Quantity
table.insert(allUpIds,data.id)
table.insert(upSuitId,equipConfig[data.id].SuiteID)
else
data.isRed=GiftManager.CheckRoleRedPointById(curHeroData.dynamicId)
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
)
local proList=IncarnationManager.GetproDesLst(GiftManager.GetHeroGiftAddPro(curHeroData.dynamicId),"00FF00")
table.insert(proList,string.format("英雄潜能等级+%s",GiftManager.GetHeroGiftAddPotencyLv(curHeroData.dynamicId)))
local originalList=GiftManager.GetHeroGiftAddOriginalPro(curHeroData.dynamicId)
if proList and #proList>0 then
this.proGrid:SetActive(true)
this.proEmptyObj:SetActive(false)
local len=this.proGrid.transform.childCount
local create=#proList-len
if create>0 then
for i=1,create do
newObjToParent(this.proPre,this.proGrid)
end
end
len=this.proGrid.transform.childCount
for i=1,len do
if i<=#proList-1 then
this.proGrid.transform:GetChild(i-1).gameObject:SetActive(true)
LogError("originalList[i]======================"..originalList[i])
this.proGrid.transform:GetChild(i-1):GetComponent("Text").text=proList[i]..
string.format(" 主角礼物加成+%s (%s%%)",math.floor(originalList[i]*GiftManager.GetPlayerGiftAdd()/100), GiftManager.GetPlayerGiftAdd())
..string.format(" 特训加成+%s (%s%%)",math.floor(originalList[i]*HeroManager.ReturnGiftAtt()),HeroManager.ReturnGiftAtt())
elseif i==#proList then
this.proGrid.transform:GetChild(i-1).gameObject:SetActive(true)
this.proGrid.transform:GetChild(i-1):GetComponent("Text").text=proList[i]
else
this.proGrid.transform:GetChild(i-1).gameObject:SetActive(false)
end
end
else
this.proGrid:SetActive(false)
this.proEmptyObj:SetActive(true)
end
--this.tipInfo.text=string.format("神将潜能等级+%s",GiftManager.GetHeroGiftAddPotencyLv(curHeroData.dynamicId))
--显示下面可赠送的
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")
local red=Util.GetGameObject(_go,"red")
local starGrid=Util.GetGameObject(_go,"starGrid")
if data.id and data.id~=0 then
red:SetActive(false)
frame.sprite=this.spLoader:LoadSprite(GetQuantityImageByquality(itemConfig[data.id].Quantity))
icon.gameObject:SetActive(true)
name.gameObject:SetActive(true)
lockObj:SetActive(false)
starGrid:SetActive(true)
lockText.gameObject:SetActive(false)
add:SetActive(false)
name.text=itemConfig[data.id].Name
icon.sprite=this.spLoader:LoadSprite(GetResourcePath(itemConfig[data.id].ResourceID))
SetHeroStars(this.spLoader,starGrid,equipConfig[data.id].Star,1,nil,-15)
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("UI_hz_beibao_duigoudi")
icon.gameObject:SetActive(false)
name.gameObject:SetActive(false)
starGrid:SetActive(false)
if _index>curNum then
lockObj:SetActive(true)
add:SetActive(false)
red:SetActive(false)
lockText.gameObject:SetActive(true)
lockText.text="收集度"..lv+1 .."级解锁"
else
lockObj:SetActive(false)
lockText.gameObject:SetActive(false)
add:SetActive(true)
red:SetActive(data.isRed)
end
end
Util.AddOnceClick(add,function()
this.listObj:SetActive(true)
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) or CheckListIsContainValue1(upSuitId,equipConfig[allEquip[i].id].SuiteID) 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")
local tip=Util.GetGameObject(_go.transform, "tip")
tip:SetActive(_itemData.isUp==1)
local isHave=CheckListIsContainValue1(allUpIds,_itemData.id) or CheckListIsContainValue1(upSuitId,equipConfig[_itemData.id].SuiteID)
redPoint:SetActive(isHave==false and curNum>#allUpIds)
this.equipPreList[_go].gameObject:SetActive(true)
this.equipPreList[_go].transform:SetAsFirstSibling()
this.equipPreList[_go]:ResetNameColor(Color.New(178/255,85/255,55/255,1))
--if itemConfig[_itemData.id].ItemType == ItemType.Equip then
this.equipPreList[_go]:OnOpen(false,{_itemData.id,_itemData.num}, 1.1, true, false, false, this.sortingOrder+1,_itemData.idDyn)
-- 0.查看属性 1.穿戴 2.卸下 3.交换
--宝物界面
Util.AddOnceClick(Util.GetGameObject(_go.transform, "mask"),function()
BagManager.isBagPanel=true
if isHave then
UIManager.OpenPanel(UIName.RewardEquipSingleShowPopup2,this,_itemData,6,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