--喇叭界面
|
|
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.."<color=#de4141>" .. cur_own .. "</color>"
|
|
else
|
|
self.hasHorn.text = str.."<color=#73AC44FF>" .. cur_own .."</color>"
|
|
end
|
|
else
|
|
self.hasHorn.text = str.."<color=#de4141>0</color>"
|
|
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
|