Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

431 rinda
13 KiB

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