Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

302 linhas
8.0 KiB

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