源战役客户端
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

194 rader
6.1 KiB

1 månad sedan
  1. --喇叭界面
  2. HornView = HornView or BaseClass(BaseView)
  3. function HornView:__init()
  4. self.base_file = "chat"
  5. self.layout_file = "hornView"
  6. self.layer_name = "UI"
  7. self.use_background = true
  8. self.click_bg_toClose = true
  9. self.change_scene_close = true
  10. self.destroy_imm = true
  11. self.is_set_zdepth = true
  12. self.model = ChatModel:getInstance()
  13. self.info = nil
  14. self:SetSendFormat(self.model:GetChannelWithId(ChatModel.CHANNEL_HORN))
  15. self.horn_id = 38050001
  16. self.load_callback = function ()
  17. self.model.horn_view_is_open = true
  18. self:LoadSuccess()
  19. self:InitInfo()
  20. self:InitEvent()
  21. end
  22. self.destroy_callback = function ()
  23. self.model.horn_view_is_open = false
  24. self:Clear()
  25. end
  26. end
  27. function HornView:Clear()
  28. if self.select_faceItem_id then
  29. self.model:UnBind(self.select_faceItem_id)
  30. self.select_faceItem_id = nil
  31. end
  32. if self.select_textFaceItem_id then
  33. self.model:UnBind(self.select_textFaceItem_id)
  34. self.select_textFaceItem_id = nil
  35. end
  36. if self.update_horn_num_id then
  37. GoodsModel:getInstance():UnBind(self.update_horn_num_id)
  38. self.update_horn_num_id = nil
  39. end
  40. if self.horn_event_id then
  41. self.model:UnBind(self.horn_event_id)
  42. self.horn_event_id = nil
  43. end
  44. end
  45. function HornView:LoadSuccess()
  46. self.faceBtn = self:GetChild("faceBtn").gameObject
  47. self.addBtn = self:GetChild("addBtn").gameObject
  48. self.sendBtn = self:GetChild("sendBtn").gameObject
  49. self.cancelBtn = self:GetChild("cancelBtn").gameObject
  50. self.hasHorn = self:GetChild("hasHorn"):GetComponent("Text")
  51. self.curHorn = self:GetChild("curHorn"):GetComponent("Text")
  52. self.input_text = self:GetChild("TextInput"):GetComponent("InputField")
  53. end
  54. --设置发送的格式
  55. function HornView:SetSendFormat(info)
  56. self.send_interval = info.send_interval
  57. self.send_limit = info.send_limit
  58. self.need_level = info.level
  59. end
  60. function HornView:InitEvent()
  61. local function onBtnClickHandler(target)
  62. if target == self.faceBtn then
  63. GlobalEventSystem:Fire(EventName.OPEN_INDIVIDUATION_VIEW,self.model.curr_individuation_bar_index)
  64. elseif target == self.sendBtn then
  65. if self:GetHornNum() > 0 then
  66. local vo = RoleManager.Instance:GetMainRoleVo()
  67. local mainRole_level = vo.level
  68. if mainRole_level < self.need_level then
  69. Message.show("等级不足,需要等级达到" .. self.need_level .."")
  70. return
  71. end
  72. if self.model:CheckCurrentTimeCanSend(ChatModel.CHANNEL_HORN,self.send_interval) then
  73. local content = self.input_text.text
  74. local _, title_filter = LanguageFilter.FilterMsg(content)
  75. if title_filter == false then
  76. Message.show("内容有敏感词")
  77. return
  78. end
  79. if content and content ~= "" then
  80. self.model:Fire(ChatModel.SEND_MSG,ChatModel.CHANNEL_HORN,content,nil,nil,ChatModel.CHAT_COMMON_TYPE.COMMON)
  81. self.input_text.text = ""
  82. self:Close()
  83. end
  84. else
  85. Message.show("发送频率过快,请销后再试...")
  86. end
  87. else
  88. Message.show("喇叭数量不够,可在商城购买")
  89. end
  90. elseif target == self.cancelBtn then
  91. self:Close()
  92. elseif target == self.addBtn then
  93. GlobalEventSystem:Fire(EventName.OPEN_SHOP_VIEW, 2, self.horn_id)
  94. end
  95. end
  96. AddClickEvent(self.addBtn,onBtnClickHandler,2)
  97. AddClickEvent(self.faceBtn,onBtnClickHandler,2)
  98. AddClickEvent(self.sendBtn,onBtnClickHandler,2)
  99. AddClickEvent(self.cancelBtn,onBtnClickHandler,2)
  100. local function onSelectFaceItemHandler(item)
  101. if item then
  102. local str = "<#f_"..(item.index - 1)..">"
  103. local newStr = self.input_text.text .. str
  104. if utf8len(newStr) > self.send_limit then
  105. Message.show(string.format("最多可输入%d个字符", self.send_limit))
  106. else
  107. self.input_text.text = newStr
  108. end
  109. end
  110. end
  111. self.select_faceItem_id = self.model:Bind(ChatModel.SELECT_FACE_ITEM,onSelectFaceItemHandler)
  112. local function onSelectTextFaceItemHandler(item)
  113. if item then
  114. local newStr = string.gsub(item.vo.one,"#N",RoleManager.Instance:GetMainRoleVo().name)
  115. if utf8len(newStr) > self.send_limit then
  116. Message.show(string.format("最多可输入%d个字符", self.send_limit))
  117. else
  118. self.input_text.text = newStr
  119. end
  120. end
  121. end
  122. self.select_textFaceItem_id = self.model:Bind(ChatModel.SELECT_TEXT_FACE_ITEM,onSelectTextFaceItemHandler)
  123. local function onUpdateNhornNumHandler()
  124. self:SetHornNum()
  125. end
  126. self.update_horn_num_id = GoodsModel:getInstance():Bind(GoodsModel.CHANGE_BAGLIST,onUpdateNhornNumHandler)
  127. local function onUpdateHorn( )
  128. self:SetCurHorn()
  129. end
  130. self.horn_event_id = ChatModel:getInstance():Bind(ChatModel.UPDATE_HORNTV_NUM, onUpdateHorn)
  131. self.input_text.onValueChanged:AddListener(function()
  132. local len = utf8len(self.input_text.text)
  133. if len > self.send_limit then
  134. self.input_text.text = string.sub(self.input_text.text, 1, self.send_limit-len-1) --减去多出来的字符
  135. self.tip_time = self.tip_time or 0
  136. if Status.NowTime-self.tip_time>0.1 then
  137. Message.show(string.format("最多可输入%d个字符", self.send_limit))
  138. self.tip_time = Status.NowTime
  139. end
  140. end
  141. end)
  142. end
  143. ---初始化发送的格式
  144. function HornView:InitInfo()
  145. self.info = self.model:GetHornVo()
  146. if self.info ~= nil then
  147. self.need_level = self.info.level
  148. self.send_limit = self.info.send_limit
  149. self.send_interval = self.info.send_interval
  150. self:SetHornNum()
  151. self:SetCurHorn()
  152. if self.input_text ~= nil then
  153. self.input_text.characterLimit = self.send_limit+1
  154. end
  155. end
  156. end
  157. --设置喇叭的数量
  158. function HornView:SetHornNum()
  159. local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(self.horn_id)
  160. local cur_own = GoodsModel:getInstance():GetTypeGoodsNum(self.horn_id)
  161. local str = "您拥有的喇叭:"
  162. if basic then
  163. if cur_own == 0 then
  164. self.hasHorn.text = str.."<color=#de4141>" .. cur_own .. "</color>"
  165. else
  166. self.hasHorn.text = str.."<color=#73AC44FF>" .. cur_own .."</color>"
  167. end
  168. else
  169. self.hasHorn.text = str.."<color=#de4141>0</color>"
  170. end
  171. end
  172. function HornView:GetHornNum()
  173. return GoodsModel:getInstance():GetTypeGoodsNum(self.horn_id)
  174. end
  175. --设置喇叭排队数量
  176. function HornView:SetCurHorn()
  177. local num = self.model:GetDelayHornNum()
  178. self.curHorn.text = string.format("当前排队喇叭:%d", num)
  179. end