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.

362 lines
11 KiB

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