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.

302 lines
7.8 KiB

  1. -- 玩法界面
  2. local HelpView = class("HelpView", cc.UIView)
  3. function HelpView:ctor()
  4. HelpView.super.ctor(self);
  5. local ui = loadUI("res/ui/ui_dating/ui_bangzhu.ui")
  6. self.ui = ui
  7. self:addChild(ui)
  8. --当前选中游戏类型
  9. self.choiceGameType = 1
  10. --点击次数
  11. self.touchNum = 1
  12. --类型点击次数
  13. self.touchTypeNum = 1
  14. --默认进来的类型
  15. self.defaultGameType = GAME_TYPE.MJ
  16. self:initGames()
  17. end
  18. function HelpView:initGames()
  19. self.games = {}
  20. end
  21. function HelpView:onEnter()
  22. HelpView.super.onEnter(self)
  23. self.ui.Items.Layout_Title:setVisible(false)
  24. self.ui.Items.Layout_Content:setVisible(false)
  25. self.ui.Items.Layout_Space:setVisible(false)
  26. self.ui.Items.Layout_game_btn:setVisible(false)
  27. --关闭
  28. self.ui.Items.Button:registerClick(handler(self , self.onClickClose))
  29. --扑克玩法
  30. self.ui.Items.Button_game_type_1:registerClick(function ()
  31. self:onClickGameType(GAME_TYPE.PK)
  32. end)
  33. --字牌玩法
  34. self.ui.Items.Button_game_type_2:registerClick(function ()
  35. self:onClickGameType(GAME_TYPE.ZP)
  36. end)
  37. --麻将玩法
  38. self.ui.Items.Button_game_type_3:registerClick(function ()
  39. self:onClickGameType(GAME_TYPE.MJ)
  40. end)
  41. --默认选中麻将类型
  42. self:onClickGameType(self.defaultGameType)
  43. --[[ --初始化左边游戏按钮
  44. self:createLeftGameBtn()
  45. --显示默认玩法规则说明
  46. self:showHelpInfo()--]]
  47. end
  48. function HelpView:showHelpInfo()
  49. local uiScrollView = self.ui.Items.ScrollView;
  50. uiScrollView:removeAllChildren()
  51. uiScrollView:getInnerContainer():setAutoSize(true)
  52. if self.ruleText ~= -1 and self.ruleText ~= nil then
  53. for k,v in ipairs(self.ruleText) do
  54. local uiTitle = self:createTitle(v.title)
  55. uiScrollView:addChild(uiTitle)
  56. for kk,vv in ipairs(v.content) do
  57. local uiContent = self:createContent(vv)
  58. uiScrollView:addChild(uiContent)
  59. end
  60. end
  61. end
  62. uiScrollView:getVBar():setVisible(false)
  63. uiScrollView:jumpToTopOnSizeChanged()
  64. end
  65. --游戏根据sort排序
  66. function HelpView:sortByGameSort()
  67. -- local gameList = app.serverConfigs.subGameList
  68. local gameList = app.serverConfigs:getSubGameList()
  69. local ttGameList = {}
  70. if not gameList then
  71. return ttGameList
  72. end
  73. for k,v in pairs(gameList) do
  74. if v.gameId and v.show then
  75. table.insert(ttGameList, v)
  76. end
  77. end
  78. table.sort(ttGameList, function(a, b)
  79. local numA = tonumber(a)
  80. local numB = tonumber(b)
  81. if numA ~= nil and numB ~= nil then
  82. return numA > numB
  83. else
  84. if a.sortIndex and b.sortIndex then
  85. return a.sortIndex < b.sortIndex
  86. else
  87. return false
  88. end
  89. end
  90. end)
  91. return ttGameList
  92. end
  93. function HelpView:createLeftGameBtn()
  94. local uiScrollView = self.ui.Items.ScrollView_left_btn;
  95. uiScrollView:removeAllChildren()
  96. uiScrollView:hideAllBar();
  97. uiScrollView:getInnerContainer():setAutoSize(true)
  98. --左边游戏名字按钮单选集合
  99. self.btnRadioManager = nil
  100. self.btnRadioManager = import("luaScript.Tools.RadioManager"):new()
  101. local idx = 1
  102. local gameList = self:sortByGameSort()
  103. local uiTemplate = self.ui.Items.Layout_game_btn
  104. for k, gameInfo in pairsByKeys(gameList) do
  105. if gameInfo.gameId ~= nil and gameInfo.gameId ~= GAME_IDS.More and gameInfo.show == true then
  106. --更多游戏不显示按钮
  107. --玩法类型
  108. local gameConfig = getSubGameConfig(tonumber(gameInfo.gameId))
  109. if gameConfig then
  110. local belongType = gameConfig.belongType
  111. if belongType == self.choiceGameType then
  112. if gameConfig.bSingleGame then
  113. for ruleID,ruleInfo in pairsByKeys(gameConfig.GameType) do
  114. --游戏是否属于当前选中类型
  115. local uiItem = uiTemplate:getCopied()
  116. uiItem.Items = getUIItems(uiItem)
  117. uiItem.Items.Text_GameName:setColor(cc.c3b(49,67,81))
  118. --默认将第一个游戏设置为选中状态
  119. if idx == 1 then
  120. self.ruleText = self.games[tonumber(gameInfo.gameId * 10000 + tonumber(ruleID))]
  121. uiItem.Items.Button_name_bg:setBright(false)
  122. uiItem.Items.Text_GameName:setColor(cc.c3b(179,69,12))
  123. end
  124. uiItem.Items.ImageView_name:setVisible(false)
  125. uiItem.Items.Text_GameName:setString(ruleInfo or "")
  126. uiItem.Items.Button_name_bg:registerClick(function ()
  127. playBtnTagEffect()
  128. self.ruleText = self.games[tonumber(gameInfo.gameId) * 10000 + tonumber(ruleID)]
  129. self:updateGameNameImg(tonumber(gameInfo.gameId) * 10000 + tonumber(ruleID))
  130. self:showHelpInfo()
  131. end)
  132. uiItem:setTag(tonumber(gameInfo.gameId)* 10000 + tonumber(ruleID))
  133. uiScrollView:addChild(uiItem)
  134. idx = idx + 1
  135. end
  136. else
  137. --游戏是否属于当前选中类型
  138. local uiItem = uiTemplate:getCopied()
  139. uiItem.Items = getUIItems(uiItem)
  140. uiItem.Items.ImageView_name:setVisible(false)
  141. uiItem.Items.Text_GameName:setColor(cc.c3b(49,67,81))
  142. uiItem.Items.Text_GameName:setString(gameInfo.gameName or "")
  143. --默认将第一个游戏设置为选中状态
  144. if idx == 1 then
  145. self.ruleText = self.games[tonumber(gameInfo.gameId)]
  146. uiItem.Items.Button_name_bg:setBright(false)
  147. uiItem.Items.Text_GameName:setColor(cc.c3b(179,69,12))
  148. end
  149. uiItem.Items.Button_name_bg:registerClick(function ()
  150. playBtnTagEffect()
  151. self.ruleText = self.games[tonumber(gameInfo.gameId)]
  152. logD(self.ruleText)
  153. self:updateGameNameImg(tonumber(gameInfo.gameId))
  154. self:showHelpInfo()
  155. end)
  156. uiItem:setTag(tonumber(gameInfo.gameId))
  157. uiScrollView:addChild(uiItem)
  158. idx = idx + 1
  159. end
  160. end
  161. end
  162. end
  163. end
  164. uiScrollView:jumpToTopOnSizeChanged()
  165. end
  166. function HelpView:createTitle(text)
  167. local ui = self.ui.Items.Layout_Title:getCopied()
  168. ui.Items = getUIItems(ui);
  169. ui.Items.Text_Title:setString(text)
  170. ui:setVisible(true)
  171. return ui;
  172. end
  173. function HelpView:createContent(text)
  174. local ui = self.ui.Items.Layout_Content:getCopied()
  175. ui.Items = getUIItems(ui);
  176. ui.Items.Text_Content:setString(text)
  177. ui:requestDoLayout()
  178. ui:doLayout()
  179. ui:setVisible(true)
  180. return ui
  181. end
  182. function HelpView:createSpace()
  183. local ui = self.ui.Items.Layout_Space:getCopied()
  184. ui:setVisible(true)
  185. return ui;
  186. end
  187. -- 关闭响应函数
  188. function HelpView:onClickClose()
  189. playBtnCloseEffect()
  190. self:removeFromParent()
  191. end
  192. --更新游戏名图片
  193. function HelpView:updateGameNameImg(gameID)
  194. local uiScrollView = self.ui.Items.ScrollView_left_btn;
  195. local childrens = uiScrollView:getChildren()
  196. local childNum = table.nums(childrens)
  197. local gameRule = 0
  198. if gameID > 10000 then
  199. gameRule = math.floor(gameID%10000)
  200. gameID = math.floor(gameID/10000)
  201. end
  202. local gameConfig = getSubGameConfig(gameID)
  203. for k, leftBtn in pairs(childrens) do
  204. local btnTag = leftBtn:getTag()
  205. local gameRuleTag = 0
  206. local gameIDTag = tonumber(btnTag)
  207. local bSingleGame = false
  208. if btnTag > 10000 then
  209. bSingleGame = true
  210. gameRuleTag = math.floor(btnTag%10000)
  211. gameIDTag = math.floor(btnTag/10000)
  212. end
  213. if gameIDTag == gameID and gameRuleTag == gameRule then
  214. leftBtn.Items.Button_name_bg:setBright(false)
  215. leftBtn.Items.Text_GameName:setColor(cc.c3b(179,69,12))
  216. else
  217. leftBtn.Items.Button_name_bg:setBright(true)
  218. leftBtn.Items.Text_GameName:setColor(cc.c3b(49,67,81))
  219. end
  220. end
  221. end
  222. --更新游戏名背景按钮状态
  223. function HelpView:updateGameNameBgStatus()
  224. end
  225. --选择游戏类型
  226. function HelpView:onClickGameType(value)
  227. if self.touchTypeNum > 1 then
  228. playBtnTagEffect()
  229. end
  230. self.touchTypeNum = self.touchTypeNum + 1
  231. self.choiceGameType = value
  232. for i = 1, 3 do
  233. local btnNode = string.format("Button_game_type_%d", i)
  234. if i == value then
  235. self.ui.Items[btnNode]:setBright(false)
  236. else
  237. self.ui.Items[btnNode]:setBright(true)
  238. end
  239. end
  240. --重新创建左边游戏名字按钮
  241. self:createLeftGameBtn()
  242. --显示游戏玩法规则说明
  243. self:showHelpInfo()
  244. end
  245. return HelpView