local FriendCarteCtrl = class("FriendCarteCtrl", BaseCtrl) FriendCarteCtrl._mapNodeConfig = { blur = { sNodeName = "t_fullscreen_blur_blue" }, aniBlur = { sNodeName = "t_fullscreen_blur_blue", sComponentName = "Animator" }, btnBlur = { sNodeName = "snapshot", sComponentName = "Button", callback = "OnBtnClick_Close" }, txtWindowTitle = { sComponentName = "TMP_Text", sLanguageId = "Friend_Title_Carte" }, btnClose = { sComponentName = "UIButton", callback = "OnBtnClick_Close" }, goRoot = { sNodeName = "---Carte---" }, aniRoot = { sNodeName = "---Carte---", sComponentName = "Animator" }, imgPlayerHead = {sComponentName = "Image"}, txtWorldClass = {sComponentName = "TMP_Text"}, txtRankCn = { sComponentName = "TMP_Text", sLanguageId = "MainView_RANK" }, txtName = {sComponentName = "TMP_Text"}, txtFriendTitle = {sComponentName = "TMP_Text"}, txtFriendTitleName = { sComponentName = "TMP_Text", sLanguageId = "Friend_TitleTag" }, txtUIDCn = {sComponentName = "TMP_Text", sLanguageId = "Friend_UID"}, txtUID = {sComponentName = "TMP_Text"}, txtSign = {sComponentName = "TMP_Text"}, txtTitleChar = { sComponentName = "TMP_Text", sLanguageId = "Friend_CoreMember" }, goChar = { nCount = 3, sCtrlName = "Game.UI.TemplateEx.TemplateCharCtrl" }, imgEmpty = {nCount = 3}, btnAdd = { sComponentName = "UIButton", callback = "OnBtnClick_Add" }, txtBtnAdd = { sComponentName = "TMP_Text", sLanguageId = "Friend_Btn_Add" }, btnDel = { sComponentName = "UIButton", callback = "OnBtnClick_Del" }, txtBtnDel = { sComponentName = "TMP_Text", sLanguageId = "Friend_Btn_Del" }, btnDone = { sComponentName = "UIButton", callback = "OnBtnClick_Done" }, txtBtnDone = { sComponentName = "TMP_Text", sLanguageId = "Friend_HasRequested" }, goHonorTitle = { nCount = 3, sCtrlName = "Game.UI.FriendEx.HonorTitleCtrl" } } FriendCarteCtrl._mapEventConfig = {} function FriendCarteCtrl:Open() self:RefreshButton() self:RefreshInfo() self:RefreshMember() self:RefreshHonorTitle() self:PlayInAni() end function FriendCarteCtrl:RefreshButton() local bFriend = PlayerData.Friend:JudgeIsFriend(self.mapFriend.nUId) if bFriend then self._mapNode.btnAdd.gameObject:SetActive(false) self._mapNode.btnDone.gameObject:SetActive(false) self._mapNode.btnDel.gameObject:SetActive(true) else self._mapNode.btnAdd.gameObject:SetActive(self.bDone == false and self.nType == 3 or self.nType == 2) self._mapNode.btnDone.gameObject:SetActive(self.bDone == true) self._mapNode.btnDel.gameObject:SetActive(false) end end function FriendCarteCtrl:RefreshInfo() local mapCfg = ConfigTable.GetData("PlayerHead", self.mapFriend.nHeadIconId) if mapCfg then self:SetPngSprite(self._mapNode.imgPlayerHead, mapCfg.Icon) end NovaAPI.SetTMPText(self._mapNode.txtWorldClass, self.mapFriend.nWorldClass) NovaAPI.SetTMPText(self._mapNode.txtName, self.mapFriend.sName) local sTitle = orderedFormat(ConfigTable.GetUIText("FriendPanel_PlayerTitle") or "", ConfigTable.GetData("Title", self.mapFriend.nTitlePrefix).Desc, ConfigTable.GetData("Title", self.mapFriend.nTitleSuffix).Desc) NovaAPI.SetTMPText(self._mapNode.txtFriendTitle, self.mapFriend.nTitlePrefix == 0 and "" or sTitle) NovaAPI.SetTMPText(self._mapNode.txtUID, self.mapFriend.nUId) NovaAPI.SetTMPText(self._mapNode.txtSign, self.mapFriend.sSign == "" and ConfigTable.GetUIText("Friend_DefaultSign") or self.mapFriend.sSign) end function FriendCarteCtrl:RefreshMember() local tbChar = {} if self.mapFriend.tbChar then for i = 1, 3 do if not self.mapFriend.tbChar[i] then tbChar[i] = {CharId = 0} else tbChar[i] = self.mapFriend.tbChar[i] end end end for i = 1, 3 do self._mapNode.imgEmpty[i]:SetActive(tbChar[i].CharId == 0) self._mapNode.goChar[i].gameObject:SetActive(tbChar[i].CharId ~= 0) if tbChar[i].CharId ~= 0 then self._mapNode.goChar[i]:SetSpecificChar(tbChar[i].CharId, tbChar[i].Level, tbChar[i].Skin) end end end function FriendCarteCtrl:RefreshHonorTitle() for i = 1, 3 do local tbHonorTitle = self.mapFriend.tbHonorTitle or {} if tbHonorTitle[i] ~= nil and tbHonorTitle[i].Id > 0 then local honorData = ConfigTable.GetData("Honor", tbHonorTitle[i].Id) self._mapNode.goHonorTitle[i]:SetHonotTitle(honorData.Id, i == 1, tbHonorTitle[i].AffinityLV) end self._mapNode.goHonorTitle[i].gameObject:SetActive(tbHonorTitle[i] ~= nil and tbHonorTitle[i].Id > 0) end end function FriendCarteCtrl:PlayInAni() self._mapNode.goRoot:SetActive(true) self._mapNode.aniRoot:Play("t_window_04_t_in") EventManager.Hit(EventId.TemporaryBlockInput, 0.3) end function FriendCarteCtrl:PlayOutAni() EventManager.Hit(EventId.TemporaryBlockInput, 0.2) self._mapNode.aniRoot:Play("t_window_04_t_out") self:AddTimer(1, 0.2, function() self._mapNode.goRoot:SetActive(false) end, true, true, true) end function FriendCarteCtrl:Awake() local tbParam = self:GetPanelParam() if type(tbParam) == "table" then self.mapFriend = tbParam[1] self.nType = tbParam[2] self.bDone = tbParam[3] self.callback = tbParam[4] end end function FriendCarteCtrl:OnEnable() self._mapNode.blur:SetActive(true) self:Open() end function FriendCarteCtrl:OnDisable() end function FriendCarteCtrl:OnDestroy() end function FriendCarteCtrl:OnBtnClick_Add() local nFriendNum = PlayerData.Friend:GetFriendListNum() if nFriendNum == ConfigTable.GetConfigNumber("FriendMax") then EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("FRIEND_00")) return end if self.nType == 2 then local callback = function() self:OnBtnClick_Close() EventManager.Hit("FriendRefreshRequest") end PlayerData.Friend:SendFriendAddAgreeReq(self.mapFriend.nUId, callback) elseif self.nType == 3 then local callback = function() self.callback() self._mapNode.btnAdd.gameObject:SetActive(false) self._mapNode.btnDone.gameObject:SetActive(true) EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("FRIEND_01")) end PlayerData.Friend:SendAddFriendReq(self.mapFriend.nUId, callback) end end function FriendCarteCtrl:OnBtnClick_Del() local confirmCallback = function() local callback = function() self:OnBtnClick_Close() EventManager.Hit("FriendRefreshList") end PlayerData.Friend:SendFriendDeleteReq(self.mapFriend.nUId, callback) end local msg = { nType = AllEnum.MessageBox.Confirm, sContent = ConfigTable.GetUIText("Friend_DeleteHint"), callbackConfirm = confirmCallback } EventManager.Hit(EventId.OpenMessageBox, msg) end function FriendCarteCtrl:OnBtnClick_Done() EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Friend_GraySend")) end function FriendCarteCtrl:OnBtnClick_Close() self:PlayOutAni() self._mapNode.aniBlur:SetTrigger("tOut") self:AddTimer(1, 0.2, function() self._mapNode.blur:SetActive(false) EventManager.Hit(EventId.ClosePanel, PanelId.FriendCarte) end, true, true, true) EventManager.Hit(EventId.TemporaryBlockInput, 0.2) end return FriendCarteCtrl