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.

410 lines
14 KiB

  1. local CreateRoom_zgwrddz = class("CreateRoom_zgwrddz", require("luaScript.Views.CreateRoom.CreateRoomItemBase"))
  2. --[[
  3. isCreateRoom和defaultValus决定了从哪里读取默认值
  4. isCreateRoom 为true时,从本地文件读取,defaultValus无效.
  5. 否则使用defaultValus的值
  6. defaultValus : 跟服务器strGameInfo对应的json对象
  7. --]]
  8. function CreateRoom_zgwrddz:ctor(defaultValues)
  9. CreateRoom_zgwrddz.super.ctor(self, defaultValues, "CreateRoom_zgwrddz.json");
  10. local ui = loadUI("res/ui/ui_chuangjian/pk_chuangjian_zgwrddz.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.CheckBoxManager"):new();
  18. -- 人数 - 单选
  19. self.pcountRadioManager = import("luaScript.Tools.RadioManager"):new()
  20. -- 加底
  21. self.jiaDiRadioManager = import("luaScript.Tools.RadioManager"):new()
  22. -- 其他选项
  23. self.otherCheckBoxManager = import("luaScript.Tools.CheckBoxManager"):new()
  24. self:onHideCestView() -- 隐藏cest的界面
  25. end
  26. function CreateRoom_zgwrddz:onHideCestView()
  27. if self.ui.Items.Button_pay0_tips then
  28. self.ui.Items.Button_pay0_tips:setVisible(false)
  29. end
  30. if self.ui.Items.Button_pay1_tips then
  31. self.ui.Items.Button_pay1_tips:setVisible(false)
  32. end
  33. if self.ui.Items.ImageView_pay0_tips then
  34. self.ui.Items.ImageView_pay0_tips:setVisible(false)
  35. end
  36. if self.ui.Items.ImageView_pay1_tips then
  37. self.ui.Items.ImageView_pay1_tips:setVisible(false)
  38. end
  39. end
  40. function CreateRoom_zgwrddz:onShowCestView()
  41. if self.ui.Items.Text_pay0 then
  42. self.ui.Items.Text_pay0:setText("免费")
  43. end
  44. if self.ui.Items.Text_pay1 then
  45. self.ui.Items.Text_pay1:setText("自费")
  46. end
  47. if self.ui.Items.Button_pay0_tips then
  48. self.ui.Items.Button_pay0_tips:setVisible(true)
  49. end
  50. if self.ui.Items.Button_pay1_tips then
  51. self.ui.Items.Button_pay1_tips:setVisible(true)
  52. end
  53. if self.ui.Items.ImageView_pay0_tips then
  54. self.ui.Items.ImageView_pay0_tips:setVisible(false)
  55. end
  56. if self.ui.Items.Button_pay0_tips then
  57. self.ui.Items.Button_pay0_tips:registerClick(function()
  58. if self.ui.Items.ImageView_pay0_tips then
  59. local isVisible = not self.ui.Items.ImageView_pay0_tips:isVisible()
  60. self.ui.Items.ImageView_pay0_tips:setVisible(isVisible)
  61. end
  62. end)
  63. end
  64. if self.ui.Items.ImageView_pay1_tips then
  65. self.ui.Items.ImageView_pay1_tips:setVisible(false)
  66. end
  67. if self.ui.Items.Button_pay1_tips then
  68. self.ui.Items.Button_pay1_tips:registerClick(function()
  69. if self.ui.Items.ImageView_pay1_tips then
  70. local isVisible = not self.ui.Items.ImageView_pay1_tips:isVisible()
  71. self.ui.Items.ImageView_pay1_tips:setVisible(isVisible)
  72. end
  73. end)
  74. end
  75. end
  76. --根据局数获取房费
  77. function CreateRoom_zgwrddz:getCreateRoomCost(jushu)
  78. if self.cost then
  79. local costInfo = self.cost[jushu]
  80. if costInfo then
  81. local payMode = self.PayRadioManager:getResult()
  82. if payMode == 0 then
  83. return costInfo.requireCards or 0
  84. elseif payMode == 1 then
  85. return costInfo.requireCardsAA or 0
  86. end
  87. end
  88. end
  89. return 0
  90. end
  91. function CreateRoom_zgwrddz:onEnter()
  92. CreateRoom_zgwrddz.super.onEnter(self)
  93. -- 整理不同局数对应的房卡消耗
  94. local ttCost = {}
  95. local gameConfig = app.user:getGameConfig(GAME_IDS.zgWuRenDouDiZhu);
  96. if gameConfig then
  97. local arrGameRound = toNumberArray(",")(gameConfig.gameRound)
  98. local arrRequireCards = toNumberArray(",")(gameConfig.requireCards)
  99. local arrRequireCardsAA = toNumberArray(",")(gameConfig.AArequireCards)
  100. for idx, gameRound in ipairs(arrGameRound) do
  101. ttCost[gameRound] =
  102. {
  103. requireCards = arrRequireCards[idx],
  104. requireCardsAA = arrRequireCardsAA[idx],
  105. }
  106. end
  107. end
  108. self.cost = ttCost
  109. -- 玩家选择局数后,更新房卡消耗
  110. local function updateCost(gameRound)
  111. local costInfo = ttCost[gameRound]
  112. if costInfo then
  113. self.ui.Items.Text_FangZhu:setText(tostring(costInfo.requireCards or 0))
  114. self.ui.Items.Text_AAPay:setText(tostring(costInfo.requireCardsAA or 0))
  115. end
  116. end
  117. -- 房费 deductRule
  118. if self.PayRadioManager then
  119. self.PayRadioManager:addItem(self.ui.Items.CheckBox_AAPay, 1); -- AA支付
  120. self.PayRadioManager:addItem(self.ui.Items.CheckBox_FangZhu, 0);-- 房主支付
  121. -- 设置默认数据
  122. local defaultValue = self:getDefaultValue("deductRule") or 0
  123. self.PayRadioManager:setDefault(tonumber(defaultValue));
  124. --通知创建界面更新显示
  125. local function dispatchUpdateCost()
  126. app:dispatchEvent({name = "onChangePayMode"})
  127. end
  128. self.PayRadioManager:setCallback(dispatchUpdateCost);
  129. end
  130. -- 封顶
  131. if self.FengDingRadioManager then
  132. self.FengDingRadioManager:addItem(self.ui.Items.CheckBox_6, 30); -- 30倍封顶
  133. self.FengDingRadioManager:addItem(self.ui.Items.CheckBox_7, 60); -- 60倍封顶
  134. -- 设置默认数据
  135. local defaultValue = self:getDefaultValue("multLimit") or 30
  136. self.FengDingRadioManager:setDefault(tonumber(defaultValue));
  137. end
  138. --先小后大选牌说明
  139. self.ui.Items.ImageView_XXHDJP:setVisible(false)
  140. self.ui.Items.Button_XXHDJP:registerClick(function()
  141. self.ui.Items.ImageView_XXHDJP:setVisible(not self.ui.Items.ImageView_XXHDJP:isVisible())
  142. end)
  143. -- 设置默认数据
  144. local spDFValue = self:getDefaultValue("playRule") or 0x00
  145. -- 玩法 specialRule
  146. if self.JieSuanCheckBoxManager then
  147. local values =
  148. {
  149. --[1] = {selectValue = 0x00, unselectValue = 0x00},--加底
  150. [1] = {selectValue = 0x04, unselectValue = 0x00},--加倍
  151. [2] = {selectValue = 0x08, unselectValue = 0x00},--先小后大叫牌
  152. }
  153. --self.JieSuanCheckBoxManager:addItem(self.ui.Items.CheckBox_wanfa_1, 1, values[1].selectValue, values[1].unselectValue); -- 加底
  154. self.JieSuanCheckBoxManager:addItem(self.ui.Items.CheckBox_wanfa_1, 1, values[1].selectValue, values[1].unselectValue); -- 加倍
  155. self.JieSuanCheckBoxManager:addItem(self.ui.Items.CheckBox_wanfa_2, 2, values[2].selectValue, values[2].unselectValue); -- 先小后大叫牌
  156. local ttSelected = {}
  157. for k,v in pairs(values) do
  158. if getNumBand(spDFValue, v.selectValue) > 0 then
  159. table.insert(ttSelected, k)
  160. end
  161. end
  162. self.JieSuanCheckBoxManager:setDefault(ttSelected);
  163. --[[if spDFValue > 0 and (getNumBand(spDFValue, 0x01) > 0 or getNumBand(spDFValue, 0x02) > 0) then
  164. self.ui.Items.CheckBox_wanfa_1:setSelectedState(true)
  165. end
  166. --选择加底显示选项1,2
  167. local function updateCreateView()
  168. if self.ui.Items.CheckBox_wanfa_1:getSelectedState() == true then
  169. self.ui.Items.Layout_jiadi:setVisible(true)
  170. else
  171. self.ui.Items.Layout_jiadi:setVisible(false)
  172. end
  173. self.ui.Items.Layout_1:requestDoLayout();
  174. self.ui.Items.Layout_1:doLayout();
  175. end
  176. self.JieSuanCheckBoxManager:setCallback(updateCreateView);
  177. updateCreateView();--]]
  178. end
  179. local jiadifen = self:getDefaultValue("jiadifen") or 0x01
  180. -- 加底
  181. if self.jiaDiRadioManager then
  182. self.jiaDiRadioManager:addItem(self.ui.Items.CheckBox_jiadi_0, 0x00); -- 加底1
  183. self.jiaDiRadioManager:addItem(self.ui.Items.CheckBox_jiadi_1, 0x01); -- 加底1
  184. self.jiaDiRadioManager:addItem(self.ui.Items.CheckBox_jiadi_2, 0x02); -- 加底2
  185. self.jiaDiRadioManager:setDefault(jiadifen);
  186. --self.jiaDiRadioManager:setDefault(tonumber(defaultValue));
  187. end
  188. --[[if self.WanFARadioManager then
  189. local values =
  190. {
  191. [1] = {selectValue = 0x0001, unselectValue = 0x00},--自摸翻倍
  192. [2] = {selectValue = 0x0002, unselectValue = 0x00},--归翻倍
  193. [3] = {selectValue = 0x0004, unselectValue = 0x00},--可三招胡
  194. [4] = {selectValue = 0x0008, unselectValue = 0x00},--放炮全赔
  195. [5] = {selectValue = 0x0010, unselectValue = 0x00},--过胡升番可胡
  196. [6] = {selectValue = 0x0020, unselectValue = 0x00},--小家可看牌
  197. [7] = {selectValue = 0x0040, unselectValue = 0x00},--可吃对家
  198. }
  199. self.WanFARadioManager:addItem(self.ui.Items.CheckBox_11, 1, values[1].selectValue, values[1].unselectValue); -- 自摸翻倍
  200. self.WanFARadioManager:addItem(self.ui.Items.CheckBox_12, 2, values[3].selectValue, values[3].unselectValue); -- 可三招胡
  201. self.WanFARadioManager:addItem(self.ui.Items.CheckBox_15, 3, values[2].selectValue, values[2].unselectValue); -- 归翻倍
  202. self.WanFARadioManager:addItem(self.ui.Items.CheckBox_13, 4, values[4].selectValue, values[4].unselectValue); -- 放炮包赔
  203. self.WanFARadioManager:addItem(self.ui.Items.CheckBox_19, 5, values[5].selectValue, values[5].unselectValue); -- 过张升番胡
  204. self.WanFARadioManager:addItem(self.ui.Items.CheckBox_20, 6, values[6].selectValue, values[6].unselectValue); -- 小家可看牌
  205. self.WanFARadioManager:addItem(self.ui.Items.CheckBox_17, 7, values[7].selectValue, values[7].unselectValue); -- 可吃对家
  206. local rule = 0;
  207. for k,v in ipairs(values) do
  208. if k ~= 7 then
  209. if rule == 0 then
  210. rule = v.selectValue;
  211. else
  212. rule = getNumOr(rule, v.selectValue)
  213. end
  214. end
  215. end
  216. -- 设置默认状态
  217. local ttSelected = {}
  218. local defaultValue = self:getDefaultValue("specialRule") or rule
  219. for k,v in pairs(values) do
  220. if getNumBand(defaultValue, v.selectValue) > 0 then
  221. table.insert(ttSelected, k)
  222. end
  223. end
  224. self.WanFARadioManager:setDefault(ttSelected);
  225. end--]]
  226. self:initOtherCheckBoxManager()
  227. self:initJiFenBeiShu()
  228. self:initLayoutEvent()
  229. end
  230. -- 面板的点击事件,点击面板后,隐藏所有提示
  231. function CreateRoom_zgwrddz:initLayoutEvent()
  232. self.ui.Items.Layout_1:registerClick(function()
  233. local buttons = {
  234. {buttonName = "Button_JFBS", tipsName = "ImageView_JFBS"},
  235. {buttonName = "Button_XXHDJP", tipsName = "ImageView_XXHDJP"},
  236. };
  237. -- 隐藏其他提示信息
  238. for k, v in ipairs(buttons) do
  239. local tipsNode = self.ui.Items[v.tipsName]
  240. tipsNode:setVisible(false)
  241. end
  242. end)
  243. end
  244. ---
  245. -- 初始化其他选项
  246. -- @return
  247. --
  248. function CreateRoom_zgwrddz:initOtherCheckBoxManager ()
  249. if not self.otherCheckBoxManager then
  250. return
  251. end
  252. -- self.otherCheckBoxManager:addItem(self.ui.Items.CheckBox_ForbidProp, "forbidProp", 1, 0)
  253. -- local forbidProp = self:getDefaultValue("forbidProp") or 0
  254. -- local defaults = {}
  255. -- if forbidProp > 0 then
  256. -- table.insert(defaults, "forbidProp")
  257. -- end
  258. -- self.otherCheckBoxManager:setDefault(defaults)
  259. self.otherCheckBoxManager:addItem(self.ui.Items.CheckBox_ForbidProp, "forbidProp", 1, 0)--屏蔽快捷语与道具
  260. self.otherCheckBoxManager:addItem(self.ui.Items.CheckBox_ForbidVoice, "forbidVoice", 1, 0)--屏蔽语音
  261. local forbidProp = self:getDefaultValue("forbidProp") or 0
  262. local forbidVoice = self:getDefaultValue("forbidVoice") or 0
  263. local defaults = {}
  264. if forbidProp > 0 then
  265. table.insert(defaults, "forbidProp")
  266. end
  267. if forbidVoice == 1 then
  268. table.insert(defaults, "forbidVoice")
  269. end
  270. self.otherCheckBoxManager:setDefault(defaults)
  271. end
  272. -- 初始化积分倍数
  273. function CreateRoom_zgwrddz:initJiFenBeiShu()
  274. self.ui.Items.Button_jia:registerClick(handler(self, self.onClickAdd))
  275. self.ui.Items.Button_jian:registerClick(handler(self, self.onClickJian))
  276. self.curJFBS = self:getDefaultValue("baseMulti") or 1;
  277. self:updateJiFenBeiShu()
  278. --积分倍数说明
  279. self.ui.Items.ImageView_JFBS:setVisible(false)
  280. self.ui.Items.Button_JFBS:registerClick(function()
  281. self.ui.Items.ImageView_JFBS:setVisible(not self.ui.Items.ImageView_JFBS:isVisible())
  282. end)
  283. -- self.ui.Items.Layout_JiFenBeiShu:setVisible(false)
  284. end
  285. --更新积分倍数
  286. function CreateRoom_zgwrddz:updateJiFenBeiShu()
  287. self.curJFBS = self.curJFBS >= 1.0 and math.floor(self.curJFBS) or self.curJFBS;
  288. self.ui.Items.Text_jifen:setText(self.curJFBS)
  289. self.ui.Items.Button_jia:setEnabled(self.curJFBS ~= 100)
  290. self.ui.Items.Button_jian:setEnabled(self.curJFBS ~= 0.1)
  291. end
  292. --按钮加
  293. function CreateRoom_zgwrddz:onClickAdd()
  294. playBtnEffect()
  295. if not self.curJFBS then
  296. return
  297. end
  298. if self.curJFBS >= 1.0 then
  299. self.curJFBS = self.curJFBS + 1.0
  300. else
  301. self.curJFBS = self.curJFBS + 0.1
  302. end
  303. if self.curJFBS >= 100 then
  304. self.curJFBS = 100;
  305. end
  306. self:updateJiFenBeiShu()
  307. end
  308. --按钮减
  309. function CreateRoom_zgwrddz:onClickJian()
  310. playBtnEffect()
  311. if not self.curJFBS then
  312. return
  313. end
  314. if self.curJFBS <= 1.0 then
  315. self.curJFBS = self.curJFBS - 0.1
  316. else
  317. self.curJFBS = self.curJFBS - 1.0
  318. end
  319. if self.curJFBS <= 0.1 then
  320. self.curJFBS = 0.1
  321. end
  322. self:updateJiFenBeiShu()
  323. end
  324. function CreateRoom_zgwrddz:getRuleResult()
  325. local game_num = self.JuShuRadioManager:getResult()
  326. local payMode = self.PayRadioManager:getResult()
  327. local multLimit = self.FengDingRadioManager:getResult();
  328. local jiadijiabei = self.JieSuanCheckBoxManager:getResult(); --选择加底 加倍
  329. local jiadifen = self.jiaDiRadioManager:getResult(); --选择的是加底1 还是 加底2
  330. local playnum = self.pcountRadioManager:getResult()--玩家人数
  331. local startMode = 0
  332. if playnum == -1 then--选择的是快速组局
  333. --playnum = 4
  334. startMode = 1
  335. end
  336. local playRule = 0
  337. for _,v in pairs(jiadijiabei) do
  338. playRule = getNumOr(playRule, v.value)
  339. end
  340. --选择了加底
  341. --if self.ui.Items.CheckBox_wanfa_1:getSelectedState() == true then
  342. playRule = getNumOr(playRule, jiadifen)
  343. --end
  344. local other = self.otherCheckBoxManager:getResult2()
  345. local forbidProp = other["forbidProp"]
  346. local forbidVoice = other["forbidVoice"]
  347. self.defaultValus =
  348. {
  349. gamerule = 1;
  350. game_num = game_num;
  351. --scoreRule = scoreRule,
  352. multLimit = multLimit;
  353. --specialRule = specialRule;
  354. deductRule = payMode;
  355. areaNo = app.user.areano;
  356. playRule = playRule;
  357. jiadifen = jiadifen;
  358. --startMode = startMode;
  359. --playnum = playnum;
  360. baseMulti = self.curJFBS,
  361. forbidProp = forbidProp,
  362. forbidVoice = forbidVoice,
  363. }
  364. -- 保存玩家的选择
  365. self:saveDefaultValues()
  366. local strGameInfo = json.encode(self.defaultValus)
  367. return game_num, strGameInfo
  368. end
  369. return CreateRoom_zgwrddz