|
-
- local CRConfig = require("luaScript.Views.CreateRoom.Com.CRConfig")
-
- -- 主界面
- local CreateRoomBase = class("CreateRoomBase", cc.UIView)
-
- --[[
- datas =
- {
- -- 游戏ID
- gameId = 1,
-
- -- 默认选中的玩法
- defaultPlayType = 1,
- }
- --]]
-
- local CREATE_GAME_TYPE_IMG_SELECT = {
- [GAME_TYPE.PK] = "res/ui/zy_dating/chuanjian/chuangjian_btn_font_puke_sel.png", --扑克
- [GAME_TYPE.ZP] = "res/ui/zy_dating/chuanjian/chuangjian_btn_font_zipai_sel.png", --字牌
- [GAME_TYPE.MJ] = "res/ui/zy_dating/chuanjian/chuangjian_btn_font_majiang_sel.png", --麻将
- }
-
- local CREATE_GAME_TYPE_IMG_NORMAL = {
- [GAME_TYPE.PK] = "res/ui/zy_dating/chuanjian/chuangjian_btn_font_puke_nor.png", --扑克
- [GAME_TYPE.ZP] = "res/ui/zy_dating/chuanjian/chuangjian_btn_font_zipai_nor.png", --字牌
- [GAME_TYPE.MJ] = "res/ui/zy_dating/chuanjian/chuangjian_btn_font_majiang_nor.png", --麻将
- }
-
-
-
- function CreateRoomBase:ctor(datas)
- CreateRoomBase.super.ctor(self);
-
- self.datas = datas
-
- local ui = loadUI("res/ui/ui_chuangjian/ui_chuangjian.ui");
- self.ui = ui;
- self:addChild(ui);
-
- -- 是否点击了游戏名字按钮
- self.isTochGame = nil
-
- self.ruleViews = {}
-
- --游戏类型Item
- self.gameTypeItem = {}
-
- --游戏名字Item
- self.gameItemT = {}
-
- --玩法名字Item
- self.ruleItemT = {}
-
- --当前选中的游戏类型(1:扑克类,2:字牌类,3:麻将类)
- self.selectGameType = nil
-
- --默认打开的游戏类型
- self.defaultOpenType = GAME_TYPE.MJ
-
- if self.datas then
- --选中的游戏id
- self.selectGameID = self.datas.gameId
- --选中的玩法id
- self.selectRuleID = self.datas.defaultPlayType
- else
- --选中的游戏id
- self.selectGameID = nil
- --选中的玩法id
- self.selectRuleID = nil
- end
-
- self.selectColor = cc.c3b(255,255,255)
- self.normalColor = cc.c3b(130,201,200)
- end
-
- function CreateRoomBase:onEnter()
- CreateRoomBase.super.onEnter(self)
-
- self.ui:bindEvent(app, CRConfig.CREATE_ROOM_DEDUCTRULE_CHANGE, handler(self, self.onDeductRuleChanged))
-
- -- 关闭按钮
- self.ui.Items.Button_close:registerClick(handler(self, self.onClickClose))
-
- -- 创建按钮
- self.ui.Items.Button_Create:registerClick(handler(self, self.onClickCreate))
-
- self.ui.Items.Text_Tip:setText("注:第一局未发牌扣除的"..PLN.CURRENCY.."将在1小时内返回。")
-
- self.ui.Items.Layout_game_item:setVisible(false)
-
- self.ui.Items.Layout_rule_item:setVisible(false)
-
- self.ui.Items.Button_Match:setVisible(false)
-
- self.ui.Items.ScrollView:setVisible(false)
- self.ui.Items.CheckBox_baojian:setVisible(false)
- self.ui.Items.Layout_BaoJian_Switch:setVisible(false)
-
- self.scrollLayoutPos = self.ui.Items.Layout_scrollview_game:getPosition()
-
- self.ui.Items.Button_jia:registerClick(handler(self, self.onClickJuShuAdd))
-
- self.ui.Items.Button_jian:registerClick(handler(self, self.onClickJuShuJian))
-
- self:initAddressSelector()
-
- self:setDefultGameInfo(self.defaultOpenType)
-
- -- 初始化可选玩法
- self:showGameTypeView()
-
- --创建界面修改支付模式通知这里更新显示
- self:bindEvent(app, "onChangePayMode", handler(self, self.updateJushuData));
- -- 玩家自行修改地区
- self:bindEvent(app, GAME_EVENT.EVENT_CHANGE_ADDRESS, handler(self, self.onEventChangeAddress))
- -- 获取游戏列表结果
- self:bindEvent(app.serverConfigs, "getSubGameListSuccessed", handler(self, self.onUpdateGameList))
-
- self.ui.Items.Layout_BaoJian_Name:setVisible(false)
-
- self.ui.Items.ScrollView_rule:setVisible(true)
- self.ui.Items.ScrollView_rule_club:setVisible(false)
-
- --箭头动画
- local action = cc.Sequence:create(cc.MoveBy:create(0.5,cc.p(0,10)),cc.MoveBy:create(0.5,cc.p(0,-10)))
- self.ui.Items.ImageView_Arrow:runAction(cc.RepeatForever:create(action))
-
- self.ui.Items.ScrollView_rule:addEventListener(function (obj, type)
- local inner = self.ui.Items.ScrollView_rule:getInnerContainer()
- local innerSize = inner:getContentSize()
- local pos = inner:getPosition()
- local h = innerSize.height - self.ui.Items.ScrollView_rule:getContentSize().height
- if h>0 then
- if pos.y>=-h + 10 then
- self.ui.Items.ImageView_Arrow:setVisible(false)
- else
- self.ui.Items.ImageView_Arrow:setVisible(true)
- end
- end
- end)
-
- self.ui.Items.Text_Content_1:setVisible(false)
- end
- ---
- -- 初始化地区选择组件
- --
- function CreateRoomBase:initAddressSelector()
- if true then
- return
- end
- if not app.config.ModuleConfig.IsSupportAddressSelector then
- return
- end
- local AddressSelector = require("luaScript.Views.Main.AddressSelector.AddressSelector")
- if AddressSelector and not self.addressSelector then
- self.addressSelector = AddressSelector:new(self.ui.Items.Layout_Address_Selector)
- end
- end
-
- --初始化局数
- function CreateRoomBase:initJuShu()
- if self.selectGameID then
- local gameConfig = getSubGameConfig(tonumber(self.selectGameID))
- if gameConfig then
- self.curGameCount = app.serverConfigs:getSubGameCostInfo(self.selectGameID)
- if self.curGameCount and #self.curGameCount > 0 then
- -- 局数最大索引
- self.maxSelJushuIndex = #self.curGameCount
-
- -- 默认局数
- -- 开放参数里面的默认局数来源于两个地方
- -- 已经有开房记录的,则从缓存中读取
- -- 没有开房记录的,则从配置中读取
- local defaultRound = self.curGameCount[1].round or 0
- if self.lastGameInfo then
- defaultRound = self.lastGameInfo["jushu"] or 0
- else
- defaultRound = gameConfig.defaultRound or 0
- end
-
- --找到当前选中的局数在配置中的下标
- for i,v in pairs(self.curGameCount) do
- if v.round == tonumber(defaultRound) then
- self.curSelJushuIndex = i
- end
- end
- if not self.curSelJushuIndex then
- self.curSelJushuIndex = 1
- end
- self:updateJushuData(self.curSelJushuIndex)
- end
- end
- end
- end
-
- -- 更新房卡消耗
- function CreateRoomBase:onDeductRuleChanged()
- if self.ruleView then
- local costCard = self.ruleView:getCreateRoomCost(self.curRound)
- self.ui.Items.Text_Diamond:setText("x "..costCard)
- end
- end
-
- --刷新局数数据显示
- function CreateRoomBase:updateJushuData(jushuIdx)
- if not self.curSelJushuIndex
- or not self.maxSelJushuIndex
- or tonumber(self.curSelJushuIndex) <= 0
- or tonumber(self.curSelJushuIndex) > tonumber(self.maxSelJushuIndex) then
- return
- end
-
- self.curRound = self.curGameCount[self.curSelJushuIndex].round or 0
-
- self.ui.Items.Text_jushu:setText(self.curRound.."局")
- self:onDeductRuleChanged()
- end
-
- --局数按钮加
- function CreateRoomBase:onClickJuShuAdd()
- if not self.curSelJushuIndex then
- return
- end
-
- if self.curSelJushuIndex >= self.maxSelJushuIndex then
- return
- end
-
- playBtnEffect()
-
- self.curSelJushuIndex = self.curSelJushuIndex + 1
- self:updateJushuData(self.curSelJushuIndex)
- end
-
- --局数按钮减
- function CreateRoomBase:onClickJuShuJian()
- if not self.curSelJushuIndex then
- return
- end
-
- if self.curSelJushuIndex <= 1 then
- return
- end
-
- playBtnEffect()
-
- self.curSelJushuIndex = self.curSelJushuIndex - 1
- self:updateJushuData(self.curSelJushuIndex)
- end
-
- --游戏根据sort排序
- function CreateRoomBase:sortByGameSort()
- -- local gameList = app.serverConfigs.subGameList
- local gameList = app.serverConfigs:getSubGameList()
- local ttGameList = {}
- if not gameList then
- return ttGameList
- end
-
- for k,v in pairs(gameList) do
- if v.gameId and v.show then
- table.insert(ttGameList, v)
- end
- end
-
- table.sort(ttGameList, function(a, b)
- local numA = tonumber(a)
- local numB = tonumber(b)
- if numA ~= nil and numB ~= nil then
- return numA > numB
- else
- if a.sortIndex and b.sortIndex then
- return a.sortIndex < b.sortIndex
- else
- return false
- end
- end
- end)
- return ttGameList
- end
-
- --如果未设置过玩法时,需要设置默认的游戏及玩法
- function CreateRoomBase:setDefultGameInfo(gameType)
- gameType = gameType or 3
- if not self.selectGameID then
- --未选中游戏时
- local ttGameList = self:sortByGameSort()
- for k,v in pairsByKeys(ttGameList) do
- if v.gameId and v.gameId ~= 0 and v.show == true then
- local gameConfig = getSubGameConfig(tonumber(v.gameId))
- if gameConfig and gameConfig.belongType == gameType then
- self.selectGameID = v.gameId
- self.selectGameType = gameConfig.belongType
- for ruleK,ruleV in pairsByKeys(gameConfig.GameType) do
- self.selectRuleID = ruleK
- break
- end
- break
- end
- end
- end
- else
- if not self.selectRuleID then
- --未选中玩法时,默认显示第一个玩法
- -- local gameList = app.serverConfigs.subGameList
- local gameList = app.serverConfigs:getSubGameList()
- local gameInfo = gameList[tonumber(self.selectGameID)]
- if gameInfo and gameInfo.gameId and gameInfo.gameId ~= 0 and gameInfo.show == true then
- local gameConfig = getSubGameConfig(tonumber(gameInfo.gameId))
- if gameConfig then
- for ruleK,ruleV in pairsByKeys(gameConfig.GameType) do
- self.selectRuleID = ruleK
- break
- end
- end
- end
- end
- end
- end
-
- --改变游戏类型后,设置每个玩法对应的第一个游戏为选中状态
- function CreateRoomBase:setSelectGameIDByGameType(gameType)
- local gameList = self:sortByGameSort()
- for k,v in pairsByKeys(gameList) do
- if v.gameId and v.gameId ~= 0 and v.show == true then
- local gameConfig = getSubGameConfig(tonumber(v.gameId))
- if gameConfig then
- if gameConfig.belongType and gameConfig.belongType == gameType then
- self.selectGameID = v.gameId
- for ruleK,ruleV in pairsByKeys(gameConfig.GameType) do
- self.selectRuleID = ruleK
- break
- end
- break
- end
- end
- end
- end
- end
-
- -- 关闭界面
- function CreateRoomBase:onClickClose()
- playBtnCloseEffect()
- self:removeFromParent()
- end
-
- -- 获取当前选中的玩法的最终数据
- function CreateRoomBase:getRuleResult()
- if self.selectRuleID then
- return self.ruleViews[self.selectRuleID]:getRuleResult()
- end
- end
-
- --点击选择游戏类型
- function CreateRoomBase:setGameTypeBtnStatus(curGameType)
- for gameType,item in pairsByKeys(self.gameTypeItem) do
- local gameImgName = ""
- if tonumber(gameType) == tonumber(curGameType) then
- -- gameImgName = CREATE_GAME_TYPE_IMG_SELECT[gameType]
- item:setBright(false)
- -- item:setLocalZOrder(99)
- else
- -- gameImgName = CREATE_GAME_TYPE_IMG_NORMAL[gameType]
- item:setBright(true)
- -- item:setLocalZOrder(0)
- end
- -- item.Items.ImageView_font_leixing:loadTexture(gameImgName)
- end
- end
-
- --是否点击当前已选中的游戏类型
- function CreateRoomBase:isTouchCurGameType(gameType)
- if tonumber(gameType) == tonumber(self.selectGameType) then
- return true
- else
- self.selectGameType = gameType
- return false
- end
- end
-
- -- 游戏类型按钮初始化
- function CreateRoomBase:showGameTypeView()
- local gameInfoList = self:sortByGameSort()
- if not gameInfoList or table.nums(gameInfoList) == 0 then
- return
- end
-
- --游戏类型
- local gameTypeTable = {}
- for k,v in pairsByKeys(gameInfoList) do
- if v.gameId and v.gameId ~= 0 and v.show == true then
- local gameConfig = getSubGameConfig(tonumber(v.gameId))
- if gameConfig then
- local theSame = false
- local belongType = gameConfig.belongType
- for k,gameType in pairsByKeys(gameTypeTable) do
- if gameType == belongType then
- theSame = true
- break
- end
- end
- if not theSame then
- table.insert(gameTypeTable, belongType)
- end
- end
- end
- end
-
- local curGameType = nil
- local gameConfig = getSubGameConfig(tonumber(self.selectGameID))
- if gameConfig then
- curGameType = gameConfig.belongType
- end
-
- self.gameTypeItem = {}
-
- for k, gameType in pairsByKeys(gameTypeTable) do
- self.ui.Items["Button_leixing_" .. gameType]:registerClick(function()
- playBtnTagEffect()
- --当前是否已选中此类型
- local isTrue = self:isTouchCurGameType(gameType);
- if isTrue == true then
- return
- end
-
- --选择游戏类型时,清空选中游戏id和玩法id
- self.selectGameID = nil
- self.selectRuleID = nil
- self.isTochGame = nil
-
- --改变游戏类型后,根据游戏类型设置对应的第一个游戏id为选中id
- self:setSelectGameIDByGameType(gameType)
-
- --更新游戏类型按钮状态
- self:setGameTypeBtnStatus(gameType)
-
- --切换游戏类型后,创建左边的游戏名按钮
- self:createLeftGameName(gameType)
-
- --设置左边选中游戏及玩法的按钮状态
- self:setLeftBtnStatus(self.selectGameID, self.selectRuleID)
-
- --选中玩法按钮后,显示右边的玩法选项
- self:onClickRule(self.selectRuleID)
- end)
-
- self.gameTypeItem[tonumber(gameType)] = self.ui.Items["Button_leixing_"..gameType]
- end
-
- --设置顶部游戏类型按钮状态
- self:setGameTypeBtnStatus(curGameType)
-
- --清空
- self.ruleView = nil;
-
- --创建左边游戏名字按钮
- self:createLeftGameName(curGameType)
-
- --设置左边选中游戏及玩法的按钮状态
- self:setLeftBtnStatus(self.selectGameID, self.selectRuleID)
-
- --选中玩法按钮后,显示右边的玩法选项
- self:onClickRule(self.selectRuleID)
- end
-
- --设置玩法按钮默认状态
- function CreateRoomBase:setLeftDefaultBtnStatus()
- --设置游戏按钮当前选中状态
- for gameID,gameItem in pairsByKeys(self.gameItemT) do
- local gameRule = 0
- if gameID > 10000 then
- gameRule = math.floor(gameID%10000)
- gameID = math.floor(gameID/10000)
- end
- gameItem.Items.Button_game:loadTextureNormal("res/ui/zy_dating/chuanjian/chuangjian_btn_nor.png")
- gameItem.Items.Text_GameName:setVisible(true)
- gameItem.Items.Text_GameName_sel:setVisible(false)
-
- --将所有游戏里面的玩法按钮设置不可见
- if self.ruleItemT[tonumber(gameID)] then
- for ruleID,item in pairsByKeys(self.ruleItemT[tonumber(gameID)]) do
- item:setVisible(false)
- item.Items.ImageView_bg_select:setVisible(false)
- item.Items.Text_rule_name:setColor(self.normalColor)
- local config = item.Items.Text_rule_name:getFontConfig()
- config.fontSize = 32
- item.Items.Text_rule_name:setFontConfig(config)
- end
- end
-
- --刷新layout布局
- gameItem:requestDoLayout()
- gameItem:doLayout()
- end
-
- self.ui.Items.Layout_scrollview_game:requestDoLayout()
- self.ui.Items.Layout_scrollview_game:doLayout()
- end
-
- --设置左边游戏按钮选中状态
- function CreateRoomBase:setLeftBtnStatus(curGameID, curRuleID)
- for gameID,gameItem in pairsByKeys(self.gameItemT) do
- local gameRule = curRuleID
- if gameID > 10000 then
- gameRule = math.floor(gameID%10000)
- gameID = math.floor(gameID/10000)
- end
- if tonumber(gameID) == tonumber(curGameID) and curRuleID == gameRule then
- local gameConfig = getSubGameConfig(gameID)
- gameItem.Items.Button_game:loadTextureNormal("res/ui/zy_dating/chuanjian/chuangjian_btn_sel.png")
- gameItem.Items.Text_GameName:setVisible(false)
- gameItem.Items.Text_GameName_sel:setVisible(true)
-
- --当选择的游戏里面的玩法按钮设置可见
- if self.ruleItemT[tonumber(gameID)] then
- for ruleID,item in pairsByKeys(self.ruleItemT[tonumber(gameID)]) do
- item:setVisible(true)
- if tonumber(curRuleID) == ruleID then
- item.Items.ImageView_bg_select:setVisible(true)
- item.Items.Text_rule_name:setColor(self.selectColor)
- local config = item.Items.Text_rule_name:getFontConfig()
- config.fontSize = 36
- item.Items.Text_rule_name:setFontConfig(config)
- end
- end
- end
- --刷新layout布局
- gameItem:requestDoLayout()
- gameItem:doLayout()
- break
- end
- end
-
- local mListView = self.ui.Items.Layout_scrollview_game
- mListView:requestDoLayout()
- mListView:doLayout()
-
- local mScorllView = self.ui.Items.ScrollView_game
- local layoutSize = mListView:getContentSize()
- mScorllView:setInnerContainerSize(layoutSize)
- end
-
- --根据游戏类型创建左边对应的游戏名字
- function CreateRoomBase:createLeftGameName(curGameType)
- -- local gameInfoList = app.serverConfigs.subGameList;
- local gameInfoList = app.serverConfigs:getSubGameList();
- if not gameInfoList then
- return;
- end
-
- local ttGameList = self:sortByGameSort()
-
- local mScorllView = self.ui.Items.ScrollView_game;
- mScorllView:hideAllBar()
-
- local mListView = self.ui.Items.Layout_scrollview_game
- mListView:removeAllChildren()
- self.gameItemT = {}
- self.ruleItemT = {}
-
- for gameID, gameRuleInfo in pairsByKeys(ttGameList) do
- if gameRuleInfo.gameId and gameRuleInfo.gameId ~= 0 then
- local gameConfig = getSubGameConfig(tonumber(gameRuleInfo.gameId))
- if gameConfig then
- gameType = gameConfig.belongType
- --游戏类型为选中类型时才显示
- if tonumber(gameType) == tonumber(curGameType) then
- if gameConfig.bSingleGame then
- for ruleId,ruleInfo in pairsByKeys(gameConfig.GameType) do
- local uiItem = self:createLeftGameItem(gameId, ruleInfo)
- -- 游戏名字按钮
- uiItem.Items.Button_game:registerClick(function()
- playBtnTagEffect()
- self.selectGameID = gameRuleInfo.gameId
- self.selectRuleID = ruleId
- self:setLeftDefaultBtnStatus()
- self:onClickRule(ruleId)
- self:setLeftBtnStatus(gameRuleInfo.gameId, ruleId)
- end)
-
- mListView:addChild(uiItem)
- self.gameItemT[tonumber(gameRuleInfo.gameId) * 10000 + tonumber(ruleId)] = uiItem
- end
- else
- local uiItem = self:createLeftGameItem(gameId, gameConfig.gameName)
- -- 游戏名字按钮
- uiItem.Items.Button_game:registerClick(function()
- playBtnTagEffect()
-
- ---点击更改游戏
- self.selectGameID = gameRuleInfo.gameId
- self.selectRuleID = nil
- self:setLeftDefaultBtnStatus()
-
- for ruleK,ruleV in pairsByKeys(gameConfig.GameType) do
- --点击游戏名,默认显示第一个玩法
- self.selectRuleID = ruleK
- self:onClickRule(ruleK)
- self:setLeftBtnStatus(gameRuleInfo.gameId, ruleK)
- break
- end
- end)
-
- mListView:addChild(uiItem)
- self.gameItemT[tonumber(gameRuleInfo.gameId)] = uiItem
-
- if gameConfig.GameType and table.nums(gameConfig.GameType) > 1 then
- self.ruleItemT[tonumber(gameRuleInfo.gameId)] = {}
- --玩法不止一种才显示下拉框多种玩法
- local uiRuleTemplate = self.ui.Items.Layout_rule_item;
- for ruleID,ruleInfo in pairsByKeys(gameConfig.GameType) do
- local uiRuleItem = uiRuleTemplate:getCopied()
- uiRuleItem.Items = getUIItems(uiRuleItem)
-
- --玩法名
- uiRuleItem.Items.Text_rule_name:setText(ruleInfo)
-
- --点击事件
- uiRuleItem.Items.Layout_touch:registerClick(function ()
- playBtnTagEffect()
- self.selectRuleID = ruleID
- self:setLeftDefaultBtnStatus()
- self:setLeftBtnStatus(gameRuleInfo.gameId, ruleID)
- self:onClickRule(ruleID);
- end)
-
- uiItem:addChild(uiRuleItem)
- self.ruleItemT[tonumber(gameRuleInfo.gameId)][tonumber(ruleID)] = uiRuleItem
- end
- --刷新layout布局
- uiItem:requestDoLayout()
- uiItem:doLayout()
- end
- end
- end
- end
- end
- end
-
- mListView:requestDoLayout()
- mListView:doLayout()
-
- mScorllView:jumpToTop()
-
- self:setLeftDefaultBtnStatus()
- end
-
- ---
- -- 创建左边游戏名字按钮
- -- @return
- --
- function CreateRoomBase:createLeftGameItem(gameId, gameName)
- local uiTemplate = self.ui.Items.Layout_game_item;
- local uiItem = uiTemplate:getCopied()
- uiItem.Items = getUIItems(uiItem)
- -- 是否已下载
- -- local gameIsInstaller = app.subGameManager:isInstaller(tonumber(gameId))
- --是否有更新
- -- local gameIsNeedUpdate = app.subGameManager:isNeedUpdate(tonumber(gameId))
- uiItem.Items.ImageView_update_icon:setVisible(false)--gameIsNeedUpdate or not gameIsInstaller)
- uiItem.Items.Text_GameName:setString(gameName)
- uiItem.Items.Text_GameName_sel:setString(gameName)
- --刷新layout布局
- uiItem:requestDoLayout()
- uiItem:doLayout()
- return uiItem
- end
-
- -- 玩法回调
- function CreateRoomBase:onClickRule(ruleID)
- self.selectRuleID = ruleID;
-
- --清空规则显示
- if self.ruleView then
- self.ruleView:removeFromParent()
- self.ruleView = nil
- end
-
- local mScorllView = self.ui.Items.ScrollView_rule
- mScorllView:hideAllBar()
- mScorllView:removeAllChildren()
-
- -- 读取上一次的开房配置
- self.lastGameInfo = nil
- local strLastGameInfo = self:loadLastRoomInfo(self.selectGameID, self.selectRuleID)
- if strLastGameInfo then
- self.lastGameInfo = json.decode(strLastGameInfo)
- end
-
- local createRuleConfig = getSubGameCreateRuleConfig(self.selectGameID)
- if createRuleConfig then
-
- self.ruleView = import("core.luaScript.Views.CreateRoom.CreateRoomItemNew"):new(createRuleConfig, self.lastGameInfo, self.selectGameID, self.selectRuleID)
- mScorllView:addChild(self.ruleView)
-
- local layoutSize = self.ruleView:getLayoutContentSize()
- if layoutSize then
- mScorllView:setInnerContainerSize(layoutSize)
- end
- local innerSize = mScorllView:getInnerContainer():getContentSize()
- if innerSize.height > mScorllView:getContentSize().height then
- self.ui.Items.ImageView_Arrow:setVisible(true)
- else
- self.ui.Items.ImageView_Arrow:setVisible(false)
- end
- self.ruleViews[self.selectRuleID] = self.ruleView
- else
- local ruleClass = getSubGameCreateRoomUi(self.selectGameID, tonumber(self.selectRuleID))
- if ruleClass then
- self.ruleView = import(ruleClass):new(nil, self.selectRuleID)
- mScorllView:addChild(self.ruleView)
- local layoutSize = self.ruleView:getLayoutContentSize()
- if layoutSize then
- mScorllView:setInnerContainerSize(layoutSize)
- end
- local innerSize = mScorllView:getInnerContainer():getContentSize()
- if innerSize.height > mScorllView:getContentSize().height then
- self.ui.Items.ImageView_Arrow:setVisible(true)
- else
- self.ui.Items.ImageView_Arrow:setVisible(false)
- end
- self.ruleViews[self.selectRuleID] = self.ruleView
- end
- end
-
- mScorllView:jumpToTop()
-
- self:initJuShu()
- end
-
- --游戏下载完成回调
- function CreateRoomBase:onDownloadFinished(gameid)
- showTooltip("下载完成")
- for gameID,gameItem in pairsByKeys(self.gameItemT) do
- -- 是否已下载
- local isDownGame = app.subGameManager:isInstaller(tonumber(gameID))
- -- 是否需要更新
- local isUpdate = app.subGameManager:isNeedUpdate(tonumber(gameID))
-
- gameItem.Items.ImageView_update_icon:setVisible(false)--(isDownGame == false or isUpdate == true)
- end
- end
-
- function CreateRoomBase:onClickCreate()
- playBtnEffect()
- -- 是否已下载
- local isDownGame = app.subGameManager:isInstaller(tonumber(self.selectGameID))
- -- 是否需要更新
- local isUpdate = app.subGameManager:isNeedUpdate(tonumber(self.selectGameID))
- if isDownGame == false or isUpdate == true then
- requestDownloadSubGame(tonumber(self.selectGameID), handler(self, self.onDownloadFinished))
- return
- end
-
- -- 检查是否有文件缺失
- local result, subGameId, missingFiles = app.subGameManager:checkGameFiles(self.selectGameID)
- if not result then
- logD("CreateRoomBase::onClickCreate() 发现子游戏文件缺失,gameId = "..subGameId)
- for k,v in pairs(missingFiles) do
- logD(v);
- end
- local function onOk()
- app.subGameManager:clearGame(subGameId);
- requestDownloadSubGame(tonumber(subGameId), handler(self, self.onDownloadFinished))
- end
- showConfirmDialog("发现文件缺失,点击确定开始修复", onOk);
- return;
- end
-
- local jushu = self.curGameCount[self.curSelJushuIndex].round or 0
- local result, strRuleInfo = self:getRuleResult()
- if strRuleInfo.error then
- return
- end
- if strRuleInfo then
- local stRuleInfo = json.decode(strRuleInfo)
- if stRuleInfo and type(stRuleInfo) == "table" then
- stRuleInfo.jushu = jushu
- strRuleInfo = json.encode(stRuleInfo)
- end
- end
-
- local jushuTag = "GameCount"..self.selectGameID
- local gameConfig = getSubGameConfig(self.selectGameID)
- if gameConfig.bSingleGame then
- jushuTag = "GameCount"..self.selectGameID..self.selectRuleID
- end
- saveUserInfo(jushuTag,jushu)
-
- -- 保存玩家的开房配置
- self:saveLastRoomInfo(self.selectGameID, self.selectRuleID, strRuleInfo)
-
- logD("CreateRoomBase:onClickCreate()", jushu, strRuleInfo)
-
- local request = CreateRoomRequest:new()
- request.gameId = tonumber(self.selectGameID);
- -- 底注
- request.basechips = self.selectGameID == 70 and 1 or 10;
- -- 总局数
- request.totalGameNum = jushu or 0;
- -- 需要的房卡信息
- request.requireCards = 0;
- -- 进入游戏的方式 //0:游戏开始后不允许进人,1:游戏开始后可以进人
- if self.selectGameID == 70 then
- request.createFlag = 0
- else
- request.enterFlag = 0;
- end
-
- -- json格式 ,不同游戏内容不一样
- request.gameInfo = strRuleInfo or ""
- --发起创建的用户信息
- local tt = json.decode(app.user.userInfo)
- tt.sex = tonumber(tt.sex)
- -- 創建者的用户信息
- request.userInfo = json.encode(tt);
-
- logD("createroom request :"..table.tostring(request))
-
- app.hall:requestCreateRoom(request);
- end
-
- function CreateRoomBase:onEventChangeAddress( event )
- -- self:showGameTypeView()
- local addressCode = event.data.addressCode
- app.serverConfigs:requestGameList(addressCode)
- end
-
- function CreateRoomBase:onUpdateGameList( )
- self.selectGameID = nil
- self.selectRuleID = nil
- local curGameType = self.selectGameType or 1
- self:setDefultGameInfo(curGameType)
- --设置顶部游戏类型按钮状态
- self:setGameTypeBtnStatus(curGameType)
- --清空
- self.ruleView = nil;
- --创建左边游戏名字按钮
- self:createLeftGameName(curGameType)
- --设置左边选中游戏及玩法的按钮状态
- self:setLeftBtnStatus(self.selectGameID, self.selectRuleID)
- --选中玩法按钮后,显示右边的玩法选项
- self:onClickRule(self.selectRuleID)
- end
-
- function CreateRoomBase:saveLastRoomInfo(gameId, ruleId, strGameInfo)
- local fileName = string.format("CreateRoom_LastGameInfo_%s_%s", tostring(gameId), tostring(ruleId))
- saveStringToFile(tostring(strGameInfo), tostring(fileName))
- end
-
- function CreateRoomBase:loadLastRoomInfo(gameId, ruleId)
- local fileName = string.format("CreateRoom_LastGameInfo_%s_%s", tostring(gameId), tostring(ruleId))
- local strGameInfo = loadStringFromFile(fileName)
- return strGameInfo
- end
-
-
- return CreateRoomBase
|