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.

484 lines
16 KiB

  1. local CreateRoom_PDK_luzhou = class("CreateRoom_PDK_luzhou", require("luaScript.Views.CreateRoom.CreateRoomItemBase"))
  2. --[[
  3. isCreateRoom和defaultValus决定了从哪里读取默认值
  4. isCreateRoom 为true时,从本地文件读取,defaultValus无效.
  5. 否则使用defaultValus的值
  6. defaultValus : 跟服务器strGameInfo对应的json对象
  7. --]]
  8. function CreateRoom_PDK_luzhou:ctor(defaultValus)
  9. CreateRoom_PDK_luzhou.super.ctor(self, defaultValus, "CreateRoom_PDK_luzhou.json")
  10. local ui = loadUI("res/ui/ui_chuangjian/pk_chuangjian_luzhoupdk.ui")
  11. self.ui = ui
  12. self:addChild(ui)
  13. local gameConfig = getSubGameConfig(GAME_IDS.luzhouPaoDeKuai)
  14. self.curPlayType = 0
  15. -- 局数 - 单选
  16. self.jsRadioManager = import("luaScript.Tools.RadioManager"):new()
  17. -- 人数 - 单选
  18. self.pcountRadioManager = import("luaScript.Tools.RadioManager"):new()
  19. -- 玩法 - 单选
  20. self.wanfaRadioManager = import("luaScript.Tools.RadioManager"):new()
  21. -- 规则
  22. self.typeCheckBoxManager = import("luaScript.Tools.CheckBoxManager"):new();
  23. -- 付费方式
  24. self.payRadioManager = import("luaScript.Tools.RadioManager"):new()
  25. -- 首轮出牌规则
  26. self.firstOutRadioManager = import("luaScript.Tools.RadioManager"):new()
  27. -- 两人首轮出牌规则
  28. self.firstOutExBoxManager = import("luaScript.Tools.CheckBoxManager"):new()
  29. -- 颗数选择
  30. self.KeShuRadioManager = import("luaScript.Tools.RadioManager"):new()
  31. -- 其他选项
  32. self.otherCheckBoxManager = import("luaScript.Tools.CheckBoxManager"):new()
  33. self:initRadio()
  34. self:onHideCestView() -- 隐藏cest的界面
  35. end
  36. function CreateRoom_PDK_luzhou:onHideCestView()
  37. if self.ui.Items.Button_pay0_tips then
  38. self.ui.Items.Button_pay0_tips:setVisible(false)
  39. end
  40. if self.ui.Items.Button_pay1_tips then
  41. self.ui.Items.Button_pay1_tips:setVisible(false)
  42. end
  43. if self.ui.Items.ImageView_pay0_tips then
  44. self.ui.Items.ImageView_pay0_tips:setVisible(false)
  45. end
  46. if self.ui.Items.ImageView_pay1_tips then
  47. self.ui.Items.ImageView_pay1_tips:setVisible(false)
  48. end
  49. end
  50. function CreateRoom_PDK_luzhou:onShowCestView()
  51. if self.ui.Items.Text_pay0 then
  52. self.ui.Items.Text_pay0:setText("免费")
  53. end
  54. if self.ui.Items.Text_pay1 then
  55. self.ui.Items.Text_pay1:setText("自费")
  56. end
  57. if self.ui.Items.Button_pay0_tips then
  58. self.ui.Items.Button_pay0_tips:setVisible(true)
  59. end
  60. if self.ui.Items.Button_pay1_tips then
  61. self.ui.Items.Button_pay1_tips:setVisible(true)
  62. end
  63. if self.ui.Items.ImageView_pay0_tips then
  64. self.ui.Items.ImageView_pay0_tips:setVisible(false)
  65. end
  66. if self.ui.Items.Button_pay0_tips then
  67. self.ui.Items.Button_pay0_tips:registerClick(function()
  68. if self.ui.Items.ImageView_pay0_tips then
  69. local isVisible = not self.ui.Items.ImageView_pay0_tips:isVisible()
  70. self.ui.Items.ImageView_pay0_tips:setVisible(isVisible)
  71. end
  72. end)
  73. end
  74. if self.ui.Items.ImageView_pay1_tips then
  75. self.ui.Items.ImageView_pay1_tips:setVisible(false)
  76. end
  77. if self.ui.Items.Button_pay1_tips then
  78. self.ui.Items.Button_pay1_tips:registerClick(function()
  79. if self.ui.Items.ImageView_pay1_tips then
  80. local isVisible = not self.ui.Items.ImageView_pay1_tips:isVisible()
  81. self.ui.Items.ImageView_pay1_tips:setVisible(isVisible)
  82. end
  83. end)
  84. end
  85. end
  86. --根据局数获取房费
  87. function CreateRoom_PDK_luzhou:getCreateRoomCost(jushu)
  88. if self.cost then
  89. local costInfo = self.cost[jushu]
  90. if costInfo then
  91. local payMode = self.payRadioManager:getResult()
  92. if payMode == 0 then
  93. return costInfo[1].value or 0
  94. elseif payMode == 1 then
  95. return costInfo[2].value or 0
  96. end
  97. end
  98. end
  99. return 0
  100. end
  101. function CreateRoom_PDK_luzhou:setPayConfig( config )
  102. --消耗钻石移到创建按钮上面
  103. --[[ if config and #config>0 then
  104. self.ui.Items.Text_FangZhu:setString(""..(config[1].value or ""))
  105. self.ui.Items.Text_AAPay:setString(""..(config[2].value or ""))
  106. end--]]
  107. end
  108. function CreateRoom_PDK_luzhou:initRadio()
  109. -- 整理不同局数对应的房卡消耗
  110. local payTypes={}
  111. local gameConfig = app.user:getGameConfig(GAME_IDS.luzhouPaoDeKuai);
  112. if gameConfig then
  113. local arrGameRound = toNumberArray(",")(gameConfig.gameRound)
  114. local arrRequireCards = toNumberArray(",")(gameConfig.requireCards)
  115. local arrRequireCardsAA = toNumberArray(",")(gameConfig.AArequireCards)
  116. for idx, gameRound in ipairs(arrGameRound) do
  117. payTypes[gameRound] =
  118. {
  119. {name="房主付费("..arrRequireCards[idx].."钻)",value=arrRequireCards[idx]},
  120. {name="AA付费(各"..arrRequireCardsAA[idx].."钻)",value=arrRequireCardsAA[idx]}
  121. }
  122. end
  123. end
  124. self.cost = payTypes
  125. --[[--局数
  126. if self.jsRadioManager then
  127. self.jsRadioManager:addItem(self.ui.Items.CheckBox_js_1, 10) -- (10局)
  128. self.jsRadioManager:addItem(self.ui.Items.CheckBox_js_2, 20) -- (20局)
  129. local defaultValue = self:getDefaultValue("totalGameNum") or 10
  130. self.jsRadioManager:setDefault(defaultValue)
  131. local callBack = function ( value )
  132. local config = payTypes[value] or {}
  133. self:setPayConfig(config)
  134. end
  135. self.jsRadioManager:setCallback(callBack)
  136. callBack(defaultValue)
  137. end --]]
  138. --人数
  139. if self.pcountRadioManager then
  140. self.pcountRadioManager:addItem(self.ui.Items.CheckBox_playerCount_1, 1) -- (快速成局)
  141. self.pcountRadioManager:addItem(self.ui.Items.CheckBox_playerCount_2, 4) -- (4人)
  142. self.pcountRadioManager:addItem(self.ui.Items.CheckBox_playerCount_3, 3) -- (3人)
  143. self.pcountRadioManager:addItem(self.ui.Items.CheckBox_playerCount_4, 2) -- (2人)
  144. local defaultValue = self:getDefaultValue("playnum") or 1--默认快速成局
  145. self.pcountRadioManager:setDefault(defaultValue)
  146. local callBack = function ( value )
  147. if value == 2 then
  148. self.ui.Items.CheckBox_type_2:setVisible(false)
  149. self.ui.Items.Button_JPQ:setVisible(false)
  150. self.ui.Items.ImageView_5:setVisible(false)
  151. else
  152. self.ui.Items.CheckBox_type_2:setVisible(true)
  153. self.ui.Items.Button_JPQ:setVisible(true)
  154. end
  155. end
  156. self.pcountRadioManager:setCallback(callBack)
  157. callBack(defaultValue)
  158. end
  159. --玩法
  160. if self.wanfaRadioManager then
  161. self.wanfaRadioManager:addItem(self.ui.Items.CheckBox_wanfa_1, 0) -- 无鬼
  162. self.wanfaRadioManager:addItem(self.ui.Items.CheckBox_wanfa_2, 2) -- 两鬼
  163. self.wanfaRadioManager:addItem(self.ui.Items.CheckBox_wanfa_3, 3) -- 三鬼
  164. local defaultValue = self:getDefaultValue("jokerCount") or 0
  165. self.wanfaRadioManager:setDefault(defaultValue)
  166. local callBack = function ( value )
  167. self.ui.Items.Layout_Type_Ex:setVisible(value == 0)
  168. self.ui.Items.Layout_1:requestDoLayout()
  169. self.ui.Items.Layout_1:doLayout()
  170. end
  171. self.wanfaRadioManager:setCallback(callBack)
  172. callBack(defaultValue)
  173. end
  174. --快速成局说明
  175. self.ui.Items.ImageView_3:setVisible(false)
  176. self.ui.Items.Button_KSCJ:registerClick(function()
  177. playBtnEffect()
  178. self.ui.Items.ImageView_3:setVisible(not self.ui.Items.ImageView_3:isVisible())
  179. end)
  180. --记牌器说明
  181. self.ui.Items.ImageView_5:setVisible(false)
  182. self.ui.Items.Button_JPQ:registerClick(function()
  183. playBtnEffect()
  184. self.ui.Items.ImageView_5:setVisible(not self.ui.Items.ImageView_5:isVisible())
  185. end)
  186. --规则
  187. if self.typeCheckBoxManager then
  188. --[[self.typeCheckBoxManager:addItem(self.ui.Items.CheckBox_type_1, "tp_1", 0x0001, 0x0000) --0x0001 红桃10扎鸟
  189. self.typeCheckBoxManager:addItem(self.ui.Items.CheckBox_type_2, "tp_2", 0x0002, 0x0000) --0x0002 可4带3
  190. self.typeCheckBoxManager:addItem(self.ui.Items.CheckBox_type_3, "tp_3", 0x0004, 0x0000) --0x0004 炸弹可拆
  191. --self.typeCheckBoxManager:addItem(self.ui.Items.CheckBox_type_4, "tp_4", 0x0008, 0x0000) --0x0008 3张,飞机少带接完
  192. -- self.typeCheckBoxManager:addItem(self.ui.Items.CheckBox_type_5, "tp_5", 0x0010, 0x0000) --0x0010 首局先出黑桃三
  193. self.typeCheckBoxManager:addItem(self.ui.Items.CheckBox_type_6, "tp_6", 0x0020, 0x0000) --0x0020 显示牌的张数
  194. self.typeCheckBoxManager:addItem(self.ui.Items.CheckBox_type_7, "tp_7", 0x0080, 0x0000) --0x0080 AAA为炸弹
  195. local defaultValue = self:getDefaultValue("specialRule") or 0x0001
  196. if tonumber(defaultValue) == nil then
  197. defaultValue = 0x0001
  198. end
  199. local defaultT = {}
  200. if getNumBand(defaultValue, 0x0001)>0 then
  201. table.insert(defaultT, "tp_1")
  202. end
  203. if getNumBand(defaultValue, 0x0002)>0 then
  204. table.insert(defaultT, "tp_2")
  205. end
  206. if getNumBand(defaultValue, 0x0004)>0 then
  207. table.insert(defaultT, "tp_3")
  208. end
  209. if getNumBand(defaultValue, 0x0008)>0 then
  210. table.insert(defaultT, "tp_4")
  211. end
  212. if getNumBand(defaultValue, 0x0020)>0 then
  213. table.insert(defaultT, "tp_6")
  214. end
  215. if getNumBand(defaultValue, 0x0080)>0 then
  216. table.insert(defaultT, "tp_7")
  217. end
  218. self.typeCheckBoxManager:setDefault(defaultT)--]]
  219. self.typeCheckBoxManager:addItem(self.ui.Items.CheckBox_type_2, "tp_1", 0x0001, 0x0000) --0x0001 记牌器
  220. self.typeCheckBoxManager:addItem(self.ui.Items.CheckBox_type_1, "tp_2", 0x0002, 0x0000) --0x8888 有大必打
  221. self.typeCheckBoxManager:addItem(self.ui.Items.CheckBox_type_3, "tp_3", 0x0004, 0x0000) --0x0004 有大必打
  222. self.typeCheckBoxManager:addItem(self.ui.Items.CheckBox_type_4, "tp_4", 0x0008, 0x0000) --0x0008 铁二线
  223. -- self.typeCheckBoxManager:addItem(self.ui.Items.CheckBox_ForbidProp, "forbidProp", 1, 0) --
  224. local defaultValue = self:getDefaultValue("specialRule") or 0x0003
  225. if tonumber(defaultValue) == nil then
  226. defaultValue = 0x0003
  227. end
  228. local defaultT = {}
  229. if getNumBand(defaultValue, 0x0001)>0 then
  230. table.insert(defaultT, "tp_1")
  231. end
  232. if getNumBand(defaultValue, 0x0002)>0 then
  233. table.insert(defaultT, "tp_2")
  234. end
  235. if getNumBand(defaultValue, 0x0004)>0 then
  236. table.insert(defaultT, "tp_3")
  237. end
  238. if getNumBand(defaultValue, 0x0008)>0 then
  239. table.insert(defaultT, "tp_4")
  240. end
  241. -- local forbidProp = self:getDefaultValue("forbidProp")
  242. -- if forbidProp and tonumber(forbidProp) == 1 then
  243. -- table.insert(defaultT, "forbidProp")
  244. -- end
  245. self.typeCheckBoxManager:setDefault(defaultT)
  246. end
  247. --房费
  248. if self.payRadioManager then
  249. self.payRadioManager:addItem(self.ui.Items.CheckBox_FangZhu, 0)
  250. self.payRadioManager:addItem(self.ui.Items.CheckBox_AAPay, 1)
  251. local defaultValue = self:getDefaultValue("deductRule") or 0
  252. self.payRadioManager:setDefault(tonumber(defaultValue))
  253. --通知创建界面更新显示
  254. local function dispatchUpdateCost()
  255. app:dispatchEvent({name = "onChangePayMode"})
  256. end
  257. self.payRadioManager:setCallback(dispatchUpdateCost);
  258. end
  259. -- 颗数
  260. if self.KeShuRadioManager then
  261. self.KeShuRadioManager:addItem(self.ui.Items.CheckBox_6, 1); -- 1/2/4/6颗
  262. self.KeShuRadioManager:addItem(self.ui.Items.CheckBox_7, 2); -- 2/4/6/8颗
  263. self.KeShuRadioManager:addItem(self.ui.Items.CheckBox_14, 3); -- 3/5/10/15颗
  264. -- 设置默认数据
  265. local defaultValue = self:getDefaultValue("keCount") or 1
  266. self.KeShuRadioManager:setDefault(tonumber(defaultValue));
  267. end
  268. self:initLayoutEvent()
  269. self:initJiFenBeiShu()
  270. end
  271. -- 面板的点击事件,点击面板后,隐藏所有提示
  272. function CreateRoom_PDK_luzhou:initLayoutEvent()
  273. self.ui.Items.Layout_1:registerClick(function()
  274. local buttons = {
  275. {buttonName = "Button_KSCJ", tipsName = "ImageView_3"},
  276. {buttonName = "Button_JFBS", tipsName = "ImageView_JFBS"},
  277. {buttonName = "Button_JPQ", tipsName = "ImageView_5"},
  278. };
  279. -- 隐藏其他提示信息
  280. for k, v in ipairs(buttons) do
  281. local tipsNode = self.ui.Items[v.tipsName]
  282. tipsNode:setVisible(false)
  283. end
  284. end)
  285. end
  286. -- 初始化积分倍数
  287. function CreateRoom_PDK_luzhou:initJiFenBeiShu()
  288. self.ui.Items.Button_jia:registerClick(handler(self, self.onClickAdd))
  289. self.ui.Items.Button_jian:registerClick(handler(self, self.onClickJian))
  290. self.curJFBS = self:getDefaultValue("baseMulti") or 1;
  291. self:updateJiFenBeiShu()
  292. --积分倍数说明
  293. self.ui.Items.ImageView_JFBS:setVisible(false)
  294. self.ui.Items.Button_JFBS:registerClick(function()
  295. self.ui.Items.ImageView_JFBS:setVisible(not self.ui.Items.ImageView_JFBS:isVisible())
  296. end)
  297. end
  298. --更新积分倍数
  299. function CreateRoom_PDK_luzhou:updateJiFenBeiShu()
  300. self.curJFBS = self.curJFBS >= 1.0 and math.floor(self.curJFBS) or self.curJFBS;
  301. self.ui.Items.Text_jifen:setText(self.curJFBS)
  302. self.ui.Items.Button_jia:setEnabled(self.curJFBS ~= 100)
  303. self.ui.Items.Button_jian:setEnabled(self.curJFBS ~= 0.1)
  304. end
  305. --按钮加
  306. function CreateRoom_PDK_luzhou:onClickAdd()
  307. playBtnEffect()
  308. if not self.curJFBS then
  309. return
  310. end
  311. if self.curJFBS >= 1.0 then
  312. self.curJFBS = self.curJFBS + 1.0
  313. else
  314. self.curJFBS = self.curJFBS + 0.1
  315. end
  316. if self.curJFBS >= 100 then
  317. self.curJFBS = 100;
  318. end
  319. self:updateJiFenBeiShu()
  320. end
  321. --按钮减
  322. function CreateRoom_PDK_luzhou:onClickJian()
  323. playBtnEffect()
  324. if not self.curJFBS then
  325. return
  326. end
  327. if self.curJFBS <= 1.0 then
  328. self.curJFBS = self.curJFBS - 0.1
  329. else
  330. self.curJFBS = self.curJFBS - 1.0
  331. end
  332. if self.curJFBS <= 0.1 then
  333. self.curJFBS = 0.1
  334. end
  335. self:updateJiFenBeiShu()
  336. end
  337. function CreateRoom_PDK_luzhou:getRuleResult()
  338. local result = {}
  339. result.totalGameNum = self.jsRadioManager:getResult()--局数
  340. result.playnum = self.pcountRadioManager:getResult()--玩家人数
  341. result.specialRule = self.typeCheckBoxManager:getResult()--规则
  342. result.deductRule = self.payRadioManager:getResult()--房费0房主1aa
  343. result.jokerCount = self.wanfaRadioManager:getResult()--带鬼数
  344. result.keCount = self.KeShuRadioManager:getResult()--颗数
  345. result.allowPass = 1
  346. result.canoutsingle = 0
  347. local rule = 0
  348. -- local forbidProp = 0
  349. local other = self.otherCheckBoxManager:getResult2()
  350. local forbidProp = other["forbidProp"]
  351. local forbidVoice = other["forbidVoice"]
  352. for key,v in pairs(result.specialRule) do
  353. if key == "forbidProp" then
  354. -- forbidProp = v.value
  355. else
  356. if v.value == 1 and result.playnum == 2 then
  357. else
  358. rule = getNumOr(rule, v.value)
  359. end
  360. if getNumBand(v.value, 0x0002)>0 then
  361. result.allowPass = 0
  362. end
  363. if getNumBand(v.value, 0x0004)>0 then
  364. result.canoutsingle = 1
  365. end
  366. end
  367. end
  368. -- 铁二线只存在于无鬼
  369. if result.jokerCount ~= 0 then
  370. if getNumBand(rule, 0x0008)>0 then
  371. rule = getNumXor(rule, 0x0008)
  372. end
  373. end
  374. local saveRule = rule
  375. local tgameInfo = {}
  376. tgameInfo.gamerule = self.curPlayType
  377. tgameInfo.playnum = result.playnum--0 两人 1 三人
  378. tgameInfo.allowPass = result.allowPass
  379. tgameInfo.specialRule = rule
  380. tgameInfo.jokerCount = result.jokerCount
  381. tgameInfo.keCount = result.keCount
  382. tgameInfo.deductRule = result.deductRule
  383. tgameInfo.canoutsingle = result.canoutsingle
  384. tgameInfo.baseMulti = self.curJFBS
  385. tgameInfo.forbidProp = forbidProp
  386. tgameInfo.forbidVoice = forbidVoice
  387. self.defaultValus =
  388. {
  389. gameRule = self.curPlayType,
  390. totalGameNum = result.totalGameNum,
  391. playnum = result.playnum,
  392. allowPass = result.allowPass,
  393. specialRule = saveRule,
  394. deductRule = result.deductRule,
  395. jokerCount = result.jokerCount,
  396. keCount = result.keCount,
  397. canoutsingle = result.canoutsingle,
  398. baseMulti = self.curJFBS,
  399. forbidProp = forbidProp,
  400. forbidVoice = forbidVoice,
  401. }
  402. -- 保存玩家的选择
  403. self:saveDefaultValues()
  404. local gameInfo = json.encode(tgameInfo)
  405. return result.totalGameNum, gameInfo, 0
  406. end
  407. function CreateRoom_PDK_luzhou:onEnter()
  408. CreateRoom_PDK_luzhou.super.onEnter(self)
  409. -- 整理不同局数对应的房卡消耗
  410. self:initOtherCheckBoxManager();
  411. end
  412. ---
  413. -- 初始化其他选项
  414. -- @return
  415. --
  416. function CreateRoom_PDK_luzhou:initOtherCheckBoxManager ()
  417. if not self.otherCheckBoxManager then
  418. return
  419. end
  420. self.otherCheckBoxManager:addItem(self.ui.Items.CheckBox_ForbidProp, "forbidProp", 1, 0)--屏蔽快捷语与道具
  421. self.otherCheckBoxManager:addItem(self.ui.Items.CheckBox_ForbidVoice, "forbidVoice", 1, 0)--屏蔽语音
  422. local forbidProp = self:getDefaultValue("forbidProp") or 0
  423. local forbidVoice = self:getDefaultValue("forbidVoice") or 0
  424. local defaults = {}
  425. if forbidProp > 0 then
  426. table.insert(defaults, "forbidProp")
  427. end
  428. if forbidVoice == 1 then
  429. table.insert(defaults, "forbidVoice")
  430. end
  431. self.otherCheckBoxManager:setDefault(defaults)
  432. end
  433. return CreateRoom_PDK_luzhou