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.

190 lines
4.8 KiB

  1. -- 游戏房间邀请框Layout
  2. local ClubInviteRoomNew = class("ClubInviteRoomNew" , cc.UIView);
  3. ---
  4. -- 构造函数
  5. -- @param gID
  6. -- @param inviteInfo {userInfo = {uid, nick, icon}, gname, gamerule}
  7. -- @param clickCallback
  8. -- @param agreeCallback
  9. -- @return
  10. --
  11. function ClubInviteRoomNew:ctor(gID, inviteInfo, clickCallback,agreeCallback)
  12. ClubInviteRoomNew.super.ctor(self)
  13. local ui = loadUI("res/ui/ui_club/clubnew/ui_club_invite_room_new.ui")
  14. self.ui = ui;
  15. self:addChild(ui);
  16. --俱乐部id
  17. self.gid = gID;
  18. --邀请信息
  19. self.inviteInfo = inviteInfo;
  20. self.returnCallback = clickCallback;
  21. self.agreeCallback = nil
  22. if agreeCallback then
  23. self.agreeCallback = agreeCallback
  24. end
  25. end
  26. function ClubInviteRoomNew:onEnter()
  27. ClubInviteRoomNew.super.onEnter(self)
  28. --按钮注册事件
  29. self:registerButton();
  30. --设置默认界面
  31. self:setDefault();
  32. -- 监听事件
  33. self:bindEvent(app.hall , "onJoinRoomResponse", handler(self , self.onJoinRoomResponse));
  34. self:bindEvent(app.club_php , GAME_EVENT.CLUB_MEMBER_SET_SUCCESS, handler(self , self.onCloseView));
  35. -- 15秒后自动关闭
  36. self:runDelay(15, function ()
  37. self:onClose()
  38. end)
  39. end
  40. ---
  41. -- 注册按钮点击事件
  42. -- @return
  43. --
  44. function ClubInviteRoomNew:registerButton()
  45. --同意
  46. self.ui.Items.Button_agree:registerClick(handler(self , self.onClickAgree))
  47. --拒绝
  48. self.ui.Items.Button_disagree:registerClick(handler(self , self.onClickDisagree))
  49. self.ui.Items.Layout_BG:registerClick(handler(self , self.onClickDisagree))
  50. --屏蔽邀请
  51. self.ui.Items.CheckBox_pingbi:addEventListener(handler(self , self.onClickPingbi))
  52. end
  53. ---
  54. -- 设置默认界面
  55. -- @return
  56. --
  57. function ClubInviteRoomNew:setDefault()
  58. local inviteInfo = self.inviteInfo
  59. if inviteInfo.userInfo then
  60. --玩家头像
  61. local nodeHead = self.ui.Items.headImg;
  62. setPlayerHeadImage(inviteInfo.userInfo.uid, inviteInfo.userInfo.icon,nodeHead)
  63. --玩家昵称
  64. local nickname = getSubStringNickname(inviteInfo.userInfo.nick, self.ui.Items.Text_name)
  65. self.ui.Items.Text_name:setText(nickname);
  66. end
  67. local content = string.format("邀请你进入房间%s(%s)", inviteInfo.roomid or 0, inviteInfo.gamerule or "")
  68. self.ui.Items.Text_Tips:setText(content)
  69. if app.club_php:getCestIsOpen(self.gid) then
  70. local str = self.ui.Items.Text:getText()
  71. str = string.gsub(str, "玩家", "选手")
  72. self.ui.Items.Text:setText(str)
  73. end
  74. end
  75. function ClubInviteRoomNew:onClose()
  76. playBtnCloseEffect();
  77. if self.returnCallback then
  78. self.returnCallback()
  79. end
  80. self:removeFromParent()
  81. end
  82. function ClubInviteRoomNew:onCloseView()
  83. if self.returnCallback then
  84. self.returnCallback()
  85. end
  86. self:removeFromParent()
  87. end
  88. ---
  89. -- 同意请求
  90. -- @return
  91. --
  92. function ClubInviteRoomNew:onClickAgree()
  93. playBtnEffect()
  94. if self.agreeCallback then
  95. local parm = {
  96. roomid = self.inviteInfo.roomid,
  97. gid = self.gid,
  98. }
  99. setAgainGameInvitedata(parm)
  100. self.agreeCallback()
  101. return
  102. end
  103. local roomId = self.inviteInfo.roomid
  104. logD("ClubInviteRoomNew:onClickAgree() roomId = ", roomId)
  105. if not roomId then
  106. return
  107. end
  108. if not isEnableEnterRoom() then
  109. return
  110. end
  111. --同意后进入房间,赋值当前进入的俱乐部id
  112. app.club_php.clubID = self.gid
  113. local function doRequest(gameId, roomId)
  114. if not gameId or tonumber(gameId) <= 0 then
  115. showTooltip("房间号不存在")
  116. self:onClose()
  117. return
  118. end
  119. app.hall:requestJoinRoom(gameId, roomId)
  120. end
  121. app.hall:queryRoomId(roomId,doRequest)
  122. end
  123. ---
  124. -- 拒绝请求
  125. -- @return
  126. --
  127. function ClubInviteRoomNew:onClickDisagree()
  128. playBtnEffect()
  129. if self.returnCallback then
  130. self.returnCallback()
  131. end
  132. self:removeFromParent()
  133. end
  134. ---
  135. -- 监听加入房间返回事件
  136. -- @param event
  137. -- @return
  138. --
  139. function ClubInviteRoomNew:onJoinRoomResponse(event)
  140. if not event then
  141. return
  142. end
  143. local errCode = event.errCode
  144. if errCode ~= 0 then
  145. local errString = ENTER_ROOM_RET_STR[errCode] or "房间不存在"
  146. showTooltip(errString);
  147. end
  148. end
  149. --是否屏蔽玩家邀请
  150. function ClubInviteRoomNew:onClickPingbi()
  151. playBtnEffect()
  152. local isChoice = self.ui.Items.CheckBox_pingbi:getSelectedState()
  153. if isChoice then
  154. --local function okCallBack()
  155. --设置类型{1:邀请勿扰, $value 拒接邀请对象uid; 2:屏蔽开局用户, $value 1屏蔽0可见; 3:俱乐部置顶, $value 1置顶0取消置顶}
  156. local setType = 1;
  157. local playerId = nil
  158. local inviteInfo = self.inviteInfo
  159. if inviteInfo and inviteInfo.userInfo then
  160. playerId = inviteInfo.userInfo.uid
  161. app.club_php:requestMemberSet(self.gid, setType, playerId)
  162. end
  163. --end
  164. --local function cancelCallBack()
  165. -- self.ui.Items.CheckBox_pingbi:setSelectedState(false)
  166. --end
  167. --showConfirmDialog("是否屏蔽所有玩家5分钟内发出的邀请?", okCallBack, cancelCallBack);
  168. else
  169. --不允许取消屏蔽
  170. self.ui.Items.CheckBox_pingbi:setSelectedState(true)
  171. end
  172. end
  173. return ClubInviteRoomNew