miduo_client/Assets/ManagedResources/~Lua/Modules/Guild/Skill/HeroPotencyLvUpPanel.lua

334 lines
13 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")
HeroPotencyLvUpPanel = Inherit(BasePanel)
local this = HeroPotencyLvUpPanel
--长按升级状态
local _isReqLvUp=false
local oldPower = 0
local newPower = 0
local oldPropMap={}
local barWidth=700
local TabBox = require("Modules/Common/TabBox")
local _TabData={
[1] = { default = "UI_hz_gonghui_19",lock="UI_hz_gonghui_19", select = "UI_hz_gonghui_18", type=1 },
[2] = { default = "UI_hz_gonghui_19",lock="UI_hz_gonghui_19", select = "UI_hz_gonghui_18", type=2 },
[3] = { default = "UI_hz_gonghui_19",lock="UI_hz_gonghui_19", select = "UI_hz_gonghui_18", type=3 },
[4] = { default = "UI_hz_gonghui_19",lock="UI_hz_gonghui_19", select = "UI_hz_gonghui_18", type=4 },
[5] = { default = "UI_hz_gonghui_19",lock="UI_hz_gonghui_19", select = "UI_hz_gonghui_18", type=5 },
[6] = { default = "UI_hz_gonghui_19",lock="UI_hz_gonghui_19", select = "UI_hz_gonghui_18", type=6 },
[7] = { default = "UI_hz_gonghui_19",lock="UI_hz_gonghui_19", select = "UI_hz_gonghui_18", type=7 },
[8] = { default = "UI_hz_gonghui_19",lock="UI_hz_gonghui_19", select = "UI_hz_gonghui_18", type=8 },
}
local _TabFontColor = { default = Color.New(130 / 255, 128 / 255, 120 / 255, 1),
select = Color.New(243 / 255, 235 / 255, 202 / 255, 1),
lock = UIColor.GRAY,
}
local dynamicId=""
local type=0
local config=nil
local curIndex=0
local data
local preList={}
local curTabIndex=0
local parPanel=nil
local isCan=true
local lv= 0
--初始化组件用于子类重写FourQuadrantPopup
function this:InitComponent()
this.spLoader = SpriteLoader.New()
this.mask = Util.GetGameObject(self.gameObject, "mask")
this.backBtn = Util.GetGameObject(self.gameObject, "bg/btnBack")
this.titleText = Util.GetGameObject(self.gameObject, "bg/titleText"):GetComponent("Text")
this.limitHint = Util.GetGameObject(self.gameObject, "bg/limitHint"):GetComponent("Text")
this.griftLv = Util.GetGameObject(self.gameObject, "bg/giftLv"):GetComponent("Text")
this.lvTxt = Util.GetGameObject(self.gameObject, "bg/lvTxt"):GetComponent("Text")
this.upBtn = Util.GetGameObject(self.gameObject, "bg/upBtn")
this.jianTou = Util.GetGameObject(self.gameObject, "bg/jiantou")
this.upStarBtn = Util.GetGameObject(self.gameObject, "bg/oneKeyBtn")
this.proUpInfo=Util.GetGameObject(self.gameObject, "bg/proUpInfo"):GetComponent("Text")
this.upLvTrigger = Util.GetEventTriggerListener(this.upBtn)
this.grayImage=Util.GetGameObject(self.gameObject, "bg/gray"):GetComponent("Image")
this.upStarPropWin = Util.GetGameObject(self.gameObject, "upStarPropWin")
this.propWinGrid = Util.GetGameObject(self.gameObject, "upStarPropWin/grid")
this.propWinCloseBtn = Util.GetGameObject(self.gameObject, "upStarPropWin/closeBtn")
this.starLv = Util.GetGameObject(self.gameObject, "bg/starLv")
this.professionIcon = Util.GetGameObject(self.gameObject, "bg/professionIcon"):GetComponent("Image")
this.grid=Util.GetGameObject(self.gameObject,"grid")
this.itemPre=Util.GetGameObject(self.gameObject,"itemPre")
this.selectImg=Util.GetGameObject(self.gameObject,"selectImg")
this.btnList={}
this.tabBox = Util.GetGameObject(self.gameObject, "TabBox")
this.box = Util.GetGameObject(self.gameObject, "TabBox/box")
this.hintTip= Util.GetGameObject(self.gameObject, "bg/hintTip"):GetComponent("Text")
this.TabCtrl = TabBox.New()
this.TabCtrl:SetTabAdapter(this.TabAdapter)
this.TabCtrl:SetChangeTabCallBack(this.SwitchView)
--this.TabCtrl:SetTabIsLockCheck(this.IsTabLock)
for i=1,8 do
this.btnList[i]=Util.GetGameObject(this.box, "tab"..i)
end
end
function this.IsTabLock(index)
--LogError("检测是否上锁")
if data[_TabData[index].type] then
return false
else
return true,PoTencyTypeName[_TabData[index].type].."未开启"
end
return true,PoTencyTypeName[_TabData[index].type].."未开启"
end
-- tab节点显示自定义
function this.TabAdapter(tab, index, status)
local tabLab = Util.GetGameObject(tab, "Text")
local img=Util.GetGameObject(tab,"Image")
local red=Util.GetGameObject(tab,"Redpot")
red:SetActive(HeroManager.CheckPotencyRedPointByType(dynamicId,_TabData[index].type))
img:GetComponent("Image").sprite = this.spLoader:LoadSprite(_TabData[index][status])
tabLab:GetComponent("Text").text = PoTencyTypeName[_TabData[index].type]
tabLab:GetComponent("Text").color = _TabFontColor[status]
Util.GetGameObject(tab,"LockImage"):SetActive(status == "lock")
if status=="default" then
img:GetComponent("RectTransform").sizeDelta = Vector2.New(105,58)
elseif status=="select" then
img:GetComponent("RectTransform").sizeDelta = Vector2.New(105,70)
end
--this.btnList[index]=tab
end
--切换视图
function this.SwitchView(index)
type=_TabData[index].type
--LogError("btnList==========="..#this.btnList.." index=="..index)
isCan=true
curTabIndex=index
--ConfigManager.getcon
config=ConfigManager.TryGetConfigDataByKey(ConfigName.PotentialNewConfig,"Type",type)
local giftLv=GiftManager.GetHeroPotencyLvById(dynamicId)
if data[type] then
lv=data[type].lv
this.hintTip.gameObject:SetActive(false)
LogError("giftLv======================"..data[type].giftLv.." 本地计算giftLV"..giftLv.." lv=="..lv)
else
lv=0
this.hintTip.text=PoTencyTypeName[_TabData[index].type].."潜能未开启"
this.hintTip.gameObject:SetActive(true)
end
this.professionIcon.sprite=this.spLoader:LoadSprite(config.Icon)
local curLv=lv+giftLv
local lvEquipConfig= ConfigManager.TryGetConfigDataByDoubleKey(ConfigName.PotentialNew,"Type",type,"Level",lv)
local curEquipConfig= ConfigManager.TryGetConfigDataByDoubleKey(ConfigName.PotentialNew,"Type",type,"Level",curLv)
local nextEquipConfig= ConfigManager.TryGetConfigDataByDoubleKey(ConfigName.PotentialNew,"Type",type,"Level",curLv+1)
this.limitHint.text=lv..""
this.griftLv.text="+"..giftLv
if nextEquipConfig then
this.lvTxt.gameObject:SetActive(true)
this.jianTou:SetActive(true)
local curPro=0
if curEquipConfig then
curPro=curEquipConfig.Attribute
end
this.proUpInfo.text=PoTencyTypeName[_TabData[index].type].."基础属性提升"..curPro/100 .."%"
this.lvTxt.text=nextEquipConfig.Attribute/100 .."%"
else
this.lvTxt.gameObject:SetActive(false)
this.jianTou:SetActive(false)
this.proUpInfo.text=PoTencyTypeName[_TabData[index].type].."基础属性提升"..curEquipConfig.Attribute/100 .."%"
end
if lvEquipConfig and lvEquipConfig.Consume and #lvEquipConfig.Consume>0 and tonumber(lvEquipConfig.Consume[1][1])~=nil then
this.grid:SetActive(true)
this.upBtn:SetActive(true)
this.upStarBtn:SetActive(true)
for i=1,#preList do
preList[i]:SetActive(false)
end
for i=1,#lvEquipConfig.Consume do
if preList[i]==nil then
preList[i]=newObject(this.itemPre)
end
preList[i]:SetActive(true)
preList[i].transform:SetParent(this.grid.transform)
preList[i].transform.localScale = Vector3.one
preList[i].transform.localPosition=Vector3.zero;
local cost=lvEquipConfig.Consume[i]
local frame=Util.GetGameObject(preList[i],"frame"):GetComponent("Image")
local icon=Util.GetGameObject(preList[i],"icon"):GetComponent("Image")
local num=Util.GetGameObject(preList[i],"num"):GetComponent("Text")
local costId=0
local itemConfig=ConfigManager.GetConfigData(ConfigName.ItemConfig,cost[1])
frame.sprite=this.spLoader:LoadSprite(GetQuantityImageByquality(itemConfig.Quantity))
icon.sprite=this.spLoader:LoadSprite(GetResourcePath(itemConfig.ResourceID))
local haveNum=BagManager.GetItemCountById(cost[1])
if haveNum>=cost[2] then
num.text=string.format("<color=#FCF5D3FF>%s</color>/%s", cost[2],haveNum)
else
isCan=false
num.text=string.format("<color=#FF0011>%s</color>/%s",cost[2],haveNum)
end
Util.AddClick(icon.gameObject,function()
UIManager.OpenPanel(UIName.RewardItemSingleShowPopup,cost[1])
end)
end
else
this.grid:SetActive(false)
this.upBtn:SetActive(false)
this.upStarBtn:SetActive(false)
end
this.titleText.text=config.Name
end
--绑定事件(用于子类重写)
function this:BindEvent()
Util.AddClick(this.backBtn, function()
self:ClosePanel()
end)
Util.AddClick(this.mask, function()
self:ClosePanel()
end)
--升级
Util.AddOnceClick(this.upBtn, function()
if isCan then
NetManager.PotentialUpLvRequest(dynamicId,type,1,function()
PopupTipPanel.ShowTip("升级成功")
this.TabCtrl:Init(this.tabBox, _TabData,curTabIndex)
--this.SwitchView(curTabIndex)
end)
else
PopupTipPanel.ShowTip("材料不足")
end
end)
--一键升级
Util.AddClick(this.upStarBtn, function()
if isCan==false then
PopupTipPanel.ShowTip("材料不足")
return
end
local list=ConfigManager.TryGetAllConfigsDataByKey(ConfigName.PotentialNew,"Type",type)
local costNum=0
local costList={}
local targetLv=0
for k=1,#list do
local v=list[k]
if v.Level>=lv then
if v.Consume and #v.Consume>0 and tonumber(v.Consume[1][1])~=nil then
for i=1,#v.Consume do
local key=v.Consume[i][1]
local value=v.Consume[i][2]
if costList[key]==nil then
costList[key]=0
end
costList[key]=costList[key]+value
--如果材料
if BagManager.GetItemCountById(key) >= costList[key] then
targetLv = v.Level
else
break
end
end
else
break
end
end
end
--是否直接升到最大
--if isMax==false then
targetLv=targetLv+1
--end
LogError("targeylv============"..targetLv.." lv===="..lv)
NetManager.PotentialUpLvRequest(dynamicId,type,targetLv-lv,function()
PopupTipPanel.ShowTip("升级成功")
this.TabCtrl:Init(this.tabBox, _TabData,curTabIndex)
--this.SwitchView(curTabIndex)
end)
end)
Util.AddClick(this.propWinCloseBtn, function()
this.upStarPropWin:SetActive(false);
end)
end
--添加事件监听(用于子类重写)
function this:AddListener()
Game.GlobalEvent:AddEvent(GameEvent.FourQuadrant.ShowPower, this.ShowPower)
end
--移除事件监听(用于子类重写)
function this:RemoveListener()
Game.GlobalEvent:RemoveEvent(GameEvent.FourQuadrant.ShowPower, this.ShowPower)
end
--界面打开时调用(用于子类重写)
function this:OnOpen(_type,_did,_config,_parPanel)
dynamicId=_did
type=_type
config=_config
parPanel=_parPanel
for i=1,#_TabData do
if _TabData[i].type==_type then
curTabIndex=i
end
end
data=HeroManager.GetPotentialData(dynamicId)
this.TabCtrl:Init(this.tabBox, _TabData,curTabIndex)
--this.TabCtrl:ChangeTab(curTabIndex)
this.SwitchView(curTabIndex)
oldPower = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL)
end
function this:OnShow()
end
---显示战斗力提升
function this.ShowPower()
newPower = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL)
if newPower~=oldPower then
UIManager.OpenPanel(UIName.WarPowerChangeNotifyPanelV2,{oldValue = oldPower,newValue = newPower})
oldPower = newPower
end
end
--进阶刷新界面
function this.UpStarUpdate()
this.UpdateData(this.professionId)
end
--检测当前强化进度是否可以进阶
function this.CheckIsUpStar()
end
--检测界面页签红点
function this.CheckWinRedPoint()
end
--界面关闭时调用(用于子类重写)
function this:OnClose()
if parPanel then
parPanel.RefreshWindowData()
end
end
function this:OnDestroy()
this.spLoader:Destroy()
preList={}
end
return HeroPotencyLvUpPanel