local FriendSignatureCtrl = class("FriendSignatureCtrl", BaseCtrl) FriendSignatureCtrl._mapNodeConfig = { txtWindowTitle = { sComponentName = "TMP_Text", sLanguageId = "Friend_SignTitle" }, 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" }, inputSign = { sComponentName = "TMP_InputField", callback = "OnValueChanged_Sign" }, txtSignDesc = { sComponentName = "TMP_Text", sLanguageId = "Friend_ClickInput" }, txtLimit = { sComponentName = "TMP_Text", sLanguageId = "Friend_TextLimit" }, txtCurCount = {sComponentName = "TMP_Text"} } FriendSignatureCtrl._mapEventConfig = {} function FriendSignatureCtrl:Open() self:Refresh() self:PlayInAni() end function FriendSignatureCtrl:Refresh() local sSign = PlayerData.Base:GetPlayerSignature() NovaAPI.SetTMPInputFieldText(self._mapNode.inputSign, sSign) local nCount = string.utf8len(sSign) if nCount > self.nMaxSignature then NovaAPI.SetTMPText(self._mapNode.txtCurCount, string.format("%d/%d", nCount, self.nMaxSignature)) else NovaAPI.SetTMPText(self._mapNode.txtCurCount, string.format("%d/%d", nCount, self.nMaxSignature)) end end function FriendSignatureCtrl:PlayInAni() self.gameObject:SetActive(true) self.ani:Play("t_window_04_t_in") EventManager.Hit(EventId.TemporaryBlockInput, 0.3) end function FriendSignatureCtrl:PlayOutAni() self.ani:Play("t_window_04_t_out") self:AddTimer(1, 0.2, "Close", true, true, true) end function FriendSignatureCtrl:Close() self.gameObject:SetActive(false) end function FriendSignatureCtrl:Awake() self.ani = self.gameObject.transform:GetComponent("Animator") self.nMaxSignature = ConfigTable.GetConfigNumber("FriendSignatureMax") end function FriendSignatureCtrl:OnEnable() end function FriendSignatureCtrl:OnDisable() end function FriendSignatureCtrl:OnDestroy() end function FriendSignatureCtrl:OnBtnClick_Cancel(btn) EventManager.Hit("FriendClosePop") end function FriendSignatureCtrl:OnBtnClick_Confirm(btn) local sSign = NovaAPI.GetTMPInputFieldText(self._mapNode.inputSign) local sOld = PlayerData.Base:GetPlayerSignature() if sSign == sOld then EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Friend_SignSame")) return end if string.utf8len(sSign) > self.nMaxSignature then EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Friend_SignLong")) return end if string.find(sSign, "[<>/']") then EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Friend_SignUnableString")) sSign = string.gsub(sSign, "", "") sSign = string.gsub(sSign, "", "") sSign = string.gsub(sSign, "'", "") NovaAPI.SetTMPInputFieldText(self._mapNode.inputSign, sSign) return end local bInit = NovaAPI.IsDirtyWordsInit() if not bInit then NovaAPI.InitDirtyWords() end if NovaAPI.IsDirtyString(sSign) then EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Friend_SignDirty")) return end local callback = function() EventManager.Hit("FriendClosePop") EventManager.Hit("FriendRefreshSign") end PlayerData.Base:SendPlayerSignatureEditReq(sSign, callback) end function FriendSignatureCtrl:OnValueChanged_Sign(_, sContent) local nCount = string.utf8len(sContent) if nCount > self.nMaxSignature then NovaAPI.SetTMPText(self._mapNode.txtCurCount, string.format("%d/%d", nCount, self.nMaxSignature)) else NovaAPI.SetTMPText(self._mapNode.txtCurCount, string.format("%d/%d", nCount, self.nMaxSignature)) end end return FriendSignatureCtrl