local GuideQuestGridCtrl = class("GuideQuestGridCtrl", BaseCtrl) local JumpUtil = require("Game.Common.Utils.JumpUtil") local totalLength = 517 local totalHeight = 37 GuideQuestGridCtrl._mapNodeConfig = { btnGrid = {}, txtQuestDesc = {sComponentName = "TMP_Text"}, txtUnComplete = { sComponentName = "TMP_Text", sLanguageId = "Quest_undone" }, txtBtnReceive = { sComponentName = "TMP_Text", sLanguageId = "Quest_Receive" }, txtBtnJump = { sComponentName = "TMP_Text", sLanguageId = "Quest_JumpTo_Text" }, rtProgressFill = { sComponentName = "RectTransform" }, txtProgress = {sComponentName = "TMP_Text"}, btnReceive = { sComponentName = "UIButton", callback = "OnBtnClick_Receive" }, btnJump = { sComponentName = "UIButton", callback = "OnBtnClick_JumpTo" }, goRewardItem = { sCtrlName = "Game.UI.TemplateEx.TemplateItemCtrl", nCount = 2 }, imgRewardEmpty = {nCount = 2}, imgReceived = {}, imgCompleteMask = {}, btnItem = { sComponentName = "UIButton", nCount = 2, callback = "OnBtnClick_Reward" } } GuideQuestGridCtrl._mapEventConfig = {} function GuideQuestGridCtrl:Refresh(mapGuideQuest) if mapGuideQuest == nil then self.gameObject:SetActive(false) return end local mapGuideQuestCfgData = ConfigTable.GetData("TourGuideQuest", mapGuideQuest.nTid) if mapGuideQuestCfgData == nil then self.gameObject:SetActive(false) return end self.mapGuideQuestCfgData = mapGuideQuestCfgData self.mapGuideQuest = mapGuideQuest NovaAPI.SetTMPText(self._mapNode.txtQuestDesc, mapGuideQuestCfgData.Title) self.tbRewardId = { mapGuideQuestCfgData.Reward1, mapGuideQuestCfgData.Reward2 } for i = 1, 2 do self._mapNode.goRewardItem[i].gameObject:SetActive(mapGuideQuestCfgData["Reward" .. i] ~= 0) self._mapNode.imgRewardEmpty[i].gameObject:SetActive(mapGuideQuestCfgData["Reward" .. i] == 0) if mapGuideQuestCfgData["Reward" .. i] ~= 0 then self._mapNode.goRewardItem[i]:SetItem(mapGuideQuestCfgData["Reward" .. i], nil, mapGuideQuestCfgData["RewardQty" .. i], nil, nil, nil, nil, true) end end if mapGuideQuest.nStatus ~= 2 then NovaAPI.SetTMPText(self._mapNode.txtProgress, string.format("%d/%d", mapGuideQuest.nCurProgress, mapGuideQuest.nGoal)) else NovaAPI.SetTMPText(self._mapNode.txtProgress, ConfigTable.GetUIText("Quest_Complete")) end self._mapNode.rtProgressFill.sizeDelta = Vector2(mapGuideQuest.nCurProgress / mapGuideQuest.nGoal * totalLength, totalHeight) self._mapNode.imgReceived:SetActive(mapGuideQuest.nStatus == 2) self._mapNode.imgCompleteMask:SetActive(mapGuideQuest.nStatus == 2) self._mapNode.txtUnComplete.gameObject:SetActive(mapGuideQuest.nStatus == 0 and mapGuideQuestCfgData.JumpTo == 0) self._mapNode.btnJump.gameObject:SetActive(mapGuideQuest.nStatus == 0 and mapGuideQuestCfgData.JumpTo ~= 0) self._mapNode.btnReceive.gameObject:SetActive(mapGuideQuest.nStatus == 1) end function GuideQuestGridCtrl:ShowItemDetail(id, rtIcon) UTILS.ClickItemGridWithTips(id, rtIcon.transform, true, true, false) end function GuideQuestGridCtrl:OnEnable() self._mapNode.btnGrid:SetActive(false) local waitOpen = function() coroutine.yield(CS.UnityEngine.WaitForEndOfFrame()) self._mapNode.btnGrid:SetActive(true) end cs_coroutine.start(waitOpen) end function GuideQuestGridCtrl:OnBtnClick_Receive() PlayerData.Quest:ReceiveTourReward(self.mapGuideQuest.nTid, nil) end function GuideQuestGridCtrl:OnBtnClick_JumpTo() local nJumptoId = self.mapGuideQuestCfgData.JumpTo JumpUtil.JumpTo(nJumptoId) end function GuideQuestGridCtrl:OnBtnClick_Reward(btn, nIdx) if self.tbRewardId[nIdx] ~= 0 then self:ShowItemDetail(self.tbRewardId[nIdx], btn) end end return GuideQuestGridCtrl