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.

246 line
6.5 KiB

  1. ---
  2. -- ================================================================
  3. -- 文件名: IPlayGameAgain.lua
  4. -- 描述: 子游戏结算再来一局功能接口
  5. -- 版权: Copyright © 2016-2019 公司名称 版权所有
  6. -- 作者: Administrator
  7. -- 创建日期: 2019-10-22
  8. -- 更新日期: 2019-10-22
  9. -- 备注:
  10. -- ================================================================
  11. --
  12. local IPlayGameAgain = {};
  13. IPlayGameAgain.isAgainGameBol = false -- 是否再来一局
  14. IPlayGameAgain.wanfa = "" -- 子游戏玩法
  15. IPlayGameAgain.uidList = {} -- 待邀请玩家列表
  16. IPlayGameAgain.isAgainGameBaoJianId = -1 -- 再来一局包间ID
  17. IPlayGameAgain.isAgainGameData = nil -- 再来一局接受邀请数据
  18. IPlayGameAgain.isGameRuleChange = false -- 再来一局包间玩法是否被修改
  19. IPlayGameAgain.gameRoomId = 0 -- 再来一局包间id
  20. IPlayGameAgain.myGameCreateStatus = false -- 玩家是否创建过房间
  21. IPlayGameAgain.inviteView = nil -- 邀请框
  22. function IPlayGameAgain.bindPlayAgainButton (btnPlayAgain, gameId, inviteInfo, inviteList, initCallback)
  23. local clubId = app.club_php.clubID or 0
  24. local isInClub = clubId and clubId ~= 0
  25. if not isInClub then
  26. logD("IPlayGameAgain.initPlayGameAgain", "当前玩家不在亲友圈内,不能再来一局");
  27. btnPlayAgain:setVisible(false)
  28. return
  29. end
  30. if tolua.isnull(btnPlayAgain) then
  31. logD("IPlayGameAgain.bindPlayAgainButton", "再来一局按钮已经被释放")
  32. return
  33. end
  34. local isClosePlayAgain = IPlayGameAgain.isClosePlayAgain(gameId)
  35. btnPlayAgain:setVisible(not isClosePlayAgain)
  36. if isClosePlayAgain then
  37. if type(initCallback) == "function" then
  38. initCallback()
  39. end
  40. return
  41. end
  42. btnPlayAgain:registerClick(function ()
  43. logD("===================inviteList==================:",table.tostring(inviteList))
  44. IPlayGameAgain.setIsAgainGamebol(true, inviteInfo, inviteList)
  45. gotoMainView()
  46. end)
  47. local clubInfo = app.club_php:getClubInfo(clubId)
  48. if not clubInfo then
  49. logD("IPlayGameAgain.bindPlayAgainButton", "亲友圈信息不存在", "clubId:", clubId)
  50. if type(initCallback) == "function" then
  51. initCallback()
  52. end
  53. return
  54. end
  55. local baoJianId = IPlayGameAgain.getAgainGameBaoJianId()
  56. if baoJianId ~= -1 and clubInfo.settings and tonumber(clubInfo.settings.baoJianId) ~= tonumber(baoJianId) and clubInfo.mode == 0 then
  57. app.club_php:requestRuleSet(app.club_php.clubID, baoJianId, 1, 1)
  58. end
  59. if type(initCallback) == "function" then
  60. initCallback()
  61. end
  62. end
  63. ---
  64. -- 收到再来一局邀请信息时,弹出邀请弹框
  65. -- @param data
  66. -- @return
  67. --
  68. function IPlayGameAgain.showClubInviteDialog (data, agreeCallback, closeCallback)
  69. --房间邀请通知
  70. local content = data.content
  71. local clubId = data.clubId
  72. local inviteView = IPlayGameAgain.inviteView
  73. local viewType = type(inviteView)
  74. if inviteView and viewType == "userdata" then
  75. --提示框已存在
  76. return
  77. end
  78. local function removeInviteView()
  79. if not tolua.isnull(IPlayGameAgain.inviteView) then
  80. -- IPlayGameAgain.inviteView:removeFromParent()
  81. IPlayGameAgain.inviteView = nil
  82. end
  83. end
  84. local function onBtnCloseClicked()
  85. --关闭提示框时清空数据,用于下次弹出
  86. removeInviteView()
  87. if type(closeCallback) == "function" then
  88. closeCallback()
  89. end
  90. end
  91. local function onBtnAgreeClicked()
  92. removeInviteView()
  93. gotoMainView()
  94. if type(agreeCallback) == "function" then
  95. agreeCallback()
  96. end
  97. end
  98. inviteView = import("luaScript.Views.Club.ClubInviteRoomNew"):new(clubId, content, onBtnCloseClicked, onBtnAgreeClicked)
  99. inviteView:setAnchorPoint(cc.p(0.5, 0.5))
  100. app:showWaitDialog(inviteView,0)
  101. IPlayGameAgain.inviteView = inviteView
  102. end
  103. ---
  104. -- 是否关闭再来一局功能
  105. -- 默认关闭
  106. -- @return
  107. --
  108. function IPlayGameAgain.isClosePlayAgain (gameId)
  109. local isClosePlayAgain = true
  110. local config = getSubGameConfig(gameId)
  111. if not config then
  112. logD("IPlayGameAgain.isClosePlayAgain", "读取子游戏配置为空")
  113. return isClosePlayAgain
  114. end
  115. if config.gameDataConfig and config.gameDataConfig.isClosePlayAgain ~= nil then
  116. logD("IPlayGameAgain.isClosePlayAgain", "子游戏再来一局功能已打开")
  117. isClosePlayAgain = config.gameDataConfig.isClosePlayAgain == true
  118. end
  119. return isClosePlayAgain
  120. end
  121. ---
  122. -- 设置是否再来一局
  123. -- @param bol 是否再来一局
  124. -- @param wanfadata 子游戏玩法
  125. -- @param uidList 待邀请玩家列表
  126. -- @return
  127. --
  128. function IPlayGameAgain.setIsAgainGamebol(bol, wanfadata, uidList)
  129. logD("IPlayGameAgain.setIsAgainGamebol")
  130. IPlayGameAgain.isAgainGameBol = bol
  131. if wanfadata then
  132. IPlayGameAgain.wanfa = wanfadata
  133. end
  134. if uidList then
  135. IPlayGameAgain.uidList = uidList or {}
  136. end
  137. end
  138. ---
  139. -- 是否再来一局
  140. -- @return
  141. --
  142. function IPlayGameAgain.getIsAgainGamebol()
  143. return IPlayGameAgain.isAgainGameBol, IPlayGameAgain.wanfa, IPlayGameAgain.uidList;
  144. end
  145. ---
  146. -- 再来一局包间id
  147. -- @param idx
  148. -- @return
  149. --
  150. function IPlayGameAgain.setAgainGameBaoJianId(idx)
  151. IPlayGameAgain.isAgainGameBaoJianId = idx
  152. end
  153. ---
  154. -- 获取再来一局包间id
  155. -- @return
  156. --
  157. function IPlayGameAgain.getAgainGameBaoJianId()
  158. return IPlayGameAgain.isAgainGameBaoJianId;
  159. end
  160. ---
  161. -- 保存再来一局接受邀请数据
  162. -- @param data
  163. -- @return
  164. --
  165. function IPlayGameAgain.setAgainGameInvitedata(data)
  166. IPlayGameAgain.isAgainGameData = data
  167. end
  168. ---
  169. -- 获取再来一局接受邀请数据
  170. -- @return
  171. --
  172. function IPlayGameAgain.getAgainGameInvitedata()
  173. return IPlayGameAgain.isAgainGameData;
  174. end
  175. ---
  176. -- 保存再来一局玩法状态
  177. -- 检测点再来一局的时候,玩法是否被修改。如果是修改那么提示创建失败。
  178. -- @param bol
  179. -- @return
  180. --
  181. function IPlayGameAgain.setRuleChangeStatus(bol)
  182. IPlayGameAgain.isGameRuleChange = bol
  183. end
  184. ---
  185. -- 获取再来一局玩法状态
  186. -- 检测点再来一局的时候,玩法是否被修改。如果是修改那么提示创建失败。
  187. -- @return
  188. --
  189. function IPlayGameAgain.getRuleChangeStatus()
  190. return IPlayGameAgain.isGameRuleChange
  191. end
  192. ---
  193. -- 保存房间id
  194. -- 邀请的时候需要用到数据
  195. -- @param idx
  196. -- @return
  197. --
  198. function IPlayGameAgain.setGameRoomId(idx)
  199. IPlayGameAgain.gameRoomId = idx
  200. end
  201. ---
  202. -- 获取房间id
  203. -- @return
  204. --
  205. function IPlayGameAgain.getGameRoomId()
  206. return IPlayGameAgain.gameRoomId;
  207. end
  208. ---
  209. -- 保存玩家是否创建过房间
  210. -- @param bol
  211. -- @return
  212. --
  213. function IPlayGameAgain.setMyGameCreateStatus(bol)
  214. IPlayGameAgain.myGameCreateStatus = bol
  215. end
  216. ---
  217. -- 获取玩家是否创建过房间
  218. -- @return
  219. --
  220. function IPlayGameAgain.getMyGameCreateStatus()
  221. return IPlayGameAgain.myGameCreateStatus;
  222. end
  223. return IPlayGameAgain;