源战役客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

205 行
8.7 KiB

  1. GuildSceneEventBtnItem = GuildSceneEventBtnItem or BaseClass(BaseItem)
  2. local GuildSceneEventBtnItem = GuildSceneEventBtnItem
  3. function GuildSceneEventBtnItem:__init(parent_wnd,prefab_asset,layer_name)
  4. self.base_file = "guildScene"
  5. self.layout_file = "GuildSceneEventBtnItem"
  6. self.parent_wnd = parent_wnd
  7. self.layer_name = layer_name
  8. self.main_vo = RoleManager.Instance.mainRoleInfo
  9. self.model = GuildModel:getInstance()
  10. self.tv_model = GuildTVModel:GetInstance()
  11. self:Load()
  12. end
  13. function GuildSceneEventBtnItem:Load_callback()
  14. local nodes = {
  15. "icon:obj:img", "icon/name:tmp", "tip_timer_bg:obj", "tip_timer:txt",
  16. "num_reddot:obj", "num_reddot_lb:tmp",
  17. }
  18. self:GetChildren(nodes)
  19. self:AddEvents()
  20. if self.need_refreshData then
  21. self:UpdateView()
  22. end
  23. end
  24. function GuildSceneEventBtnItem:AddEvents( )
  25. local function click_event(target)
  26. if target == self.icon_obj then
  27. self:OnClickIcon()
  28. end
  29. end
  30. AddClickEvent(self.icon_obj, click_event)
  31. -- 按需更新按钮状态
  32. local function update_dance_status_func()
  33. if self.data and self.data.fun_id == 4007 then
  34. self:UpdateView()
  35. end
  36. end
  37. self.update_dance_status = self.main_vo:BindOne("dance_status", update_dance_status_func)
  38. --更新自动封印按钮状态
  39. local function updateGuildCollectIcon()
  40. if self.data and self.data.fun_id == 408 then
  41. self:UpdateView()
  42. end
  43. end
  44. self:BindEvent(self.model, GuildModel.UPDATE_AUTO_GUILD_COLLECT_STATE, updateGuildCollectIcon)
  45. local function update_tip()
  46. local function call_back( )
  47. if self._use_delete_method then
  48. return
  49. end
  50. self:ShowBtnTips(1420)
  51. end
  52. TimeManager.GetInstance():StartTime("GuildSceneEventBtnItem:ShowBtnTips1420",0.5,call_back)--限制刷新频率
  53. end
  54. self:BindEvent(self.tv_model, GuildTVConst.UPDATE_GUILDTV_BTN_TIPS, update_tip)
  55. local function update_btn_num_red(fun_id)
  56. self:ShowBtnNumReddot(fun_id)
  57. end
  58. self:BindEvent(self.model, GuildModel.UPDATE_SCENE_FUNCBTN_NUM_RED, update_btn_num_red)
  59. end
  60. function GuildSceneEventBtnItem:UpdateView( )
  61. if self.data.fun_id == 400799 or self.data.fun_id == 40699 or self.data.fun_id == 40899 then
  62. lua_resM:setImageSprite(self, self.icon_img, "guildScene_asset", "guild_btn_40099")
  63. else
  64. lua_resM:setImageSprite(self, self.icon_img, "guildScene_asset", "guild_btn_" .. self.data.fun_id)
  65. end
  66. if self.data.fun_id == 4007 then -- 社团派对
  67. local dance_status = RoleManager.Instance.mainRoleInfo.dance_status
  68. self.name_tmp.text = dance_status == 0 and "狂狼热舞" or "热舞中..."
  69. elseif self.data.fun_id == 408 then -- 封印裂隙
  70. -- local fight_state = AutoFightManager:getInstance():GetAutoFightState()
  71. local auto_collect_state = self.model:IsAutoGuildCollectState()
  72. self.name_tmp.text = auto_collect_state and "自动封印中..." or "封印裂隙"
  73. elseif self.data.fun_id == 400799 or self.data.fun_id == 40699 or self.data.fun_id == 40899 then -- 召唤社员
  74. self.name_tmp.text = "召唤社员"
  75. elseif self.data.fun_id == 406 then --击杀使徒
  76. self.name_tmp.text = "击杀使徒"
  77. else
  78. self.name_tmp.text = self.data.name
  79. end
  80. self:ShowBtnTips(self.data.fun_id)
  81. self:ShowBtnNumReddot(self.data.fun_id)
  82. end
  83. function GuildSceneEventBtnItem:SetData( data )
  84. self.data = data
  85. if self.is_loaded then
  86. self.need_refreshData = false
  87. self:UpdateView()
  88. else
  89. self.need_refreshData = true
  90. end
  91. end
  92. function GuildSceneEventBtnItem:OnClickIcon( )
  93. if not self.data then return end
  94. local callback = {
  95. [4007] = function () -- 社团派对祝火状态变更
  96. if not self.model._waiting_12025_respon then
  97. -- 请求切换祝火状态
  98. local dance_status = RoleManager.Instance.mainRoleInfo.dance_status
  99. -- self.model:Fire(GuildModel.CHANGE_GUILDDANCE_ACTION, dance_status == 0 and 1 or 0)
  100. DanceModel:getInstance():Fire(DanceModel.CHANGE_DANCE_STATUS, dance_status == 0)
  101. end
  102. end,
  103. [1420] = function () -- 社团派跑马
  104. GlobalEventSystem:Fire(GuildTVConst.OPEN_GUILDTV_MAIN_VIEW)
  105. end,
  106. [408] = function()--自动封印状态变更
  107. local auto_collect_state = self.model:IsAutoGuildCollectState()
  108. if not auto_collect_state then--要开启自动采集状态时,取消自动挂机状态
  109. GlobalEventSystem:Fire(EventName.STOPAUTOFIGHT)
  110. end
  111. self.model:SetAutoGuildCollectState(not auto_collect_state)--切换采集状态
  112. self.model:Fire(GuildModel.UPDATE_AUTO_GUILD_COLLECT_STATE)--通知按钮变化
  113. end,
  114. [406] = function() -- 寻路打社团boss
  115. local call_back = function ()
  116. GlobalEventSystem:Fire(EventName.STARTAUTOFIGHT)
  117. end
  118. -- 社团场景有两个,所以直接改为获取当前场景即可
  119. local scene_id = SceneManager:getInstance():GetSceneId()
  120. local pos_x, pos_y = self.model:GetGuildBossPos()
  121. local findVo = FindVo.New()
  122. findVo.type = FindVo.POINT
  123. findVo.sceneId = scene_id
  124. findVo.x = pos_x / SceneObj.LogicRealRatio.x
  125. findVo.y = pos_y / SceneObj.LogicRealRatio.y
  126. findVo.call_back = call_back
  127. GlobalEventSystem:Fire(EventName.STOPAUTOFIGHT)
  128. Scene:getInstance():FindElement(findVo)
  129. end,
  130. [400799] = function() --社团晚宴召唤社员
  131. local content = string.format("<color=#66abff>[社团晚宴]</color>正在进行中,海量经验等你来拿,大家快来加入这场狂欢派对吧!<color=#2cf89a><a@guildScene>[点击前往]</a></color>", RoleManager.Instance.mainRoleInfo.name)
  132. ChatModel:getInstance():Fire(ChatModel.SEND_MSG,ChatModel.CHANNEL_GUILD,content,0,nil,ChatModel.CHAT_COMMON_TYPE.SYSTEM)
  133. -- self.model:Fire(GuildModel.REQUEST_CCMD_EVENT, 40064, 4007)
  134. end,
  135. [40699] = function() --社团boss召唤社员
  136. local content = "<color=#66abff>[社团幻魔]</color>已现身,大家快来一起抵御幻魔入侵吧! <color=#2cf89a><a@guildScene>[立即前往]</a></color>"
  137. ChatModel:getInstance():Fire(ChatModel.SEND_MSG,ChatModel.CHANNEL_GUILD,content,0,nil,ChatModel.CHAT_COMMON_TYPE.SYSTEM)
  138. -- self.model:Fire(GuildModel.REQUEST_CCMD_EVENT, 40064, 406)
  139. end,
  140. [40899] = function() --封印裂隙召唤社员
  141. -- self.model:Fire(GuildModel.REQUEST_CCMD_EVENT, 40064, 408)
  142. local content = "<color=#66abff>[封印裂隙]</color>活动已经开始啦,大家快来一起封印吧! <color=#2cf89a><a@guildScene>[立即前往]</a></color>"
  143. ChatModel:getInstance():Fire(ChatModel.SEND_MSG,ChatModel.CHANNEL_GUILD,content,0,nil,ChatModel.CHAT_COMMON_TYPE.SYSTEM)
  144. end,
  145. [4062] = function()
  146. self.model:Fire(GuildModel.OPEN_BOSS_ROLL_VIEW, true)
  147. end,
  148. }
  149. if callback[self.data.fun_id] then
  150. callback[self.data.fun_id]()
  151. end
  152. end
  153. function GuildSceneEventBtnItem:ShowBtnTips(fun_id)
  154. if self.data.fun_id == fun_id then
  155. if fun_id == 1420 then--目前只有跑马需要这个tips 其他人要的时候再在下面加自己的逻辑 并且在上面addevent绑刷新方法
  156. local bool = self.tv_model:IsCanShowBtnTips()
  157. if bool then
  158. self.tip_timer_bg_obj:SetActive(true)
  159. self.tip_timer_txt.text = "新一轮押注开始了!"
  160. else
  161. self.tip_timer_bg_obj:SetActive(false)
  162. self.tip_timer_txt.text = ""
  163. end
  164. else
  165. self.tip_timer_bg_obj:SetActive(false)
  166. self.tip_timer_txt.text = ""
  167. end
  168. end
  169. end
  170. -- 显示按钮的数量红点
  171. function GuildSceneEventBtnItem:ShowBtnNumReddot(fun_id)
  172. if self.data.fun_id == fun_id then
  173. if fun_id == 4062 then
  174. local red_num = self.model:GetGuildBossNumRed()
  175. -- print("Saber:GuildSceneEventBtnItem [191] red_num: ",red_num)
  176. self.num_reddot_obj:SetActive(red_num > 0)
  177. self.num_reddot_lb_tmp.text = red_num > 0 and red_num or ""
  178. else
  179. self.num_reddot_obj:SetActive(false)
  180. self.num_reddot_lb_tmp.text = ""
  181. end
  182. end
  183. end
  184. function GuildSceneEventBtnItem:__delete( )
  185. if self.update_dance_status then
  186. self.main_vo:UnBind(self.update_dance_status)
  187. self.update_dance_status = nil
  188. end
  189. end