源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

195 lines
6.1 KiB

--喇叭界面
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