Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

461 lignes
16 KiB

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