No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

377 líneas
11 KiB

  1. local CreateRoom = class("CreateRoomItem_PK_ERDouDiZhu", require("luaScript.Views.CreateRoom.CreateRoomItemBase"))
  2. function CreateRoom:ctor( defaultValues)
  3. CreateRoom.super.ctor(self, defaultValues, "CreateRoomItem_PK_ERDouDiZhu.json")
  4. local ui = loadUI("res/ui/ui_chuangjian/pk_chuangjian_erddz.ui")
  5. self.ui = ui
  6. self:addChild(ui)
  7. self:initCreateRoomCost();
  8. -- 钻石
  9. self.PayRadioManager = import("luaScript.Tools.RadioManager"):new()
  10. -- 模式
  11. self.GameModeManager = import("luaScript.Tools.RadioManager"):new()
  12. -- 封顶
  13. self.FengDingManager = import("luaScript.Tools.RadioManager"):new()
  14. -- 让牌
  15. self.LetCardManager = import("luaScript.Tools.RadioManager"):new()
  16. -- 玩法
  17. self.WanFaManager = import("luaScript.Tools.CheckBoxManager"):new()
  18. -- 其它
  19. self.OtherManager = import("luaScript.Tools.CheckBoxManager"):new()
  20. self.otherCheckBoxManager = import("luaScript.Tools.CheckBoxManager"):new()
  21. self:onHideCestView() -- 隐藏cest的界面
  22. end
  23. function CreateRoom:onHideCestView()
  24. if self.ui.Items.Button_pay0_tips then
  25. self.ui.Items.Button_pay0_tips:setVisible(false)
  26. end
  27. if self.ui.Items.Button_pay1_tips then
  28. self.ui.Items.Button_pay1_tips:setVisible(false)
  29. end
  30. if self.ui.Items.ImageView_pay0_tips then
  31. self.ui.Items.ImageView_pay0_tips:setVisible(false)
  32. end
  33. if self.ui.Items.ImageView_pay1_tips then
  34. self.ui.Items.ImageView_pay1_tips:setVisible(false)
  35. end
  36. end
  37. function CreateRoom:onShowCestView()
  38. if self.ui.Items.Text_pay0 then
  39. self.ui.Items.Text_pay0:setText("免费")
  40. end
  41. if self.ui.Items.Text_pay1 then
  42. self.ui.Items.Text_pay1:setText("自费")
  43. end
  44. if self.ui.Items.Button_pay0_tips then
  45. self.ui.Items.Button_pay0_tips:setVisible(true)
  46. end
  47. if self.ui.Items.Button_pay1_tips then
  48. self.ui.Items.Button_pay1_tips:setVisible(true)
  49. end
  50. if self.ui.Items.ImageView_pay0_tips then
  51. self.ui.Items.ImageView_pay0_tips:setVisible(false)
  52. end
  53. if self.ui.Items.Button_pay0_tips then
  54. self.ui.Items.Button_pay0_tips:registerClick(function()
  55. if self.ui.Items.ImageView_pay0_tips then
  56. local isVisible = not self.ui.Items.ImageView_pay0_tips:isVisible()
  57. self.ui.Items.ImageView_pay0_tips:setVisible(isVisible)
  58. end
  59. end)
  60. end
  61. if self.ui.Items.ImageView_pay1_tips then
  62. self.ui.Items.ImageView_pay1_tips:setVisible(false)
  63. end
  64. if self.ui.Items.Button_pay1_tips then
  65. self.ui.Items.Button_pay1_tips:registerClick(function()
  66. if self.ui.Items.ImageView_pay1_tips then
  67. local isVisible = not self.ui.Items.ImageView_pay1_tips:isVisible()
  68. self.ui.Items.ImageView_pay1_tips:setVisible(isVisible)
  69. end
  70. end)
  71. end
  72. end
  73. function CreateRoom:onEnter()
  74. CreateRoom.super.onEnter(self)
  75. -- 房费
  76. if self.PayRadioManager then
  77. self.PayRadioManager:addItem(self.ui.Items.CheckBox_1_1, 0) -- 房主支付
  78. self.PayRadioManager:addItem(self.ui.Items.CheckBox_1_2, 1) -- AA支付
  79. local default = self:getDefaultValue("deductRule") or 0
  80. self.PayRadioManager:setDefault(default)
  81. self.PayRadioManager:setCallback(function ()
  82. playBtnEffect()
  83. app:dispatchEvent({name = "onChangePayMode"})
  84. end)
  85. end
  86. -- 模式
  87. if self.GameModeManager then
  88. self.GameModeManager:addItem(self.ui.Items.CheckBox_2_1, 1) -- 叫地主
  89. self.GameModeManager:addItem(self.ui.Items.CheckBox_2_2, 2) -- 叫分
  90. local default = self:getDefaultValue("playMode") or 1
  91. self.GameModeManager:setDefault(default)
  92. self.GameModeManager:setCallback(function ()
  93. playBtnEffect()
  94. end)
  95. end
  96. -- 封顶
  97. if self.FengDingManager then
  98. self.FengDingManager:addItem(self.ui.Items.CheckBox_3_1, 24) -- 24
  99. self.FengDingManager:addItem(self.ui.Items.CheckBox_3_2, 48) -- 48
  100. self.FengDingManager:addItem(self.ui.Items.CheckBox_3_3, 96) -- 96
  101. self.FengDingManager:addItem(self.ui.Items.CheckBox_3_4, 192) -- 192
  102. self.FengDingManager:addItem(self.ui.Items.CheckBox_3_5, 0) -- 无上限
  103. local default = self:getDefaultValue("scoreLimit") or 24
  104. self.FengDingManager:setDefault(default)
  105. self.FengDingManager:setCallback(function ()
  106. playBtnEffect()
  107. end)
  108. end
  109. -- 让牌
  110. if self.LetCardManager then
  111. self.LetCardManager:addItem(self.ui.Items.CheckBox_4_1, 0) -- 0
  112. self.LetCardManager:addItem(self.ui.Items.CheckBox_4_2, 2) -- 2
  113. self.LetCardManager:addItem(self.ui.Items.CheckBox_4_3, 3) -- 3
  114. self.LetCardManager:addItem(self.ui.Items.CheckBox_4_4, 4) -- 4
  115. local default = self:getDefaultValue("rangPai") or 0
  116. self.LetCardManager:setDefault(default)
  117. self.LetCardManager:setCallback(function ()
  118. playBtnEffect()
  119. end)
  120. --说明
  121. self.ui.Items.ImageView_RP4:setVisible(false)
  122. self.ui.Items.Button_RP4:registerClick(function()
  123. self.ui.Items.ImageView_RP4:setVisible(not self.ui.Items.ImageView_RP4:isVisible())
  124. end)
  125. end
  126. -- 玩法
  127. if self.WanFaManager then
  128. local values = {
  129. [1] = {selectValue = 0x01, unselectValue = 0},
  130. [2] = {selectValue = 0x02, unselectValue = 0},
  131. [3] = {selectValue = 0x04, unselectValue = 0},
  132. [4] = {selectValue = 0x08, unselectValue = 0},
  133. [5] = {selectValue = 0x10, unselectValue = 0},
  134. [6] = {selectValue = 0x20, unselectValue = 0},
  135. }
  136. self.WanFaManager:addItem(self.ui.Items.CheckBox_6_3, values[1].selectValue, values[1].selectValue, values[1].unselectValue) -- 三张
  137. self.WanFaManager:addItem(self.ui.Items.CheckBox_6_2, values[2].selectValue, values[2].selectValue, values[2].unselectValue) -- 三带二
  138. self.WanFaManager:addItem(self.ui.Items.CheckBox_6_1, values[3].selectValue, values[3].selectValue, values[3].unselectValue) -- 四带二
  139. self.WanFaManager:addItem(self.ui.Items.CheckBox_5_1, values[4].selectValue, values[4].selectValue, values[4].unselectValue) -- 加倍
  140. self.WanFaManager:addItem(self.ui.Items.CheckBox_5_2, values[5].selectValue, values[5].selectValue, values[5].unselectValue) -- 底牌翻倍
  141. self.WanFaManager:addItem(self.ui.Items.CheckBox_5_3, values[6].selectValue, values[6].selectValue, values[6].unselectValue) -- 轮流先叫
  142. -- 设置默认状态
  143. local tValues = {}
  144. local default = self:getDefaultValue("specialRule") or 0
  145. for k,v in ipairs(values) do
  146. if getNumBand(default, v.selectValue) > 0 then
  147. table.insert(tValues, v.selectValue)
  148. end
  149. end
  150. self.WanFaManager:setDefault(tValues)
  151. end
  152. -- 其它
  153. if self.OtherManager then
  154. local values = {
  155. [1] = {selectValue = 0x01, unselectValue = 0},
  156. }
  157. self.OtherManager:addItem(self.ui.Items.CheckBox_7_1, values[1].selectValue, values[1].selectValue, values[1].unselectValue) -- 屏蔽...
  158. -- 设置默认状态
  159. local tValues = {}
  160. local default = self:getDefaultValue("extPlay") or 0
  161. for k,v in ipairs(values) do
  162. if getNumBand(default, v.selectValue) > 0 then
  163. table.insert(tValues, v.selectValue)
  164. end
  165. end
  166. self.OtherManager:setDefault(tValues)
  167. end
  168. self:initJiFenBeiShu()
  169. self:initLayoutEvent()
  170. self:initOtherCheckBoxManager()
  171. end
  172. ---
  173. -- 初始化其他选项
  174. -- @return
  175. --
  176. function CreateRoom:initOtherCheckBoxManager ()
  177. if not self.otherCheckBoxManager then
  178. return
  179. end
  180. self.otherCheckBoxManager:addItem(self.ui.Items.CheckBox_ForbidProp, "forbidProp", 1, 0)--屏蔽快捷语与道具
  181. self.otherCheckBoxManager:addItem(self.ui.Items.CheckBox_ForbidVoice, "forbidVoice", 1, 0)--屏蔽语音
  182. local forbidProp = self:getDefaultValue("forbidProp") or 0
  183. local forbidVoice = self:getDefaultValue("forbidVoice") or 0
  184. local defaults = {}
  185. if forbidProp > 0 then
  186. table.insert(defaults, "forbidProp")
  187. end
  188. if forbidVoice == 1 then
  189. table.insert(defaults, "forbidVoice")
  190. end
  191. self.otherCheckBoxManager:setDefault(defaults)
  192. end
  193. function CreateRoom:initCreateRoomCost ()
  194. -- 整理不同局数对应的房卡消耗
  195. local payTypes={}
  196. local gameConfig = app.user:getGameConfig(GAME_IDS.ERDouDiZhu)--app.gameId);
  197. if gameConfig then
  198. local arrGameRound = toNumberArray(",")(gameConfig.gameRound)
  199. local arrRequireCards = toNumberArray(",")(gameConfig.requireCards)
  200. local arrRequireCardsAA = toNumberArray(",")(gameConfig.AArequireCards)
  201. for idx, gameRound in ipairs(arrGameRound) do
  202. payTypes[gameRound] =
  203. {
  204. roomCard = arrRequireCards[idx],
  205. roomCardAA = arrRequireCardsAA[idx],
  206. }
  207. end
  208. end
  209. self.cost = payTypes
  210. end
  211. function CreateRoom:getCreateRoomCost (jushu)
  212. if self.cost then
  213. local costInfo = self.cost[jushu]
  214. if costInfo then
  215. local payMode = self.PayRadioManager:getResult()
  216. if payMode == 0 then
  217. return costInfo.roomCard or 0
  218. elseif payMode == 1 then
  219. return costInfo.roomCardAA or 0
  220. end
  221. end
  222. end
  223. return 0
  224. end
  225. function CreateRoom:initLayoutEvent()
  226. self.ui.Items.Layout_liuzhou:registerClick(function()
  227. local buttons = {
  228. {buttonName = "Button_RP4", tipsName = "ImageView_RP4"},
  229. {buttonName = "Button_JFBS", tipsName = "ImageView_JFBS"},
  230. };
  231. -- 隐藏其他提示信息
  232. for k, v in ipairs(buttons) do
  233. local tipsNode = self.ui.Items[v.tipsName]
  234. tipsNode:setVisible(false)
  235. end
  236. end)
  237. end
  238. -- 初始化积分倍数
  239. function CreateRoom:initJiFenBeiShu()
  240. self.ui.Items.Button_jia:registerClick(handler(self, self.onClickAdd))
  241. self.ui.Items.Button_jian:registerClick(handler(self, self.onClickJian))
  242. self.curJFBS = self:getDefaultValue("baseMulti") or 1;
  243. self:updateJiFenBeiShu()
  244. --积分倍数说明
  245. self.ui.Items.ImageView_JFBS:setVisible(false)
  246. self.ui.Items.Button_JFBS:registerClick(function()
  247. self.ui.Items.ImageView_JFBS:setVisible(not self.ui.Items.ImageView_JFBS:isVisible())
  248. end)
  249. -- self.ui.Items.Layout_JiFenBeiShu:setVisible(false)
  250. end
  251. --更新积分倍数
  252. function CreateRoom:updateJiFenBeiShu()
  253. self.curJFBS = self.curJFBS >= 1.0 and math.floor(self.curJFBS) or self.curJFBS;
  254. self.ui.Items.Text_jifen:setText(self.curJFBS)
  255. self.ui.Items.Button_jia:setEnabled(self.curJFBS ~= 100)
  256. self.ui.Items.Button_jian:setEnabled(self.curJFBS ~= 0.1)
  257. end
  258. --按钮加
  259. function CreateRoom:onClickAdd()
  260. playBtnEffect()
  261. if not self.curJFBS then
  262. return
  263. end
  264. if self.curJFBS >= 1.0 then
  265. self.curJFBS = self.curJFBS + 1.0
  266. else
  267. self.curJFBS = self.curJFBS + 0.1
  268. end
  269. if self.curJFBS >= 100 then
  270. self.curJFBS = 100;
  271. end
  272. self:updateJiFenBeiShu()
  273. end
  274. --按钮减
  275. function CreateRoom:onClickJian()
  276. playBtnEffect()
  277. if not self.curJFBS then
  278. return
  279. end
  280. if self.curJFBS <= 1.0 then
  281. self.curJFBS = self.curJFBS - 0.1
  282. else
  283. self.curJFBS = self.curJFBS - 1.0
  284. end
  285. if self.curJFBS <= 0.1 then
  286. self.curJFBS = 0.1
  287. end
  288. self:updateJiFenBeiShu()
  289. end
  290. function CreateRoom:getRuleResult()
  291. -- 钻石
  292. local deductRule = self.PayRadioManager:getResult()
  293. -- 模式
  294. local playMode = self.GameModeManager:getResult()
  295. -- 封顶
  296. local scoreLimit = self.FengDingManager:getResult()
  297. -- 让牌
  298. local rangPai = self.LetCardManager:getResult()
  299. -- 玩法
  300. local nSpecialRuleTable = self.WanFaManager:getResult()
  301. local specialRule = 0
  302. for i, v in pairs(nSpecialRuleTable) do
  303. specialRule = getNumOr(specialRule, v.value)
  304. end
  305. -- 其他
  306. local nExtPlayTable = self.OtherManager:getResult2()
  307. local extPlay = nExtPlayTable[1]
  308. -- 屏蔽开关,大厅用的这个字段来表示,所以另加多一次
  309. -- local forbidProp = extPlay
  310. local other = self.otherCheckBoxManager:getResult2()
  311. local forbidProp = other["forbidProp"]
  312. local forbidVoice = other["forbidVoice"]
  313. self.defaultValus =
  314. {
  315. gameid = self.gameid,
  316. gamerule = 1,
  317. game_num = juShu,
  318. deductRule= deductRule,
  319. playMode = playMode,
  320. scoreLimit = scoreLimit,
  321. rangPai = rangPai,
  322. specialRule = specialRule,
  323. -- extPlay = extPlay,
  324. baseMulti = self.curJFBS,
  325. forbidProp = forbidProp,
  326. forbidVoice = forbidVoice,
  327. }
  328. -- 保存玩家的选择
  329. self:saveDefaultValues()
  330. local strGameInfo = json.encode(self.defaultValus)
  331. return juShu, strGameInfo
  332. end
  333. return CreateRoom