local FriendHeadCtrl = class("FriendHeadCtrl", BaseCtrl) FriendHeadCtrl._mapNodeConfig = { txtWindowTitle = { sComponentName = "TMP_Text", sLanguageId = "Friend_SelectHead" }, imgReviewHead = {sComponentName = "Image"}, srHeadList = { sComponentName = "LoopScrollView" }, txtReview = { sComponentName = "TMP_Text", sLanguageId = "Friend_HeadReview" }, btnDetail = { sComponentName = "UIButton", callback = "OnBtnClick_Detail" }, txtSource = { sComponentName = "TMP_Text", sLanguageId = "ItemTips_GetWay" }, imgSourceTip = {}, txtSourceCn = { sComponentName = "TMP_Text", sLanguageId = "ItemTips_GetWay" }, txtSourceTip = {sComponentName = "TMP_Text"}, btnClose = { sComponentName = "UIButton", callback = "OnBtnClick_Cancel" }, btnCancel = { sComponentName = "UIButton", callback = "OnBtnClick_Cancel" }, btnConfirm1 = { sComponentName = "UIButton", callback = "OnBtnClick_Confirm" }, txtBtnConfirm = { sComponentName = "TMP_Text", sLanguageId = "Friend_Btn_Confirm" }, txtBtnCancel = { sComponentName = "TMP_Text", sLanguageId = "Friend_Btn_Cancel" } } FriendHeadCtrl._mapEventConfig = {} function FriendHeadCtrl:Open() self:Refresh() self:PlayInAni() end function FriendHeadCtrl:Refresh() self.bTipsOpen = false self._mapNode.imgSourceTip:SetActive(self.bTipsOpen) self.tbHead = PlayerData.HeadData:GetPlayerHeadList() self.nSelectIndex = 1 self.nCurHead = PlayerData.Base:GetPlayerHeadId() local nHeadNum = #self.tbHead if 0 < nHeadNum then self:SetPngSprite(self._mapNode.imgReviewHead, self.tbHead[1].mapCfg.Icon) self._mapNode.btnDetail.gameObject:SetActive(self.tbHead[1].mapCfg.Desc ~= "") NovaAPI.SetTMPText(self._mapNode.txtSourceTip, self.tbHead[1].mapCfg.Desc) end self._mapNode.srHeadList:Init(nHeadNum, self, self.OnGridRefresh, self.OnGridBtnClick) end function FriendHeadCtrl:OnGridRefresh(goGrid, gridIndex) local nIndex = gridIndex + 1 local mapData = self.tbHead[nIndex] local imgHeadIcon = goGrid.transform:Find("btnGrid/AnimRoot/imgCharIcon"):GetComponent("Image") local imgCur1 = goGrid.transform:Find("btnGrid/AnimRoot/imgCur1").gameObject local imgCur2 = goGrid.transform:Find("btnGrid/AnimRoot/imgCur2").gameObject local txtCur = goGrid.transform:Find("btnGrid/AnimRoot/imgCur2/txtCur"):GetComponent("TMP_Text") local imgSelect = goGrid.transform:Find("btnGrid/AnimRoot/imgSelect").gameObject local imgLockMask = goGrid.transform:Find("btnGrid/AnimRoot/imgLockMask").gameObject local mapCfg = mapData.mapCfg self:SetPngSprite(imgHeadIcon, mapCfg.Icon) NovaAPI.SetTMPText(txtCur, ConfigTable.GetUIText("Friend_CurSelect")) imgSelect:SetActive(nIndex == self.nSelectIndex) imgCur1:SetActive(mapData.nId == self.nCurHead) imgCur2:SetActive(mapData.nId == self.nCurHead) imgLockMask:SetActive(mapData.nUnlock == 0) local redDot = goGrid.transform:Find("btnGrid/AnimRoot/redDot").gameObject RedDotManager.RegisterNode(RedDotDefine.Friend_Head_Item, mapData.nId, redDot, nil, nil, true) end function FriendHeadCtrl:OnGridBtnClick(goGrid, gridIndex) self.bTipsOpen = false self._mapNode.imgSourceTip:SetActive(self.bTipsOpen) local nIndex = gridIndex + 1 local mapData = self.tbHead[nIndex] if self.nSelectIndex == nIndex then return end local imgSelected = goGrid.transform:Find("btnGrid/AnimRoot/imgSelect").gameObject imgSelected:SetActive(true) self:SetPngSprite(self._mapNode.imgReviewHead, mapData.mapCfg.Icon) self._mapNode.btnDetail.gameObject:SetActive(mapData.mapCfg.Desc ~= "") NovaAPI.SetTMPText(self._mapNode.txtSourceTip, mapData.mapCfg.Desc) local sPath = "Viewport/Content/" .. tostring(self.nSelectIndex - 1) .. "/btnGrid/AnimRoot/imgSelect" local goSelectHead = self._mapNode.srHeadList.transform:Find(sPath) if goSelectHead then goSelectHead.gameObject:SetActive(false) end self.nSelectIndex = nIndex RedDotManager.SetValid(RedDotDefine.Friend_Head_Item, mapData.nId, false) end function FriendHeadCtrl:PlayInAni() self.gameObject:SetActive(true) self.ani:Play("t_window_04_t_in") EventManager.Hit(EventId.TemporaryBlockInput, 0.3) end function FriendHeadCtrl:PlayOutAni() self.ani:Play("t_window_04_t_out") self:AddTimer(1, 0.2, "Close", true, true, true) end function FriendHeadCtrl:Close() for _, v in ipairs(self.tbHead) do RedDotManager.SetValid(RedDotDefine.Friend_Head_Item, v.nId, false) end self.gameObject:SetActive(false) end function FriendHeadCtrl:Awake() self.ani = self.gameObject.transform:GetComponent("Animator") self.nSelectIndex = 1 self.nEquipIndex = nil self.tbGridRedDot = {} end function FriendHeadCtrl:OnEnable() end function FriendHeadCtrl:OnDisable() end function FriendHeadCtrl:OnDestroy() end function FriendHeadCtrl:OnBtnClick_Cancel(btn) EventManager.Hit("FriendClosePop") end function FriendHeadCtrl:OnBtnClick_Confirm(btn) if self.tbHead[self.nSelectIndex].nId == self.nCurHead then EventManager.Hit("FriendClosePop") return end local mapData = self.tbHead[self.nSelectIndex] if mapData.nUnlock == 0 then EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("PlayerHead_Lock_Tip")) return end local nHeadIconId = mapData.nId local callback = function() EventManager.Hit("FriendClosePop") EventManager.Hit("FriendRefreshHead") end PlayerData.HeadData:SendPlayerHeadIconSetReq(nHeadIconId, callback) end function FriendHeadCtrl:OnBtnClick_Detail() self.bTipsOpen = not self.bTipsOpen self._mapNode.imgSourceTip.gameObject:SetActive(self.bTipsOpen) end return FriendHeadCtrl