您不能選擇超過 %s 個話題 話題必須以字母或數字為開頭,可包含連接號 ('-') 且最長為 35 個字

271 行
7.2 KiB

  1. ---
  2. -- ================================================================
  3. -- 文件名: ZPRoomMenuView.lua
  4. -- 描述: 房间内右上角菜单组件
  5. -- 版权: Copyright © 2016-2019 公司名称 版权所有
  6. -- 作者: Administrator
  7. -- 创建日期: 2019-12-13
  8. -- 更新日期: 2019-12-13
  9. -- 备注:
  10. -- ================================================================
  11. --
  12. local ZPRoomSettingView=ZPFramework.ZPImport("zp_base.luaScript.Views.Room.ZPRoomSettingView")
  13. local ZPRoomMenuView = class("ZPRoomMenuView", cc.UIView);
  14. function ZPRoomMenuView:ctor ()
  15. ZPRoomMenuView.super.ctor(self)
  16. self._isOpened = false;
  17. self._buttonEvent = {}
  18. end
  19. function ZPRoomMenuView:loadUI ()
  20. local ui = loadUI("zp_base/res/ui/ui_fangjian/zipai_ui_room_menu.ui");
  21. self:addChild(ui);
  22. self.ui = ui;
  23. end
  24. function ZPRoomMenuView:onEnter ()
  25. ZPRoomMenuView.super.onEnter(self)
  26. self:loadUI()
  27. self:initViews()
  28. end
  29. function ZPRoomMenuView:initViews ()
  30. self.ui.Items.Button_Menu:registerClick(handler(self, self._onBtnMenuClicked))
  31. self.ui.Items.Button_Dismiss:registerClick(handler(self, self._onBtnDismissClicked))
  32. self.ui.Items.Button_Set:registerClick(handler(self, self._onBtnSetClicked))
  33. self.ui.Items.Button_Leave:registerClick(handler(self, self._onBtnLeaveClicked))
  34. self.ui.Items.Layout_Mask:registerClick(handler(self, self._onLayoutMaskClicked))
  35. self.ui.Items.Button_Club:registerClick(handler(self , self._onBtnClubClicked))
  36. self.ui.Items.Button_Wechat:registerClick(handler(self , self._onBtnWechatClicked))
  37. self.ui.Items.Button_ScreenShot:registerClick(handler(self , self._onBtnScreenShotClicked))
  38. self.ui.Items.Layout_Menu:setTouchEnabled(true)
  39. self.ui.Items.Layout_Menu:setVisible(false)
  40. self.ui.Items.Layout_Mask:setVisible(false)
  41. self.ui.Items.Button_Club:setVisible(app.club_php.clubID and app.club_php.clubID ~= 0)
  42. self:setButtonVisible("Wechat", false)
  43. self:setButtonVisible("ScreenShot", false)
  44. self:checkCanDismiss()
  45. end
  46. ---
  47. -- 遮罩层点击事件
  48. -- @return
  49. --
  50. function ZPRoomMenuView:_onLayoutMaskClicked ()
  51. logD("ZPRoomMenuView:_onLayoutMaskClicked")
  52. playBtnEffect()
  53. if not self._isOpened then
  54. return
  55. end
  56. self:toggleMenu()
  57. end
  58. ---
  59. -- 菜单按钮点击事件
  60. -- @return
  61. --
  62. function ZPRoomMenuView:_onBtnMenuClicked ()
  63. logD("ZPRoomMenuView:_onBtnMenuClicked")
  64. playBtnEffect()
  65. self:toggleMenu()
  66. end
  67. ---
  68. -- 解散按钮点击事件
  69. -- @return
  70. --
  71. function ZPRoomMenuView:_onBtnDismissClicked ()
  72. logD("ZPRoomMenuView:_onBtnDismissClicked")
  73. playBtnEffect()
  74. if self._buttonEvent["Dismiss"] then
  75. self._buttonEvent["Dismiss"]()
  76. return
  77. end
  78. local function onClickOk()
  79. app.room:requestDismissRoom(1)
  80. end
  81. local function onClickCancel()
  82. end
  83. showConfirmDialog("确定要申请解散房间吗?", onClickOk, onClickCancel)
  84. app:dispatchEvent({name = "EVENT_ROOM_MENU_DISMISS_CLICKED"})
  85. end
  86. ---
  87. -- 设置按钮点击事件
  88. -- @return
  89. --
  90. function ZPRoomMenuView:_onBtnSetClicked ()
  91. logD("ZPRoomMenuView:_onBtnSetClicked")
  92. playBtnEffect()
  93. if self._buttonEvent["Set"] then
  94. self._buttonEvent["Set"]()
  95. return
  96. end
  97. local view = ZPRoomSettingView:new();
  98. view:setAnchorPoint(cc.p(0.5, 0.5));
  99. app:showWaitDialog(view);
  100. app:dispatchEvent({name = "EVENT_ROOM_MENU_SET_CLICKED"})
  101. end
  102. ---
  103. -- 离开按钮点击事件
  104. -- @return
  105. --
  106. function ZPRoomMenuView:_onBtnLeaveClicked ()
  107. logD("ZPRoomMenuView:_onBtnLeaveClicked")
  108. playBtnEffect()
  109. if self._buttonEvent["Leave"] then
  110. self._buttonEvent["Leave"]()
  111. return
  112. end
  113. app.room.roomInfo.bQuitRoom = true; -- 这个字段碰胡用到,兼容,后面看能不能删除
  114. self.ui:sendMsg(app.room, "callLeaveRequest");
  115. app:dispatchEvent({name = "EVENT_ROOM_MENU_LEAVE_CLICKED"})
  116. end
  117. ---
  118. -- 包间按钮点击事件
  119. -- @return
  120. --
  121. function ZPRoomMenuView:_onBtnClubClicked ()
  122. logD("ZPRoomMenuView:_onBtnClubClicked")
  123. playBtnEffect()
  124. if self._buttonEvent["Club"] then
  125. self._buttonEvent["Club"]()
  126. return
  127. end
  128. openClub()
  129. end
  130. ---
  131. -- 微信按钮点击事件
  132. -- @return
  133. --
  134. function ZPRoomMenuView:_onBtnWechatClicked ()
  135. playBtnEffect()
  136. if self._buttonEvent["Wechat"] then
  137. self._buttonEvent["Wechat"]()
  138. return
  139. end
  140. app.plugin:gotoWeiXin()
  141. end
  142. ---
  143. -- 截图按钮点击事件
  144. -- @return
  145. --
  146. function ZPRoomMenuView:_onBtnScreenShotClicked ()
  147. playBtnEffect()
  148. if self._buttonEvent["ScreenShot"] then
  149. self._buttonEvent["ScreenShot"]()
  150. return
  151. end
  152. showScreenShot()
  153. end
  154. ---
  155. -- 开关菜单按钮
  156. -- @param
  157. -- @return
  158. --
  159. function ZPRoomMenuView:toggleMenu( )
  160. self._isOpened = not self._isOpened
  161. self.ui.Items.Layout_Menu:setVisible(self._isOpened)
  162. self.ui.Items.Layout_Mask:setVisible(self._isOpened)
  163. end
  164. ---
  165. -- 禁用/启用指定按钮
  166. -- @param key 按钮索引,分别是Dismiss(解散)、Leave(退出)、Set(设置)、Wechat(微信)、ScreenShot(截图分享)
  167. -- @param isEnabled
  168. -- @return
  169. --
  170. function ZPRoomMenuView:setButtonEnabled (key, isEnabled)
  171. local button = nil
  172. if key == "Dismiss" then
  173. button = self.ui.Items.Button_Dismiss
  174. elseif key == "Leave" then
  175. button = self.ui.Items.Button_Leave
  176. elseif key == "Set" then
  177. button = self.ui.Items.Button_Set
  178. elseif key == "Wechat" then
  179. button = self.ui.Items.Button_Wechat
  180. elseif key == "ScreenShot" then
  181. button = self.ui.Items.Button_ScreenShot
  182. end
  183. button:setEnabled(isEnabled)
  184. end
  185. ---
  186. -- 显示/隐藏指定按钮
  187. -- @param key 按钮索引,分别是Dismiss(解散)、Leave(退出)、Set(设置)、Wechat(微信)、ScreenShot(截图分享)
  188. -- @param isEnabled
  189. -- @return
  190. --
  191. function ZPRoomMenuView:setButtonVisible (key, isVisible)
  192. local butotn = nil
  193. if key == "Dismiss" then
  194. button = self.ui.Items.Button_Dismiss
  195. elseif key == "Leave" then
  196. button = self.ui.Items.Button_Leave
  197. elseif key == "Set" then
  198. button = self.ui.Items.Button_Set
  199. elseif key == "Wechat" then
  200. button = self.ui.Items.Button_Wechat
  201. elseif key == "ScreenShot" then
  202. button = self.ui.Items.Button_ScreenShot
  203. end
  204. button:setVisible(isVisible)
  205. end
  206. ---
  207. -- 自定义按钮事件
  208. -- @param key 按钮索引,分别是Dismiss(解散)、Leave(退出)、Set(设置)、Wechat(微信)、ScreenShot(截图分享)
  209. -- @param func
  210. -- @return
  211. --
  212. function ZPRoomMenuView:setButtonEvent (key, func)
  213. if type(func) ~= "function" then
  214. return
  215. end
  216. self._buttonEvent[key] = func
  217. end
  218. ---
  219. -- 检测是否可以解散房间
  220. -- @param
  221. -- @return
  222. --
  223. function ZPRoomMenuView:checkCanDismiss( )
  224. local onCanDismissCallback = function (info)
  225. local nUserId = app.room:getMyUserId()
  226. local roomInfo = app.room.roomInfo or {}
  227. local canDismiss = (tonumber(info.canDismiss or 1) == 1) or roomInfo.nRoomOwnedUid == nUserId or dd.IClub.isAdmin()
  228. if roomInfo.nGameStartCount == 0 and roomInfo.nRoomOwnedUid ~= nUserId then
  229. canDismiss = false
  230. end
  231. self:onCanDismissCallback(canDismiss)
  232. end
  233. if dd.IClub.getCanDismiss then
  234. local canDismiss = dd.IClub.getCanDismiss(onCanDismissCallback)
  235. if canDismiss then
  236. onCanDismissCallback({canDismiss = canDismiss})
  237. end
  238. end
  239. end
  240. function ZPRoomMenuView:onCanDismissCallback(canDismiss)
  241. if self.ui.Items.Button_Dismiss then
  242. self.ui.Items.Button_Dismiss:setEnabled(canDismiss)
  243. end
  244. end
  245. return ZPRoomMenuView