159 lines
4.9 KiB
Lua
159 lines
4.9 KiB
Lua
require("Base/BasePanel")
|
||
local ItemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
|
||
CarbonBuyCountPopup = Inherit(BasePanel)
|
||
local this = CarbonBuyCountPopup
|
||
local curBuyCount = 0
|
||
local costNeed = 0
|
||
local itemID = 0
|
||
|
||
--初始化组件(用于子类重写)
|
||
function CarbonBuyCountPopup:InitComponent()
|
||
this.spLoader = SpriteLoader.New()
|
||
|
||
this.mask = Util.GetGameObject(self.gameObject, "BackMask")
|
||
this.title = Util.GetGameObject(self.gameObject, "bg/title"):GetComponent("Text")
|
||
this.leftBuyCount = Util.GetGameObject(self.gameObject, "bg/content"):GetComponent("Text")
|
||
this.icon = Util.GetGameObject(self.gameObject, "bg/icon"):GetComponent("Image")
|
||
this.btnConfirm = Util.GetGameObject(self.gameObject, "bg/Confirm")
|
||
this.btnCancel = Util.GetGameObject(self.gameObject, "bg/btnBack")
|
||
this.textCost = Util.GetGameObject(self.gameObject, "bg/cost"):GetComponent("Text")
|
||
this.textFreshInfo = Util.GetGameObject(self.gameObject, "bg/info"):GetComponent("Text")
|
||
this.textBuyNum = Util.GetGameObject(self.gameObject, "bg/Slider/numText"):GetComponent("Text")
|
||
|
||
-- 滑条
|
||
this.slider = Util.GetGameObject(self.gameObject, "bg/Slider")
|
||
this.chooseNum = Util.GetGameObject( this.slider, "numText"):GetComponent("Text")
|
||
end
|
||
|
||
--绑定事件(用于子类重写)
|
||
function CarbonBuyCountPopup:BindEvent()
|
||
|
||
-- 关闭按钮事件监听
|
||
Util.AddClick(this.btnCancel, function()
|
||
self:ClosePanel()
|
||
end)
|
||
Util.AddClick(this.mask, function()
|
||
self:ClosePanel()
|
||
end)
|
||
|
||
Util.AddSlider(this.slider, function(go, value)
|
||
this.OnSliderValueChange(value)
|
||
end)
|
||
|
||
-- 确认按钮事件
|
||
Util.AddClick(this.btnConfirm, function()
|
||
|
||
if curBuyCount == 0 then
|
||
PopupTipPanel.ShowTip(Language[11463])
|
||
return
|
||
end
|
||
|
||
if CarbonManager.getLeftBuyCount() <= 0 then
|
||
PopupTipPanel.ShowTip(Language[11464])
|
||
return
|
||
end
|
||
|
||
-- 当前剩余挑战次数
|
||
local leftChallengeCount = CarbonManager.getLeftChallengeCount()
|
||
-- 副本购买上限
|
||
local maxLimitCount = CarbonManager.getMaxLimitCount()
|
||
if leftChallengeCount >= maxLimitCount then
|
||
PopupTipPanel.ShowTip(Language[11465])
|
||
return
|
||
end
|
||
|
||
-- 购买后的总量大于上限,只给购买到上限
|
||
if curBuyCount + leftChallengeCount > maxLimitCount then
|
||
local canBuy = maxLimitCount - leftChallengeCount
|
||
PopupTipPanel.ShowTip(Language[11466] .. canBuy .. Language[10048])
|
||
return
|
||
end
|
||
|
||
if costNeed > BagManager.GetItemCountById(itemID) then
|
||
PopupTipPanel.ShowTip(Language[11467])
|
||
return
|
||
end
|
||
|
||
NetManager.BuyFightCountRequest(curBuyCount, function ()
|
||
-- 关闭当前界面
|
||
self:ClosePanel()
|
||
-- 刷新物品数量
|
||
--改为后端刷新了
|
||
--BagManager.UpdateItemsNum(itemID, costNeed)
|
||
-- 发送事件更新界面显示
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.Carbon.CarbonCountChange)
|
||
PopupTipPanel.ShowTip(Language[11468])
|
||
end)
|
||
end)
|
||
end
|
||
|
||
--添加事件监听(用于子类重写)
|
||
function CarbonBuyCountPopup:AddListener()
|
||
|
||
end
|
||
|
||
--移除事件监听(用于子类重写)
|
||
function CarbonBuyCountPopup:RemoveListener()
|
||
|
||
end
|
||
|
||
--界面打开时调用(用于子类重写)
|
||
function CarbonBuyCountPopup:OnOpen(count)
|
||
|
||
local sliderComp = this.slider:GetComponent("Slider")
|
||
local maxValue = CarbonManager.getLeftBuyCount()
|
||
sliderComp.maxValue = maxValue
|
||
sliderComp.enabled = maxValue > 1
|
||
sliderComp.minValue = 1
|
||
sliderComp.value = 1
|
||
|
||
-- 刷新选择条数据
|
||
this.RefreshData(count)
|
||
|
||
end
|
||
|
||
--根据Slider的数据刷新面板上的数据
|
||
function this.RefreshData(chooseNum)
|
||
|
||
-- 剩余可购买次数
|
||
local leftBuyCount = CarbonManager.getLeftBuyCount()
|
||
local curLeftBuyCount = leftBuyCount - chooseNum
|
||
if curLeftBuyCount < 0 then
|
||
chooseNum = leftBuyCount
|
||
curLeftBuyCount = 0
|
||
end
|
||
|
||
-- 设置当前
|
||
this.slider:GetComponent("Slider").value = chooseNum
|
||
|
||
-- 当前选择购买次数
|
||
this.chooseNum.text = chooseNum
|
||
|
||
-- 当前购买次数
|
||
curBuyCount = chooseNum
|
||
itemID, costNeed = CarbonManager.calBuyCountCost(chooseNum)
|
||
|
||
--刷新显示
|
||
this.icon.sprite = this.spLoader:LoadSprite(GetResourcePath(ItemConfig[itemID].ResourceID))
|
||
this.title.text = Language[11469]
|
||
this.leftBuyCount.text = Language[11470]..curLeftBuyCount..")"
|
||
this.textCost.text = chooseNum > 0 and costNeed or 0
|
||
this.textFreshInfo.text = Language[11471]
|
||
end
|
||
|
||
function this.OnSliderValueChange(value)
|
||
this.RefreshData(value)
|
||
end
|
||
|
||
--界面关闭时调用(用于子类重写)
|
||
function CarbonBuyCountPopup:OnClose()
|
||
|
||
end
|
||
|
||
--界面销毁时调用(用于子类重写)
|
||
function CarbonBuyCountPopup:OnDestroy()
|
||
this.spLoader:Destroy()
|
||
|
||
end
|
||
|
||
return CarbonBuyCountPopup |