您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

480 行
16 KiB

  1. local CreateRoom_luzhou = class("CreateRoom_luzhou", require("luaScript.Views.CreateRoom.CreateRoomItemBase"))
  2. --[[
  3. isCreateRoom和defaultValus决定了从哪里读取默认值
  4. isCreateRoom 为true时,从本地文件读取,defaultValus无效.
  5. 否则使用defaultValus的值
  6. defaultValus : 跟服务器strGameInfo对应的json对象
  7. --]]
  8. function CreateRoom_luzhou:ctor(defaultValues)
  9. CreateRoom_luzhou.super.ctor(self, defaultValues, "CreateRoom_luzhou.json");
  10. local ui = loadUI("res/ui/ui_chuangjian/zp_chuangjian_luzhou.ui");
  11. self.ui = ui;
  12. self:addChild(ui);
  13. self.JuShuRadioManager = import("luaScript.Tools.RadioManager"):new();
  14. self.PayRadioManager = import("luaScript.Tools.RadioManager"):new();
  15. self.FengDingRadioManager = import("luaScript.Tools.RadioManager"):new();
  16. self.WanFARadioManager = import("luaScript.Tools.CheckBoxManager"):new();
  17. self.JieSuanCheckBoxManager = import("luaScript.Tools.RadioManager"):new();
  18. -- 人数 - 单选
  19. self.pcountRadioManager = import("luaScript.Tools.RadioManager"):new()
  20. -- 发牌方数
  21. self.dealRadioManager = import("luaScript.Tools.RadioManager"):new()
  22. -- 庄家模式
  23. self.bankerRadioManager = import("luaScript.Tools.RadioManager"):new()
  24. -- 其他选项
  25. self.otherCheckBoxManager = import("luaScript.Tools.CheckBoxManager"):new()
  26. self:onHideCestView() -- 隐藏cest的界面
  27. end
  28. function CreateRoom_luzhou:onHideCestView()
  29. if self.ui.Items.Button_pay0_tips then
  30. self.ui.Items.Button_pay0_tips:setVisible(false)
  31. end
  32. if self.ui.Items.Button_pay1_tips then
  33. self.ui.Items.Button_pay1_tips:setVisible(false)
  34. end
  35. if self.ui.Items.ImageView_pay0_tips then
  36. self.ui.Items.ImageView_pay0_tips:setVisible(false)
  37. end
  38. if self.ui.Items.ImageView_pay1_tips then
  39. self.ui.Items.ImageView_pay1_tips:setVisible(false)
  40. end
  41. end
  42. function CreateRoom_luzhou:onShowCestView()
  43. if self.ui.Items.Text_pay0 then
  44. self.ui.Items.Text_pay0:setText("免费")
  45. end
  46. if self.ui.Items.Text_pay1 then
  47. self.ui.Items.Text_pay1:setText("自费")
  48. end
  49. if self.ui.Items.Button_pay0_tips then
  50. self.ui.Items.Button_pay0_tips:setVisible(true)
  51. end
  52. if self.ui.Items.Button_pay1_tips then
  53. self.ui.Items.Button_pay1_tips:setVisible(true)
  54. end
  55. if self.ui.Items.ImageView_pay0_tips then
  56. self.ui.Items.ImageView_pay0_tips:setVisible(false)
  57. end
  58. if self.ui.Items.Button_pay0_tips then
  59. self.ui.Items.Button_pay0_tips:registerClick(function()
  60. if self.ui.Items.ImageView_pay0_tips then
  61. local isVisible = not self.ui.Items.ImageView_pay0_tips:isVisible()
  62. self.ui.Items.ImageView_pay0_tips:setVisible(isVisible)
  63. end
  64. end)
  65. end
  66. if self.ui.Items.ImageView_pay1_tips then
  67. self.ui.Items.ImageView_pay1_tips:setVisible(false)
  68. end
  69. if self.ui.Items.Button_pay1_tips then
  70. self.ui.Items.Button_pay1_tips:registerClick(function()
  71. if self.ui.Items.ImageView_pay1_tips then
  72. local isVisible = not self.ui.Items.ImageView_pay1_tips:isVisible()
  73. self.ui.Items.ImageView_pay1_tips:setVisible(isVisible)
  74. end
  75. end)
  76. end
  77. end
  78. --根据局数获取房费
  79. function CreateRoom_luzhou:getCreateRoomCost(jushu)
  80. if self.cost then
  81. local costInfo = self.cost[jushu]
  82. if costInfo then
  83. local payMode = self.PayRadioManager:getResult()
  84. if payMode == 0 then
  85. return costInfo.requireCards or 0
  86. elseif payMode == 1 then
  87. return costInfo.requireCardsAA or 0
  88. end
  89. end
  90. end
  91. return 0
  92. end
  93. function CreateRoom_luzhou:onEnter()
  94. CreateRoom_luzhou.super.onEnter(self)
  95. -- 整理不同局数对应的房卡消耗
  96. local ttCost = {}
  97. local gameConfig = app.user:getGameConfig(GAME_IDS.luzhouDaEr);
  98. if gameConfig then
  99. local arrGameRound = toNumberArray(",")(gameConfig.gameRound)
  100. local arrRequireCards = toNumberArray(",")(gameConfig.requireCards)
  101. local arrRequireCardsAA = toNumberArray(",")(gameConfig.AArequireCards)
  102. for idx, gameRound in ipairs(arrGameRound) do
  103. ttCost[gameRound] =
  104. {
  105. requireCards = arrRequireCards[idx],
  106. requireCardsAA = arrRequireCardsAA[idx],
  107. }
  108. end
  109. end
  110. self.cost = ttCost
  111. -- 玩家选择局数后,更新房卡消耗
  112. local function updateCost(gameRound)
  113. local costInfo = ttCost[gameRound]
  114. if costInfo then
  115. self.ui.Items.Text_FangZhu:setText(tostring(costInfo.requireCards or 0))
  116. self.ui.Items.Text_AAPay:setText(tostring(costInfo.requireCardsAA or 0))
  117. end
  118. end
  119. --[[-- 局数 jushu
  120. if self.JuShuRadioManager then
  121. self.JuShuRadioManager:addItem(self.ui.Items.CheckBox_1, 8); -- 6局
  122. self.JuShuRadioManager:addItem(self.ui.Items.CheckBox_2, 12); -- 10局
  123. self.JuShuRadioManager:addItem(self.ui.Items.CheckBox_3, 20); -- 16局
  124. local gamenumDefault = self:getDefaultValue("game_num")
  125. local jushuDefault = self:getDefaultValue("jushu")
  126. local defaultValue = gamenumDefault or jushuDefault or 8
  127. self.JuShuRadioManager:setDefault(defaultValue);
  128. self.JuShuRadioManager:setCallback(updateCost);
  129. updateCost(defaultValue)
  130. end --]]
  131. -- 房费 deductRule
  132. if self.PayRadioManager then
  133. self.PayRadioManager:addItem(self.ui.Items.CheckBox_4, 1); -- AA支付
  134. self.PayRadioManager:addItem(self.ui.Items.CheckBox_5, 0); -- 房主支付
  135. -- 设置默认数据
  136. local defaultValue = self:getDefaultValue("deductRule") or 0
  137. self.PayRadioManager:setDefault(tonumber(defaultValue));
  138. --通知创建界面更新显示
  139. local function dispatchUpdateCost()
  140. app:dispatchEvent({name = "onChangePayMode"})
  141. end
  142. self.PayRadioManager:setCallback(dispatchUpdateCost);
  143. end
  144. -- 封顶
  145. if self.FengDingRadioManager then
  146. self.FengDingRadioManager:addItem(self.ui.Items.CheckBox_6, 48); -- 48分封顶
  147. self.FengDingRadioManager:addItem(self.ui.Items.CheckBox_7, 64); -- 64分封顶
  148. self.FengDingRadioManager:addItem(self.ui.Items.CheckBox_14, 96); -- 96分封顶
  149. -- 设置默认数据
  150. local defaultValue = self:getDefaultValue("highLimit") or 0
  151. self.FengDingRadioManager:setDefault(tonumber(defaultValue));
  152. end
  153. --快速成局说明
  154. self.ui.Items.ImageView_2:setVisible(false)
  155. self.ui.Items.Button_KSCJ:registerClick(function()
  156. playBtnEffect()
  157. self.ui.Items.ImageView_2:setVisible(not self.ui.Items.ImageView_2:isVisible())
  158. end)
  159. --[[ self.ui.Items.Layout_3:setTouchEnabled(true)
  160. self.ui.Items.Layout_3:registerClick(function()
  161. self.ui.Items.ImageView_2:setVisible(false)
  162. end)--]]
  163. -- 玩法 specialRule
  164. if self.JieSuanCheckBoxManager then
  165. self.JieSuanCheckBoxManager:addItem(self.ui.Items.CheckBox_8, 1); -- 不加底
  166. self.JieSuanCheckBoxManager:addItem(self.ui.Items.CheckBox_9, 0); -- 加底
  167. -- 设置默认数据
  168. local defaultValue = self:getDefaultValue("scoreRule") or 1
  169. self.JieSuanCheckBoxManager:setDefault(tonumber(defaultValue));
  170. end
  171. -- 翻倍 doubleRule
  172. if self.WanFARadioManager then
  173. local values =
  174. {
  175. [1] = {selectValue = 0x0001, unselectValue = 0x00},--自摸翻倍
  176. [2] = {selectValue = 0x0002, unselectValue = 0x00},--归翻倍
  177. [3] = {selectValue = 0x0004, unselectValue = 0x00},--可三招胡
  178. [4] = {selectValue = 0x0008, unselectValue = 0x00},--放炮全赔
  179. [5] = {selectValue = 0x0010, unselectValue = 0x00},--过胡升番可胡
  180. [6] = {selectValue = 0x0020, unselectValue = 0x00},--小家可看牌
  181. [7] = {selectValue = 0x0040, unselectValue = 0x00},--可吃对家
  182. }
  183. self.WanFARadioManager:addItem(self.ui.Items.CheckBox_11, 1, values[1].selectValue, values[1].unselectValue); -- 自摸翻倍
  184. self.WanFARadioManager:addItem(self.ui.Items.CheckBox_12, 2, values[3].selectValue, values[3].unselectValue); -- 可三招胡
  185. self.WanFARadioManager:addItem(self.ui.Items.CheckBox_15, 3, values[2].selectValue, values[2].unselectValue); -- 归翻倍
  186. self.WanFARadioManager:addItem(self.ui.Items.CheckBox_13, 4, values[4].selectValue, values[4].unselectValue); -- 放炮包赔
  187. self.WanFARadioManager:addItem(self.ui.Items.CheckBox_19, 5, values[5].selectValue, values[5].unselectValue); -- 过张升番胡
  188. self.WanFARadioManager:addItem(self.ui.Items.CheckBox_20, 6, values[6].selectValue, values[6].unselectValue); -- 小家可看牌
  189. self.WanFARadioManager:addItem(self.ui.Items.CheckBox_17, 7, values[7].selectValue, values[7].unselectValue); -- 可吃对家
  190. local rule = 0;
  191. for k,v in ipairs(values) do
  192. if k ~= 7 then
  193. if rule == 0 then
  194. rule = v.selectValue;
  195. else
  196. rule = getNumOr(rule, v.selectValue)
  197. end
  198. end
  199. end
  200. -- 设置默认状态
  201. local ttSelected = {}
  202. local defaultValue = self:getDefaultValue("specialRule") or rule
  203. for k,v in pairs(values) do
  204. if getNumBand(defaultValue, v.selectValue) > 0 then
  205. table.insert(ttSelected, k)
  206. end
  207. end
  208. self.WanFARadioManager:setDefault(ttSelected);
  209. end
  210. -- 人数
  211. self.hadHideFangShu = false
  212. if self.pcountRadioManager then
  213. self.pcountRadioManager:addItem(self.ui.Items.CheckBox_playerCount_1, 2) -- (2人)
  214. self.pcountRadioManager:addItem(self.ui.Items.CheckBox_playerCount_2, 3) -- (3人)
  215. self.pcountRadioManager:addItem(self.ui.Items.CheckBox_playerCount_3, 4) -- (4人)
  216. self.pcountRadioManager:addItem(self.ui.Items.CheckBox_playerCount_4, -1) -- (快速成局)
  217. local defaultValue = self:getDefaultValue("playnum") or 3
  218. local startMode = self:getDefaultValue("startMode") or 0
  219. if startMode == 1 then
  220. defaultValue = -1
  221. end
  222. self.pcountRadioManager:setDefault(defaultValue)
  223. self.curSelectedpcount = defaultValue
  224. self.initKCDJPos = self.ui.Items.CheckBox_17:getPosition()
  225. self.initFPBPPos = self.ui.Items.CheckBox_13:getPosition()
  226. local callBack = function ( value )
  227. if value == 2 or value == 3 then
  228. self.ui.Items.CheckBox_20:setVisible(false)
  229. if value == 2 then
  230. self.ui.Items.CheckBox_13:setVisible(false)
  231. self.ui.Items.CheckBox_17:setVisible(true)
  232. self.ui.Items.CheckBox_17:setPosition(self.initFPBPPos)
  233. else
  234. self.ui.Items.CheckBox_13:setVisible(true)
  235. self.ui.Items.CheckBox_17:setVisible(false)
  236. end
  237. else
  238. self.ui.Items.CheckBox_20:setVisible(true)
  239. self.ui.Items.CheckBox_13:setVisible(true)
  240. self.ui.Items.CheckBox_17:setVisible(false)
  241. end
  242. if value == 4 then
  243. --self.ui.Items.CheckBox_8:set
  244. self.JieSuanCheckBoxManager:onClickCheckBos(1, false)
  245. self.ui.Items.CheckBox_9:setEnabled(false)
  246. self.ui.Items.Text_12:setEnabled(false)
  247. else
  248. self.ui.Items.CheckBox_9:setEnabled(true)
  249. self.ui.Items.Text_12:setEnabled(true)
  250. end
  251. if value == -1 then
  252. self.ui.Items.CheckBox_17:setVisible(true)
  253. self.ui.Items.CheckBox_17:setPosition(self.initKCDJPos)
  254. self.ui.Items.ImageView_8:setVisible(true)
  255. else
  256. self.ui.Items.ImageView_8:setVisible(false)
  257. end
  258. end
  259. self.pcountRadioManager:setCallback(callBack)
  260. callBack(defaultValue)
  261. end
  262. --庄家模式
  263. if self.bankerRadioManager then
  264. self.bankerRadioManager:addItem(self.ui.Items.CheckBox_10, 0); -- 胡牌者当庄
  265. self.bankerRadioManager:addItem(self.ui.Items.CheckBox_16, 1); -- 轮庄
  266. -- 设置默认状态
  267. local defaultValue = self:getDefaultValue("bankMode") or 0
  268. self.bankerRadioManager:setDefault(defaultValue);
  269. end
  270. --[[ -- 空位置是否发牌
  271. if self.dealRadioManager then
  272. self.dealRadioManager:addItem(self.ui.Items.CheckBox_19, 0); -- 不发牌
  273. self.dealRadioManager:addItem(self.ui.Items.CheckBox_20, 1); -- 发牌
  274. -- 设置默认状态
  275. local defaultValue = self:getDefaultValue("flopCard") or 0
  276. self.dealRadioManager:setDefault(defaultValue);
  277. end--]]
  278. self:initOtherCheckBoxManager()
  279. self:initLayoutEvent()
  280. self:initJiFenBeiShu()
  281. end
  282. ---
  283. -- 初始化其他选项
  284. -- @return
  285. --
  286. function CreateRoom_luzhou:initOtherCheckBoxManager ()
  287. if not self.otherCheckBoxManager then
  288. return
  289. end
  290. self.otherCheckBoxManager:addItem(self.ui.Items.CheckBox_ForbidProp, "forbidProp", 1, 0)
  291. self.otherCheckBoxManager:addItem(self.ui.Items.CheckBox_ForbidChat, "forbidVoice", 1, 0)
  292. local forbidProp = self:getDefaultValue("forbidProp") or 0
  293. local forbidVoice = self:getDefaultValue("forbidVoice") or 0
  294. local defaults = {}
  295. if forbidProp > 0 then
  296. table.insert(defaults, "forbidProp")
  297. end
  298. if forbidVoice == 1 then
  299. table.insert(defaults, "forbidVoice")
  300. end
  301. self.otherCheckBoxManager:setDefault(defaults)
  302. end
  303. -- 面板的点击事件,点击面板后,隐藏所有提示
  304. function CreateRoom_luzhou:initLayoutEvent()
  305. self.ui.Items.Layout_3:registerClick(function()
  306. local buttons = {
  307. {buttonName = "Button_KSCJ", tipsName = "ImageView_2"},
  308. {buttonName = "Button_JFBS", tipsName = "ImageView_JFBS"},
  309. };
  310. -- 隐藏其他提示信息
  311. for k, v in ipairs(buttons) do
  312. local tipsNode = self.ui.Items[v.tipsName]
  313. tipsNode:setVisible(false)
  314. end
  315. end)
  316. end
  317. -- 初始化积分倍数
  318. function CreateRoom_luzhou:initJiFenBeiShu()
  319. self.ui.Items.Button_jia:registerClick(handler(self, self.onClickAdd))
  320. self.ui.Items.Button_jian:registerClick(handler(self, self.onClickJian))
  321. self.curJFBS = self:getDefaultValue("baseMulti") or 1;
  322. self:updateJiFenBeiShu()
  323. --积分倍数说明
  324. self.ui.Items.ImageView_JFBS:setVisible(false)
  325. self.ui.Items.Button_JFBS:registerClick(function()
  326. self.ui.Items.ImageView_JFBS:setVisible(not self.ui.Items.ImageView_JFBS:isVisible())
  327. end)
  328. end
  329. --更新积分倍数
  330. function CreateRoom_luzhou:updateJiFenBeiShu()
  331. self.curJFBS = self.curJFBS >= 1.0 and math.floor(self.curJFBS) or self.curJFBS;
  332. self.ui.Items.Text_jifen:setText(self.curJFBS)
  333. self.ui.Items.Button_jia:setEnabled(self.curJFBS ~= 100)
  334. self.ui.Items.Button_jian:setEnabled(self.curJFBS ~= 0.1)
  335. end
  336. --按钮加
  337. function CreateRoom_luzhou:onClickAdd()
  338. playBtnEffect()
  339. if not self.curJFBS then
  340. return
  341. end
  342. if self.curJFBS >= 1.0 then
  343. self.curJFBS = self.curJFBS + 1.0
  344. else
  345. self.curJFBS = self.curJFBS + 0.1
  346. end
  347. if self.curJFBS >= 100 then
  348. self.curJFBS = 100;
  349. end
  350. self:updateJiFenBeiShu()
  351. end
  352. --按钮减
  353. function CreateRoom_luzhou:onClickJian()
  354. playBtnEffect()
  355. if not self.curJFBS then
  356. return
  357. end
  358. if self.curJFBS <= 1.0 then
  359. self.curJFBS = self.curJFBS - 0.1
  360. else
  361. self.curJFBS = self.curJFBS - 1.0
  362. end
  363. if self.curJFBS <= 0.1 then
  364. self.curJFBS = 0.1
  365. end
  366. self:updateJiFenBeiShu()
  367. end
  368. function CreateRoom_luzhou:hideFangShu(vis)
  369. -----------------------选择3人时,隐藏方数-----------------------
  370. if self.hadHideFangShu == vis then
  371. return
  372. end
  373. self.ui.Items.Layout_FangShu:setVisible(not vis)
  374. local offsetY = 60
  375. if vis == false then
  376. offsetY = -60
  377. end
  378. self.ui.Items.Layout_JiTunFen:setPositionY(self.ui.Items.Layout_JiTunFen:getPositionY()+offsetY)
  379. self.ui.Items.Layout_WanFa:setPositionY(self.ui.Items.Layout_WanFa:getPositionY()+offsetY)
  380. self.ui.Items.Layout_FanBei:setPositionY(self.ui.Items.Layout_FanBei:getPositionY()+offsetY)
  381. self.ui.Items.Layout_PiaoFen:setPositionY(self.ui.Items.Layout_PiaoFen:getPositionY()+offsetY)
  382. self.ui.Items.Layout_HaiDiLao:setPositionY(self.ui.Items.Layout_HaiDiLao:getPositionY()+offsetY)
  383. self.ui.Items.Text_20:setPositionY(self.ui.Items.Text_20:getPositionY()+offsetY)
  384. self.hadHideFangShu = vis
  385. end
  386. function CreateRoom_luzhou:getRuleResult()
  387. local game_num = self.JuShuRadioManager:getResult()
  388. local payMode = self.PayRadioManager:getResult()
  389. local highLimit = self.FengDingRadioManager:getResult();
  390. local scoreRule = self.JieSuanCheckBoxManager:getResult();
  391. local specialRule2 = self.WanFARadioManager:getResult2();
  392. local playnum = self.pcountRadioManager:getResult()--玩家人数
  393. local bankMode = self.bankerRadioManager:getResult()
  394. local startMode = 0
  395. if playnum == -1 then--选择的是快速组局
  396. --playnum = 4
  397. startMode = 1
  398. end
  399. local specialRule = 0;
  400. for k,v in pairs(specialRule2) do
  401. if (playnum == 2 or playnum == 3) and v == 0x0020 then--选择2人3人时,没有小家,所以不传小家可看牌
  402. elseif playnum == 2 and v == 0x0008 then--两人时 不传放炮包赔
  403. else
  404. specialRule = getNumOr(specialRule, v);
  405. end
  406. end
  407. --specialRule = getNumOr(specialRule, 0x0020);
  408. local other = self.otherCheckBoxManager:getResult2()
  409. local forbidProp = other["forbidProp"]
  410. local forbidVoice = other["forbidVoice"]
  411. self.defaultValus =
  412. {
  413. gamerule = 1;
  414. --jushu = jushu;
  415. bankMode = bankMode,
  416. game_num = game_num,
  417. scoreRule = scoreRule,
  418. highLimit = highLimit;
  419. --biHu = 1;
  420. specialRule = specialRule;
  421. deductRule = payMode;
  422. areaNo = app.user.areano;
  423. startMode = startMode;
  424. playnum = playnum;
  425. baseMulti = self.curJFBS,
  426. forbidProp = forbidProp,
  427. forbidVoice = forbidVoice,
  428. }
  429. -- 保存玩家的选择
  430. self:saveDefaultValues()
  431. local strGameInfo = json.encode(self.defaultValus)
  432. return game_num, strGameInfo
  433. end
  434. return CreateRoom_luzhou