--喇叭界面 HornView = HornView or BaseClass(BaseView) function HornView:__init() self.base_file = "chat" self.layout_file = "hornView" self.layer_name = "UI" self.use_background = true self.click_bg_toClose = true self.change_scene_close = true self.destroy_imm = true self.is_set_zdepth = true self.model = ChatModel:getInstance() self.info = nil self:SetSendFormat(self.model:GetChannelWithId(ChatModel.CHANNEL_HORN)) self.horn_id = 38050001 self.load_callback = function () self.model.horn_view_is_open = true self:LoadSuccess() self:InitInfo() self:InitEvent() end self.destroy_callback = function () self.model.horn_view_is_open = false self:Clear() end end function HornView:Clear() if self.select_faceItem_id then self.model:UnBind(self.select_faceItem_id) self.select_faceItem_id = nil end if self.select_textFaceItem_id then self.model:UnBind(self.select_textFaceItem_id) self.select_textFaceItem_id = nil end if self.update_horn_num_id then GoodsModel:getInstance():UnBind(self.update_horn_num_id) self.update_horn_num_id = nil end if self.horn_event_id then self.model:UnBind(self.horn_event_id) self.horn_event_id = nil end end function HornView:LoadSuccess() self.faceBtn = self:GetChild("faceBtn").gameObject self.addBtn = self:GetChild("addBtn").gameObject self.sendBtn = self:GetChild("sendBtn").gameObject self.cancelBtn = self:GetChild("cancelBtn").gameObject self.hasHorn = self:GetChild("hasHorn"):GetComponent("Text") self.curHorn = self:GetChild("curHorn"):GetComponent("Text") self.input_text = self:GetChild("TextInput"):GetComponent("InputField") end --设置发送的格式 function HornView:SetSendFormat(info) self.send_interval = info.send_interval self.send_limit = info.send_limit self.need_level = info.level end function HornView:InitEvent() local function onBtnClickHandler(target) if target == self.faceBtn then GlobalEventSystem:Fire(EventName.OPEN_INDIVIDUATION_VIEW,self.model.curr_individuation_bar_index) elseif target == self.sendBtn then if self:GetHornNum() > 0 then local vo = RoleManager.Instance:GetMainRoleVo() local mainRole_level = vo.level if mainRole_level < self.need_level then Message.show("等级不足,需要等级达到" .. self.need_level .."级") return end if self.model:CheckCurrentTimeCanSend(ChatModel.CHANNEL_HORN,self.send_interval) then local content = self.input_text.text local _, title_filter = LanguageFilter.FilterMsg(content) if title_filter == false then Message.show("内容有敏感词") return end if content and content ~= "" then self.model:Fire(ChatModel.SEND_MSG,ChatModel.CHANNEL_HORN,content,nil,nil,ChatModel.CHAT_COMMON_TYPE.COMMON) self.input_text.text = "" self:Close() end else Message.show("发送频率过快,请销后再试...") end else Message.show("喇叭数量不够,可在商城购买") end elseif target == self.cancelBtn then self:Close() elseif target == self.addBtn then GlobalEventSystem:Fire(EventName.OPEN_SHOP_VIEW, 2, self.horn_id) end end AddClickEvent(self.addBtn,onBtnClickHandler,2) AddClickEvent(self.faceBtn,onBtnClickHandler,2) AddClickEvent(self.sendBtn,onBtnClickHandler,2) AddClickEvent(self.cancelBtn,onBtnClickHandler,2) local function onSelectFaceItemHandler(item) if item then local str = "<#f_"..(item.index - 1)..">" local newStr = self.input_text.text .. str if utf8len(newStr) > self.send_limit then Message.show(string.format("最多可输入%d个字符", self.send_limit)) else self.input_text.text = newStr end end end self.select_faceItem_id = self.model:Bind(ChatModel.SELECT_FACE_ITEM,onSelectFaceItemHandler) local function onSelectTextFaceItemHandler(item) if item then local newStr = string.gsub(item.vo.one,"#N",RoleManager.Instance:GetMainRoleVo().name) if utf8len(newStr) > self.send_limit then Message.show(string.format("最多可输入%d个字符", self.send_limit)) else self.input_text.text = newStr end end end self.select_textFaceItem_id = self.model:Bind(ChatModel.SELECT_TEXT_FACE_ITEM,onSelectTextFaceItemHandler) local function onUpdateNhornNumHandler() self:SetHornNum() end self.update_horn_num_id = GoodsModel:getInstance():Bind(GoodsModel.CHANGE_BAGLIST,onUpdateNhornNumHandler) local function onUpdateHorn( ) self:SetCurHorn() end self.horn_event_id = ChatModel:getInstance():Bind(ChatModel.UPDATE_HORNTV_NUM, onUpdateHorn) self.input_text.onValueChanged:AddListener(function() local len = utf8len(self.input_text.text) if len > self.send_limit then self.input_text.text = string.sub(self.input_text.text, 1, self.send_limit-len-1) --减去多出来的字符 self.tip_time = self.tip_time or 0 if Status.NowTime-self.tip_time>0.1 then Message.show(string.format("最多可输入%d个字符", self.send_limit)) self.tip_time = Status.NowTime end end end) end ---初始化发送的格式 function HornView:InitInfo() self.info = self.model:GetHornVo() if self.info ~= nil then self.need_level = self.info.level self.send_limit = self.info.send_limit self.send_interval = self.info.send_interval self:SetHornNum() self:SetCurHorn() if self.input_text ~= nil then self.input_text.characterLimit = self.send_limit+1 end end end --设置喇叭的数量 function HornView:SetHornNum() local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(self.horn_id) local cur_own = GoodsModel:getInstance():GetTypeGoodsNum(self.horn_id) local str = "您拥有的喇叭:" if basic then if cur_own == 0 then self.hasHorn.text = str.."" .. cur_own .. "" else self.hasHorn.text = str.."" .. cur_own .."" end else self.hasHorn.text = str.."0" end end function HornView:GetHornNum() return GoodsModel:getInstance():GetTypeGoodsNum(self.horn_id) end --设置喇叭排队数量 function HornView:SetCurHorn() local num = self.model:GetDelayHornNum() self.curHorn.text = string.format("当前排队喇叭:%d", num) end