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.

412 lines
15 KiB

  1. local CreateRoom_xuyong = class("CreateRoom_xuyong", require("luaScript.Views.CreateRoom.CreateRoomItemBase"))
  2. --[[
  3. isCreateRoom和defaultValus决定了从哪里读取默认值
  4. isCreateRoom 为true时,从本地文件读取,defaultValus无效.
  5. 否则使用defaultValus的值
  6. defaultValus : 跟服务器strGameInfo对应的json对象
  7. --]]
  8. function CreateRoom_xuyong:ctor(defaultValus)
  9. CreateRoom_xuyong.super.ctor(self, defaultValus, "CreateRoom_xuyong.json");
  10. local ui = loadUI("res/ui/ui_chuangjian/zp_chuangjian_xuyong.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. -- 其他选项
  20. self.otherCheckBoxManager = import("luaScript.Tools.CheckBoxManager"):new()
  21. self:onHideCestView() -- 隐藏cest的界面
  22. end
  23. function CreateRoom_xuyong: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_xuyong: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. --根据局数获取房费
  74. function CreateRoom_xuyong:getCreateRoomCost(jushu)
  75. if self.cost then
  76. local costInfo = self.cost[jushu]
  77. if costInfo then
  78. local payMode = self.PayRadioManager:getResult()
  79. if payMode == 0 then
  80. return costInfo.requireCards or 0
  81. elseif payMode == 1 then
  82. return costInfo.requireCardsAA or 0
  83. end
  84. end
  85. end
  86. return 0
  87. end
  88. function CreateRoom_xuyong:onEnter()
  89. CreateRoom_xuyong.super.onEnter(self)
  90. -- 整理不同局数对应的房卡消耗
  91. local ttCost = {}
  92. local gameConfig = app.user:getGameConfig(GAME_IDS.xuyongDaEr);
  93. if gameConfig then
  94. local arrGameRound = toNumberArray(",")(gameConfig.gameRound)
  95. local arrRequireCards = toNumberArray(",")(gameConfig.requireCards)
  96. local arrRequireCardsAA = toNumberArray(",")(gameConfig.AArequireCards)
  97. for idx, gameRound in ipairs(arrGameRound) do
  98. ttCost[gameRound] =
  99. {
  100. requireCards = arrRequireCards[idx],
  101. requireCardsAA = arrRequireCardsAA[idx],
  102. }
  103. end
  104. end
  105. self.cost = ttCost
  106. -- 玩家选择局数后,更新房卡消耗
  107. local function updateCost(gameRound)
  108. local costInfo = ttCost[gameRound]
  109. if costInfo then
  110. self.ui.Items.Text_FangZhu:setText(tostring(costInfo.requireCards or 0))
  111. self.ui.Items.Text_AAPay:setText(tostring(costInfo.requireCardsAA or 0))
  112. end
  113. end
  114. -- 房费 deductRule
  115. if self.PayRadioManager then
  116. self.PayRadioManager:addItem(self.ui.Items.CheckBox_4, 1); -- AA支付
  117. self.PayRadioManager:addItem(self.ui.Items.CheckBox_5, 0); -- 房主支付
  118. -- 设置默认数据
  119. local defaultValue = self:getDefaultValue("deductRule") or 1
  120. self.PayRadioManager:setDefault(tonumber(defaultValue));
  121. --通知创建界面更新显示
  122. local function dispatchUpdateCost()
  123. app:dispatchEvent({name = "onChangePayMode"})
  124. end
  125. self.PayRadioManager:setCallback(dispatchUpdateCost);
  126. end
  127. -- 封顶
  128. if self.FengDingRadioManager then
  129. self.FengDingRadioManager:addItem(self.ui.Items.CheckBox_6, 100); -- 100分
  130. self.FengDingRadioManager:addItem(self.ui.Items.CheckBox_7, 200); -- 200分
  131. self.FengDingRadioManager:addItem(self.ui.Items.CheckBox_10, 300); -- 300分
  132. self.FengDingRadioManager:addItem(self.ui.Items.CheckBox_14, 500); -- 500分
  133. self.FengDingRadioManager:addItem(self.ui.Items.CheckBox_17, 1000); -- 1000分
  134. self.FengDingRadioManager:addItem(self.ui.Items.CheckBox_18, 2000); -- 2000分
  135. self.FengDingRadioManager:addItem(self.ui.Items.CheckBox_25, 3000); -- 3000分
  136. self.FengDingRadioManager:addItem(self.ui.Items.CheckBox_26, 4000); -- 4000分
  137. -- 设置默认数据
  138. local defaultValue = self:getDefaultValue("highLimit") or 200
  139. self.FengDingRadioManager:setDefault(tonumber(defaultValue));
  140. end
  141. --快速成局说明
  142. self.ui.Items.ImageView_2:setVisible(false)
  143. self.ui.Items.Button_KSCJ:registerClick(function()
  144. playBtnEffect()
  145. self.ui.Items.ImageView_2:setVisible(not self.ui.Items.ImageView_2:isVisible())
  146. end)
  147. -- 翻倍 doubleRule
  148. if self.WanFARadioManager then
  149. self.wanfaValues =
  150. {
  151. [1] = {selectValue = 0x0001, unselectValue = 0x00},--自摸翻倍
  152. [2] = {selectValue = 0x0200, unselectValue = 0x00},--可无胡
  153. [3] = {selectValue = 0x0400, unselectValue = 0x00},--圈牌
  154. [4] = {selectValue = 0x0080, unselectValue = 0x00},--整胡翻倍
  155. [5] = {selectValue = 0x0008, unselectValue = 0x00},--放炮全赔
  156. [6] = {selectValue = 0x0100, unselectValue = 0x00},--查叫
  157. [7] = {selectValue = 0x0002, unselectValue = 0x00},--归翻倍
  158. [8] = {selectValue = 0x0800, unselectValue = 0x00},--单杀
  159. [9] = {selectValue = 0x0020, unselectValue = 0x00},--小家可看庄家牌
  160. [10] = {selectValue = 0x0040, unselectValue = 0x00},--可吃对家
  161. [11] = {selectValue = 0x0010, unselectValue = 0x00},--过张升番胡
  162. }
  163. self.WanFARadioManager:addItem(self.ui.Items.CheckBox_11, 2, self.wanfaValues[2].selectValue, self.wanfaValues[2].unselectValue);
  164. self.ui.Items.CheckBox_11:getParent():setTag(self.wanfaValues[2].selectValue)
  165. self.WanFARadioManager:addItem(self.ui.Items.CheckBox_12, 1, self.wanfaValues[1].selectValue, self.wanfaValues[1].unselectValue);
  166. self.ui.Items.CheckBox_12:getParent():setTag(self.wanfaValues[1].selectValue)
  167. self.WanFARadioManager:addItem(self.ui.Items.CheckBox_15, 4, self.wanfaValues[4].selectValue, self.wanfaValues[4].unselectValue);
  168. self.ui.Items.CheckBox_15:getParent():setTag(self.wanfaValues[4].selectValue)
  169. self.WanFARadioManager:addItem(self.ui.Items.CheckBox_19, 7, self.wanfaValues[7].selectValue, self.wanfaValues[7].unselectValue);
  170. self.ui.Items.CheckBox_19:getParent():setTag(self.wanfaValues[7].selectValue)
  171. self.WanFARadioManager:addItem(self.ui.Items.CheckBox_20, 5, self.wanfaValues[5].selectValue, self.wanfaValues[5].unselectValue);
  172. self.ui.Items.CheckBox_20:getParent():setTag(self.wanfaValues[5].selectValue)
  173. self.WanFARadioManager:addItem(self.ui.Items.CheckBox_13, 6, self.wanfaValues[6].selectValue, self.wanfaValues[6].unselectValue);
  174. self.ui.Items.CheckBox_13:getParent():setTag(self.wanfaValues[6].selectValue)
  175. --self.WanFARadioManager:addItem(self.ui.Items.CheckBox_21, 7, self.wanfaValues[7].selectValue, self.wanfaValues[7].unselectValue);
  176. --self.ui.Items.CheckBox_21:getParent():setTag(self.wanfaValues[7].selectValue)
  177. self.WanFARadioManager:addItem(self.ui.Items.CheckBox_22, 8, self.wanfaValues[8].selectValue, self.wanfaValues[8].unselectValue);
  178. self.ui.Items.CheckBox_22:getParent():setTag(self.wanfaValues[8].selectValue)
  179. self.WanFARadioManager:addItem(self.ui.Items.CheckBox_23, 9, self.wanfaValues[9].selectValue, self.wanfaValues[9].unselectValue);
  180. self.ui.Items.CheckBox_23:getParent():setTag(self.wanfaValues[9].selectValue)
  181. self.WanFARadioManager:addItem(self.ui.Items.CheckBox_24, 10, self.wanfaValues[10].selectValue, self.wanfaValues[10].unselectValue);
  182. self.ui.Items.CheckBox_24:getParent():setTag(self.wanfaValues[10].selectValue)
  183. self.WanFARadioManager:addItem(self.ui.Items.CheckBox_21, 11, self.wanfaValues[11].selectValue, self.wanfaValues[11].unselectValue);
  184. self.ui.Items.CheckBox_21:getParent():setTag(self.wanfaValues[11].selectValue)
  185. -- 设置默认状态
  186. local ttSelected = {}
  187. local rule = 0;
  188. for k,v in ipairs(self.wanfaValues) do
  189. if k ~= 7 and k ~= 8 and k ~= 10 then
  190. if rule == 0 then
  191. rule = v.selectValue;
  192. else
  193. rule = getNumOr(rule, v.selectValue)
  194. end
  195. end
  196. end
  197. local defaultValue = self:getDefaultValue("specialRule") or rule
  198. for k,v in pairs(self.wanfaValues) do
  199. if getNumBand(defaultValue, v.selectValue) > 0 then
  200. table.insert(ttSelected, k)
  201. end
  202. end
  203. self.WanFARadioManager:setDefault(ttSelected);
  204. end
  205. -- 人数
  206. self.hadHideFangShu = false
  207. if self.RenShuRadioManager then
  208. self.RenShuRadioManager:addItem(self.ui.Items.CheckBox_playerCount_1, 2) -- (2人)
  209. self.RenShuRadioManager:addItem(self.ui.Items.CheckBox_playerCount_2, 3) -- (3人)
  210. self.RenShuRadioManager:addItem(self.ui.Items.CheckBox_playerCount_3, 4) -- (4人)
  211. self.RenShuRadioManager:addItem(self.ui.Items.CheckBox_playerCount_4, -1) -- (快速成局)
  212. local defaultValue = self:getDefaultValue("playnum") or 3
  213. local startMode = self:getDefaultValue("startMode") or 0
  214. if startMode == 1 then
  215. defaultValue = -1
  216. end
  217. self.RenShuRadioManager:setDefault(defaultValue)
  218. self.curSelectedpcount = defaultValue
  219. --self.srcPosY = self.ui.Items.Layout_SiRenWanFa:getPositionY()
  220. --local newPosY = self.ui.Items.Layout_SiRenWanFa:getPositionY() + 80
  221. local callBack = function (value)
  222. for k,v in ipairs(self.ui.Items.Layout_Panel:getChildren()) do
  223. v:setVisible(true);
  224. end
  225. self.ui.Items.ImageView_10:setVisible(true)
  226. self.ui.Items.ImageView_12:setVisible(true)
  227. --self.ui.Items.Layout_SiRenWanFa:setVisible(false)
  228. --self.ui.Items.Layout_SiRenWanFa:setPositionY(self.srcPosY);
  229. if value == 2 then
  230. self.ui.Items.Layout_13:setVisible(false)
  231. self.ui.Items.Layout_14:setVisible(false)
  232. self.ui.Items.ImageView_12:setVisible(false)
  233. elseif value == 3 then
  234. self.ui.Items.Layout_14:setVisible(false)
  235. self.ui.Items.Layout_15:setVisible(false)
  236. self.ui.Items.ImageView_12:setVisible(false)
  237. elseif value == 4 then
  238. self.ui.Items.Layout_15:setVisible(false)
  239. self.ui.Items.ImageView_12:setVisible(false)
  240. --self.ui.Items.Layout_SiRenWanFa:setVisible(true)
  241. --self.ui.Items.Layout_SiRenWanFa:setPositionY(newPosY);
  242. elseif value == -1 then
  243. --self.ui.Items.Layout_SiRenWanFa:setVisible(true)
  244. end
  245. self.ui.Items.Layout_Panel:requestDoLayout();
  246. self.ui.Items.Layout_Panel:doLayout();
  247. end
  248. self.RenShuRadioManager:setCallback(callBack)
  249. callBack(defaultValue)
  250. end
  251. --分数
  252. if self.FenShuRadioManager then
  253. self.FenShuRadioManager:addItem(self.ui.Items.CheckBox_8, 1); -- 1/2/3
  254. self.FenShuRadioManager:addItem(self.ui.Items.CheckBox_9, 5); -- 5/10/15
  255. self.FenShuRadioManager:addItem(self.ui.Items.CheckBox_16, 10); -- 10/20/30
  256. -- 设置默认状态
  257. local defaultValue = self:getDefaultValue("scoreNum") or 5
  258. self.FenShuRadioManager:setDefault(defaultValue);
  259. end
  260. self:initOtherCheckBoxManager()
  261. self:initJiFenBeiShu()
  262. end
  263. ---
  264. -- 初始化其他选项
  265. -- @return
  266. --
  267. function CreateRoom_xuyong:initOtherCheckBoxManager ()
  268. if not self.otherCheckBoxManager then
  269. return
  270. end
  271. self.otherCheckBoxManager:addItem(self.ui.Items.CheckBox_ForbidProp, "forbidProp", 1, 0)
  272. self.otherCheckBoxManager:addItem(self.ui.Items.CheckBox_ForbidChat, "forbidVoice", 1, 0)
  273. local forbidProp = self:getDefaultValue("forbidProp") or 0
  274. local forbidVoice = self:getDefaultValue("forbidVoice") or 0
  275. local defaults = {}
  276. if forbidProp > 0 then
  277. table.insert(defaults, "forbidProp")
  278. end
  279. if forbidVoice == 1 then
  280. table.insert(defaults, "forbidVoice")
  281. end
  282. self.otherCheckBoxManager:setDefault(defaults)
  283. end
  284. -- 初始化积分倍数
  285. function CreateRoom_xuyong:initJiFenBeiShu()
  286. self.ui.Items.Button_jia:registerClick(handler(self, self.onClickAdd))
  287. self.ui.Items.Button_jian:registerClick(handler(self, self.onClickJian))
  288. self.curJFBS = self:getDefaultValue("baseMulti") or 1;
  289. self:updateJiFenBeiShu()
  290. --积分倍数说明
  291. self.ui.Items.ImageView_JFBS:setVisible(false)
  292. self.ui.Items.Button_JFBS:registerClick(function()
  293. self.ui.Items.ImageView_JFBS:setVisible(not self.ui.Items.ImageView_JFBS:isVisible())
  294. end)
  295. -- self.ui.Items.Layout_JiFenBeiShu:setVisible(false)
  296. end
  297. --更新积分倍数
  298. function CreateRoom_xuyong:updateJiFenBeiShu()
  299. self.ui.Items.Text_jifen:setText(self.curJFBS)
  300. self.ui.Items.Button_jia:setEnabled(self.curJFBS ~= 100)
  301. self.ui.Items.Button_jian:setEnabled(self.curJFBS ~= 1)
  302. end
  303. --按钮加
  304. function CreateRoom_xuyong:onClickAdd()
  305. playBtnEffect()
  306. if not self.curJFBS then
  307. return
  308. end
  309. self.curJFBS = self.curJFBS + 1
  310. if self.curJFBS >= 100 then
  311. self.curJFBS = 100;
  312. end
  313. self:updateJiFenBeiShu()
  314. end
  315. --按钮减
  316. function CreateRoom_xuyong:onClickJian()
  317. playBtnEffect()
  318. if not self.curJFBS then
  319. return
  320. end
  321. self.curJFBS = self.curJFBS - 1
  322. if self.curJFBS <= 0 then
  323. self.curJFBS = 1
  324. end
  325. self:updateJiFenBeiShu()
  326. end
  327. function CreateRoom_xuyong:getRuleResult()
  328. local playnum = self.RenShuRadioManager:getResult()
  329. local payMode = self.PayRadioManager:getResult()
  330. local fengding = self.FengDingRadioManager:getResult();
  331. --local specialRule2 = self.WanFARadioManager:getResult2();
  332. local fenshu = self.FenShuRadioManager:getResult()
  333. local game_num = self.JuShuRadioManager:getResult()
  334. local startMode = 0
  335. if playnum == -1 then--选择的是快速组局
  336. startMode = 1
  337. end
  338. local specialRule = 0;
  339. for k,v in ipairs(self.ui.Items.Layout_Panel:getChildren()) do
  340. if v:isVisible() and v:getChildren()[1]:getSelectedState() then
  341. local value = v:getTag();
  342. specialRule = getNumOr(specialRule, value);
  343. end
  344. end
  345. local other = self.otherCheckBoxManager:getResult2()
  346. local forbidProp = other["forbidProp"]
  347. local forbidVoice = other["forbidVoice"]
  348. self.defaultValus =
  349. {
  350. gamerule = 1;
  351. playnum = playnum;
  352. deductRule = payMode;
  353. highLimit = fengding;
  354. specialRule = specialRule;
  355. scoreNum = fenshu,
  356. game_num = game_num,
  357. areaNo = app.user.areano;
  358. startMode = startMode;
  359. baseMulti = self.curJFBS,
  360. forbidProp = forbidProp,
  361. forbidVoice = forbidVoice,
  362. }
  363. -- 保存玩家的选择
  364. self:saveDefaultValues()
  365. local strGameInfo = json.encode(self.defaultValus)
  366. return game_num, strGameInfo
  367. end
  368. return CreateRoom_xuyong