Initial version - 1.2.0.60
EN: 1.2.0.60 CN: 1.2.0.61 JP: 1.2.0.63 KR: 1.2.0.67
This commit is contained in:
@@ -0,0 +1,624 @@
|
||||
local BaseCtrl = require("GameCore.UI.BaseCtrl")
|
||||
local DispatchDetialInfoCtrl = class("DispatchDetialInfoCtrl", BaseCtrl)
|
||||
local SatisifiedColor = Color(0.23137254901960785, 0.3843137254901961, 0.6823529411764706, 1)
|
||||
local UnSatisifiedColor = Color(0.65, 0.65, 0.65, 1)
|
||||
local DispatchData = PlayerData.Dispatch
|
||||
DispatchDetialInfoCtrl._mapNodeConfig = {
|
||||
btnAcceptDispatch = {
|
||||
sNodeName = "btnAcceptDispatch",
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_AcceptDispatch"
|
||||
},
|
||||
goInfo = {sNodeName = "goInfo", sComponentName = "GameObject"},
|
||||
goRequireInfo = {
|
||||
sNodeName = "goRequireInfo",
|
||||
sComponentName = "GameObject"
|
||||
},
|
||||
txtDispathchIntoTitle = {
|
||||
sNodeName = "txtDispatchTitle",
|
||||
sComponentName = "TMP_Text"
|
||||
},
|
||||
txtDispatchInfo = {
|
||||
sNodeName = "txtDispatchInfo",
|
||||
sComponentName = "TMP_Text"
|
||||
},
|
||||
goRequireList = {
|
||||
sNodeName = "goRequireList",
|
||||
sComponentName = "GameObject"
|
||||
},
|
||||
goExtraRequireList = {
|
||||
sNodeName = "goExtraRequireList",
|
||||
sComponentName = "GameObject"
|
||||
},
|
||||
goCharList = {sNodeName = "goCharList", sComponentName = "GameObject"},
|
||||
btnChar = {
|
||||
sNodeName = "btnChar",
|
||||
nCount = 3,
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_ChoseChars"
|
||||
},
|
||||
charHead = {nCount = 3, sNodeName = "char"},
|
||||
togTime = {
|
||||
sNodeName = "togTime",
|
||||
nCount = 4,
|
||||
sComponentName = "Toggle",
|
||||
callback = "OnTog_ChoseTime"
|
||||
},
|
||||
goRequire = {nCount = 3},
|
||||
animRequire = {
|
||||
nCount = 3,
|
||||
sNodeName = "goRequire",
|
||||
sComponentName = "Animator"
|
||||
},
|
||||
txtRequire = {nCount = 3, sComponentName = "TMP_Text"},
|
||||
goExtraRequire = {nCount = 3},
|
||||
animExtraRequire = {
|
||||
nCount = 3,
|
||||
sNodeName = "goExtraRequire",
|
||||
sComponentName = "Animator"
|
||||
},
|
||||
txtExtraRequire = {nCount = 3, sComponentName = "TMP_Text"},
|
||||
txtLevel = {sNodeName = "txtLevel", sComponentName = "TMP_Text"},
|
||||
imgScoreLimit = {
|
||||
sNodeName = "imgScoreLimit",
|
||||
sComponentName = "Image"
|
||||
},
|
||||
btnRecallDispatch = {
|
||||
sNodeName = "btnRecallDispatch",
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_RecallDispatch"
|
||||
},
|
||||
goDispatchTimeGroup = {},
|
||||
TogLabel = {nCount = 4, sComponentName = "TMP_Text"},
|
||||
txtCurRequireTime = {sComponentName = "TMP_Text"},
|
||||
btnReceive = {
|
||||
sNodeName = "btnReceive",
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Receive"
|
||||
},
|
||||
t_common_03 = {},
|
||||
goReward = {nCount = 3, sComponentName = "Transform"},
|
||||
goExtraReward = {sComponentName = "Transform"},
|
||||
goCurRequireTime = {},
|
||||
goRequireDone = {},
|
||||
imgRequireBg = {nCount = 3},
|
||||
imgRequire = {nCount = 3},
|
||||
imgExtraRequireBg = {nCount = 3},
|
||||
imgExtraRequire = {nCount = 3},
|
||||
txtConsignor = {sComponentName = "TMP_Text"},
|
||||
imgListMask = {
|
||||
sComponentName = "DOTweenAnimation"
|
||||
},
|
||||
txtRequireCharTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Agent_Character"
|
||||
},
|
||||
txtTitleLevel = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Agent_Limit_Level"
|
||||
},
|
||||
txtTitleRewardInfo = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Level_Award"
|
||||
},
|
||||
txtRequireTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Agent_Require"
|
||||
},
|
||||
txtExtraRequireTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Agent_Extra_Require"
|
||||
},
|
||||
txtBtnAcceptDispatch = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Agent_Accpect"
|
||||
},
|
||||
txtbtnReceive = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Agent_Receive_Reward"
|
||||
},
|
||||
txtBtnRecallDispatch = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Agent_Recall"
|
||||
},
|
||||
txtRequireDone = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Quest_Complete"
|
||||
},
|
||||
btnOneClick = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_OneClickSelection"
|
||||
},
|
||||
txtBtnOneClickDispatch = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Agent_OneClick_Selection"
|
||||
},
|
||||
txtFullAgent = {sComponentName = "TMP_Text", sLanguageId = "Agent_Full"},
|
||||
goCantAgentRoot = {},
|
||||
txtLockInfo = {sComponentName = "TMP_Text"},
|
||||
goBtnRoot = {},
|
||||
imgGroupBG = {}
|
||||
}
|
||||
DispatchDetialInfoCtrl._mapEventConfig = {}
|
||||
function DispatchDetialInfoCtrl:Awake()
|
||||
self.tbRewardItemGrid = {}
|
||||
self.tbItemCtrl = {}
|
||||
self.selectTogIndex = 1
|
||||
end
|
||||
function DispatchDetialInfoCtrl:OnEnable()
|
||||
end
|
||||
function DispatchDetialInfoCtrl:OnDisable()
|
||||
if self.tbRewardItemGrid then
|
||||
for k, v in pairs(self.tbRewardItemGrid) do
|
||||
self:UnbindCtrlByNode(v)
|
||||
end
|
||||
end
|
||||
self.tbRewardItemGrid = {}
|
||||
for k, v in pairs(self.tbItemCtrl) do
|
||||
self:UnbindCtrlByNode(v)
|
||||
end
|
||||
self.tbItemCtrl = {}
|
||||
if self.bounsItemCtrl ~= nil then
|
||||
self:UnbindCtrlByNode(self.bounsItemCtrl)
|
||||
end
|
||||
self.bounsItemCtrl = nil
|
||||
end
|
||||
function DispatchDetialInfoCtrl:Refresh(dispatchId)
|
||||
self.TempChars = {}
|
||||
self.curDisptachTime = 0
|
||||
self.curDispatchData = ConfigTable.GetData("Agent", dispatchId)
|
||||
if 0 >= self.curDispatchData["Time" .. self.selectTogIndex] then
|
||||
self.selectTogIndex = 1
|
||||
end
|
||||
NovaAPI.SetTMPText(self._mapNode.txtDispathchIntoTitle, self.curDispatchData.Name)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtDispatchInfo, self.curDispatchData.Desc)
|
||||
self._mapNode.t_common_03:SetActive(self.curDispatchData.MemberType == GameEnum.AgentMemberType.CharType and 0 < self.curDispatchData.Level)
|
||||
self._mapNode.imgScoreLimit.gameObject:SetActive(self.curDispatchData.MemberType ~= GameEnum.AgentMemberType.CharType and 0 < self.curDispatchData.BuildScore)
|
||||
if self.curDispatchData.MemberType == GameEnum.AgentMemberType.CharType then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtLevel, self.curDispatchData.Level)
|
||||
else
|
||||
local rank = PlayerData.Build:CalBuildRank(self.curDispatchData.BuildScore)
|
||||
local imagePath = "Icon/BuildRank/BuildRank_" .. rank.Id
|
||||
self:SetPngSprite(self._mapNode.imgScoreLimit, imagePath)
|
||||
end
|
||||
for i = 1, 4 do
|
||||
local dispatchTime = self.curDispatchData["Time" .. i]
|
||||
self._mapNode.togTime[i].gameObject:SetActive(0 < dispatchTime)
|
||||
if 0 < dispatchTime then
|
||||
local txtStr = ""
|
||||
if dispatchTime % 60 == 0 then
|
||||
txtStr = math.floor(dispatchTime / 60) .. ConfigTable.GetUIText("Depot_LeftTime_Hour")
|
||||
else
|
||||
txtStr = dispatchTime .. ConfigTable.GetUIText("Depot_LeftTime_Min")
|
||||
end
|
||||
NovaAPI.SetTMPText(self._mapNode.TogLabel[i], txtStr)
|
||||
end
|
||||
end
|
||||
local AllData = DispatchData.GetAllDispatchingData()
|
||||
local dispatchingData = AllData[dispatchId] ~= nil and AllData[dispatchId] or nil
|
||||
local data
|
||||
if self.curDispatchData.MemberType == GameEnum.AgentMemberType.CharType then
|
||||
data = DispatchData.GetDispatchCharList(self.curDispatchData.Id)
|
||||
self:RefreshCharList(data, dispatchingData ~= nil and dispatchingData.State >= AllEnum.DispatchState.CanAccept)
|
||||
else
|
||||
local Callback = function(buildDatas)
|
||||
data = buildDatas
|
||||
self:RefreshCharList(data)
|
||||
end
|
||||
DispatchData.GetDispatchBuildData(self.curDispatchData.Id, Callback)
|
||||
end
|
||||
local state = DispatchData.GetDispatchState(dispatchId)
|
||||
self:RefreshDispatchState(state)
|
||||
self:OnRefreshReward()
|
||||
NovaAPI.SetToggleIsOn(self._mapNode.togTime[self.selectTogIndex], true)
|
||||
if dispatchingData ~= nil and dispatchingData.State == AllEnum.DispatchState.Accepting then
|
||||
self.curDisptachTime = dispatchingData.Data.StartTime + dispatchingData.Data.ProcessTime * 60 - CS.ClientManager.Instance.serverTimeStamp
|
||||
self.curDisptachingData = dispatchingData
|
||||
end
|
||||
if self._refreshTimeCountDown ~= nil then
|
||||
self._refreshTimeCountDown:Cancel()
|
||||
self._refreshTimeCountDown = nil
|
||||
end
|
||||
if self.curDisptachTime > 0 then
|
||||
local time = timeFormat_HMS(self.curDisptachTime)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtCurRequireTime, orderedFormat(ConfigTable.GetUIText("Agent_Delegate_Now") or "", time))
|
||||
self._refreshTimeCountDown = self:AddTimer(0, 1, "RefreshCountDown", true, true, true)
|
||||
else
|
||||
NovaAPI.SetTMPText(self._mapNode.txtCurRequireTime, ConfigTable.GetUIText("Quest_Complete"))
|
||||
end
|
||||
NovaAPI.SetTMPText(self._mapNode.txtConsignor, ConfigTable.GetUIText("Agent_Consignor_Title") .. self.curDispatchData.Consignor)
|
||||
end
|
||||
function DispatchDetialInfoCtrl:RefreshCharList(Data, bAccepting)
|
||||
self.TagList = {}
|
||||
self._mapNode.goCharList:SetActive(self.curDispatchData.MemberType == GameEnum.AgentMemberType.CharType)
|
||||
self._mapNode.txtRequireCharTitle.gameObject:SetActive(self.curDispatchData.MemberType == GameEnum.AgentMemberType.CharType)
|
||||
if self.curDispatchData.MemberType == GameEnum.AgentMemberType.CharType then
|
||||
local charList = Data
|
||||
self.TempChars = charList
|
||||
for i = 1, self.curDispatchData.MemberLimit do
|
||||
if charList[i] ~= nil then
|
||||
local bNew = self._mapNode.charHead[i].gameObject.activeInHierarchy == false
|
||||
self._mapNode.charHead[i].gameObject:SetActive(true)
|
||||
local mapChar = ConfigTable.GetData_Character(charList[i])
|
||||
local mapCharData = PlayerData.Char:GetCharDataByTid(charList[i])
|
||||
local nCharSkinId = mapCharData.nSkinId
|
||||
local mapCharSkin = ConfigTable.GetData_CharacterSkin(nCharSkinId)
|
||||
local imgHeadIcon = self._mapNode.charHead[i].transform:Find("imgIconBg/imgItemIcon"):GetComponent("Image")
|
||||
self:SetPngSprite(imgHeadIcon, mapCharSkin.Icon .. AllEnum.CharHeadIconSurfix.XXL)
|
||||
local imgItemRare = self._mapNode.charHead[i].transform:Find("imgItemRare"):GetComponent("Image")
|
||||
local nRarity = mapChar.Grade
|
||||
local sFrame = AllEnum.FrameType_New.BoardFrame .. AllEnum.BoardFrameColor[nRarity == GameEnum.characterGrade.R and GameEnum.characterGrade.SR or nRarity]
|
||||
self:SetAtlasSprite(imgItemRare, "12_rare", sFrame, true)
|
||||
local mapCharDescCfg = ConfigTable.GetData("CharacterDes", charList[i])
|
||||
for i = 1, #mapCharDescCfg.Tag do
|
||||
table.insert(self.TagList, mapCharDescCfg.Tag[i])
|
||||
end
|
||||
if self.bChoosing and bNew then
|
||||
NovaAPI.CtrlDotweenAnimation(self._mapNode.btnChar[i].gameObject, 2)
|
||||
NovaAPI.CtrlDotweenAnimation(self._mapNode.btnChar[i].gameObject, 1)
|
||||
end
|
||||
else
|
||||
self._mapNode.charHead[i].gameObject:SetActive(false)
|
||||
end
|
||||
end
|
||||
for i = 1, 3 do
|
||||
if bAccepting then
|
||||
self._mapNode.btnChar[i].gameObject:SetActive(charList[i] ~= nil)
|
||||
else
|
||||
self._mapNode.btnChar[i].gameObject:SetActive(i <= self.curDispatchData.MemberLimit)
|
||||
end
|
||||
end
|
||||
self.TempBuildId = 0
|
||||
else
|
||||
local buildData = Data
|
||||
if Data ~= nil then
|
||||
self.TempBuildId = Data.nBuildId
|
||||
else
|
||||
self.TempBuildId = -1
|
||||
end
|
||||
self.TempChars = {}
|
||||
end
|
||||
self:RefreshRequire(true)
|
||||
self:OnRefreshReward()
|
||||
end
|
||||
function DispatchDetialInfoCtrl:RefreshBuildInfo(buildData)
|
||||
if buildData == nil then
|
||||
self._mapNode.goBuildInfoGrid:SetActive(false)
|
||||
return
|
||||
end
|
||||
self._mapNode.goBuildInfoGrid:SetActive(true)
|
||||
if self.bChoosing then
|
||||
NovaAPI.CtrlDotweenAnimation(self._mapNode.goBuildInfoGrid, 2)
|
||||
NovaAPI.CtrlDotweenAnimation(self._mapNode.goBuildInfoGrid, 1)
|
||||
end
|
||||
local btnGrid = self._mapNode.goBuildInfoGrid.transform:Find("btn_grid"):GetComponent("UIButton")
|
||||
btnGrid.onClick:RemoveAllListeners()
|
||||
btnGrid.onClick:AddListener(function()
|
||||
self:OnBtnClick_AddBuild()
|
||||
end)
|
||||
local transRoot = btnGrid.transform:Find("AnimRoot")
|
||||
local imgRareScore = transRoot:Find("imgRareScore"):GetComponent("Image")
|
||||
local sScore = "Icon/BuildRank/BuildRank_" .. buildData.mapRank.Id
|
||||
self:SetPngSprite(imgRareScore, sScore)
|
||||
local txtBuildName = transRoot:Find("txtBuildName"):GetComponent("TMP_Text")
|
||||
NovaAPI.SetTMPText(txtBuildName, buildData.sName)
|
||||
local tcChar1 = transRoot:Find("imgLeaderBg/tc_char_03")
|
||||
local tcChar2 = transRoot:Find("imgSubBg1/tc_char_03")
|
||||
local tcChar3 = transRoot:Find("imgSubBg2/tc_char_03")
|
||||
local tbChar = {
|
||||
tcChar1,
|
||||
tcChar2,
|
||||
tcChar3
|
||||
}
|
||||
for i = 1, 3 do
|
||||
local charTrans = tbChar[i]
|
||||
local nCharTid = buildData.tbChar[i].nTid
|
||||
local imgCharIcon = charTrans:Find("imgIconBg/imgCharIcon"):GetComponent("Image")
|
||||
local imgCharFrame = charTrans:Find("imgCharFrame"):GetComponent("Image")
|
||||
local nCharSkinId = PlayerData.Char:GetCharSkinId(nCharTid)
|
||||
local mapCharSkin = ConfigTable.GetData_CharacterSkin(nCharSkinId)
|
||||
local mapCharCfg = ConfigTable.GetData_Character(nCharTid)
|
||||
local sFrame = AllEnum.FrameType_New.BoardFrame .. AllEnum.BoardFrameColor[mapCharCfg.Grade]
|
||||
self:SetPngSprite(imgCharIcon, mapCharSkin.Icon .. AllEnum.CharHeadIconSurfix.XXL)
|
||||
self:SetAtlasSprite(imgCharFrame, "12_rare", sFrame)
|
||||
local mapCharDescCfg = ConfigTable.GetData("CharacterDes", nCharTid)
|
||||
for i = 1, #mapCharDescCfg.Tag do
|
||||
table.insert(self.TagList, mapCharDescCfg.Tag[i])
|
||||
end
|
||||
end
|
||||
end
|
||||
function DispatchDetialInfoCtrl:RefreshRequire(bPlayAnim)
|
||||
local requireList = self.curDispatchData.Tags
|
||||
self.hasSatisifiedRequire = true
|
||||
for i = 1, 3 do
|
||||
if i <= #requireList then
|
||||
local requireInfo = ConfigTable.GetData("CharacterTag", requireList[i])
|
||||
if requireInfo then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtRequire[i], requireInfo.Title)
|
||||
local bSatisified = false
|
||||
if table.indexof(self.TagList, requireList[i]) > 0 then
|
||||
NovaAPI.SetTMPColor(self._mapNode.txtRequire[i], SatisifiedColor)
|
||||
bSatisified = true
|
||||
local bNew = self._mapNode.imgRequire[i].activeInHierarchy == false
|
||||
if bPlayAnim and self.bChoosing and bNew then
|
||||
self._mapNode.animRequire[i]:Play("DispatchRequire")
|
||||
end
|
||||
table.removebyvalue(self.TagList, requireList[i])
|
||||
else
|
||||
NovaAPI.SetTMPColor(self._mapNode.txtRequire[i], UnSatisifiedColor)
|
||||
self.hasSatisifiedRequire = false
|
||||
end
|
||||
local delayTime = bSatisified and 0.2 or 0
|
||||
if bSatisified then
|
||||
self:AddTimer(1, delayTime, function()
|
||||
self._mapNode.imgRequire[i]:SetActive(bSatisified)
|
||||
self._mapNode.imgRequireBg[i]:SetActive(not bSatisified)
|
||||
end, true, true, true)
|
||||
else
|
||||
self._mapNode.imgRequire[i]:SetActive(bSatisified)
|
||||
self._mapNode.imgRequireBg[i]:SetActive(not bSatisified)
|
||||
end
|
||||
end
|
||||
end
|
||||
self._mapNode.goRequire[i]:SetActive(i <= #requireList)
|
||||
end
|
||||
local ExtraRequireList = self.curDispatchData.ExtraTags
|
||||
self.hasSatisifiedExtraRequire = true
|
||||
for i = 1, 3 do
|
||||
if i <= #ExtraRequireList then
|
||||
local requireInfo = ConfigTable.GetData("CharacterTag", ExtraRequireList[i])
|
||||
if requireInfo then
|
||||
local bSatisified = false
|
||||
NovaAPI.SetTMPText(self._mapNode.txtExtraRequire[i], requireInfo.Title)
|
||||
if table.indexof(self.TagList, ExtraRequireList[i]) > 0 then
|
||||
NovaAPI.SetTMPColor(self._mapNode.txtExtraRequire[i], SatisifiedColor)
|
||||
bSatisified = true
|
||||
local bNew = self._mapNode.imgExtraRequire[i].activeInHierarchy == false
|
||||
if bPlayAnim and self.bChoosing and bNew then
|
||||
self._mapNode.animExtraRequire[i]:Play("DispatchRequire")
|
||||
end
|
||||
table.removebyvalue(self.TagList, ExtraRequireList[i])
|
||||
else
|
||||
NovaAPI.SetTMPColor(self._mapNode.txtExtraRequire[i], UnSatisifiedColor)
|
||||
self.hasSatisifiedExtraRequire = false
|
||||
end
|
||||
local delayTime = bSatisified and 0.2 or 0
|
||||
if bSatisified then
|
||||
self:AddTimer(1, delayTime, function()
|
||||
self._mapNode.imgExtraRequire[i]:SetActive(bSatisified)
|
||||
self._mapNode.imgExtraRequireBg[i]:SetActive(not bSatisified)
|
||||
end, true, true, true)
|
||||
else
|
||||
self._mapNode.imgExtraRequire[i]:SetActive(bSatisified)
|
||||
self._mapNode.imgExtraRequireBg[i]:SetActive(not bSatisified)
|
||||
end
|
||||
end
|
||||
end
|
||||
self._mapNode.goExtraRequire[i]:SetActive(i <= #ExtraRequireList)
|
||||
end
|
||||
self.hasExtraReuqire = 0 < #ExtraRequireList
|
||||
self._mapNode.goExtraRequireList:SetActive(self.hasExtraReuqire)
|
||||
self._mapNode.goExtraReward.gameObject:SetActive(self.hasExtraReuqire)
|
||||
end
|
||||
function DispatchDetialInfoCtrl:OnRefreshReward()
|
||||
local state = DispatchData.GetDispatchState(self.curDispatchData.Id)
|
||||
if state > AllEnum.DispatchState.CanAccept then
|
||||
local allData = PlayerData.Dispatch.GetAllDispatchingData()
|
||||
local agentData = allData[self.curDispatchData.Id]
|
||||
if agentData ~= nil then
|
||||
for i = 1, 4 do
|
||||
if agentData.Data.ProcessTime == self.curDispatchData["Time" .. i] then
|
||||
self.selectTogIndex = i
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
local rewardData = self.curDispatchData["RewardPreview" .. self.selectTogIndex]
|
||||
local bounsRewardData = self.curDispatchData["BonusPreview" .. self.selectTogIndex]
|
||||
local tbReward = decodeJson(rewardData)
|
||||
local bounsData = decodeJson(bounsRewardData)
|
||||
for i = 1, 3 do
|
||||
local item = self._mapNode.goReward[i]:Find("btnGrid")
|
||||
if tbReward[i] ~= nil then
|
||||
local btnItem = item:GetComponent("UIButton")
|
||||
local goItem = item:Find("AnimRoot/goItem")
|
||||
if self.tbItemCtrl[i] == nil then
|
||||
self.tbItemCtrl[i] = self:BindCtrlByNode(goItem, "Game.UI.TemplateEx.TemplateItemCtrl")
|
||||
end
|
||||
self.tbItemCtrl[i]:SetItem(tbReward[i][1])
|
||||
local txtPreviewCount = goItem:Find("txtPreviewCount"):GetComponent("TMP_Text")
|
||||
local countTxt = ""
|
||||
if tonumber(tbReward[i][2]) >= 1000 or tonumber(tbReward[i][3]) >= 1000 then
|
||||
countTxt = tbReward[i][2] .. "+"
|
||||
elseif tbReward[i][2] == tbReward[i][3] then
|
||||
countTxt = tbReward[i][2]
|
||||
else
|
||||
countTxt = tbReward[i][2] .. "~" .. tbReward[i][3]
|
||||
end
|
||||
NovaAPI.SetTMPText(txtPreviewCount, countTxt)
|
||||
btnItem.onClick:RemoveAllListeners()
|
||||
btnItem.onClick:AddListener(function()
|
||||
local mapData = {
|
||||
nTid = tbReward[i][1],
|
||||
bShowDepot = true
|
||||
}
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.ItemTips, item, mapData)
|
||||
end)
|
||||
end
|
||||
item.gameObject:SetActive(tbReward[i] ~= nil)
|
||||
end
|
||||
local bounsItem = self._mapNode.goExtraReward:Find("btnGrid")
|
||||
if bounsData[1] ~= nil then
|
||||
local btnItem = bounsItem:GetComponent("UIButton")
|
||||
local goItem = bounsItem:Find("AnimRoot/goItem")
|
||||
if self.bounsItemCtrl == nil then
|
||||
self.bounsItemCtrl = self:BindCtrlByNode(goItem, "Game.UI.TemplateEx.TemplateItemCtrl")
|
||||
end
|
||||
self.bounsItemCtrl:SetItem(bounsData[1][1])
|
||||
local txtPreviewCount = goItem:Find("txtPreviewCount"):GetComponent("TMP_Text")
|
||||
local countTxt = ""
|
||||
if 1000 <= tonumber(bounsData[1][2]) or 1000 <= tonumber(bounsData[1][3]) then
|
||||
countTxt = bounsData[1][2] .. "+"
|
||||
elseif bounsData[1][2] == bounsData[1][3] then
|
||||
countTxt = bounsData[1][2]
|
||||
else
|
||||
countTxt = bounsData[1][2] .. "~" .. bounsData[1][3]
|
||||
end
|
||||
NovaAPI.SetTMPText(txtPreviewCount, countTxt)
|
||||
local goUnExtraReward = goItem:Find("goExtra/goUnsatisfied")
|
||||
local goExtraReward = goItem:Find("goExtra/imgSatisfied")
|
||||
goExtraReward.gameObject:SetActive(self.hasSatisifiedExtraRequire)
|
||||
goUnExtraReward.gameObject:SetActive(not self.hasSatisifiedExtraRequire)
|
||||
btnItem.onClick:RemoveAllListeners()
|
||||
btnItem.onClick:AddListener(function()
|
||||
local mapData = {
|
||||
nTid = bounsData[1][1],
|
||||
bShowDepot = true
|
||||
}
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.ItemTips, bounsItem, mapData)
|
||||
end)
|
||||
end
|
||||
bounsItem.gameObject:SetActive(bounsData[1] ~= nil)
|
||||
end
|
||||
function DispatchDetialInfoCtrl:RefreshDispatchState(state)
|
||||
self.curState = state
|
||||
local bUnlock, sLockInfo = DispatchData.CheckDispatchItemUnlock(self.curDispatchData.Id)
|
||||
local bMaxAccept = DispatchData.GetAccpectingDispatchCount() >= tonumber(ConfigTable.GetConfigValue("AgentMaximumQuantity"))
|
||||
local bShowCantAccpet = (not bUnlock or bMaxAccept) and self.curState == AllEnum.DispatchState.CanAccept
|
||||
self._mapNode.goBtnRoot:SetActive(not bShowCantAccpet)
|
||||
self._mapNode.goCantAgentRoot:SetActive(bShowCantAccpet)
|
||||
self._mapNode.imgGroupBG:SetActive(not bShowCantAccpet)
|
||||
self._mapNode.btnAcceptDispatch.gameObject:SetActive(self.curState == AllEnum.DispatchState.CanAccept)
|
||||
self._mapNode.btnOneClick.gameObject:SetActive(self.curState == AllEnum.DispatchState.CanAccept)
|
||||
self._mapNode.btnRecallDispatch.gameObject:SetActive(self.curState == AllEnum.DispatchState.Accepting)
|
||||
self._mapNode.btnReceive.gameObject:SetActive(self.curState == AllEnum.DispatchState.Complete)
|
||||
self._mapNode.goDispatchTimeGroup:SetActive(self.curState == AllEnum.DispatchState.CanAccept and not bShowCantAccpet)
|
||||
self._mapNode.goCurRequireTime.gameObject:SetActive(self.curState == AllEnum.DispatchState.Accepting and not bShowCantAccpet)
|
||||
self._mapNode.goRequireDone.gameObject:SetActive(self.curState == AllEnum.DispatchState.Complete and not bShowCantAccpet)
|
||||
if bShowCantAccpet then
|
||||
if not bUnlock then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtLockInfo, sLockInfo)
|
||||
end
|
||||
self._mapNode.txtLockInfo.gameObject:SetActive(not bUnlock)
|
||||
self._mapNode.txtFullAgent.gameObject:SetActive(bUnlock and bMaxAccept)
|
||||
end
|
||||
end
|
||||
function DispatchDetialInfoCtrl:RefreshCountDown()
|
||||
if self.curDisptachingData == nil then
|
||||
return
|
||||
end
|
||||
self.curDisptachTime = self.curDisptachingData.Data.StartTime + self.curDisptachingData.Data.ProcessTime * 60 - CS.ClientManager.Instance.serverTimeStamp
|
||||
local time = timeFormat_HMS(self.curDisptachTime)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtCurRequireTime, orderedFormat(ConfigTable.GetUIText("Agent_Delegate_Now") or "", time))
|
||||
if self.curDisptachTime <= 0 then
|
||||
if self._refreshTimeCountDown ~= nil then
|
||||
self._refreshTimeCountDown:Cancel()
|
||||
self._refreshTimeCountDown = nil
|
||||
end
|
||||
self:RefreshDispatchState(AllEnum.DispatchState.Complete)
|
||||
end
|
||||
self.curDisptachTime = self.curDisptachTime - 1
|
||||
end
|
||||
function DispatchDetialInfoCtrl:OnCloseSelectPanel()
|
||||
self._mapNode.imgListMask:DORewind()
|
||||
self._mapNode.imgListMask.gameObject:SetActive(false)
|
||||
self.bChoosing = false
|
||||
end
|
||||
function DispatchDetialInfoCtrl:OnBtnClick_AcceptDispatch()
|
||||
if self.hasSatisifiedRequire and (self.TempBuildId ~= nil and self.TempBuildId > 0 or self.TempChars ~= nil and 0 < #self.TempChars) then
|
||||
local callback = function(...)
|
||||
self.curDisptachTime = self.curDispatchData["Time" .. self.selectTogIndex] * 60
|
||||
if self._refreshTimeCountDown ~= nil then
|
||||
self._refreshTimeCountDown:Cancel()
|
||||
self._refreshTimeCountDown = nil
|
||||
end
|
||||
self.TempChars = {}
|
||||
self.TempBuildId = 0
|
||||
self:RefreshDispatchState(AllEnum.DispatchState.Accepting)
|
||||
self._refreshTimeCountDown = self:AddTimer(0, 1, "RefreshCountDown", true, true, true)
|
||||
end
|
||||
local mapData = {
|
||||
Id = self.curDispatchData.Id,
|
||||
ProcessTime = self.curDispatchData["Time" .. self.selectTogIndex],
|
||||
CharIds = self.TempChars,
|
||||
BuildId = self.TempBuildId
|
||||
}
|
||||
local AgentData = {}
|
||||
AgentData[self.curDispatchData.Id] = mapData
|
||||
if not self.hasSatisifiedExtraRequire then
|
||||
local confirmCallback = function()
|
||||
CS.WwiseAudioManager.Instance:PlaySound("ui_dispatch_accept_successful")
|
||||
DispatchData.ReqApplyAgent({mapData}, AgentData, callback)
|
||||
end
|
||||
local msg = {
|
||||
nType = AllEnum.MessageBox.Confirm,
|
||||
sContent = ConfigTable.GetUIText("Agent_Extra_Comfirm"),
|
||||
callbackConfirm = confirmCallback
|
||||
}
|
||||
EventManager.Hit(EventId.OpenMessageBox, msg)
|
||||
else
|
||||
CS.WwiseAudioManager.Instance:PlaySound("ui_dispatch_accept_successful")
|
||||
DispatchData.ReqApplyAgent({mapData}, AgentData, callback)
|
||||
end
|
||||
else
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Agent_Insufficient_Condition"))
|
||||
end
|
||||
end
|
||||
function DispatchDetialInfoCtrl:OnBtnClick_RecallDispatch()
|
||||
local confirmCallback = function()
|
||||
if self.curDisptachTime <= 0 then
|
||||
return
|
||||
end
|
||||
local AllData = DispatchData.GetAllDispatchingData()
|
||||
local dispatchingData = AllData[self.curDispatchData.Id] ~= nil and AllData[self.curDispatchData.Id] or nil
|
||||
local nTime = CS.ClientManager.Instance.serverTimeStamp
|
||||
local callback = function()
|
||||
if self.curDispatchData.RefreshType == GameEnum.AgentRefreshType.Daily and DispatchData.IsSameDay(dispatchingData.Data.StartTime, nTime, 5) then
|
||||
self:RefreshDispatchState(AllEnum.DispatchState.CanAccept)
|
||||
end
|
||||
if self.curDispatchData.RefreshType == GameEnum.AgentRefreshType.NonRefresh and DispatchData.IsSameWeek(dispatchingData.Data.StartTime, nTime, 5) then
|
||||
self:RefreshDispatchState(AllEnum.DispatchState.CanAccept)
|
||||
end
|
||||
end
|
||||
DispatchData.ReqGiveUpAgent(self.curDispatchData.Id, callback)
|
||||
end
|
||||
local msg = {
|
||||
nType = AllEnum.MessageBox.Confirm,
|
||||
sContent = ConfigTable.GetUIText("Agent_GiveUp_Confirm"),
|
||||
callbackConfirm = confirmCallback
|
||||
}
|
||||
EventManager.Hit(EventId.OpenMessageBox, msg)
|
||||
end
|
||||
function DispatchDetialInfoCtrl:OnBtnClick_AddBuild()
|
||||
if self.curState == AllEnum.DispatchState.CanAccept then
|
||||
self._mapNode.imgListMask.gameObject:SetActive(true)
|
||||
self._mapNode.imgListMask:DOPlay()
|
||||
EventManager.Hit(EventId.DispatchOpenBuildList, self.curDispatchData.Id)
|
||||
self.bChoosing = true
|
||||
end
|
||||
end
|
||||
function DispatchDetialInfoCtrl:OnBtnClick_ChoseChars()
|
||||
if self.curState == AllEnum.DispatchState.CanAccept then
|
||||
self._mapNode.imgListMask.gameObject:SetActive(true)
|
||||
self._mapNode.imgListMask:DOPlay()
|
||||
EventManager.Hit(EventId.DispatchOpenCharList, self.curDispatchData.Id)
|
||||
self.bChoosing = true
|
||||
end
|
||||
end
|
||||
function DispatchDetialInfoCtrl:OnBtnClick_Receive()
|
||||
local callback = function()
|
||||
self:RefreshDispatchState(AllEnum.DispatchState.CanAccept)
|
||||
end
|
||||
DispatchData.ReqReceiveReward(self.curDispatchData.Id, callback)
|
||||
end
|
||||
function DispatchDetialInfoCtrl:OnBtnClick_OneClickSelection()
|
||||
EventManager.Hit("Dispatch_OneClickSelection", self.curDispatchData.MemberType == GameEnum.AgentMemberType.BuildType)
|
||||
end
|
||||
function DispatchDetialInfoCtrl:OnTog_ChoseTime(tog, nIndex, bIsOn)
|
||||
if bIsOn then
|
||||
self.selectTogIndex = nIndex
|
||||
self:OnRefreshReward()
|
||||
end
|
||||
end
|
||||
return DispatchDetialInfoCtrl
|
||||
Reference in New Issue
Block a user