35c8d87e86
EN: 1.4.0.73 CN: 1.4.0.74 JP: 1.4.0.77 KR: 1.4.0.80
202 lines
6.6 KiB
Lua
202 lines
6.6 KiB
Lua
local BaseCtrl = require("GameCore.UI.BaseCtrl")
|
|
local DispatchResultCtrl = class("DispatchResultCtrl", BaseCtrl)
|
|
DispatchResultCtrl._mapNodeConfig = {
|
|
btnCancel = {
|
|
sNodeName = "btnCancel",
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_ClosePanel"
|
|
},
|
|
btnAgain = {
|
|
sNodeName = "btnConfirm1",
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_OnDispatchAgain"
|
|
},
|
|
btnAgainGray = {
|
|
sNodeName = "btnAgainGray",
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_OnDispatchAgainGray"
|
|
},
|
|
btnClose = {
|
|
sNodeName = "btnClose",
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_ClosePanel"
|
|
},
|
|
loopsvRewardList = {
|
|
sNodeName = "svRewardList",
|
|
sComponentName = "LoopScrollView"
|
|
}
|
|
}
|
|
DispatchResultCtrl._mapEventConfig = {
|
|
StoryDialog_DialogEnd = "OnEvent_StoryDialog_DialogEnd"
|
|
}
|
|
function DispatchResultCtrl:Awake()
|
|
end
|
|
function DispatchResultCtrl:OnEnable()
|
|
self.tbGrid = {}
|
|
end
|
|
function DispatchResultCtrl:OnDisable()
|
|
for k, v in pairs(self.tbGrid) do
|
|
for k1, v1 in pairs(v) do
|
|
self:UnbindCtrlByNode(v1)
|
|
end
|
|
end
|
|
end
|
|
function DispatchResultCtrl:OpenPanel(data, performanceData)
|
|
self.bClickAgainClose = false
|
|
self.curReceiveData = data
|
|
self._mapNode.loopsvRewardList:Init(#data, self, self.RefreshRewardItem)
|
|
EventManager.Hit(EventId.TemporaryBlockInput, 2)
|
|
if performanceData ~= nil and 0 < #performanceData then
|
|
self.bHasPerformanceData = true
|
|
self.curPerformanceData = performanceData
|
|
self.curPlayIndex = 1
|
|
EventManager.Hit(EventId.TemporaryBlockInput, 4)
|
|
self:AddTimer(1, 2, function()
|
|
self:OpenAvgPerformance()
|
|
end, true, true, true)
|
|
end
|
|
local _mapAllBuild = {}
|
|
local GetDataCallback = function(tbBuildData, mapAllBuild)
|
|
_mapAllBuild = mapAllBuild
|
|
local canAdd = true
|
|
for k, v in pairs(self.curReceiveData) do
|
|
local mapData = {
|
|
Id = v.Id,
|
|
ProcessTime = v.Time,
|
|
CharIds = v.CharIds,
|
|
BuildId = v.BuildId
|
|
}
|
|
if mapData.BuildId ~= nil and mapData.BuildId > 0 then
|
|
canAdd = _mapAllBuild[mapData.BuildId] ~= nil
|
|
end
|
|
canAdd = canAdd and not PlayerData.Dispatch.IsSpecialDispatch(v.Id)
|
|
if canAdd then
|
|
break
|
|
end
|
|
end
|
|
self._mapNode.btnAgain.gameObject:SetActive(canAdd)
|
|
self._mapNode.btnAgainGray.gameObject:SetActive(not canAdd)
|
|
end
|
|
PlayerData.Build:GetAllBuildBriefData(GetDataCallback)
|
|
end
|
|
function DispatchResultCtrl:RefreshRewardItem(goGrid, gridIndex)
|
|
local index = gridIndex + 1
|
|
local data = self.curReceiveData[index]
|
|
local nInstanceId = goGrid:GetInstanceID()
|
|
local tranRoot = goGrid.transform:Find("btnGrid/AnimRoot")
|
|
local txtName = tranRoot:Find("txtName"):GetComponent("TMP_Text")
|
|
local txtTime = tranRoot:Find("txtTime"):GetComponent("TMP_Text")
|
|
local txtRewardTitle = tranRoot:Find("imgBg/txtRewardTitle"):GetComponent("TMP_Text")
|
|
NovaAPI.SetTMPText(txtName, data.Name)
|
|
NovaAPI.SetTMPText(txtRewardTitle, ConfigTable.GetUIText("Agent_Reward_Title"))
|
|
local txtStr = ""
|
|
if data.Time % 60 == 0 then
|
|
txtStr = math.floor(data.Time / 60) .. ConfigTable.GetUIText("Depot_LeftTime_Hour")
|
|
else
|
|
txtStr = data.Time .. ConfigTable.GetUIText("Depot_LeftTime_Min")
|
|
end
|
|
NovaAPI.SetTMPText(txtTime, txtStr)
|
|
for i = 1, 4 do
|
|
local item = tranRoot:Find("item" .. i)
|
|
if data.Item[i] ~= nil then
|
|
if self.tbGrid[nInstanceId] ~= nil then
|
|
if self.tbGrid[nInstanceId][i] == nil then
|
|
self.tbGrid[nInstanceId][i] = self:BindCtrlByNode(item, "Game.UI.TemplateEx.TemplateItemCtrl")
|
|
end
|
|
else
|
|
self.tbGrid[nInstanceId] = {}
|
|
self.tbGrid[nInstanceId][i] = self:BindCtrlByNode(item, "Game.UI.TemplateEx.TemplateItemCtrl")
|
|
end
|
|
local itemData = ConfigTable.GetData_Item(data.Item[i].nId)
|
|
self.tbGrid[nInstanceId][i]:SetItem(data.Item[i].nId, itemData.Rarity, data.Item[i].nCount)
|
|
local btnItem = item:GetComponent("UIButton")
|
|
btnItem.onClick:RemoveAllListeners()
|
|
btnItem.onClick:AddListener(function()
|
|
local mapData = {
|
|
nTid = data.Item[i].nId,
|
|
bShowDepot = true
|
|
}
|
|
EventManager.Hit(EventId.OpenPanel, PanelId.ItemTips, item, mapData)
|
|
end)
|
|
end
|
|
item.gameObject:SetActive(data.Item[i] ~= nil)
|
|
end
|
|
end
|
|
function DispatchResultCtrl:OpenAvgPerformance()
|
|
if #self.curPerformanceData >= self.curPlayIndex then
|
|
local data = ConfigTable.GetData("AgentSpecialPerformance", self.curPerformanceData[self.curPlayIndex].performanceId)
|
|
EventManager.Hit(EventId.TemporaryBlockInput, 2)
|
|
CS.WwiseAudioManager.Instance:PlaySound("ui_dispatch_message")
|
|
EventManager.Hit("StoryDialog_DialogStart", data.Avg, nil, nil, data.AVGGroupId)
|
|
else
|
|
EventManager.Hit("DispatchAvgEnd")
|
|
self.bHasPerformance = false
|
|
end
|
|
end
|
|
function DispatchResultCtrl:OnBtnClick_ClosePanel()
|
|
if self.bHasPerformance == true then
|
|
return
|
|
end
|
|
EventManager.Hit(EventId.TemporaryBlockInput, 0.2)
|
|
EventManager.Hit(EventId.DispatchCloseResultPanel, self.bClickAgainClose == true)
|
|
end
|
|
function DispatchResultCtrl:OnBtnClick_OnDispatchAgain()
|
|
if self.bHasPerformance == true then
|
|
return
|
|
end
|
|
local AgentList = {}
|
|
local AgentData = {}
|
|
local _mapAllBuild = {}
|
|
local GetDataCallback = function(tbBuildData, mapAllBuild)
|
|
_mapAllBuild = mapAllBuild
|
|
local canAdd = true
|
|
for k, v in pairs(self.curReceiveData) do
|
|
local mapData = {
|
|
Id = v.Id,
|
|
ProcessTime = v.Time,
|
|
CharIds = v.CharIds,
|
|
BuildId = v.BuildId
|
|
}
|
|
if mapData.BuildId ~= nil and mapData.BuildId > 0 then
|
|
canAdd = _mapAllBuild[mapData.BuildId] ~= nil
|
|
end
|
|
canAdd = canAdd and not PlayerData.Dispatch.IsSpecialDispatch(v.Id)
|
|
if canAdd then
|
|
table.insert(AgentList, mapData)
|
|
AgentData[v.Id] = mapData
|
|
else
|
|
break
|
|
end
|
|
end
|
|
local callback = function()
|
|
self.bClickAgainClose = true
|
|
self:OnBtnClick_ClosePanel()
|
|
end
|
|
if canAdd then
|
|
CS.WwiseAudioManager.Instance:PlaySound("ui_dispatch_accept_successful")
|
|
PlayerData.Dispatch.ReqApplyAgent(AgentList, AgentData, callback)
|
|
else
|
|
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Agent_Again_Fail"))
|
|
end
|
|
end
|
|
PlayerData.Build:GetAllBuildBriefData(GetDataCallback)
|
|
end
|
|
function DispatchResultCtrl:OnBtnClick_OnDispatchAgainGray()
|
|
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Agent_Again_Accept_Fail"))
|
|
end
|
|
function DispatchResultCtrl:OnEvent_StoryDialog_DialogEnd()
|
|
local itemData = {}
|
|
table.insert(itemData, {
|
|
id = self.curPerformanceData[self.curPlayIndex].itemId,
|
|
count = self.curPerformanceData[self.curPlayIndex].nCount
|
|
})
|
|
EventManager.Hit(EventId.TemporaryBlockInput, 1)
|
|
self:AddTimer(1, 0.5, function()
|
|
EventManager.Hit(EventId.OpenPanel, PanelId.ReceivePropsTips, itemData, function()
|
|
self.curPlayIndex = self.curPlayIndex + 1
|
|
self:OpenAvgPerformance()
|
|
end)
|
|
end, true, true, true)
|
|
end
|
|
return DispatchResultCtrl
|