225 lines
No EOL
8 KiB
Lua
225 lines
No EOL
8 KiB
Lua
local XUiUsePackage = XLuaUiManager.Register(XLuaUi, "UiUsePackage")
|
|
|
|
local DefaultIndex = 1
|
|
local SelectItemList = {}
|
|
|
|
local tableInsert = table.insert
|
|
|
|
function XUiUsePackage:OnStart(id, successCallback, challengeCountData, buyAmount)
|
|
self.SuccessCallback = successCallback
|
|
self.BuyAmount = buyAmount
|
|
self.ChallengeCountData = challengeCountData
|
|
self:InitDynamicTable()
|
|
self.Id = id
|
|
self:SetTxtElectricNumPackage(0)
|
|
self:Refresh(id)
|
|
self:AddBtnCallBack()
|
|
if self.Data.TargetId == XDataCenter.ItemManager.ItemId.ActionPoint then
|
|
self.Timers = XScheduleManager.ScheduleForever(function() self:SetRecTime() end, XScheduleManager.SECOND)
|
|
end
|
|
CsXGameEventManager.Instance:Notify(XEventId.EVENT_UIDIALOG_VIEW_ENABLE)
|
|
end
|
|
|
|
|
|
function XUiUsePackage:OnDestroy()
|
|
if self.Timers then
|
|
XScheduleManager.UnSchedule(self.Timers)
|
|
self.Timers = nil
|
|
end
|
|
end
|
|
|
|
function XUiUsePackage:AddBtnCallBack()
|
|
self.BtnCancel.CallBack = function()
|
|
self:OnBtnCancelClick()
|
|
end
|
|
self.BtnConfirm.CallBack = function()
|
|
self:OnBtnConfirmClick()
|
|
end
|
|
self.BtnTanchuangClose.CallBack = function()
|
|
self:OnBtnCloseClick()
|
|
end
|
|
self.BtnElectricExchange.CallBack = function()
|
|
self:OnBtnShowTypeClick()
|
|
end
|
|
end
|
|
-- auto
|
|
function XUiUsePackage:OnBtnShowTypeClick()
|
|
self:Close()
|
|
XLuaUiManager.Open("UiBuyAsset", self.Id, self.SuccessCallback, self.ChallengeCountData, self.BuyAmount)
|
|
end
|
|
|
|
function XUiUsePackage:OnBtnCloseClick()
|
|
self:Close()
|
|
end
|
|
|
|
function XUiUsePackage:OnBtnCancelClick()
|
|
self:Close()
|
|
end
|
|
|
|
function XUiUsePackage:SetPanelType(targetId)
|
|
self.Data = XDataCenter.ItemManager.GetBuyAssetInfo(targetId)
|
|
self.TxtElectricDesc.gameObject:SetActiveEx(false)
|
|
self.TxtElectricNumPackage.gameObject:SetActiveEx(true)
|
|
|
|
if self.Data.TargetId == XDataCenter.ItemManager.ItemId.ActionPoint then
|
|
if not XDataCenter.ItemManager.CheckBatteryIsHave() then
|
|
self.ImgEmpty.gameObject:SetActiveEx(true)
|
|
else
|
|
self.ImgEmpty.gameObject:SetActiveEx(false)
|
|
end
|
|
|
|
self:SetupDynamicTable()
|
|
end
|
|
end
|
|
|
|
function XUiUsePackage:SetRecTime()
|
|
local time = XDataCenter.ItemManager.GetActionPointsRefreshResidueSecond()
|
|
self.TxtRecoverTime.text = CS.XTextManager.GetText("RecActPoint", XUiHelper.GetTime(time, XUiHelper.TimeFormatType.ONLINE_BOSS))
|
|
self.TxtCurrentElectric.text = XDataCenter.ItemManager.GetActionPointsNum() .. "/" .. XDataCenter.ItemManager.GetMaxActionPoints()
|
|
if time == 0 then
|
|
self.TxtRecoverTime.text = ""
|
|
end
|
|
end
|
|
|
|
function XUiUsePackage:OnBtnConfirmClick()
|
|
if not next(SelectItemList) then
|
|
XUiManager.TipError(CS.XTextManager.GetText("UseBattery"))
|
|
return
|
|
elseif self:CheckActionPointOverLimit() then
|
|
XUiManager.TipError(CS.XTextManager.GetText("OverLimitCanNotUse"))
|
|
return
|
|
end
|
|
|
|
local lastUseIndex
|
|
local totalRewardGoodsList = {}
|
|
local useItemFunction = function(useIndex, count, callback)
|
|
local selectItem = self.BatteryDatas[useIndex]
|
|
if selectItem then
|
|
local recycleTime = selectItem.RecycleBatch and selectItem.RecycleBatch.RecycleTime
|
|
XDataCenter.ItemManager.Use(selectItem.Data.Id, recycleTime, count, callback)
|
|
end
|
|
end
|
|
|
|
local addRewardGoodsListCallback = function(rewardGoodsList)
|
|
if rewardGoodsList and rewardGoodsList[1] then
|
|
tableInsert(totalRewardGoodsList, rewardGoodsList[1])
|
|
end
|
|
end
|
|
for index, itemList in pairs(SelectItemList) do
|
|
if itemList.SelectItemCount > 0 then
|
|
if lastUseIndex then
|
|
useItemFunction(lastUseIndex, SelectItemList[lastUseIndex].SelectItemCount, addRewardGoodsListCallback)
|
|
end
|
|
lastUseIndex = index
|
|
end
|
|
end
|
|
|
|
local callback = function(rewardGoodsList)
|
|
self:SetPanelType(self.Id)
|
|
if self.SuccessCallback then
|
|
self.SuccessCallback()
|
|
end
|
|
tableInsert(totalRewardGoodsList, rewardGoodsList[1])
|
|
XUiManager.OpenUiObtain(totalRewardGoodsList)
|
|
end
|
|
useItemFunction(lastUseIndex, SelectItemList[lastUseIndex].SelectItemCount, callback)
|
|
end
|
|
|
|
function XUiUsePackage:Refresh(targetId)
|
|
self:SetPanelType(targetId)
|
|
local active = self.Data ~= nil
|
|
self.PanelInfo.gameObject:SetActiveEx(active)
|
|
self.TxtCurrentElectric.text = XDataCenter.ItemManager.GetActionPointsNum() .. "/" .. XDataCenter.ItemManager.GetMaxActionPoints()
|
|
end
|
|
|
|
function XUiUsePackage:InitDynamicTable()
|
|
self.DynamicTable = XDynamicTableNormal.New(self.ElectricPackageScroll)
|
|
self.DynamicTable:SetProxy(XUiBattery)
|
|
self.DynamicTable:SetDelegate(self)
|
|
self.GridCommonPopUp.gameObject:SetActiveEx(false)
|
|
end
|
|
|
|
function XUiUsePackage:SetupDynamicTable()
|
|
self.BatteryDatas = XDataCenter.ItemManager.GetCurBatterys()
|
|
self:RefreshSelectItemList()
|
|
self.DynamicTable:SetDataSource(self.BatteryDatas)
|
|
self.DynamicTable:ReloadDataSync(1)
|
|
end
|
|
|
|
function XUiUsePackage:OnDynamicTableEvent(event, index, grid)
|
|
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
|
|
grid:UpdateGrid(self.BatteryDatas[index], self, index)
|
|
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_RECYCLE then
|
|
grid:OnRecycle()
|
|
end
|
|
end
|
|
|
|
function XUiUsePackage:CheckActionPointOverLimit()
|
|
local ActionPoint = XDataCenter.ItemManager.GetItem(XDataCenter.ItemManager.ItemId.ActionPoint)
|
|
local totalSelectItemElectricNum = 0
|
|
for index, itemList in pairs(SelectItemList) do
|
|
totalSelectItemElectricNum = totalSelectItemElectricNum + itemList.OnecElectricNum * itemList.SelectItemCount
|
|
end
|
|
if totalSelectItemElectricNum + ActionPoint:GetCount() > ActionPoint.Template.MaxCount then
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
|
|
function XUiUsePackage:SetTxtElectricNumPackage(num)
|
|
if num >= 0 then
|
|
self.TxtElectricNumPackage.text = num
|
|
end
|
|
end
|
|
|
|
function XUiUsePackage:SetSelectItemCount(index, selectItemCount, onecElectricNum)
|
|
self:UpdateSelectItemList(index, selectItemCount, onecElectricNum)
|
|
self:SetTxtElectricNumPackage(tonumber(self.TxtElectricNumPackage.text) + onecElectricNum)
|
|
end
|
|
|
|
function XUiUsePackage:UpdateSelectItemList(index, selectItemCount, onecElectricNum)
|
|
if not SelectItemList[index] then
|
|
SelectItemList[index] = {}
|
|
end
|
|
SelectItemList[index]["SelectItemCount"] = selectItemCount
|
|
SelectItemList[index]["OnecElectricNum"] = onecElectricNum
|
|
end
|
|
|
|
function XUiUsePackage:GetSelectItemCountByIndex(index)
|
|
return SelectItemList[index] and SelectItemList[index]["SelectItemCount"] or 0
|
|
end
|
|
|
|
function XUiUsePackage:GetOnecElectricNumByIndex(index)
|
|
return SelectItemList[index] and SelectItemList[index]["OnecElectricNum"] or 0
|
|
end
|
|
|
|
function XUiUsePackage:SubSelectItemCountByIndex(index)
|
|
local selectItemCount = self:GetSelectItemCountByIndex(index)
|
|
if selectItemCount <= 0 then
|
|
return
|
|
end
|
|
local onecElectricNum = self:GetOnecElectricNumByIndex(index)
|
|
self:UpdateSelectItemList(index, selectItemCount - 1, onecElectricNum)
|
|
self:SetTxtElectricNumPackage(tonumber(self.TxtElectricNumPackage.text) - onecElectricNum)
|
|
if self:GetSelectItemCountByIndex(index) <= 0 then
|
|
SelectItemList[index] = nil
|
|
end
|
|
end
|
|
|
|
function XUiUsePackage:ClearSelectItemCountByIndex(index)
|
|
local onecElectricNum = self:GetOnecElectricNumByIndex(index)
|
|
local selectItemCount = self:GetSelectItemCountByIndex(index)
|
|
self:SetTxtElectricNumPackage(tonumber(self.TxtElectricNumPackage.text) - onecElectricNum * selectItemCount)
|
|
SelectItemList[index] = nil
|
|
end
|
|
|
|
function XUiUsePackage:RefreshSelectItemList()
|
|
self:SetTxtElectricNumPackage(0)
|
|
SelectItemList = {}
|
|
if self.BatteryDatas and self.BatteryDatas[DefaultIndex] then
|
|
local goodsId = 1
|
|
local rewardIndex = 2
|
|
local goodsList = XRewardManager.GetRewardList(self.BatteryDatas[DefaultIndex].Data.Template.SubTypeParams[rewardIndex])
|
|
self:SetSelectItemCount(DefaultIndex, 1, goodsList[goodsId].Count)
|
|
end
|
|
end |