Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

480 řádky
17 KiB

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