local UIChannelChatSendSuoNaMsg = UIViewClass() local EventSystem = require('Event/EventSystem') local costSuoNaColor = "34722b" function UIChannelChatSendSuoNaMsg:InitData() UIUtils.SetActive(self.event_Gold2, CTL.WarZone.IsWarZoneOpen()) if UIManager.IsViewOpened(Const_UI_Lua.UIEnum.UIBattleChatMainParentView) then self:SetSortingLayer(true, "UITopmost", 0) end end function UIChannelChatSendSuoNaMsg:OnOpened() self:RegistSystemEvent(EventID.UI_ChannelChat_SendSuoNaMsg,self.NewSuoNaMsg) self:RegistSystemEvent(EventID.UI_ChannelChat_CloseSuoNa,self.CloseUIVIew) self:RegistSystemEvent(EventID.BagItem_Update, self.UpdateCostInfo) self.LimitWordCount = DataSheetManager.ConstData:GetDataByID("ChatHornLimit").IntValue self.obj_InputField.characterLimit = self.LimitWordCount self.costSuoNaLocal = DataSheetManager.ConstData:GetDataByID("HornCost").IntListValue self.costSuoNaWarZone = DataSheetManager.ConstData:GetDataByID("WarFieldHornCost").IntListValue self.costSuoNaCrossServer = DataSheetManager.ConstData:GetDataByID("CrossServerHornCost").IntListValue self:UpdateCostInfo() self:InitData() end function UIChannelChatSendSuoNaMsg:UpdateCostInfo() self:SetCostInfo(self.costSuoNaLocal, self.icon_Cost, self.lab_num) self:SetCostInfo(self.costSuoNaWarZone, self.icon_Cost2, self.lab_num2) self:SetCostInfo(self.costSuoNaCrossServer, self.icon_Cost3, self.lab_num3) end function UIChannelChatSendSuoNaMsg:SetCostInfo(data, icon, lab) UTL.Item.ItemSquareIcon(icon, nil, data[1]) local curNum = UTL.Item.GetItemStockCount(data[1]) if curNum >= data[2] then lab.text = UTL.Color.FormatTextByColor(costSuoNaColor, data[2]) else lab.text = UTL.Color.FormatRedColor(data[2]) end end --以下为按钮点击事件 --发送 function UIChannelChatSendSuoNaMsg:OnClickSend(data, trumtType, channelType) if MDL.ChannelChat.IsJoinChannel(channelType) == false then return end local curNum = UTL.Item.GetItemStockCount(data[1]) if curNum >= data[2] then local msg = self.obj_InputField.text --为了解决因为回车导致喇叭跑马灯播放的时候不能居中的问题 --但是也会把玩家输入的\r\n文本替换 msg = string.gsub(msg, "\r?\n", " ") if msg == nil or #msg <= 0 then CTL.Tips.AddTipsMsg(Const_IDS.IDS_Chat_CantBlank) return end self.obj_InputField.text = nil MDL.ChannelChat.UseTrumtReq(msg, trumtType) self:Close() UIManager.CloseView(Const_UI_Lua.UIEnum.UIChannelChatSendSuoNaMsg) else MDL.PayMall.OpenPayMallPopUp(data[1]) end end function UIChannelChatSendSuoNaMsg:OnValueChanged(comp, value) if comp == self.obj_InputField then self.Text2.text = string.FormatByIdsId(Const_IDS.IDS_Chat_Residue, self.LimitWordCount - UTL.String.GetStrLen(value)) end end function UIChannelChatSendSuoNaMsg:OnBackButtonPressed() self:OnButtonClicked(self.btn_Close) end function UIChannelChatSendSuoNaMsg:OnButtonClicked(obj) if (obj == self.event_Gold) then self:OnClickSend(self.costSuoNaLocal, MDL.ChannelChat.TrumtType.SelfServer, MDL.ChannelChat.ChannelCfgId.World) elseif (obj == self.event_Gold2) then self:OnClickSend(self.costSuoNaWarZone, MDL.ChannelChat.TrumtType.WarZone, MDL.ChannelChat.ChannelCfgId.WarZone) elseif (obj == self.event_Gold3) then self:OnClickSend(self.costSuoNaCrossServer, MDL.ChannelChat.TrumtType.Cross, MDL.ChannelChat.ChannelCfgId.Cross) elseif (obj == self.event_Face) then EventSystem.Dispatch(EventID.UI_ChannelChat_OpenFacePanel) elseif (obj == self.btn_Close) then self:Close() self:CloseView() end end function UIChannelChatSendSuoNaMsg:Close() EventSystem.Dispatch(EventID.UI_ChannelChat_DisplaySendObj, true) end function UIChannelChatSendSuoNaMsg:NewSuoNaMsg(msg) local matchCount = 0 for i in string.gmatch(self.obj_InputField.text..msg, CTL.ChannelChat.GetLocationHyperlinkPattern()) do matchCount = matchCount + 1 end if matchCount >= 2 then CTL.Tips.AddTipsMsg(Const_IDS.IDS_Chat_OneCoordinate) return end local tmp = self.obj_InputField.text .. msg if UTL.String.GetStrLen(tmp) > self.LimitWordCount then CTL.Tips.AddTipsMsg(Const_IDS.IDS_Chat_Limit2) return end self.obj_InputField.text = tmp end function UIChannelChatSendSuoNaMsg:CloseUIVIew() self:CloseView() end return UIChannelChatSendSuoNaMsg