-- local MJSelectRadioCompnent = require("luaScript.Views.CreateRoom.Compnent.MJSelectRadioCompnent") -- local MJGroupCompnent = require("luaScript.Views.CreateRoom.Compnent.MJGroupCompnent") -- local MJCheckBoxCompnent = require("luaScript.Views.CreateRoom.Compnent.MJCheckBoxCompnent") -- local MJWanFa=MJFramework.ImportWanFa("luaScript.SubGameDefine.MaJiang.MJWanFa") local CreateRoomItemBase=require("luaScript.Views.CreateRoom.CreateRoomItemBase") local MJCreateRoomItem=class("luzhouguiCreateRoomItem",CreateRoomItemBase) local SELECT_COLOR = cc.c4b(213,46,11,255) local NON_SELECT_COLOR = cc.c4b(21,99,97,255) function MJCreateRoomItem:ctor(defaultValues) MJCreateRoomItem.super.ctor(self, defaultValues, "luzhoumj_room.json") local ui = loadUI("res/ui/ui_chuangjian/mj_createroom_luzhou.ui"); self.ui = ui; self:addChild(ui); self.JuShuRadioManager = import("luaScript.Tools.RadioManager"):new(); --房费 self.PayRadioManager = import("luaScript.Tools.RadioManager"):new(); --人数 self.RenShuRadioManager = import("luaScript.Tools.RadioManager"):new(); --封顶 self.FengDingCheckBoxManager = import("luaScript.Tools.RadioManager"):new(); --鬼牌 self.GuiNumCheckBoxManager = import("luaScript.Tools.RadioManager"):new(); --玩法 self.WanFaCheckBoxManager = import("luaScript.Tools.CheckBoxManager"):new(); --低分加分 self.DiFenJiaFenCheckBoxManager = import("luaScript.Tools.RadioManager"):new(); -- 其他选项 self.otherCheckBoxManager = import("luaScript.Tools.CheckBoxManager"):new() self:onHideCestView() -- 隐藏cest的界面 end function MJCreateRoomItem:onHideCestView() if self.ui.Items.Button_pay0_tips then self.ui.Items.Button_pay0_tips:setVisible(false) end if self.ui.Items.Button_pay1_tips then self.ui.Items.Button_pay1_tips:setVisible(false) end if self.ui.Items.ImageView_pay0_tips then self.ui.Items.ImageView_pay0_tips:setVisible(false) end if self.ui.Items.ImageView_pay1_tips then self.ui.Items.ImageView_pay1_tips:setVisible(false) end end function MJCreateRoomItem:onShowCestView() if self.ui.Items.Text_pay0 then self.ui.Items.Text_pay0:setText("免费") end if self.ui.Items.Text_pay1 then self.ui.Items.Text_pay1:setText("自费") end if self.ui.Items.Button_pay0_tips then self.ui.Items.Button_pay0_tips:setVisible(true) end if self.ui.Items.Button_pay1_tips then self.ui.Items.Button_pay1_tips:setVisible(true) end if self.ui.Items.ImageView_pay0_tips then self.ui.Items.ImageView_pay0_tips:setVisible(false) end if self.ui.Items.Button_pay0_tips then self.ui.Items.Button_pay0_tips:registerClick(function() if self.ui.Items.ImageView_pay0_tips then local isVisible = not self.ui.Items.ImageView_pay0_tips:isVisible() self.ui.Items.ImageView_pay0_tips:setVisible(isVisible) end end) end if self.ui.Items.ImageView_pay1_tips then self.ui.Items.ImageView_pay1_tips:setVisible(false) end if self.ui.Items.Button_pay1_tips then self.ui.Items.Button_pay1_tips:registerClick(function() if self.ui.Items.ImageView_pay1_tips then local isVisible = not self.ui.Items.ImageView_pay1_tips:isVisible() self.ui.Items.ImageView_pay1_tips:setVisible(isVisible) end end) end end --根据局数获取房费 function MJCreateRoomItem:getCreateRoomCost(jushu) if self.cost then local costInfo = self.cost[jushu] if costInfo then local payMode = self.PayRadioManager:getResult() if payMode == 0 then return costInfo.roomCard or 0 elseif payMode == 1 then return costInfo.roomCardAA or 0 end end end return 0 end function MJCreateRoomItem:onEnter() MJCreateRoomItem.super.onEnter(self) -- 整理不同局数对应的房卡消耗 local payTypes={} local gameConfig = app.user:getGameConfig(GAME_IDS.LuZhouMJ)--app.gameId); if gameConfig then local arrGameRound = toNumberArray(",")(gameConfig.gameRound) local arrRequireCards = toNumberArray(",")(gameConfig.requireCards) local arrRequireCardsAA = toNumberArray(",")(gameConfig.AArequireCards) for idx, gameRound in ipairs(arrGameRound) do payTypes[gameRound] = { roomCard = arrRequireCards[idx], roomCardAA = arrRequireCardsAA[idx], } end end self.cost = payTypes -- 玩家选择局数后,更新房卡消耗 --[[local function updateCost(gameRound) local costInfo = payTypes[gameRound] if costInfo then self.ui.Items.Text_FangZhu:setText(tostring(costInfo.requireCards or 0)) self.ui.Items.Text_AAPay:setText(tostring(costInfo.requireCardsAA or 0)) end end --]] --[[-- 局数 jushu if self.JuShuRadioManager then self.JuShuRadioManager:addItem(self.ui.Items.CheckBox_1, 8); -- 6局 self.JuShuRadioManager:addItem(self.ui.Items.CheckBox_2, 12); -- 10局 self.JuShuRadioManager:addItem(self.ui.Items.CheckBox_3, 20); -- 16局 local gamenumDefault = self:getDefaultValue("totalgamenum") local jushuDefault = self:getDefaultValue("jushu") local defaultValue = gamenumDefault or jushuDefault or 8 self.JuShuRadioManager:setDefault(defaultValue); --self.JuShuRadioManager:setCallback(updateCost); --updateCost(defaultValue) end --]] -- 房费 if self.PayRadioManager then self.PayRadioManager:addItem(self.ui.Items.CheckBox_FangZhu, 0); -- 房主支付 self.PayRadioManager:addItem(self.ui.Items.CheckBox_AAPay, 1); -- AA支付 --self.PayRadioManager:addItem(self.ui.Items.CheckBox_WinFinal, 2); -- 大赢家支付 local default = self:getDefaultValue("deductRule") or 0 self.PayRadioManager:setDefault(default) --通知创建界面更新显示 local function dispatchUpdateCost() app:dispatchEvent({name = "onChangePayMode"}) end self.PayRadioManager:setCallback(dispatchUpdateCost); self:setDefaultTextColor(self.PayRadioManager,"Text_pay") --self:updataTextColor(self.PayRadioManager,"Text_pay","radioBox",{0,1}) end -- 人数 if self.RenShuRadioManager then self.RenShuRadioManager:addItem(self.ui.Items.CheckBox_playerCount_4, 0); -- 快速开局 self.RenShuRadioManager:addItem(self.ui.Items.CheckBox_playerCount_3, 4); -- 满4人开 self.RenShuRadioManager:addItem(self.ui.Items.CheckBox_playerCount_2, 3); -- 满3人开 self.RenShuRadioManager:addItem(self.ui.Items.CheckBox_playerCount_1, 2); -- 满2人开 local defaultValue = self:getDefaultValue("playnum") or 0 local isfaststart = self:getDefaultValue("isfaststart") or 1 --2人时显示低分加分 local function renShuCallBack(value) if value == 3 or value == 4 then self.ui.Items.Layout_DiFenJiaFen:setVisible(false) self.ui.Items.ImageView_DFJF:setVisible(false) else self.ui.Items.Layout_DiFenJiaFen:setVisible(true) end self.ui.Items.Layout_1:requestDoLayout() self.ui.Items.Layout_1:doLayout(); end if isfaststart==1 then self.RenShuRadioManager:setDefault(0); renShuCallBack(0) else self.RenShuRadioManager:setDefault(defaultValue); renShuCallBack(defaultValue) end self:setDefaultTextColor(self.RenShuRadioManager,"Text_player") self:updataTextColor(self.RenShuRadioManager,"Text_player","radioBox",{0,4,3,2}) self.RenShuRadioManager:setCallback(renShuCallBack); end --快速成局说明 self.ui.Items.ImageView_KSCJ:setVisible(false) self.ui.Items.Button_KSCJ:registerClick(function() self.ui.Items.ImageView_KSCJ:setVisible(not self.ui.Items.ImageView_KSCJ:isVisible()) end) --低分加分说明 self.ui.Items.ImageView_DFJF:setVisible(false) self.ui.Items.Button_DFJF:registerClick(function() self.ui.Items.ImageView_DFJF:setVisible(not self.ui.Items.ImageView_DFJF:isVisible()) end) -- 封顶 if self.FengDingCheckBoxManager then self.FengDingCheckBoxManager:addItem(self.ui.Items.CheckBox_40Ke, 5); -- 40颗 self.FengDingCheckBoxManager:addItem(self.ui.Items.CheckBox_80Ke, 6); -- 80颗 local default = self:getDefaultValue("limitfan") or 6 self.FengDingCheckBoxManager:setDefault(default) --40颗时可选5颗起胡 local function keShuCallBack(value) if value == 5 then self.ui.Items.CheckBox_HuFan:setEnabled(true) elseif value == 6 then self.ui.Items.CheckBox_HuFan:setSelectedState(false) self.ui.Items.Text_HuFan:setTextColor(NON_SELECT_COLOR) self.ui.Items.CheckBox_HuFan:setEnabled(false) end end keShuCallBack(default) self:setDefaultTextColor(self.FengDingCheckBoxManager,"Text_limit") self:updataTextColor(self.FengDingCheckBoxManager,"Text_limit","radioBox",{5,6}) self.FengDingCheckBoxManager:setCallback(keShuCallBack); end -- 鬼牌 if self.GuiNumCheckBoxManager then self.GuiNumCheckBoxManager:addItem(self.ui.Items.CheckBox_4Gui, 4); -- 4鬼 self.GuiNumCheckBoxManager:addItem(self.ui.Items.CheckBox_8Gui, 8); -- 8鬼 self.GuiNumCheckBoxManager:addItem(self.ui.Items.CheckBox_12Gui, 12); -- 12鬼 local default = self:getDefaultValue("laizinum") or 12 self.GuiNumCheckBoxManager:setDefault(default) self:setDefaultTextColor(self.GuiNumCheckBoxManager,"Text_gui") self:updataTextColor(self.GuiNumCheckBoxManager,"Text_gui","radioBox",{4,8,12}) end --玩法 if self.WanFaCheckBoxManager then self.WanFaCheckBoxManager:addItem(self.ui.Items.CheckBox_BaoJiao, "baojiao", 1, 0) self.WanFaCheckBoxManager:addItem(self.ui.Items.CheckBox_XiQian, "xiqian", 1, 0) self.WanFaCheckBoxManager:addItem(self.ui.Items.CheckBox_GuoZhangHu, "guozhangjiafan", 1, 0) self.WanFaCheckBoxManager:addItem(self.ui.Items.CheckBox_TouZhuang, "toujiazhuang", 1, 0) self.WanFaCheckBoxManager:addItem(self.ui.Items.CheckBox_TingPai, "tingpai", 1, 0) self.WanFaCheckBoxManager:addItem(self.ui.Items.CheckBox_GDHZ, "isoutredcard", 1, 0) self.WanFaCheckBoxManager:addItem(self.ui.Items.CheckBox_HuFan, "hufan", 2, 0)--5颗起胡 字段"hufan", 40封顶时可选,选中取值为2,不选取值为0 local baojiao = self:getDefaultValue("baojiao") or 1 local xiqian = self:getDefaultValue("xiqian") or 0 local guozhangjiafan = self:getDefaultValue("guozhangjiafan") or 1 local toujiazhuang = self:getDefaultValue("toujiazhuang") or 0 local tingpai = self:getDefaultValue("tingpai") or 1 local isoutredcard = self:getDefaultValue("isoutredcard") or 0 local hufan = self:getDefaultValue("hufan") or 0 local selecteds = {} if baojiao==1 then table.insert(selecteds,"baojiao") end if xiqian==1 then table.insert(selecteds,"xiqian") end if guozhangjiafan==1 then table.insert(selecteds,"guozhangjiafan") end if toujiazhuang==1 then table.insert(selecteds,"toujiazhuang") end if tingpai==1 then table.insert(selecteds,"tingpai") end if isoutredcard==1 then table.insert(selecteds,"isoutredcard") end if hufan==2 then table.insert(selecteds,"hufan") end self.WanFaCheckBoxManager:setDefault(selecteds) self:setDefaultTextColor() self:updataTextColor(self.WanFaCheckBoxManager,"","checkBox",{}) end self.curJFBS = self:getDefaultValue("baseMulti") or 1; -- 低分加分 if self.DiFenJiaFenCheckBoxManager then self.DiFenJiaFenCheckBoxManager:addItem(self.ui.Items.CheckBox_BuJiaFen, 0);-- 不加分 self.DiFenJiaFenCheckBoxManager:addItem(self.ui.Items.CheckBox_JiaFen, 1); -- 加分 local default = self:getDefaultValue("diFenLimit") or 0 if default > 0 then default = 1 end self.DiFenJiaFenCheckBoxManager:setDefault(default) --self:setDefaultTextColor(self.DiFenJiaFenCheckBoxManager,"Text_difenjiadi") end --小于多少分 self._txtLimitScore = self.ui.Items.Text_limitScore local lstMin, lsMax = 5, 40 self.Slider_limitScore = self.ui.Items.Slider_limitScore self.Slider_limitScore:addEventListener(function ( sender, eventType) if eventType == 0 then local per = sender:getPercent() self.limitScore = math.floor(lstMin + (lsMax-lstMin)/100 * per) self.curJFBS = self.curJFBS or 1 self._txtLimitScore:setString(string.format("%d", self.limitScore * math.ceil(self.curJFBS))) end end) -- default self.limitScore = self:getDefaultValue("diFenLimit") or 10 if self.limitScore == 0 then self.limitScore = 5 elseif self.curJFBS > 0 then self.limitScore = self.limitScore/math.ceil(self.curJFBS) end self._txtLimitScore:setString(string.format("%d", tonumber(self.limitScore))) local lastlsPer = (self.limitScore-lstMin)/(lsMax-lstMin)*100 self.Slider_limitScore:setPercent(lastlsPer) --加多少分 self._txtAddScore = self.ui.Items.Text_addScore local asMin, asMax = 5, 40 self.sliderAddScore = self.ui.Items.Slider_addScore self.sliderAddScore:addEventListener(function ( sender, eventType) if eventType == 0 then local per = sender:getPercent() self.addScore = math.floor(asMin + (asMax-asMin)/100 * per) self.curJFBS = self.curJFBS or 1 self._txtAddScore:setString(string.format("%d", self.addScore*math.ceil(self.curJFBS))) end end) -- default self.addScore = self:getDefaultValue("diFenAdd") or 5 if self.addScore == 0 then self.addScore = 5 elseif self.curJFBS > 0 then self.addScore = self.addScore/math.ceil(self.curJFBS) end self._txtAddScore:setString(string.format("%d", tonumber(self.addScore))) local lastfaPer = (self.addScore-asMin)/(asMax-asMin)*100 self.sliderAddScore:setPercent(lastfaPer) self:initLayoutEvent() self:initOtherCheckBoxManager() self:initJiFenBeiShu() end -- 面板的点击事件,点击面板后,隐藏所有提示 function MJCreateRoomItem:initLayoutEvent() self.ui.Items.Layout_1:registerClick(function() local buttons = { {buttonName = "Button_KSCJ", tipsName = "ImageView_KSCJ"}, {buttonName = "Button_JFBS", tipsName = "ImageView_JFBS"}, {buttonName = "Button_DFJF", tipsName = "ImageView_DFJF"}, }; -- 隐藏其他提示信息 for k, v in ipairs(buttons) do local tipsNode = self.ui.Items[v.tipsName] tipsNode:setVisible(false) end end) end --- -- 初始化其他选项 -- @return -- function MJCreateRoomItem:initOtherCheckBoxManager () if not self.otherCheckBoxManager then return end self.otherCheckBoxManager:addItem(self.ui.Items.CheckBox_ForbidProp, "forbidProp", 1, 0)--屏蔽快捷语与道具 self.otherCheckBoxManager:addItem(self.ui.Items.CheckBox_ForbidVoice, "forbidVoice", 1, 0)--屏蔽语音 local forbidProp = self:getDefaultValue("forbidProp") or 0 local forbidVoice = self:getDefaultValue("forbidVoice") or 0 local defaults = {} if forbidProp > 0 then table.insert(defaults, "forbidProp") end if forbidVoice == 1 then table.insert(defaults, "forbidVoice") end self.otherCheckBoxManager:setDefault(defaults) end -- 初始化积分倍数 function MJCreateRoomItem:initJiFenBeiShu() self.ui.Items.Button_jia:registerClick(handler(self, self.onClickAdd)) self.ui.Items.Button_jian:registerClick(handler(self, self.onClickJian)) self.curJFBS = self:getDefaultValue("baseMulti") or 1; self:updateJiFenBeiShu() --积分倍数说明 self.ui.Items.ImageView_JFBS:setVisible(false) self.ui.Items.Button_JFBS:registerClick(function() self.ui.Items.ImageView_JFBS:setVisible(not self.ui.Items.ImageView_JFBS:isVisible()) end) -- self.ui.Items.Layout_JiFenBeiShu:setVisible(false) end --更新积分倍数 function MJCreateRoomItem:updateJiFenBeiShu() self.curJFBS = self.curJFBS >= 1.0 and math.floor(self.curJFBS) or self.curJFBS; self.ui.Items.Text_jifen:setText(self.curJFBS) self.ui.Items.Button_jia:setEnabled(self.curJFBS ~= 100) self.ui.Items.Button_jian:setEnabled(self.curJFBS ~= 0.1) self._txtLimitScore:setString(string.format("%d", self.limitScore * math.ceil(self.curJFBS))) self._txtAddScore:setString(string.format("%d", self.addScore*math.ceil(self.curJFBS))) end --按钮加 function MJCreateRoomItem:onClickAdd() playBtnEffect() if not self.curJFBS then return end if self.curJFBS >= 1.0 then self.curJFBS = self.curJFBS + 1.0 else self.curJFBS = self.curJFBS + 0.1 end if self.curJFBS >= 100 then self.curJFBS = 100; end self:updateJiFenBeiShu() end --按钮减 function MJCreateRoomItem:onClickJian() playBtnEffect() if not self.curJFBS then return end if self.curJFBS <= 1.0 then self.curJFBS = self.curJFBS - 0.1 else self.curJFBS = self.curJFBS - 1.0 end if self.curJFBS <= 0.1 then self.curJFBS = 0.1 end self:updateJiFenBeiShu() end --设置选中值默认颜色 function MJCreateRoomItem:setDefaultTextColor(radio,text) if radio then local index = radio:getResult() local defaultText = string.format(text.."%d",index) self.ui.Items[defaultText]:setTextColor(SELECT_COLOR) end local result = self.WanFaCheckBoxManager:getResult2() if result.baojiao == 1 then self.ui.Items.Text_BaoJiao:setTextColor(SELECT_COLOR) end if result.xiqian == 1 then self.ui.Items.Text_XiQian:setTextColor(SELECT_COLOR) end end --点击checkBox时,改变其text的颜色 function MJCreateRoomItem:updataTextColor(radio,text,boxType,valueTab) local function updataRadioTextColor() if boxType == "radioBox" then local index = radio:getResult() for k,value in pairs(valueTab) do local item = string.format(text.."%d",value) self.ui.Items[item]:setTextColor(NON_SELECT_COLOR) if value == index then self.ui.Items[item]:setTextColor(SELECT_COLOR) end end elseif boxType == "checkBox" then local result = self.WanFaCheckBoxManager:getResult2() if result.baojiao == 1 then self.ui.Items.Text_BaoJiao:setTextColor(SELECT_COLOR) else self.ui.Items.Text_BaoJiao:setTextColor(NON_SELECT_COLOR) end if result.xiqian == 1 then self.ui.Items.Text_XiQian:setTextColor(SELECT_COLOR) else self.ui.Items.Text_XiQian:setTextColor(NON_SELECT_COLOR) end end end radio:setCallback(updataRadioTextColor); end function MJCreateRoomItem:getRuleResult() local game_num = self.JuShuRadioManager:getResult() local payMode = self.PayRadioManager:getResult() local playnum = self.RenShuRadioManager:getResult() local isfaststart = playnum==0 and 1 or 0 playnum = playnum==0 and 4 or playnum local limitfan = self.FengDingCheckBoxManager:getResult() local laizinum = self.GuiNumCheckBoxManager:getResult() local wanFaResult = self.WanFaCheckBoxManager:getResult2() local baojiao = wanFaResult.baojiao local xiqian = wanFaResult.xiqian local guozhangjiafan = wanFaResult.guozhangjiafan local toujiazhuang = wanFaResult.toujiazhuang local tingpai = wanFaResult.tingpai local isoutredcard = wanFaResult.isoutredcard local hufan = wanFaResult.hufan local difenjiadi = self.DiFenJiaFenCheckBoxManager:getResult() local diFenLimit = 0 local diFenAdd = 0 if difenjiadi > 0 and (playnum == 2 or isfaststart == 1) then diFenLimit = tonumber(self._txtLimitScore:getText()) diFenAdd = tonumber(self._txtAddScore:getText()) end local other = self.otherCheckBoxManager:getResult2() local forbidProp = other["forbidProp"] local forbidVoice = other["forbidVoice"] self.defaultValus = { gamerule = 1, totalgamenum = game_num, deductRule = payMode, playnum = playnum, isfaststart = isfaststart, limitfan = limitfan, laizinum = laizinum, baojiao = baojiao, xiqian = xiqian, guozhangjiafan = guozhangjiafan, toujiazhuang = toujiazhuang, tingpai = tingpai, isoutredcard = isoutredcard, hufan = hufan, diFenLimit = diFenLimit, diFenAdd = diFenAdd, forbidProp = forbidProp, forbidVoice = forbidVoice, baseMulti = self.curJFBS, } -- 保存玩家的选择 self:saveDefaultValues() local strGameInfo = json.encode(self.defaultValus); return game_num, strGameInfo end return MJCreateRoomItem