local CookieQuestCellCtrl = class("CookieQuestCellCtrl", BaseCtrl) local JumpUtil = require("Game.Common.Utils.JumpUtil") CookieQuestCellCtrl._mapNodeConfig = { txtQuestName = {sComponentName = "TMP_Text"}, imgTrophy = {sComponentName = "Image"}, btnReceive = { sComponentName = "UIButton", callback = "OnBtnClick_Receive" }, txtBtnReceive = { sComponentName = "TMP_Text", sLanguageId = "Quest_Receive_Btn_Text" }, btnJumpTo = { sComponentName = "UIButton", callback = "OnBtnClick_JumpTo" }, txtBtnJumpTo = { sComponentName = "TMP_Text", sLanguageId = "Quest_JumpTo_Text" }, goReceived = {}, goBtns = {}, imgBarFill = { sComponentName = "RectTransform" }, txtProgress = {sComponentName = "TMP_Text"}, btnRewardItem = {nCount = 2, sComponentName = "UIButton"}, item = { nCount = 2, sCtrlName = "Game.UI.TemplateEx.TemplateItemCtrl" }, btnItem = { sNodeName = "btnRewardItem", nCount = 2, sComponentName = "UIButton", callback = "OnBtnClick_RewardItem" } } local tbTrophySprite = { "UI/big_sprites/bg_activity_cookie_task_01", "UI/big_sprites/bg_activity_cookie_task_02", "UI/big_sprites/bg_activity_cookie_task_03" } local nProgressBarLength = 562 local nProgressBarMin = 48 local nProgressBarHeight = 37 function CookieQuestCellCtrl:Init(questData, nActId) self.questData = questData if self.questData == nil then return end self.actData = PlayerData.Activity:GetActivityDataById(nActId) self.mapStatus = self.actData:GetQuestDataById(questData.Id) if self.mapStatus == nil then local tbJson = decodeJson(questData.CompleteCondParams) self.mapStatus = { nId = questData.Id, nStatus = AllEnum.ActQuestStatus.UnComplete, progress = { Cur = 0, Max = tbJson[#tbJson] } } end self.tbReward = {} for i = 1, 2 do local nRewardId = self.questData["Reward" .. i .. "Tid"] local nRewardQty = self.questData["Reward" .. i .. "Qty"] if nRewardId ~= nil and 0 < nRewardId and nRewardQty ~= nil and 0 < nRewardQty then table.insert(self.tbReward, {nRewardId, nRewardQty}) self._mapNode.btnRewardItem[i].gameObject:SetActive(true) else self._mapNode.btnRewardItem[i].gameObject:SetActive(false) end end self.tbBtn = self._mapNode.btnRewardItem for k, v in pairs(self.tbReward) do self._mapNode.item[k]:SetItem(v[1], nil, v[2]) end NovaAPI.SetTMPText(self._mapNode.txtQuestName, self.questData.Desc) self:SetPngSprite(self._mapNode.imgTrophy, tbTrophySprite[self.questData.Rarity] or tbTrophySprite[1]) self:UpdateCellStatus() end function CookieQuestCellCtrl:Awake(...) end function CookieQuestCellCtrl:OnDisable() end function CookieQuestCellCtrl:UpdateCellStatus() self._mapNode.btnReceive.gameObject:SetActive(false) self._mapNode.btnJumpTo.gameObject:SetActive(false) self._mapNode.goReceived:SetActive(false) NovaAPI.SetTMPText(self._mapNode.txtProgress, orderedFormat("{0}/{1}", self.mapStatus.progress.Cur, self.mapStatus.progress.Max)) if self.mapStatus.nStatus == AllEnum.ActQuestStatus.Complete then self._mapNode.btnReceive.gameObject:SetActive(true) self._mapNode.imgBarFill.sizeDelta = Vector2(nProgressBarLength, nProgressBarHeight) elseif self.mapStatus.nStatus == AllEnum.ActQuestStatus.UnComplete then local nLength = self.mapStatus.progress.Cur / self.mapStatus.progress.Max * nProgressBarLength if nLength < nProgressBarMin then if 0 < nLength then nLength = nProgressBarMin else nLength = 0 end end self._mapNode.imgBarFill.sizeDelta = Vector2(nLength, nProgressBarHeight) if self.questData.JumpTo ~= nil then self.nJumpTo = self.questData.JumpTo self._mapNode.btnJumpTo.gameObject:SetActive(true) end elseif self.mapStatus.nStatus == AllEnum.ActQuestStatus.Received then self._mapNode.goReceived:SetActive(true) self._mapNode.imgBarFill.sizeDelta = Vector2(nProgressBarLength, nProgressBarHeight) end end function CookieQuestCellCtrl:OnBtnClick_RewardItem(btn, nIndex) local nRewardId if self.tbReward ~= nil and self.tbReward[nIndex] ~= nil then nRewardId = self.tbReward[nIndex][1] end if nRewardId ~= nil then UTILS.ClickItemGridWithTips(nRewardId, btn.transform, true, true, false) end end function CookieQuestCellCtrl:OnBtnClick_Receive() self.actData:SendQuestReceive(self.mapStatus.nId) end function CookieQuestCellCtrl:OnBtnClick_JumpTo() if nil ~= self.nJumpTo and 0 ~= self.nJumpTo then JumpUtil.JumpTo(self.nJumpTo) end end return CookieQuestCellCtrl