|
- require("luaScript.Views.Room.RoomFunctions")
- local MJRoomToolView=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomToolView")
- local MJRoomMessageView=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomMessageView")
- local MJRoomPlayerView=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomPlayerView")
- local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine")
- local MJHandCardView=MJFramework.MJImport("mj.luaScript.Views.Game.MJHandCardView")
- local MJRoomXiaoJuView=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomXiaoJuView")
- local MJRoomDaJuView=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomDaJuView")
- local MJRoomDismissView=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomDismissView")
- local MJRoomDirection=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomDirection")
- local MJMessage=MJFramework.MJImport("mj.luaScript.Protocol.MJMessage")
- local MJ=MJFramework.MJImport("mj.luaScript.Views.Game.MJ")
- local MJWanFa=MJFramework.ImportWanFa("luaScript.SubGameDefine.MaJiang.MJWanFa")
- local MJAnimationCompnent=MJFramework.MJImport("mj.luaScript.Views.Compnent.MJAnimationCompnent")
- local MJFunction=MJFramework.MJImport("mj.luaScript.MJFunction")
- local MJSound = MJFramework.MJImport("mj.luaScript.MJSound")
-
- local MJRoomView = MJFramework.MJFrameworkClassImprot("mj.luaScript.Views.Room.MJRoomView")
- local zigong7zRoomView = class("zigong7zRoomView", cc.UIView)
-
- local zhongNiaoTime = 1.33
- local HU_EFFECT_TAG = 100
-
- -- 组件相关
- local GPS_Component = 'mj_zigong7z.luaScript.Views.Component.zigong7z_GPS_Component'
- local Single_Component = 'mj_zigong7z.luaScript.Views.Component.zigong7z_Single_Component'
- local RoomInfo_Component = 'mj_zigong7z.luaScript.Views.Component.zigong7z_RoomHeadInfo_Component'
- local LastCardTip_Component = 'mj_zigong7z.luaScript.Views.Component.zigong7z_LastCardTip_Component'
- local Reconnect_Component = 'mj_zigong7z.luaScript.Views.Component.zigong7z_Reconnect_Component'
- local Operate_Component = 'mj_zigong7z.luaScript.Views.Component.zigong7z_Operate_Component'
-
- function zigong7zRoomView:ctor()
- zigong7zRoomView.super.ctor(self)
-
- -- value
- self.ui = nil
- self._gps = nil
- self._singleComponent = nil
- self._roomHeadInfo = nil
- self._lastCardTip = nil
- self._ruleView = nil
- self._reconnnet = nil
- self._operateComponent = nil
-
- self.playerHandCards={} -- 玩家牌局面板
- self.operates = {}
-
- if app.systemSetting.info.viewType == MJDefine.DesktopType.TwoD then -- viewType只保存2d 3d类型 mj_desktop_2d_mjType保存2d麻将类型
- local value = loadUserInfo("mj_desktop_2d_mjType")
- local value = loadUserInfo("mj_zg_desktop_2d_mjType")
- if value=="" or not value then
- value = MJDefine.DesktopType.ThreeD
- saveUserInfo("mj_desktop_2d_mjType", value)
- saveUserInfo("mj_zg_desktop_2d_mjType", value)
- end
- self.desktopType = value
- else
- self.desktopType = app.systemSetting.info.viewType
- end
-
- cc.Director:getInstance():getEventDispatcher():addEventListenerWithFixedPriority(
- cc.EventListenerCustom:create("applicationScreenSizeChanged" , handler(self, self.applicationScreenSizeChanged)), 1
- )
-
- MJDefine.MJConfig = MJDefine.loadMJConfig(self.desktopType)
- end
-
- -- 加载ui
- function zigong7zRoomView:loadUi()
- local ui = loadUI("mj_zigong7z/res/ui_fangjian/mj_zigong_roomView.ui")
- self.ui = ui
- self:addChild(ui)
- end
-
- function zigong7zRoomView:onEnter()
- zigong7zRoomView.super.onEnter(self)
-
- self:loadUi() -- 加载UI
- self:initAllComponent() -- 加载所有组件
- self:loadTextureCache() --加载纹理缓存
- self:defaultState() -- 默认状态
- self:bindAllEvent() --监听事件
- self:onGameReconnection() -- 初始化重连(如果有重连则会回复重连状态)
- self:initDefaultValue()
- self:startGame() -- 游戏开始
- end
-
- -- 初始化所有组件
- function zigong7zRoomView:initAllComponent()
- self:initRoomHeadInfo() -- 初始化桌面信息面板
- self:initGpsComponent() -- 初始化GPS组件
- self:initSingleComponent() -- 初始化电池和信号组件
-
- self:initDirectionComponent() -- 初始化方位组件
- self:initToolComponent() -- 初始化工具组件
- self:initPlayerComponent() -- 初始化玩家组件
- self:initRuleComponent() -- 初始化规则面板
- self:initLastCardTipsComponent() -- 初始化剩余牌提示面板
- self:initOperateComponent() -- 初始化操作界面组件
- self:initReconnectComponent() -- 初始化重连组件
-
- self:initDefaultView() --初始化默认视图
-
-
- self:initPlayGameAgain() -- 初始化大解散再来一局按钮
- self:checkCanDismiss() -- 检查是否可以解散房间
- end
-
- -- 初始化默认值
- function zigong7zRoomView:initDefaultValue()
- self:setCheckDefault() -- 设置是否贴鬼杠和是否自动对齐
- self:changeWaterMark() -- 水印
- MJSound.PlayGameBGM() -- 启动BGM
- self:doSound() -- 设置语言
- end
-
- -- 初始化信息面板
- function zigong7zRoomView:initRoomHeadInfo()
- local roomHeadInfo = require(RoomInfo_Component):new()
- self:addChild(roomHeadInfo)
- self._roomHeadInfo = roomHeadInfo
- end
-
- -- 初始化GPS组件
- function zigong7zRoomView:initGpsComponent()
- if self._isReplay then
- return
- end
-
- local gps = require(GPS_Component):new()
- self:addChild(gps)
- self._gps = gps
- end
-
- -- 初始化信号和电量组件
- function zigong7zRoomView:initSingleComponent()
- local single = require(Single_Component):new()
- self:addChild(single)
- self._singleComponent = single
- end
-
- -- 初始化方位组件
- function zigong7zRoomView:initDirectionComponent()
- self.direcionView = MJRoomDirection:new(self.desktopType)
- self.ui.Items.Layout_Player:addChild(self.direcionView)
- self.direcionView:setVisible(false) -- 隐藏中间内容
- end
-
- -- 初始化剩余牌提示面板
- function zigong7zRoomView:initLastCardTipsComponent()
- self._lastCardTip = require(LastCardTip_Component):new()
- self.ui.Items.Layout_Player:addChild(self._lastCardTip)
- self:setLastCardTipVisible()
- end
-
- -- 初始化操作界面组件
- function zigong7zRoomView:initOperateComponent()
- self._operateComponent = require(Operate_Component):new(self, self.desktopType)
- self:addChild(self._operateComponent)
- end
-
- -- 初始化重连组件
- function zigong7zRoomView:initReconnectComponent()
- local reconnect = import(Reconnect_Component):new(self)
- self._reconnect = reconnect
- end
-
- -- 初始化工具组件
- function zigong7zRoomView:initToolComponent()
- self.toolView = MJRoomToolView:new()
- self:addChild(self.toolView)
- end
-
- -- 初始化玩家组件
- function zigong7zRoomView:initPlayerComponent()
- self.playerView = MJRoomPlayerView:new()
- self.toolView:addLayoutToChatLayer(self.playerView)
- end
-
- -- 默认试图
- function zigong7zRoomView:initDefaultView()
- self:startSysTime()
- self:onChangeChatEnable() -- 聊天
- self:changeGameBg() -- 背景
- self:initGameButton() --初始化游戏事件按钮
- end
-
- -- 系统时间启动
- function zigong7zRoomView:startSysTime()
- if self._roomHeadInfo then
- self._roomHeadInfo:setTime(MJFunction.getTimeString())
- end
- if not self.Time then
- self.Time = cc.Director:getInstance():getScheduler():scheduleScriptFunc(function()
- if self._roomHeadInfo then
- self._roomHeadInfo:setTime(MJFunction.getTimeString())
- end
- end,1.0,false)
- end
- end
-
- -- 初始化规则弹框
- function zigong7zRoomView:initRuleComponent()
- if self._ruleView then
- return
- end
-
- local RuleViewClass = MJFramework.MJImport("mj.luaScript.Views.Room.MJRuleViewVertical")
- local ruleView = RuleViewClass:new()
- self:addChild(ruleView);
-
- local roomInfo = app.room.roomInfo or {}
- local ruleList = MJWanFa.getWanFaInfoTab(roomInfo.strGameInfo, roomInfo.nTotalGameNum)
- ruleView:setRuleList(ruleList or {})
- ruleView:setBtnRuleOffset(60, nil);
-
- self._ruleView = ruleView
- end
-
- function zigong7zRoomView:onExit()
- zigong7zRoomView.super.onExit(self)
- if self.Time then
- cc.Director:getInstance():getScheduler():unscheduleScriptEntry(self.Time)
- end
-
- if self.taiPaiTimer then
- cc.Director:getInstance():getScheduler():unscheduleScriptEntry(self.taiPaiTimer)
- end
-
- if self._singleComponent then
- self._singleComponent:exit()
- end
-
- app.room:dispatchEvent({name=MJDefine.MJEvent.DismissClose});
- stopBGMusic()
- self:cleanCache()
- end
-
- -- 清理缓存
- function zigong7zRoomView:cleanCache()
- local preload = package.loaded
- for k, v in pairs(package.loaded or {}) do
- local res1 = string.find( k, "mj.luaScript") or 0
- local res2 = string.find( k, "mj_zigong7z.luaScript") or 0
- if res1 > 0 or res2 > 0 then
- package.loaded[k] = nil
- end
- end
- end
-
- -- 设置语言 1 普通话 2 方言
- function zigong7zRoomView:doSound()
- local cacheLan = "mj_language"..(MJDefine.GameID or app.gameId)
- local defaultValue = tonumber(loadUserInfo(cacheLan)) or 2
- saveUserInfo(cacheLan,defaultValue)
- MJSound.setSoundType(defaultValue)
- end
-
- function zigong7zRoomView:setCheckDefault()
- MJDefine.isAutomatic = true
- end
-
- -- 一键截屏
- function zigong7zRoomView:onClickButtonShot( sender )
- playBtnEffect()
- showScreenShot()
- end
-
- --隐藏俱乐部
- function zigong7zRoomView:hideClub()
- -- self.ui.Items.Button_Club:setVisible(false)
- if self.clubView and not tolua.isnull(self.clubView) then
- self.clubView:removeFromParent()
- self.clubView=nil
- end
- end
-
- --更换桌布(同维度)
- function zigong7zRoomView:changeGameBg(isUpdateViewType)
- if isUpdateViewType then
- if app.systemSetting.info.viewType == MJDefine.DesktopType.TwoD then --更新2D麻将类型 金色还是绿色
- local value = loadUserInfo("mj_zg_desktop_2d_mjType") --or MJDefine.DesktopType.TwoD
- if value=="" or not value then
- value = MJDefine.DesktopType.TwoD
- saveUserInfo("mj_zg_desktop_2d_mjType", value)
- end
- logD("changeGameBg value:"..value)
- self.desktopType = value
- else
- self.desktopType = app.systemSetting.info.viewType
- end
- self:loadTextureCache()
- logD("changeGameBg"..self.desktopType)
- end
-
- local defaultValue = tonumber(loadUserInfo("zigong_mj_desktop_group")) or 1
- local bgData = MJDefine.CHANGE_GAME_BG[defaultValue]
- if self.desktopType==MJDefine.DesktopType.TwoD or self.desktopType==MJDefine.DesktopType.TwoDGold then
- self.ui.Items.ImageView_bg:loadTexture(bgData['2d'])
- else
- self.ui.Items.ImageView_bg:loadTexture(bgData['3d'])
- end
- end
-
- function zigong7zRoomView:defaultState()
- --队列初始化
- self.callbackQueue = {}
- self.callbackRunning = false
- self.playerView:setOffLineVisible(false)
- self.playerView:setPlayerVisible(false)
-
- if self.waitOperates and #self.waitOperates>0 then
- for k,v in pairs(self.waitOperates) do
- v:removeFromParent()
- end
- end
- self.waitOperates = {}
-
- self:resetGame()
- end
-
- function zigong7zRoomView:loadTextureCache()
- cc.SpriteFrameCache:getInstance():addSpriteFramesWithFile("res/ui/zy_fangjian/RoomMenu/RoomMenu2.plist")
-
- local mjRes = MJDefine.MJRes[self.desktopType]
- if mjRes then
- for k,v in pairs(mjRes) do
- cc.SpriteFrameCache:getInstance():addSpriteFramesWithFile(v)
- end
- end
-
- loadSpriteFrameFile("mj_zigong7z/res/zy_fangjian/zigong_operateEffect.plist")
- loadSpriteFrameFile("mj_zigong7z/res/zy_fangjian/effect_guangxiao.plist")
- loadSpriteFrameFile("mj_zigong7z/res/zy_fangjian/effect_guafeng.plist")
- loadSpriteFrameFile("mj_zigong7z/res/zy_fangjian/effect_xiayu.plist")
- end
-
- -- 初始化游戏按钮
- function zigong7zRoomView:initGameButton()
- --点击空白
- self.ui.Items.Layout_Touch:registerClick(nil,function()
- -- 隐藏个人信息
- self.playerView:removePlayerInfoView()
- self.toolView:setMenuVisible(false)
- self._operateComponent:hideOperateItem()
-
- self.toolView:hideRule()
- self:setTingCardViewVisible(false);
- end)
-
- --隐藏听牌模板
- self.ui.Items.Item_Ting:setVisible(false)
- self.ui.Items.Button_Ting_Info:setVisible(false);
- self.ui.Items.Button_Ting_Info:registerClick(handler(self, self.onBtnTingInfoClicked))
-
- -- 聊天按钮
- -- self.toolView:setButtonFacePos(cc.p(1208*g_radio_x,(322+25)*g_radio_y))
- -- self.toolView:setButtonVoicePos(cc.p(1208*g_radio_x,(237+30)*g_radio_y))
- end
-
- --通知庄家可以爆牌
- function zigong7zRoomView:onBankerBaoPai(data)
- local function runBankerBaoPai(onEnd)
- local myUserId = app.room:getMyUserId()
- local viewId = app.room:getViewIdByUserId(myUserId)
-
- if data.response.nUserId == myUserId then
- self:showBaoJiao()
- self.playerHandCards[viewId]:setOutCardEnable(false)
- end
-
- if onEnd then
- onEnd()
- end
- end
- self:addCallBack(runBankerBaoPai)
- end
-
- --广播玩家爆牌
- function zigong7zRoomView:onBaoPai(data)
- if data.response.isBaoPai == 1 then
- local effect=MJAnimationCompnent.CreateBaoEffect()
- local viewId = app.room:getViewIdByUserId(data.response.nUserId)
- local myUserId = app.room:getMyUserId()
- local userInfo=app.room:getUserInfoByViewId(viewId)
- --爆牌音效
- MJSound.PlayBaoSound(userInfo.sex)
-
- if effect then
- self.ui.Items.Layout_Player:addChild(effect)
- effect:setLocalZOrder(1000)
- effect:setPosition(self.playerHandCards[viewId]:getAnimationPostion())
- end
- if myUserId == data.response.nUserId then
- self.playerHandCards[viewId]:lockHandCard(true)
- -- self.playerHandCards[viewId]:setOutCardEnable(false)
- else
- --self.playerHandCards[viewId]:setOutCardEnable(true)
- end
- self.playerView:playBaoAnim(viewId)
- elseif data.response.isBaoPai == 2 then--博自摸
- local effect=MJAnimationCompnent.CreateBoZiMoEffect()
- local viewId = app.room:getViewIdByUserId(data.response.nUserId)
- local myUserId = app.room:getMyUserId()
- local userInfo=app.room:getUserInfoByViewId(viewId)
- --爆牌音效
- MJSound.PlayBaoSound(userInfo.sex)
- if effect then
- self.ui.Items.Layout_Player:addChild(effect)
- effect:setLocalZOrder(1000)
- effect:setPosition(self.playerHandCards[viewId]:getAnimationPostion())
- end
- if myUserId == data.response.nUserId then
- self.playerHandCards[viewId]:lockHandCard(true)
- else
- end
- self.playerView:showBoZiMo(viewId,true)
- end
- if app.room:getMyUserId() == data.response.nUserId then
- self:hideBaoJiao()
- if (data.response.isBaoPai == 1 or data.response.isBaoPai == 2) then
- local gameInfo =json.decode(app.room.roomInfo.strGameInfo);
- if gameInfo.tingpai > 0 then
- self.ui.Items.Button_Ting_Info:setVisible(true);
- app.room.roomInfo.memberList[data.response.nUserId].nTingStatus = MJDefine.MJTingStatus.Ting;
- end
- end
- end
- end
-
- function zigong7zRoomView:onGameSendCardResponse()
- --发牌的时候清除桌面上的飘
- self.ui.Items.Layout_Effect_luobo:removeAllChildren()
- local function runGameSendCardResponse(onEnd)
- log("2000000000-zigong7zRoomView - runGameSendCardResponse()" )
- --走过重连标志值为false
- self.isRunGameReconnection = false
-
- self:hidePiao()
-
- local myUserId = app.room:getMyUserId()
- for k,v in pairs(app.room.roomInfo.memberList) do
- local viewId = app.room:getViewIdByUserId(v.nUserId)
- if self.playerHandCards[viewId] then
- self.playerHandCards[viewId]:createHandCards(v.handCards)
- self.playerHandCards[viewId]:resetHandCards()
- end
-
- if v.isBaoPai == 1 and myUserId == v.nUserId then
- --self.playerHandCards[viewId]:showBaoPai()
- self:showBaoJiao()
- end
- end
-
- -- local effect=MJAnimationCompnent.CreateGameStart()
- -- self.ui.Items.Layout_Player:addChild(effect,5)
- -- MJSound.PlayStartGame()
-
- MJAnimationCompnent.CreateStartSendCards(self.playerHandCards,onEnd)
-
- -- if onEnd then
- -- onEnd()
- -- end
- self.toolView:showTuoGuan(app.room.roomInfo.hosting==1)
- end
- log("2000000000-zigong7zRoomView - addCallBack(runGameSendCardResponse)" )
- self:addCallBack(runGameSendCardResponse);
- end
-
- function zigong7zRoomView:onUserReadyResponse(response)
- -- self:setPlayerVisible(false)
- local uids = {}
- for k,v in pairs(app.room.roomInfo.memberList) do
-
- local nSeatShowId = app.room:getViewIdByUserId(v.nUserId)
- self.playerView:setReadyStatus(nSeatShowId,v.nPlayerFlag == 1)
- self.playerView:updatePlayerInfo(nSeatShowId)
-
- uids[v.nUserId] = true
- end
-
- if self.messageView then
- self.messageView:setPlayerUids(uids)
- end
-
- local nUserId = app.room:getMyUserId()--app.user.loginInfo.uid
- if response and response.nUserId==nUserId then
- self.toolView:updateButton(true)
- self:resetGame()
- else
- self.toolView:updateButton()
- end
-
- if response and response.nUserId==nUserId then
- self:resetGame()
- end
-
- local myUserId = app.room:getMyUserId()
- if response and response.nUserId==myUserId then
- self.playerView:clearBao()
- self.playerView:clearAllPiao()
- self.playerView:clearAllBoZiMo()
- app.room.roomInfo.luoboCards = nil
- -- local roomInfo = app.room.roomInfo
- -- for k,v in pairs(roomInfo.memberList) do
- -- self.ui.Items.Layout_Player:removeChildByTag(HU_EFFECT_TAG)
- -- end
- end
-
- self.ui.Items.Button_Ting_Info:setVisible(false);
- end
-
-
- -- 广播桌子上所有玩家庄家起手操作 这里其实是发牌
- function zigong7zRoomView:onBankerOutCard(data)
-
- --[[ -- 庄家uid
- , defVar("nUserId", VT_Int, 0)
- -- 庄家操作类型
- , defVar("mainOpCode", VT_Short, 0)
- --庄家是否需要出牌0不需要 1:需要
- , defVar("IsShouldOutCard", VT_UChar, 0)--]]
- local function runOnBankerOutCard(onEnd)
- logE("zigong7zRoomView onBankerOutCard :"..table.tostring(data.response))
- -- if not data.response.nUserId then
- -- showTooltip("庄家起手操作nUserId is not exist")
- -- end
-
-
- local viewId = app.room:getViewIdByUserId(data.response.nUserId)
- local card= data.response.card
- local operates=data.response.operates
- local nSeatId=data.response.nSeatId
-
- -- app.room.roomInfo.outCardUserId = data.response.nUserId
-
- if self.playerHandCards[viewId] then
- self.playerHandCards[viewId]:onGetCard(operates,card)
- end
-
- --先清除所有操作按钮
- self._operateComponent:hideOperateItem()
- self._operateComponent:showOperate(operates,card,true)
-
- if viewId == MJDefine.MyViewId then
- self.ui.Items.Button_Ting_Info:setVisible(false)
- if operates and table.nums(operates)>0 then
- self.operates = operates
- else
- self.operates = {}
- end
-
- if self.playerHandCards[MJDefine.MyViewId] then
- self.playerHandCards[MJDefine.MyViewId]:setTing(false)
- local player = app.room.roomInfo.memberList[data.response.nUserId]
- if player and (player.isBaoPai==1 or player.isBaoPai == 2) then
- self.playerHandCards[MJDefine.MyViewId]:lockHandCard(true)
- end
- end
-
- app.room:dispatchEvent({name = MJDefine.MJEvent.SelectCard})
- app.room:dispatchEvent({name = MJDefine.MJEvent.PushTing})
- -- app.room:dispatchEvent({name = MJDefine.MJEvent.ShowTing})
-
- local curHandCards = self.playerHandCards[viewId]:getHandCardsNum()
- if curHandCards%3 ~= 2 then--抓了牌之后,手牌不正确,主动重连一下
- app.room.roomInfo.requestGetTableInfo = true
- self.ui:sendMsg(app.room, MJDefine.MJEvent.GetTableInfo);
- end
- end
- self:showGuideTip(viewId == MJDefine.MyViewId)
-
- -- local myUserId = app.room:getMyUserId()
- -- if data.response.nUserId == myUserId then
- -- if self.playerHandCards[MJDefine.MyViewId] then
- -- self.playerHandCards[MJDefine.MyViewId]:pushTing()
- -- end
- -- end
-
- self:updateGameNums()
-
- self.direcionView:updateDirection(nSeatId)
-
- if onEnd then
- onEnd()
- end
- end
-
- log("2000000000-zigong7zRoomView - addCallBack(runOnBankerOutCard)")
- self:addCallBack(runOnBankerOutCard);
-
- end
-
- function zigong7zRoomView:onTurnOutCard(data)
- local function runOnTurnOutCard(onEnd)
- logE("zigong7zRoomView:runOnOutCard(), response = ", table.tostring(data.response))
- log("2000000000-MJRoomView - runOnOutCard")
-
- if app.room.roomInfo.lastOutViewId~=MJDefine.MyViewId then
- self.playerHandCards[MJDefine.MyViewId]:setOutCardEnable(true)
- end
- -- local viewId = app.room:getViewIdByUserId(data.response.nUserId)
- -- local card= data.response.card
- -- if self.playerHandCards[viewId] then
- -- self.playerHandCards[viewId]:createOutCards(card)
- -- end
-
- if onEnd then
- onEnd()
- end
- end
-
- log("2000000000-MJRoomView - addCallBack(runOnTurnOutCard)")
- self:addCallBack(runOnTurnOutCard)
- end
-
- --出牌成功
- function zigong7zRoomView:onOutCardSuccess(data)
- logE("zigong7zRoomView:onOutCardSuccess(), response = ", table.tostring(data.response))
- local function runOnOutCardSuccess(onEnd)
- log("2000000000-zigong7zRoomView - runOnOutCardSuccess---------")
-
- -- app.room.roomInfo.outCardUserId = data.response.nUserId
-
- local viewId = app.room:getViewIdByUserId(data.response.nUserId)
- local card= data.response.card
- local operates=data.response.operates
- local typr = operates.opType
-
- if operates and table.nums(operates)>0 then
- self.operates = operates
- else
- self.operates = {}
- end
-
- local function callback()
- -- app.room.roomInfo.lastOutViewId = nil
- self._operateComponent:showOperate(operates,card)
-
- if onEnd then
- onEnd()
- end
- end
- -- self.lastOutCard = card
-
-
- if self.playerHandCards[viewId] then
- --(viewId~=MJDefine.MyViewId or player.isBaoPai == 1) and app.room.roomInfo.lastOutViewId~=MJDefine.MyViewId
-
- if viewId==MJDefine.MyViewId then
- local player = app.room.roomInfo.memberList[data.response.nUserId]
- self.playerHandCards[viewId]:setTing(false)
- local curHandCards = self.playerHandCards[viewId]:getHandCardsNum() or 0
- if ((player.isBaoPai==1 or player.isBaoPai==2) and app.room.roomInfo.lastOutViewId~=MJDefine.MyViewId) or app.room.roomInfo.hosting == 1 then --点击爆牌的时候 前端已经打出牌 要判断上次出牌的人是不是自己 避免重复出牌
- self.playerHandCards[viewId]:onOutCard(card,callback)
- --音效
- local userInfo=app.room:getUserInfoByViewId(viewId)
- if userInfo then
- MJSound.PlayMJSound(userInfo.sex,card)
- end
- elseif self.needDeleteOutCard and true == self.needDeleteOutCard then
- self.needDeleteOutCard = nil
- uploadLogs("mjduopai")
- self.playerHandCards[viewId]:onOutCard(card,callback)
- elseif self.isRunGameReconnection and true ==self.isRunGameReconnection and curHandCards%3 == 2 then--重连后,手牌是可以出牌的,则删除一张牌
- self.playerHandCards[viewId]:onOutCard(card,callback)
- else
- callback()
- end
- self.isRunGameReconnection = false
-
- local gameInfo = json.decode(app.room.roomInfo.strGameInfo);
- if gameInfo.tingpai > 0 then
- self._isOutCardTingCheck = true;
- self.ui:sendMsg(app.room,MJDefine.MJEvent.Ting)
- end
-
- self:setGuideView(false)
- else
- self.playerHandCards[viewId]:onOutCard(card,callback)
- end
- app.room:dispatchEvent({name = MJDefine.MJEvent.OutCardFalg, value=card ,viewId=viewId})
- else
- callback()
- end
-
- app.room.roomInfo.lastOutViewId = viewId
-
- end
- log("2000000000-zigong7zRoomView - addCallBack(runOnOutCardSuccess)")
- self:addCallBack(runOnOutCardSuccess)
- end
-
- --已经发送了过操作,此时就算再勾选贴鬼碰,也不会显示操作
- function zigong7zRoomView:onSendGuo()
- --发牌重置,主要用于贴鬼碰/杠
- MJDefine.isSendGuo = false
- self.operates = {}
- end
-
- -- 操作成功
- function zigong7zRoomView:onOperationCodeSuccess(data)
- local function runOnOperationSuccess(onEnd)
- local response = data.response
- local nUserId = response.nUserId
- local opType = response.opType
- local opCard = response.opCard
-
- local bIsOutCard = response.isNeedOutCard > 0
- local fromSeatId = response.fromSeatId
- local redNum = response.redNum
- local viewId = app.room:getViewIdByUserId(nUserId)
- local fromViewId = app.room:getViewIdBySeatId(fromSeatId)
- local opSeatId = app.room:getSeatIdByViewId(viewId)
- local fromUserId = app.room:getUserIdBySeatId(fromSeatId)
- if self.playerHandCards[viewId] then
- --组合一下牌
- local groups={
- self:getChangeGruopDatas({opType=opType, opCard=opCard, redNum = redNum, targetSeatId=opSeatId, opUserId=fromUserId})
- }
- --删除手中对应的牌
- local deleteCards
- for k,v in pairs(groups) do
- if v.showType==MJDefine.MJGroupType.Peng then
- self.playerHandCards[viewId]:removeHandCardByNum(opCard,2,v.redNum)
- elseif v.showType==MJDefine.MJGroupType.Chi then
- --TODO:吃的牌删除两张
-
- elseif v.showType==MJDefine.MJGroupType.AnGang
- or v.showType==MJDefine.MJGroupType.MAnGang then
- self.playerHandCards[viewId]:removeHandCardByNum(opCard,4,v.redNum)
- else
- if opType==MJDefine.MJOperateType.OPREATE_BAGANG then
- self.playerHandCards[viewId]:removeHandCardByNum(opCard,1,v.redNum)
- else
- self.playerHandCards[viewId]:removeHandCardByNum(opCard,3,v.redNum)
- end
- end
- end
- --删除出去的牌 遍历哪些操作需要删除牌
- for k,v in pairs(MJDefine.MJOperateNeedRemoveCard) do
- if v==opType then
- self.playerHandCards[fromViewId]:removeOutCard(opCard)
- break
- end
- end
-
- if opType==MJDefine.MJOperateType.OPREATE_BAGANG then
- self.playerHandCards[viewId]:buGang(opCard,redNum)
- else
- self.playerHandCards[viewId]:createGroupCards(groups)--创建显示的牌
- end
-
- self.playerHandCards[viewId]:resetHandCards()
- self._operateComponent:hideOperate()
-
- self.playerHandCards[viewId]:setOutCardEnable(bIsOutCard)
- self:showGuideTip(viewId == MJDefine.MyViewId)
-
- self.direcionView:updateDirection(app.room:getSeatIdByViewId(viewId))
- end
-
- local function guafengxiayuEffect()
- local effect
- if (opType==MJDefine.MJOperateType.OPREATE_ZHIGANG) or (opType==MJDefine.MJOperateType.OPREATE_BAGANG) or
- (opType==MJDefine.MJOperateType.OPREATE_MINGGANG) then
- effect=MJAnimationCompnent.createGuaFengEffect()
- MJSound.PlayWindSound()
- elseif (opType==MJDefine.MJOperateType.OPREATE_ANGANG) then
- effect=MJAnimationCompnent.createXiaYuEffect()
- MJSound.PlayRainSound()
- end
- if effect then
- self.ui.Items.Layout_Player:addChild(effect)
- effect:setLocalZOrder(1000)
- effect:setPosition(self.playerHandCards[viewId]:getAnimationPostion())
- end
- end
- if (opType==MJDefine.MJOperateType.OPREATE_ZHIGANG) or (opType==MJDefine.MJOperateType.OPREATE_BAGANG) or
- (opType==MJDefine.MJOperateType.OPREATE_MINGGANG) or (opType==MJDefine.MJOperateType.OPREATE_ANGANG) then
- guafengxiayuEffect()
- else
- --播放动画
- local effect=MJAnimationCompnent.CreateOperareEffect(opType)--,onEnd)
- if effect then
- self.ui.Items.Layout_Player:addChild(effect)
- effect:setLocalZOrder(1000)
- effect:setPosition(self.playerHandCards[viewId]:getAnimationPostion())
- -- else
- -- if onEnd then
- -- onEnd()
- -- end
- end
- end
- --音效
- local userInfo=app.room:getUserInfo(nUserId)
- if userInfo then
- MJSound.PlayOperateSound(userInfo.sex,opType)
- end
-
-
- if viewId == MJDefine.MyViewId then
- self.playerHandCards[MJDefine.MyViewId]:setTing(false)
- self:setTingCardViewVisible(false)
- self.ui.Items.Button_Ting_Info:setVisible(false)
- self.operates={}
- end
-
- --删除等待操作的显示
- if self.waitOperates and #self.waitOperates>0 then
- for k,v in pairs(self.waitOperates) do
- v:removeFromParent()
- end
- self.waitOperates={}
- end
- --[[if viewId == MJDefine.MyViewId and opType==MJDefine.MJOperateType.OPREATE_PENG then
- local cards = {opCard}
- self.playerHandCards[viewId]:cardEnabled(cards, true)
- end--]]
-
- -- 取消操作按钮
- self._operateComponent:hideOperate()
-
- -- 操作完后,隐藏手势
- self:showGuideTip(false)
-
- if onEnd then
- onEnd()
- end
- end
- self:addCallBack(runOnOperationSuccess)
- end
-
-
- function zigong7zRoomView:test()
- self.playerHandCards={}
-
- self.playerHandCards[MJDefine.MyViewId] = MJHandCardView:new(MJDefine.MyViewId)
-
- self:addChild(self.playerHandCards[MJDefine.MyViewId])
-
- self.playerView = MJRoomPlayerView:new()
- self:addChild(self.playerView)
-
- end
-
- --飘状态停止
- function zigong7zRoomView:stopDirection()
- self.direcionView:stopAllActions()
- self.direcionView.ui.Items.ImageView_Dir_Down:setVisible(false)
- self.direcionView.ui.Items.ImageView_Dir_Up:setVisible(false)
- self.direcionView.ui.Items.ImageView_Dir_Left:setVisible(false)
- self.direcionView.ui.Items.ImageView_Dir_Right:setVisible(false)
- self.direcionView.ui.Items.Text_Time:setString(string.format("%02d",0))
- self.direcionView.ui.Items.Text_Leave_Card_Num:setText("72")
- end
-
- function zigong7zRoomView:onGameReconnection()
- if self._isReplay then
- return
- end
-
- --更新房间基础数据
- local roomInfo = app.room.roomInfo;
- self:updateRoomBaseData()
- self.toolView:updateButton()
-
- --显示离线状态
- for k,v in pairs(roomInfo.memberList) do
- local viewId = app.room:getViewIdByUserId(k)
- local nOffLineState = v.nOnlineStatus
- self.playerView:setPlayerOffLineVisible(nOffLineState ~= MJDefine.PlayerOnlineStatus.Online,viewId)
- end
-
- --断线重连
- if roomInfo.nGameStartCount > 0 then
- if self._fastRequestView then
- self._fastRequestView:removeSelf()
- self._fastRequestView = nil
- end
-
- local function runOnGameReconnection(onEnd)
- self._reconnect:checkCode(onEnd)
- end
- log("2000000000-MJRoomView - self:addCallBack(runOnGameReconnection)" )
- self:addCallBack(runOnGameReconnection)
- else
- -- 游戏未开始
- if roomInfo.nStatus and roomInfo.nStatus<MJDefine.GameStatus.GAME_STATUS_WAIT_BANKER_START then
- --self.toolView:enableHosting(false)
- local quickStartInfo = roomInfo.quickStartInfo
- if quickStartInfo then
- if quickStartInfo.tablefaststate == 1 then
- local tmpInfo = {}
- for uid,status in pairs(quickStartInfo.list) do
- table.insert(tmpInfo, {nUserId=tonumber(uid), nStatus = status})
- end
- local response = {}
- response.pList = tmpInfo
- response.timeOut = roomInfo.quickStartInfo.time
- self:onBroadcastFaststart({response=response})
- else
- --self.toolView:showFastStart(true)
- end
- else
- if self._fastRequestView then
- self._fastRequestView:removeSelf()
- self._fastRequestView = nil
- end
- --self.toolView:showFastStart(true)
- end
- end
- end
- end
-
- function zigong7zRoomView:getChangeGruopDatas(g)
- local opType=g.opType
- local showType=MJDefine.MJOperateToGroupType[g.opType]
- local opCard=g.opCard
- local redNum = g.redNum
-
- local fromViewId = nil
- local targetSeatId = g.targetSeatId--操作位置座位号
- local fromUserId = g.opUserId or g.fromUserId --触发操作玩家
- local fromViewId1 = app.room:getViewIdByUserId(fromUserId)
- if fromUserId<=0 or not targetSeatId then
- else
- fromViewId = app.room:transPos( targetSeatId, app.room:getSeatIdByUserId(fromUserId))
- --判断是否是对面玩家,对面玩家的话要做一次翻转
- local opViewId = app.room:getViewIdBySeatId(targetSeatId)
- if opViewId == 2 then --对面
- if fromViewId==1 then fromViewId = 3
- elseif fromViewId==3 then fromViewId = 1 end
- end
- --三人玩只有上下家
- if app.room:getMaxPlayerCount()==3 and fromViewId==2 then fromViewId = 3 end
- if app.room:getMaxPlayerCount()==2 and fromViewId~=0 then
- if showType == MJDefine.MJGroupType.Peng then
- fromViewId = 2
- else
- fromViewId = 4
- end
- end
- end
- --组合一下牌
- local group={
- opType=opType,
- showType=showType,
- values={},
- opCard = opCard,
- redNum = redNum,
- fromViewId = fromViewId,
- fromViewId1 = fromViewId1,--真正的来源viewID
- }
- if MJDefine.MJGroupType.Chi==showType then
-
- elseif MJDefine.MJGroupType.Peng==showType then
- group.values={opCard,opCard,opCard}
- else
- group.values={opCard,opCard,opCard,opCard}
- end
-
- return group
- end
-
- -- 小局结算
- function zigong7zRoomView:onGameXiaoJuResponse(data)
- local function runGameXiaoJuResponse(onEnd)
- if not tolua.isnull(self.firstTingTipsView) then
- self.firstTingTipsView:killSelf()
- self.firstTingTipsView = nil
- end
- -- 取消操作按钮
- self._operateComponent:hideOperate()
-
- local roomInfo = app.room.roomInfo
- self.direcionView:stopAllActions()
- self.operates = {}
- self:setTingCardViewVisible(false)
- app.room:resetTings()
- app.room:cleanTingStatus()
- --如果是解散直接return
- --[[if roomInfo.stopFlag==MJDefine.StopFlag.STOP_FLAG_LONG_NOT_END or roomInfo.stopFlag==MJDefine.StopFlag.STOP_FLAG_DISBAND_GAME then
- if onEnd then
- onEnd()
- end
- return
- end --]]
-
- --所有胡牌的人 考虑抢杠胡的问题
- local viewIds={}
- local failViewId=0
- for k,v in pairs(roomInfo.memberList) do
- local viewId = app.room:getViewIdByUserId(v.nUserId)
- if v.result>0 then
- table.insert(viewIds,viewId)
- --处理掉huCard, 不加入手牌
- --播放音效
- if viewId==MJDefine.MyViewId then
- --MJSound.PlayWinGame()
- end
- if v.result==MJDefine.MJGameHuType.HU_DIANPAO then
- failViewId = app.room:getViewIdBySeatId(v.dpSeatId)
- end
-
- end
- end
- self:showOpenCard()
- for k,v in pairs(roomInfo.memberList) do
- local viewId = app.room:getViewIdByUserId(v.nUserId)
- if viewId and self.playerHandCards[viewId] then
- if viewId==MJDefine.MyViewId then
- else
- --倒牌
- if v.huCard and v.huCard ~= 0 then
- self.playerHandCards[viewId]:createOpenHandCards(v.huCard)
- self.playerHandCards[viewId]:moveLastOpenCard()
- end
- end
- end
- end
-
-
- --被抢杠的人回退补杠
- -- if resultInfo.hutype==MJDefine.MJHuType.QiangGangHu and roomInfo.stopFlag==MJDefine.StopFlag.STOP_FLAG_NORMAL then
- -- self.playerHandCards[failViewId]:retoreBuGang(resultInfo.hucard)
- -- end
-
- local function callback()
- self:showXiaoJuView()
- if onEnd then
- onEnd()
- end
- self.ui.Items.Layout_Effect_luobo:removeAllChildren()
- end
-
- local function luoboNumCallBack()
- local strGameInfo = json.decode(app.room.roomInfo.strGameInfo)
- if strGameInfo.luobonum and strGameInfo.luobonum > 0 then
- local index = 1
- for k,v in pairs(roomInfo.memberList) do
- local viewId = app.room:getViewIdByUserId(v.nUserId)
- local effect
- if index == app.room.roomInfo.nMaxPlayCount then
- effect = MJAnimationCompnent.CreateLoBoLabel(v.luoboNum,callback)
- else
- effect = MJAnimationCompnent.CreateLoBoLabel(v.luoboNum)
- end
- local pos = self.playerHandCards[viewId]:getAnimationPostion()
- local offsetX, offsetY = self:getLuoBoOffset(viewId)
- effect:setPosition(pos.x + offsetX, pos.y + offsetY)
- self.ui.Items.Layout_Effect_luobo_Lable:addChild(effect)
- index = index + 1
- end
- else
- callback()
- end
- end
-
- local luoboCards = roomInfo.luoboCards
- local function luoboCallBack()
- if luoboCards and #luoboCards>0 then
- local luoNum = #luoboCards
- --加一个黑底
- local layer = cc.LayerColor:create(cc.c4b(0,0,0,120))
- layer:setAnchorPoint(cc.p(0.5,0.5))
- layer:ignoreAnchorPointForPosition(false)
- local tPos = self.ui.Items.ImageView_Logo:getPosition()
- local tLuoBoPos = {
- [1] = {[1] = cc.p(tPos.x,360-40)},
- [2] = {[1] = cc.p(tPos.x-50,360),[2] = cc.p(tPos.x+50,360)},
- }
- layer:setPosition(cc.p(getWinSize().width/2,getWinSize().height/2))
- self.ui.Items.Layout_Effect_luobo:addChild(layer)
- for i,v in pairs(luoboCards) do
- local effect
- if i == #luoboCards then
- effect = MJAnimationCompnent.CreateLoBoEffect(v,self.desktopType,luoboNumCallBack)
- else
- effect = MJAnimationCompnent.CreateLoBoEffect(v,self.desktopType)
- end
- if MJDefine.LuoBoPos[luoNum] and MJDefine.LuoBoPos[luoNum][i] then
- effect:setPosition(tLuoBoPos[luoNum][i])
- self.ui.Items.Layout_Effect_luobo:addChild(effect)
- end
- end
- else
- self:runDelay(1.0,function()
- callback()
- end)
- end
- end
-
- if #viewIds>0 then
- if roomInfo.stopFlag==MJDefine.StopFlag.STOP_FLAG_LONG_NOT_END or roomInfo.stopFlag==MJDefine.StopFlag.STOP_FLAG_DISBAND_GAME then
- self:runDelay(1.0,function()
- callback()
- end)
- else
- luoboCallBack()
- end
- local userInfo=app.room:getUserInfo(app.room:getMyUserId())
- if userInfo then --拔萝卜音效
- end
- else
- if roomInfo.stopFlag==MJDefine.StopFlag.STOP_FLAG_HUANG_ZHUANG then
- local effect=MJAnimationCompnent.CreateLiuJuEffect(callback)
- self.ui.Items.Layout_Player:addChild(effect)
- effect:setLocalZOrder(1000)
- MJSound.PlayHuangZhuang()
- else
- callback()
- end
- end
- end
- self:addCallBack(runGameXiaoJuResponse);
- end
-
- -- 显示小局结算
- function zigong7zRoomView:showXiaoJuView()
- self.direcionView:stopAllActions()
-
- self:setTingCardViewVisible(false)
- if self.xiaojuView then
- self.xiaojuView:removeFromParent()
- end
- local roomInfo = app.room.roomInfo
- self.xiaojuView = MJRoomXiaoJuView:new(self.desktopType)
- self:addChild(self.xiaojuView)
-
- end
-
- function zigong7zRoomView:setTingCardViewVisible(bVisible,tingCards)
-
- log("setTingCardViewVisible :"..table.tostring(tingCards))
- self.ui.Items.Layout_Ting_Tip_Card_Panel:setVisible(bVisible)
- -- self.ui.Items.ListView_Ting:removeAllItems()
- -- self.ui.Items.ListView_Ting:getHBar():setVisible(false)
- self.ui.Items.ListView_Ting:removeAllChildren()
- -- self.ui.Items.Item_Ting:setVisible(false)
- -- self.toolView:setVisible(false)
- if not tingCards then return end
-
- local count = #tingCards
- local row = math.ceil(count/5) --几行
-
- self.ui.Items.ListView_Ting:setSize(cc.size(670,80*row))
-
- self.ui.Items.Layout_Ting_Tip_Card_Panel:setSize(cc.size(row>1 and 786 or count*134+116,80*row+40))
-
- self.ui.Items.ImageView_Ting:setPositionY(self.ui.Items.Layout_Ting_Tip_Card_Panel:getContentSize().height-60)
- for k,v in pairs(tingCards) do
- local item = self.ui.Items.Item_Ting:getCopied()
- item:setVisible(true)
- local items = getUIItems(item)
- items.Text_Num:setString(v.count.."张")
- items.Text_Fan:setString(v.fanshu.."番")
- local mj=MJ:new(v.card,MJDefine.MJType.Stand,MJDefine.MyViewId,self.desktopType)
- mj:setPosition(cc.p(20,30))
- mj:setScale(0.5)
- items.Node:addChild(mj)
- self.ui.Items.ListView_Ting:addChild(item)
- end
-
- self.ui.Items.ListView_Ting:requestDoLayout()
- self.ui.Items.ListView_Ting:doLayout()
-
- end
-
- --显示查听的牌
- function zigong7zRoomView:setChaTingCardViewVisible(bVisible,tingCards)
- end
-
- function zigong7zRoomView:onTingCardStatus()
- local myUserId=app.user.loginInfo.uid
- local memberList=app.room.roomInfo.memberList
- if memberList[myUserId] then
- local nTingStatus=memberList[myUserId].nTingStatus
- if nTingStatus == MJDefine.MJTingStatus.Ting then
- print("---------onTingCardStatus-----------1 "..myUserId)
- -- self:setChaTingCardViewVisible(true)
- -- self:setTingCardViewVisible(true, )
- --self._isTingStateChanged = true--防止出现听牌提示闪一下的bug
- --self.ui:sendMsg(app.room,MJDefine.MJEvent.Ting)
- self.ui.Items.Button_Ting_Info:setVisible(true);
- else
- print("---------onTingCardStatus-----------0 "..myUserId)
- -- self:setChaTingCardViewVisible(false)
- self:setTingCardViewVisible(false)
- self.ui.Items.Button_Ting_Info:setVisible(false);
- end
- end
- end
-
- function zigong7zRoomView:onTingCardResult(data)
- print("---------听牌结果-------------")
- if data.response.tingType==MJDefine.MJTingType.QuanTing then
- -- self:setChaTingCardViewVisible(true,{})
- else
- if self._isOutCardTingCheck then
- self._isOutCardTingCheck = false
- local count = table.nums(data.response.tingCards);
- local isTing = count > 0;
- self.ui.Items.Button_Ting_Info:setVisible(isTing);
- self:setTingCardViewVisible(false, data.response.tingCards)
- else
- self:setTingCardViewVisible(true, data.response.tingCards)
- end
- end
- end
-
- function zigong7zRoomView:showTing(evet)
- local roomInfo=app.room.roomInfo
- -- if evet.card and roomInfo.tings and roomInfo.tings[evet.card] then
- -- self:setTingCardViewVisible(true,roomInfo.tings[evet.card])
- -- else
- -- self:setTingCardViewVisible(false)
- -- end
- if evet.card and roomInfo.tings and #roomInfo.tings>0 then
- local isTing = false
- for k,v in pairs(roomInfo.tings) do
- if evet.card==v.outCard then
- self:setTingCardViewVisible(true,v.tingCards)
- isTing = true
- end
- end
- if not isTing then
- self:setTingCardViewVisible(false)
- end
- else
- self:setTingCardViewVisible(false)
- end
- end
-
- function zigong7zRoomView:pushTing()
- local function runPushTing(onEnd)
- if self.playerHandCards[MJDefine.MyViewId] then
- self.playerHandCards[MJDefine.MyViewId]:pushTing()
- end
- if onEnd then
- onEnd()
- end
- end
- self:addCallBack(runPushTing);
- end
-
- function zigong7zRoomView:onHuResponse(data)
- local function runHuResponse(onEnd)
- local response = data.response
- logD('有人胡牌了', table.tostring(response))
-
- local function callback()
- self:playHuAni(response)
- if onEnd then
- onEnd()
- end
- end
-
- local viewId = app.room:getViewIdByUserId(response.nUserId)
- local userInfo=app.room:getUserInfoByViewId(viewId)
-
- --先播放胡牌动画和音效,再显示胡牌顺序
- local effect = MJAnimationCompnent.CreateHuEffect(response.huType,callback)
- if response.huType == MJDefine.MJGameHuType.HU_ZIMO then
- MJSound.PlayOperateSound(userInfo.sex,MJDefine.MJOperateType.OPREATE_ZIMOHU)
- -- effect=MJAnimationCompnent.CreateHuEffect("zimo",callback)
- -- elseif response.huType == MJDefine.MJGameHuType.HU_QIANGGANG then
-
- else
- MJSound.PlayOperateSound(userInfo.sex,MJDefine.MJOperateType.OPREATE_DIANPAOHU)
- -- effect=MJAnimationCompnent.CreateHuEffect("hu",callback)
- -- --点炮显示
- end
-
- if effect then
- self.ui.Items.Layout_Effect:addChild(effect)
- effect:setTag(HU_EFFECT_TAG)
- effect:setLocalZOrder(1000)
- effect:setPosition(self.playerHandCards[viewId]:getAnimationPostion())
- end
-
- --删除等待操作的显示
- if self.waitOperates and #self.waitOperates>0 then
- for k,v in pairs(self.waitOperates) do
- v:removeFromParent()
- end
- self.waitOperates={}
- end
-
- if response.huType==MJDefine.MJGameHuType.HU_DIANPAO and response.curOpType ~= 1 then
- local failViewId = app.room:getViewIdByUserId(response.dpId)
- --点炮胡或抢杠胡,胡牌类型都是发 点炮胡
- if response.isQiangGng > 0 then
- local huCard = response.huCard == 65 and response.redRealCard or response.huCard --如果胡的牌是红中 用真实的牌 否则用胡的牌
- -- logD("isQiangGng huCard:"..huCard)
- --抢杠胡
- self.playerHandCards[viewId]:onGetCard(nil,huCard)
- --被抢杠的人回退补杠
- self.playerHandCards[failViewId]:retoreBuGang(huCard,1)
- --[[elseif response.isGspHu and response.isGspHu > 0 then
- local gameInfo =json.decode(app.room.roomInfo.strGameInfo);
- if gameInfo.dianganghua == 1 then
- dghDianPao = true
- --点杠炮(选择的点杠花)时手上已经有杠的牌 不需要再加一张胡的牌
- else
- self.playerHandCards[viewId]:onGetCard(nil,response.huCard)
- --将胡的牌收走
- self.playerHandCards[failViewId]:removeOutCard(response.huCard)
- end--]]
- else
- self.playerHandCards[viewId]:onGetCard(nil,response.huCard)
- --将胡的牌收走
- self.playerHandCards[failViewId]:removeOutCard(response.huCard)
- end
-
- --放炮动画
- effect=MJAnimationCompnent.CreateDianPaoEffect()
- self.ui.Items.Layout_Effect:addChild(effect)
- effect:setLocalZOrder(1000)
- effect:setPosition(self.playerHandCards[failViewId]:getAnimationPostion())
-
- if failViewId==MJDefine.MyViewId and app.room.roomInfo.lastOutViewId==MJDefine.MyViewId then --修改点炮的人连续二次出牌 不删除牌
- app.room.roomInfo.lastOutViewId = nil
- end
-
- --此处仅做保留,没有实际意义
- elseif response.huType==MJDefine.MJGameHuType.HU_QIANGGANG then
- local failViewId = app.room:getViewIdByUserId(response.dpId)
- if response.redRealCard > 0 then
- --抢杠胡时,胡牌的人将胡的牌加入手中
- self.playerHandCards[viewId]:onGetCard(nil,response.redRealCard)
- --被抢杠的人回退补杠
- self.playerHandCards[failViewId]:retoreBuGang(response.redRealCard,1)
- end
- end
-
- if response.nUserId == app.room:getMyUserId() then
- self.playerHandCards[viewId]:setOutCardEnable(false)
- self:setTingCardViewVisible(false)
- self.playerHandCards[viewId]:setTing(false)
-
- else
- -- 其他人胡了倒牌
- local handCards = {}
- for k,v in pairs(self.playerHandCards[viewId]:getHandCardNodes() or {}) do
- table.insert(handCards,{card = v.value or v:getValue()})
- end
- if response.huType==MJDefine.MJGameHuType.HU_ZIMO or response.curOpType == 1 then --如果是自摸胡 把最后一张替换为胡的牌或点杠花点炮
- handCards[#handCards] = {card = response.huCard}
- end
- self.playerHandCards[viewId]:removeAllHandCards()
-
- dump(handCards, '胡牌handCards....')
- self.playerHandCards[viewId]:createOpenHandCards(handCards)
- self.playerHandCards[viewId]:moveLastOpenCard()
- end
-
- self._operateComponent:hideOperate()
- end
- self:addCallBack(runHuResponse);
- end
-
- function zigong7zRoomView:playHuAni(response)
- local strGameInfo = json.decode(app.room.roomInfo.strGameInfo)
- local effect = MJAnimationCompnent.CreateHuOrderEffect(response.huType,response.huOrder)
- -- if response.huType == 1 then
- -- effect=MJAnimationCompnent.CreateHuOrderEffect("zimo",response.huOrder)
- -- else
- -- effect=MJAnimationCompnent.CreateHuOrderEffect("hu",response.huOrder)
- -- end
-
- local viewId = app.room:getViewIdByUserId(response.nUserId)
- if effect then
- self.ui.Items.Layout_Effect:addChild(effect)
- effect:setTag(HU_EFFECT_TAG)
- effect:setLocalZOrder(1000)
- local pos = self.playerHandCards[viewId]:getAnimationPostion()
- local offsetX, offsetY = self:getHuFlagOffset(viewId)
- effect:setPosition(pos.x + offsetX, pos.y + offsetY)
- end
- end
-
- function zigong7zRoomView:onQiangDuanOperates(data)
- local function runOnQiangDuanOperates(onEnd)
- logD("zigong7zRoomView:runOnQiangDuanOperates")
- local response = data.response
- if response.operates and self.playerHandCards[MJDefine.MyViewId] then
- self._operateComponent:showOperate(operates)
- end
- if onEnd then
- onEnd()
- end
- end
- logD("zigong7zRoomView:onQiangDuanOperates")
- self:addCallBack(runOnQiangDuanOperates)
- end
-
- --游戏消息
- function zigong7zRoomView:bindExtendMessage()
- self:bindEvent(app.room , MJDefine.MJEvent.OutCardTings, handler(self , self.pushTing));
- self:bindEvent(app.room , MJDefine.MJEvent.HuResponse, handler(self , self.onHuResponse))
- self:bindEvent(app.room , MJDefine.MJEvent.BaoPaiResponse, handler(self , self.onBaoPai))
- self:bindEvent(app.room , MJDefine.MJEvent.BankerBaoPai, handler(self , self.onBankerBaoPai))
- self:bindEvent(app.room , MJDefine.MJEvent.SendGuo, handler(self , self.onSendGuo))
-
- self:bindEvent(app.room , MJDefine.MJEvent.QiangDuanOperates, handler(self , self.onQiangDuanOperates))
-
- self:bindEvent(app , MJDefine.MJEvent.ChangeLanguage , handler(self , self.doSound))
-
- self:bindEvent(app.room , MJDefine.MJEvent.StartPiao, handler(self , self.onStartPiao))
- self:bindEvent(app.room , MJDefine.MJEvent.PiaoResponse, handler(self , self.onPiaoResponse))
- self:bindEvent(app, MJDefine.MJEvent.ChangeViewType, handler(self, self.onEventChangeViewType ))
- -- 托管
- self:bindEvent(app.room , MJDefine.MJEvent.HostingRequest, handler(self, self.onHostingRequest))
- self:bindEvent(app , MJDefine.MJEvent.HeadShowHighLight , handler(self , self.onHeadShowHighLight)) -- 头像显示高亮
- self:bindEvent(app.room , MJDefine.MJEvent.HideOperateLayer , handler(self , self.onHideOperateLayer)) -- 隐藏操作界面
- self:bindEvent(app.room , MJDefine.MJEvent.HideGuideTip , handler(self , self.onHideGuideTip)) -- 隐藏手势提示
-
- end
-
- function zigong7zRoomView:clean()
- self.playerView:init()
- -- --默认状态
- self:defaultState()
- app.room:resetRoomInfo()
- self:setBtnSitDownVisible(false)
-
- self.ui:sendMsg(app.room, MJDefine.MJEvent.CallReadyRequest)
- --
- self._gameoverview = nil
- end
-
- function zigong7zRoomView:updateReady()
- local nUserId = app.room:getMyUserId()--app.user.loginInfo.uid
- if app.room.roomInfo.nGameStartCount > 0 then
- self.toolView:setButtonLeaveEnable(false)
- self:setBtnSitDownVisible(false)
- else
- self.toolView:setButtonLeaveEnable(true)
- end
- if app.room.roomInfo.nGameStartCount == 0 and app.room.roomInfo.nRoomOwnedUid ~= nUserId then
- self.toolView:setButtonToolEnable(false)
- else
- self.toolView:setButtonToolEnable(true)
- end
-
- self:checkCanDismiss()
- end
-
- -- 游戏开始
- function zigong7zRoomView:onGameStartResponse()
-
- local function runGameStartResponse(onEnd)
- log("2000000000-MJRoomView - runGameStartResponse()" )
-
- --更新背景
- self:changeGameBg(true)
-
- --隐藏俱乐部
- self:hideClub()
-
- --重置玩家数据
- self:resetGame()
-
- self:initHandCardNodes()
-
- --写入数据
- for k,v in pairs(app.room.roomInfo.memberList) do
- v.nPlayerFlag = 2
- end
-
- --更新玩家状态状态
- self:onUserReadyResponse()
-
- self.toolView:updateButton()
- -- 隐藏邀请好友
- -- self:setWetChatVisible(false)
-
- -- 更新局数
- self:updateGameNums()
-
- --更新庄家
- self:updateBanker()
-
- -- 显示剩余牌
- self:setLastCardTipVisible(true)
-
- --初始化方位
- self.direcionView:initDirection(self.desktopType)
- self.direcionView:updateDirection(app.room.roomInfo.nBankSeatId)
-
-
-
- if onEnd then
- onEnd()
- end
-
- -- cc.Device:vibrate(5)
- end
- log("2000000000-MJRoomView - addCallBack(runGameStartResponse)" )
- self:addCallBack(runGameStartResponse);
-
- self._gameoverview = nil
- end
-
- -- 大局结算
- function zigong7zRoomView:onGameDaJuResponse(data)
- app.club_php:dispatchEvent({name = GAME_EVENT.CLUB_BACK_ROOM})
- if self._gameoverview then
- return
- end
- if app.room.roomInfo.needJieSuanInfo == 1 then--显示总结算
- self:showGameOverResult(data.response)
- else
- --[[local roomInfo=app.room.roomInfo
- --如果是解散直接跳转总结算
- if roomInfo.stopFlag==MJDefine.StopFlag.STOP_FLAG_LONG_NOT_END or roomInfo.stopFlag==MJDefine.StopFlag.STOP_FLAG_DISBAND_GAME then
- self:showGameOverResult(data.response)
- end --]]
- local roomInfo=app.room.roomInfo
- local isNoCard = false--没有手牌
- for i,player in pairs(roomInfo.memberList) do
- if type(player.handCards) == 'table' and #player.handCards <= 0 then
- local a = #player.handCards
- isNoCard = true
- break
- end
- end
- if isNoCard then
- self:showGameOverResult(data.response)
- end
- app.room:dispatchEvent({name = GAME_EVENT.DISSMISS_CLOSE})
- end
- end
-
- -- 大局结算
- function zigong7zRoomView:showGameOverResult(data)
- if self._gameoverview ~= nil then
- return
- end
- self.direcionView:stopAllActions()
- self:resetGame()
- local view=MJRoomDaJuView:new(data)
- view:setAnchorPoint(cc.p(0.5, 0.5))
- app:showWaitDialog(view)
- self._gameoverview = view
- self:showGameOverAward()
- end
-
- -- 显示抽奖界面
- function zigong7zRoomView:showGameOverAward()
- if not (dd and dd.IGameOverAward) then
- return
- end
- self:runDelay(0.1, function ( )
- -- 延迟0.1秒执行,可能有些游戏弹大结算的时候还未收到抽奖消息
- dd.IGameOverAward.showAwardView();
- end)
- end
-
- function zigong7zRoomView:onOtherLogoutResponse(data)
- -- local jushu = app.room.roomInfo.nGameStartCount or 0
- if (not data or not data.nUserId or not data.nSeatShowId) then
- return
- end
- local function test(onEnd)
- self.playerView:updatePlayerInfo(data.nSeatShowId)
- self:onUserReadyResponse()
- --更新GPS
- --self:updateAllGpsInfo()
- --self:checkGpsDistance()
- -- 是否显示邀请好友
- self.toolView:updateButton()
-
- if self._fastRequestView then
- self._fastRequestView:removeSelf()
- self._fastRequestView = nil
- end
-
- logE("88888-onOtherLogoutResponse onEnd")
- if onEnd then
- onEnd()
- end
- end
- self:addCallBack(test)
- end
-
-
- function zigong7zRoomView:resetGame()
- logE("===========重置游戏数据===============")
-
- self.direcionView:setVisible(false)
- -- self.playerView:setOperatorTipVisible(false)
- self:setTingCardViewVisible(false)
- self:setChaTingCardViewVisible(false)
- self:setGuideView(false)
- self:showGuideTip(false)
- self:setLastCardTipVisible(false)
-
- for k,v in pairs(self.playerHandCards) do
- v:removeFromParent()
- end
- self.playerHandCards={}
-
- if self.xiaojuView then
- self.xiaojuView:removeFromParent()
- self.xiaojuView=nil
- end
-
- --隐藏工具界面 详情
- -- if self.toolView.ui.Items.ImageView_Rule_bg then
- -- self.toolView.ui.Items.ImageView_Rule_bg:setVisible(false)
- -- end
-
- --操作码
- -- self.operationLocalCode = 0
- -- self.isMoPaiOperator = false
- -- self.isGameOver = false
- -- self.isTianHu = false
- -- self.isGodHand = false
- -- --重置开招次数
- -- for i = 1,4 do
- -- -- self.playerZhao[i] = 0
- -- end
-
-
- self.ui.Items.Layout_Effect:removeAllChildren()
- self.ui.Items.Layout_Effect_luobo_Lable:removeAllChildren()
- self.ui.Items.Layout_Effect_luobo:removeAllChildren()
- self.playerView:clearBao()
- self.playerView:clearAllPiao()
- self.playerView:clearAllBoZiMo()
- self.playerView:setPlayerHeadLight() -- 清空头像光
- self.playerView:setPlayerClock() -- 清空头像闹钟
- end
-
- function zigong7zRoomView:showPiao()
- self:stopDirection()
- self.playerView:setPlayerHeadLight() -- 清空头像光
- self.playerView:setPlayerClock() -- 清空头像闹钟
- local roomInfo=app.room.roomInfo
- local gameInfo=json.decode(roomInfo.strGameInfo)
-
- if not gameInfo.piaomode or tonumber(gameInfo.piaomode)==0 then return end
-
- self:hidePiao()
- local ui=loadUI("mj_zigong7z/res/ui_fangjian/mj_zigong_piao.ui")
- self.ui.Items.Layout_Player:addChild(ui)
- self.piao=ui
-
- ui.Items.Button_BuPiao:registerClick(function()
- playBtnEffect()
- self:hidePiao()
- local request = MJMessage.PiaoRequest:new()
- request.isPiao = 0
- self.ui:sendMsg(app.room,MJDefine.MJEvent.PiaoRequest,request)
- end)
-
- ui.Items.Button_Piao:registerClick(function()
- playBtnEffect()
- self:hidePiao()
- local request = MJMessage.PiaoRequest:new()
- request.isPiao = 1
- self.ui:sendMsg(app.room,MJDefine.MJEvent.PiaoRequest,request)
- end)
-
- end
-
- function zigong7zRoomView:hidePiao()
- if self.piao then
- self.piao:removeFromParent()
- self.piao=nil
- end
- end
-
- --显示飘操作按钮
- function zigong7zRoomView:onStartPiao(response)
- local function runPiao(onEnd)
- logD("zigong7zRoomView:onStartPiao")
- self:showPiao()
- if onEnd then
- onEnd()
- end
- end
- logD("zigong7zRoomView:runPiao")
- self:addCallBack(runPiao)
- end
-
- --飘结果
- function zigong7zRoomView:onPiaoResponse(response)
- local function runonPiaoResponse(onEnd)
- logD("zigong7zRoomView:runonPiaoResponse")
- local data = response.response
- local userId = data.nUserId--操作的玩家
-
- local playersPiaostate = data.playerPiaoState--所有玩家的飘状态
- if playersPiaostate then
- for i,v in pairs(playersPiaostate) do
- local viewId = app.room:getViewIdByUserId(v.nUserId)
- local myUserId = app.room:getMyUserId()
- local userInfo=app.room:getUserInfoByViewId(viewId)
-
-
- if myUserId == data.nUserId then
- else
- end
- self.playerView:showPiao(viewId,v.piaostate==1)
- if v.piaostate==1 and userId == v.nUserId then
- --飘音效
- MJSound.PlayPiaoSound(userInfo.sex)
- local effect = MJAnimationCompnent.CreatePiaoEffect()
- if effect then
- self.ui.Items.Layout_Effect_luobo:addChild(effect)
- effect:setLocalZOrder(1000)
- effect:setPosition(self.playerHandCards[viewId]:getAnimationPostion())
- end
- end
- end
- else
- local viewId = app.room:getViewIdByUserId(userId)
- self.playerView:showPiao(viewId,data.piaostate==1)
- if data.piaostate and data.piaostate == 1 then
- --飘音效
- local userInfo=app.room:getUserInfoByViewId(viewId)
- MJSound.PlayPiaoSound(userInfo.sex)
- local effect = MJAnimationCompnent.CreatePiaoEffect()
- if effect then
- self.ui.Items.Layout_Effect_luobo:addChild(effect)
- effect:setLocalZOrder(1000)
- effect:setPosition(self.playerHandCards[viewId]:getAnimationPostion())
- end
- end
- end
- if onEnd then
- onEnd()
- end
- end
- logD("zigong7zRoomView:runonPiaoResponse--------")
- self:addCallBack(runonPiaoResponse)
- end
-
- function zigong7zRoomView:showBaoJiao()
- self:hideBaoJiao()
- local ui=loadUI("mj_zigong7z/res/ui_fangjian/mj_zigong_baojiao.ui")
- self:addChild(ui)
- self.baojiao=ui
-
- ui.Items.Button_bozimo:registerClick(function()
- playBtnEffect()
- self:hideBaoJiao()
- local request = MJMessage.BaoPaiRequest:new()
- request.isBaoPai = 2
- logD(request.isBaoPai,"发送爆:2")
- self.ui:sendMsg(app.room, MJDefine.MJEvent.BaoPaiRequest, request)
- end)
-
- ui.Items.Button_Bao:registerClick(function()
- playBtnEffect()
- self:hideBaoJiao()
- local request = MJMessage.BaoPaiRequest:new()
- request.isBaoPai = 1
- logD(request.isBaoPai,"发送爆:1")
- self.ui:sendMsg(app.room, MJDefine.MJEvent.BaoPaiRequest, request)
- end)
-
- ui.Items.Button_guo:registerClick(function()
- playBtnEffect()
- self:hideBaoJiao()
- local request = MJMessage.BaoPaiRequest:new()
- request.isBaoPai = 0
- logD(request.isBaoPai,"发送爆:0")
- self.ui:sendMsg(app.room, MJDefine.MJEvent.BaoPaiRequest, request)
- end)
-
- local gameInfo =json.decode(app.room.roomInfo.strGameInfo);
- if gameInfo.baojiao then
- ui.Items.Button_Bao:setVisible(gameInfo.baojiao == 1);
- end
- if gameInfo.specrule then
- local bozimo = getNumBand(gameInfo.specrule, 0x0002) > 0
- ui.Items.Button_bozimo:setVisible(bozimo);
- end
- ui.Items.Layout_baojiao:requestDoLayout()
- ui.Items.Layout_baojiao:doLayout();
- end
-
- function zigong7zRoomView:hideBaoJiao()
- if self.baojiao then
- self.baojiao:removeFromParent()
- self.baojiao=nil
- end
- end
-
- function zigong7zRoomView:onBtnTingInfoClicked( )
- playBtnEffect()
- if self.ui.Items.Layout_Ting_Tip_Card_Panel:isVisible() then
- self.ui.Items.Layout_Ting_Tip_Card_Panel:setVisible(false)
- else
- self.ui:sendMsg(app.room,MJDefine.MJEvent.Ting)
- end
- end
-
- function zigong7zRoomView:onChangeChatEnable()
- if not self.messageView or tolua.isnull(self.messageView) then
- return
- end
- local voiceEnable = tonumber(loadUserInfo("zigongPingBiYuYinKG")) or 1
- local propEnable = tonumber(loadUserInfo("zigongHuDongBiaoQingKG")) or 1
- self.messageView:setVoiceEnabled(voiceEnable==1)
- self.messageView:setPropEnabled(propEnable==1)
- end
-
- function zigong7zRoomView:onEventChangeViewType(data)
-
- MJDefine.MJConfig = MJDefine.loadMJConfig()
-
- self:changeGameBg(true)
-
- app.room.roomInfo.requestGetTableInfo = true
- self.ui:sendMsg(app.room, MJDefine.MJEvent.GetTableInfo);
- end
-
- function zigong7zRoomView:onHostingRequest( data )
- local response = data.response
- if response.nUserId == app.user.loginInfo.uid then
- if response.status == 1 then --托管状态
- self.toolView:showTuoGuan(true)
- elseif response.status == 0 then--取消托管状态
- self.toolView:showTuoGuan(false)
- end
- end
- local isTuoGuan = response.status == 1;
- local viewId = app.room:getViewIdByUserId(response.nUserId)
- self.playerView:showTuoGuanByViewId(viewId,isTuoGuan)
-
- if isTuoGuan then
- self:hidePiao()
- self:hideBaoJiao()
- end
- end
-
- function zigong7zRoomView:bindAllEvent()
- --[[
- 消息分类管理
- ]]
-
- --用户状态(包括准备,其他玩家进入或者离开通知,离线等)
- self:bindUserStatedMessage()
-
- --私人场消息(包括解散等)
- self:bindPrivateMessage()
-
- --游戏消息
- self:bindGameMessage()
-
- --游戏场景消息
- self:bindGameSceneMessage()
-
- --更换视图
- -- self:bindEvent(app , MJDefine.MJEvent.ChangeViewType , handler(self , self.onChangeViewType));
-
- self:bindEvent(app , MJDefine.MJEvent.ChangeViewBG , handler(self , self.changeGameBg));
-
- -- self:bindEvent(app , MJDefine.MJEvent.ChangeChatEnable , handler(self , self.onChangeChatEnable));
-
- --绑定更换桌布事件
- -- self:bindEvent(app , "onChangeTable" , handler(self , self.onChangeTable));
- --发送道具
- -- self:bindEvent(app.room,"showProp" , handler(self , self.showProp));
-
- self:bindExtendMessage()
- end
-
- -- 开始游戏,起飞
- function zigong7zRoomView:startGame()
- app.net:onMsgResume()
- end
-
- --更换水印,不同平台水印不同,在子游戏配置里面配置图片
- function zigong7zRoomView:changeWaterMark()
- self:initLogo()
- end
-
- -- 水印
- function zigong7zRoomView:initLogo()
- if tolua.isnull(self.ui.Items.ImageView_Logo) then return end
- if not (type(getSubGameRoomLogo) == 'function') then--大厅不支持此方法,则隐藏logo
- self.ui.Items.ImageView_Logo:setVisible(false);
- return
- end
- local roomInfo = app.room.roomInfo
- local gameInfo = json.decode(roomInfo.strGameInfo or "")
- local gamerule = tonumber(gameInfo.gamerule or 1)
- roomInfo.gameId = roomInfo.gameId or MJDefine.GameID or 0
- local logofile = getSubGameRoomLogo(roomInfo.gameId,gamerule)
- if logofile then
- self.ui.Items.ImageView_Logo:loadTexture(logofile)
- self.ui.Items.ImageView_Logo:setVisible(true);
- else
- self.ui.Items.ImageView_Logo:setVisible(false);
- end
- end
-
- -- 初始化大结算再来一局
- function zigong7zRoomView:initPlayGameAgain()
- local strGameInfo = app.room.roomInfo.strGameInfo
- local isInClub = app.club_php.clubID and app.club_php.clubID ~= 0
- if not isInClub then
- logD("IPlayGameAgain.initPlayGameAgain", "当前玩家不在亲友圈内,不能再来一局");
- return
- end
-
- local clubGameInfo = json.decode(strGameInfo) or {}
- if not clubGameInfo.ruleid then
- logD("IPlayGameAgain.initPlayGameAgain", "游戏包间id不存在,不能再来一局");
- return
- end
-
- dd.IPlayGameAgain.setAgainGameBaoJianId(clubGameInfo.ruleid)
- end
-
- -- 检测是否可以解散房间
- function zigong7zRoomView:checkCanDismiss( )
- local onCanDismissCallback = function (info)
- local nUserId = app.room:getMyUserId()
- local roomInfo = app.room.roomInfo or {}
- local canDismiss = (tonumber(info.canDismiss or 1) == 1) or roomInfo.nRoomOwnedUid == nUserId or dd.IClub.isAdmin()
- if roomInfo.nGameStartCount == 0 and roomInfo.nRoomOwnedUid ~= nUserId then
- canDismiss = false
- end
- self:onCanDismissCallback(canDismiss)
- end
-
- if dd.IClub.getCanDismiss then
- local canDismiss = dd.IClub.getCanDismiss(onCanDismissCallback)
- if canDismiss then
- onCanDismissCallback({canDismiss = canDismiss})
- end
- end
- end
-
- function zigong7zRoomView:onCanDismissCallback(canDismiss)
- if not self.toolView then
- return
- end
- if self.toolView:getIsHaveButtonDismiss() then
- self.toolView:setButtonToolEnable(canDismiss)
- end
- end
-
- --用户状态消息
- function zigong7zRoomView:bindUserStatedMessage()
- --默认状态
- self:bindEvent(app.room , "defaultState" , handler(self , self.defaultState));
- -- 玩家准备
- self:bindEvent(app.room , MJDefine.MJEvent.UserReadyResponse , handler(self , self.onUserReadyResponse));
- -- 其他玩家进入房间
- self:bindEvent(app.room , MJDefine.MJEvent.OtherSitDownResponse , handler(self , self.onOtherSitDownResponse));
- -- 其他玩家退出房間
- self:bindEvent(app.room , MJDefine.MJEvent.OtherLogoutResponse , handler(self , self.onOtherLogoutResponse));
- -- 其他玩家掉线
- self:bindEvent(app.room , MJDefine.MJEvent.OtherDroppedResponse , handler(self , self.onOtherDroppedResponse));
- -- 用户T出
- self:bindEvent(app.room , MJDefine.MJEvent.UserExitResponseRoom , handler(self , self.onUserExitResponseRoom));
-
- -- 玩家的GPS信息发生变化
- self:bindEvent(app.room , MJDefine.MJEvent.GpsChangeResponse , handler(self , self.onGpsChangeResponse));
-
- end
-
- --私人场消息
- function zigong7zRoomView:bindPrivateMessage()
- -- 玩家收到解散房间的请求
- self:bindEvent(app.room , MJDefine.MJEvent.DismissResponse , handler(self , self.onDismissResponse));
- end
-
- --游戏消息
- function zigong7zRoomView:bindGameMessage()
- -- 游戏开始
- self:bindEvent(app.room , MJDefine.MJEvent.GameStartResponse , handler(self , self.onGameStartResponse));
- -- 开始给桌子上用户发牌
- self:bindEvent(app.room , MJDefine.MJEvent.GameSendCardResponse , handler(self , self.onGameSendCardResponse));
- -- 系统发给自己可串可哨的消息
- -- self:bindEvent(app.room , "onSystemOperationStart" , handler(self , self.onSystemOperationStart));
- -- 广播桌子上所有玩家庄家起手操作
- self:bindEvent(app.room , MJDefine.MJEvent.BankerOutCard, handler(self , self.onBankerOutCard));
- -- 出牌错误
- self:bindEvent(app.room , MJDefine.MJEvent.OutCardError , handler(self , self.onOutCardError));
- -- 出牌成功
- self:bindEvent(app.room , MJDefine.MJEvent.OutCardSuccess, handler(self , self.onOutCardSuccess));
-
- self:bindEvent(app.room , MJDefine.MJEvent.TurnOutCard , handler(self , self.onTurnOutCard));
-
- -- 抢杠胡
- self:bindEvent(app.room , MJDefine.MJEvent.QiangGangHu, handler(self , self.onQiangGangHu));
- -- 弃牌
- self:bindEvent(app.room , MJDefine.MJEvent.OutCardResponse , handler(self , self.onOutCard));
- -- 操作错误
- self:bindEvent(app.room , MJDefine.MJEvent.OperationError, handler(self , self.onOperationError));
- -- 先操作玩家
- -- self:bindEvent(app.room , "onOperationFirst", handler(self , self.onOperationFirst));
- -- 操作成功
- self:bindEvent(app.room , MJDefine.MJEvent.OperationCodeSuccess , handler(self , self.onOperationCodeSuccess));
- -- 听牌
- self:bindEvent(app.room , MJDefine.MJEvent.TingSatus, handler(self , self.onTingCardStatus));
- self:bindEvent(app.room , MJDefine.MJEvent.TingResult, handler(self , self.onTingCardResult));
- self:bindEvent(app.room , MJDefine.MJEvent.ShowTing, handler(self , self.showTing));
- self:bindEvent(app.room , MJDefine.MJEvent.PushTing, handler(self , self.pushTing));
-
-
- self:bindEvent(app.room , MJDefine.MJEvent.WaitOperate, handler(self , self.onWaitOperate))
- -- 听牌
- -- self:bindEvent(app.room , "onDaiXing",handler(self , self.onDaiXing));
- --弃胡通知自己
- -- self:bindEvent(app.room , "onQiHuSelfResponese",handler(self , self.onQiHuSelfResponese));
- --弃胡通知其他
- -- self:bindEvent(app.room , "onOtherQiHuTongZhi",handler(self , self.onOtherQiHuTongZhi));
-
- self:bindEvent(app.room , MJDefine.MJEvent.BraodcastFastStart , handler(self , self.onBroadcastFaststart));
- self:bindEvent(app.room , MJDefine.MJEvent.FastStartSucc , handler(self , self.onFastStartSucc));
-
- self:bindEvent(app.room , MJDefine.MJEvent.GameXiaoJuResponse , handler(self , self.onGameXiaoJuResponse));
- self:bindEvent(app.room , MJDefine.MJEvent.GameDaJuResponse , handler(self , self.onGameDaJuResponse));
- -- user pass
- self:bindEvent(app.room , MJDefine.MJEvent.USER_PASS, handler(self, self.onUserPassRequest))
- end
-
- --场景恢复
- function zigong7zRoomView:bindGameSceneMessage()
- local function onEnterRoomSuccess(event)
- if tolua.isnull(self.ui) then
- logE("self.is null")
- return
- end
- local roomInfo = app.room.roomInfo
- local myUserId = app.room:getMyUserId()
- for userId,v in pairs(roomInfo.memberList) do
- local viewId = app.room:getViewIdByUserId(userId)
- --出牌瞬间重连,会先收到重连消息再收到出牌成功,导致多一张牌,这时要在出牌成功那里删一次牌
- if self.playerHandCards[viewId] and v.handCards and type(v.handCards) == 'table' then
- if userId == myUserId then
- local rHandCards = #v.handCards
- local curHandCards = self.playerHandCards[viewId]:getHandCardsNum()
- if curHandCards+1 == rhandCards then
- self.needDeleteOutCard = true
- end
- end
- end
- end
- self:stopAllActions()
- self:defaultState()
- self:onGameReconnection()
- self:startGame()
- end
- app.hall:addEventListener("onEnterRoomSuccess", onEnterRoomSuccess)
- end
-
- function zigong7zRoomView:onFastStartSucc(data)
- if self._fastRequestView then
- self._fastRequestView:removeSelf()
- self._fastRequestView = nil
- end
- --self.toolView:showFastStart(false)
- self.playerView:setPlayerVisible(false)
- self:updateRoomBaseData()
- end
-
- --更新房间基础数据
- function zigong7zRoomView:updateRoomBaseData()
- --初始化背景
- -- local idx2 = tonumber(loadUserInfo("lhqgameBgPicture")) or 4
- -- self:setTableImg(idx2)
-
- --初始化方言
- -- local languageType = tonumber(loadUserInfo("lhqLanguageType")) or LHQ_GAME_LANGUAGE_TYPE.FANG_YAN
- -- setLHQCurLanguage(languageType)
-
-
- local roomInfo = app.room.roomInfo;
-
- -- 房间号
- self._roomHeadInfo:setRoomNum(tostring(roomInfo.nShowTableId))
-
- --局数
- self:updateGameNums()
-
- --房间玩法
- self.toolView:updateRule()
- -- local ruleAll = MJWanFa.getWanFaInfo(roomInfo.strGameInfo)--getLHQRuleStr();
- -- self.ui.Items.Text_Rule:setText(ruleAll)
- --local heght=self.ui.Items.Text_Rule:getContentSize().height+20
- --self.ui.Items.Layout_Rule:setSize(cc.size(self.ui.Items.Layout_Rule:getContentSize().width,self.ui.Items.Text_Rule:getContentSize().height))
- -- self.ui.Items.Layout_Rule:doLayout()
-
- self:onUserReadyResponse()
-
- for i = 1,6 do
- self.playerView:updatePlayerInfo(i)
- end
-
- self.toolView:updateButton()
-
- -- -- 是否显示邀请好友
- -- self:setWetChatVisible(table.nums(app.room.roomInfo.memberList) < app.room.roomInfo.nMaxPlayCount)
-
- -- if isReviewVersion() then
- -- self:setWetChatVisible(false);
- -- end
-
- -- -- 更新玩家手牌列表时,按需显示
- -- if app.room.roomInfo.nGameStartCount > 0 then
- -- self:setWetChatVisible(false)
- -- --self:setBtnSitDownVisible(false)
- -- end
- end
-
- -- 分辨率改变回调(针对部分机型切后台后,导致牌数据位置不对(宽高分辨率对调了))
- function zigong7zRoomView:applicationScreenSizeChanged()
- print('zigong7zRoomView:applicationScreenSizeChanged')
-
- if not self then
- print('zigong7zRoomView:applicationScreenSizeChanged return not self')
- return
- end
-
- if tolua.isnull(self) then
- print('zigong7zRoomView:applicationScreenSizeChanged return tolua.isnull(self)')
- return
- end
-
- -- 出现小局不请求重连
- -- if self.xiaojuView and self.xiaojuView:isVisible() then
- -- print('zigong7zRoomView:applicationScreenSizeChanged return self.xiaojuView is showing')
- -- return
- -- end
-
- local callFunc = function(onEnd)
- if self.playerHandCards[MJDefine.MyViewId].isUseNew3D then
- if self.playerHandCards[MJDefine.MyViewId]:isUseNew3D() then
- MJDefine.loadMJConfig(self.desktopType)
- end
- end
- self:requestReconnect()
-
- if onEnd then
- onEnd()
- end
- end
-
- local winSize = cc.Director:getInstance():getWinSize()
- for i, v in pairs(self.playerHandCards) do
- if v:getHandCardPosInitY() > winSize.height then
- self:addCallBack(callFunc)
- break
- end
- end
- end
-
- -- 其他玩家坐下成功
- function zigong7zRoomView:onOtherSitDownResponse(data)
- if not data or not data.nSeatShowId then
- return
- end
-
- -- local nSeatShowId = data.nSeatShowId;
- -- local nUserId = app.room:getUserIdByViewId(nSeatShowId)
- -- self:checkGpsDistance(nUserId,true);
-
- self:onUserReadyResponse()
- -- 是否显示邀请好友
- self.toolView:updateButton()
- end
-
- function zigong7zRoomView:onOtherDroppedResponse(data)
- if not data.response.nUserId then
- return
- end
- local nUserId = data.response.nUserId
- local nOnlineStatus = data.response.nOnlineStatus
- local viewId = app.room:getViewIdByUserId(nUserId)
- self.playerView:setPlayerOffLineVisible(nOnlineStatus == MJDefine.PlayOnlineStatus.offline,viewId)
- end
-
- function zigong7zRoomView:onUserExitResponseRoom(data)
- local function runUserExitResponseRoom(onEnd)
- log("2000000000-MJRoomView - runUserExitResponseRoom()" )
- local response = data.response
- -- 0: 不退出, 1: 退出
- if response.logoutFlag == 1 then
- --房间号
- local roomid = app.room.roomInfo.nShowTableId
- --app:gotoView(import("luaScript.Views.Main.MainView"):new(app.gameId,roomid));
- gotoMainView(app.gameId,roomid)
- end
- app.room:dispatchEvent({name = "onUserExitResponseHall"});
- logE("88888-onUserExitResponseRoom onEnd")
- if onEnd then
- onEnd()
- end
- end
- log("2000000000-MJRoomView - addCallBack(runUserExitResponseRoom)" )
- self:addCallBack(runUserExitResponseRoom);
- end
-
- -- 服务器广播玩家数据发生变化
- function zigong7zRoomView:onGpsChangeResponse(data)
- logD("zigong7zRoomView:onGpsChangeResponse()")
- if not data or not data.nUserId then
- return
- end
-
- local roomInfo = app.room.roomInfo
-
- local nUserId = data.nUserId
- logD("zigong7zRoomView:onGpsChangeResponse()", tostring(nUserId))
-
- self:checkGpsDistance(nUserId,roomInfo.nGameStartCount==0)
- end
-
- -- 玩家收到解散房间的请求
- function zigong7zRoomView:onDismissResponse(event)
- if not event or not event.response then
- return
- end
-
- logE("onDismissResponse() response = ", event.response)
-
- local response = event.response
-
- --当前时间
- app.room.roomInfo.nDismissStateTime = response.timeLeft
- --总的时间
- app.room.roomInfo.nDismissToTalTime = app.room.roomInfo.nDisbandTimeout
- --显示解散(此标志会影响闹钟时间会冻住)
- app.room.roomInfo.nShowDismiss = true
-
- if response.operateType == 1 then
- local initiateUserId = response.nUserId
- if response.memberList ~= nil then
- for k,v in pairs(response.memberList) do
- if v.dismissState == 1 then
- initiateUserId = v.nUserId
- end
- end
- end
- --如果上次的解散界面还存在 先发送关闭事件
- app.room:dispatchEvent({name = GAME_EVENT.DISSMISS_CLOSE})
-
- local view = require("luaScript.Views.Room.RoomDismissView"):new(initiateUserId,app.room.roomInfo.memberList,response.timeLeft)
- view:setAnchorPoint(cc.p(0.5, 0.5))
- app:showWaitDialog(view)
- -- self.ui:sendMsg(app.room, MJDefine.MJEvent.CallReadyRequest)
- -- if response.memberList ~= nil then --自己发起
- -- for k,v in pairs(response.memberList) do
- -- if v.dismissState == 1 then
- -- local view = MJRoomDismissView:new(v.nUserId);
- -- view:setAnchorPoint(cc.p(0.5, 0.5));
- -- app:showWaitDialog(view);
- -- return
- -- end
- -- end
- -- else --其他收到
- -- local view = MJRoomDismissView:new(response.nUserId);
- -- view:setAnchorPoint(cc.p(0.5, 0.5));
- -- app:showWaitDialog(view);
- -- end
- else --如果不是发起操作则只转发状态给解散界面
- local memberStatus={}
- -- local userId = response.nUserId
- if response.memberList ~= nil then
- for k,v in pairs(response.memberList) do
- table.insert(memberStatus,{userId = v.nUserId, status = v.dismissState})
- -- if v.dismissState == 1 then
- -- initiateUserId = v.nUserId
- -- end
- end
- else
- table.insert(memberStatus,{userId = response.nUserId, status = response.operateType})
- end
- app.room:dispatchEvent({name = GAME_EVENT.DISSMISS_UPDATE_STATUS , memberStatus = memberStatus});
- end
- end
-
- --出牌错误
- function zigong7zRoomView:onOutCardError(data)
- local function runOnOutCardError(onEnd)
- logE("zigong7zRoomView:onOutCardError(), response = ", table.tostring(data.response))
- log("2000000000-MJRoomView - runOnOutCardError")
- --出牌错误主动上报日志
- uploadLogs(GAME_ERROR_TYPE.AUTO)
- -- --隐藏出牌效果
- -- self:setOutCardVisible(false)
- -- --恢复出的那张牌的透明度
- -- local index = self.ui.Items.ImageView_handTempCard.index
- -- self.handCardItem[index]:setOpacity(255)
- -- self.bOutCard = true
- self:requestReconnect();
-
- if onEnd then
- onEnd()
- end
- end
- log("2000000000-MJRoomView - addCallBack(runOnOutCardError)")
- self:addCallBack(runOnOutCardError)
-
- end
-
- function zigong7zRoomView:onQiangGangHu(data)
-
- --[[ -- 庄家uid
- , defVar("nUserId", VT_Int, 0)
- -- 庄家操作类型
- , defVar("mainOpCode", VT_Short, 0)
- --庄家是否需要出牌0不需要 1:需要
- , defVar("IsShouldOutCard", VT_UChar, 0)--]]
- local function runOnQiangGangHu(onEnd)
- -- log("2000000000-MJRoomView - (runOnBankerOutCard)")
- -- logE("name = ", data.name)
- logE("runOnQiangGangHu :"..table.tostring(data.response))
- -- if not data.response.nUserId then
- -- showTooltip("庄家起手操作nUserId is not exist")
- -- end
- -- local viewId = app.room:getViewIdByUserId(data.response.nUserId)
- local opType=data.response.opType
- local opCard= data.response.opCard
-
- local outCardSuccess=MJMessage.OutCardSuccess:new()
-
- -- local operates=VT_Vector(MJMessage.OperateCard)
-
- local operate=MJMessage.OperateCard:new()
- operate.opType=opType
- operate.opCard=opCard
- table.insert(outCardSuccess.operates.Datas,operate)
-
- self._operateComponent:showOperate(outCardSuccess.operates,opCard)
-
-
- -- local operates=data.response.operates
- -- local nSeatId=data.response.nSeatId
-
- -- if self.playerHandCards[viewId] then
- -- self.playerHandCards[viewId]:onGetCard(operates,card)
- -- end
-
-
- -- self.playerHandCards[MJDefine.MyViewId]:showOperate(operates,card)
-
- -- self:updateGameNums()
-
- -- self.direcionView:updateDirection(nSeatId)
-
-
- if onEnd then
- onEnd()
- end
- end
-
- log("2000000000-MJRoomView - addCallBack(runOnQiangGangHu)")
- self:addCallBack(runOnQiangGangHu);
-
- end
-
- function zigong7zRoomView:onOutCard(data)
- local function runOnOutCard(onEnd)
- logE("zigong7zRoomView:runOnOutCard(), response = ", table.tostring(data.response))
- log("2000000000-MJRoomView - runOnOutCard")
-
- -- local viewId = app.room:getViewIdByUserId(data.response.nUserId)
- -- local card= data.response.card
- -- if self.playerHandCards[viewId] then
- -- self.playerHandCards[viewId]:createOutCards(card)
- -- end
-
- if onEnd then
- onEnd()
- end
- end
-
- log("2000000000-MJRoomView - addCallBack(runOnOutCard)")
- self:addCallBack(runOnOutCard)
- end
-
-
- --操作错误
- function zigong7zRoomView:onOperationError(data)
- local function runOnOperationError(onEnd)
- log("2000000000-MJRoomView - (runOnOperationError)")
- --恢复操作面板
- -- self:touchEatOneCardCallBack()
-
- if onEnd then
- onEnd()
- end
- end
- log("2000000000-MJRoomView - addCallBack(runOnOperationError)")
-
- self:addCallBack(runOnOperationError)
- end
-
- function zigong7zRoomView:onWaitOperate(data)
- --等待操作的UID
- local nUserId = data.response.nUserId
- --操作类型
- local opType = data.response.opType
-
- local viewId = app.room:getViewIdByUserId(nUserId)
-
- local waitSprite = nil
- if opType==MJDefine.MJOperateType.OPREATE_PENG then
- waitSprite = cc.Sprite:create("mj/res/ui/zy_fangjian/operate/mj_effect_wait_peng.png")
- elseif opType==MJDefine.MJOperateType.OPREATE_ZHIGANG or opType==MJDefine.MJOperateType.OPREATE_BAGANG or opType==MJDefine.MJOperateType.OPREATE_ANGANG then
- waitSprite = cc.Sprite:create("mj/res/ui/zy_fangjian/operate/mj_effect_wait_gang.png")
- elseif opType==MJDefine.MJOperateType.OPREATE_DIANPAOHU or opType==MJDefine.MJOperateType.OPREATE_QIANG_GANG_HU then
- waitSprite = cc.Sprite:create("mj/res/ui/zy_fangjian/operate/mj_effect_wait_hu.png")
- end
-
- if waitSprite then
- self.ui.Items.Layout_Player:addChild(waitSprite)
- waitSprite:setLocalZOrder(1000)
- waitSprite:setPosition(self.playerHandCards[viewId]:getAnimationPostion())
- table.insert(self.waitOperates,waitSprite)
- end
- end
-
- function zigong7zRoomView:onBroadcastFaststart(data)
- local response = data.response
- local remove = false
- if response.nUserId and response.nStatus then
- if response.nStatus == 3 or response.nStatus>4 then
- remove = true
- end
- end
- if not remove then
- for _,v in ipairs(response.pList) do
- if v.nStatus == 3 or v.nStatus>4 then
- remove = true
- end
- end
- end
- if response.timeOut <=0 then remove = true end
-
- if self._fastRequestView == nil then
- if remove then return "" end
- local requesterId = 0
- for _,v in ipairs(response.pList) do
- if v.nStatus == 1 then
- requesterId = v.nUserId
- end
- end
- if requesterId<=0 then return "" end
- local view = import("mj.luaScript.Views.Room.MJRequestStartView"):new(requesterId)
- view:setAnchorPoint(cc.p(0.5, 0.5))
- view:showItems(response)
- app:showWaitDialog(view)
- self._fastRequestView = view
- else
- if remove then
- local userInfo = app.room.roomInfo.memberList[response.nUserId]
- self._fastRequestView:removeSelf()
- self._fastRequestView = nil
- if userInfo then
- local u = json.decode(userInfo.userInfo)
- local txt = string.format("玩家【%s】拒绝立即开局", u.nickname)
- showTooltip(txt)
- end
- app.room:resetFastInfo()
- --self.toolView:showFastStart(true)
- else
- self._fastRequestView:updateView(response)
- end
- end
- end
-
- --托管状态,服务器下发过操作,客户端隐藏操作界面
- function zigong7zRoomView:onUserPassRequest( data )
- local response = data.response
- if app.room:getMyUserId() == response.nUserId then
- self._operateComponent:hideOperate()
- end
- end
-
- -- 添加延迟回调事件,delay不传默认为0,但是需注意,排在有delay的后面事件,也会相应的跟着一起间隔
- function zigong7zRoomView:addCallBack(callback, delay)
- local callbackInfo = {
- callback = callback,
- delay = delay or 0
- }
-
- -- 将回调放在一起管理
- table.insert(self.callbackQueue, callbackInfo)
- logE(" #self.callbackQueue:".. #self.callbackQueue)
- cc.Director:getInstance():getScheduler():setTimeScale(1.0)
-
- local function runFunc()
- if #self.callbackQueue <= 0 then
- self.callbackRunning = false
- return
- end
- local callbackInfo = self.callbackQueue[1]
- local func = callbackInfo.callback;
- local delay = callbackInfo.delay;
- table.remove(self.callbackQueue,1) -- 执行一个则删除一个回调
- self.callbackRunning = true
-
- local function runCallback (cb)
- cb(function()
- self.callbackRunning = false;
- runFunc(); -- 然后继续执行下一个回调
- end)
- end
-
- -- 如果有delay,那么启动全局定时器
- if delay and delay > 0 then
- local entryId = nil;
- entryId = cc.Director:getInstance():getScheduler():scheduleScriptFunc(function()
- runCallback(func);
- if entryId then
- cc.Director:getInstance():getScheduler():unscheduleScriptEntry(entryId);
- end
- end, delay, false);
- else
- runCallback(func);
- end
- end
- log("self.callbackRunning:",self.callbackRunning)
- if not self.callbackRunning then
- runFunc();
- end
- end
-
- --隐藏提示界面
- function zigong7zRoomView:setGuideView(bVisible)
- self.ui.Items.Layout_tips:setVisible(bVisible)
- if bVisible then
- self.ui.Items.ImageView_3:playClip("tip")
- end
- end
-
- -- 初始化手牌界面
- function zigong7zRoomView:initHandCardNodes()
- if MJDefine.MJRoomPlayerSitConfig[app.room:getMaxPlayerCount()] then
- for k,v in pairs(MJDefine.MJRoomPlayerSitConfig[app.room:getMaxPlayerCount()]) do
- if self.playerHandCards[v] then
- self.playerHandCards[v]:removeFromParent()
- end
- self.playerHandCards[v] = MJHandCardView:new(v,self.desktopType)
- self.ui.Items.Layout_Player:addChild(self.playerHandCards[v],v)
- end
- end
- end
-
- -- 获得手牌界面
- function zigong7zRoomView:getHandCardNodesByViewId(viewId)
- return self.playerHandCards[viewId]
- end
-
- function zigong7zRoomView:updateGameNums()
- -- 更新当前局数
- -- local roomInfo = app.room.roomInfo
- -- local curCount = roomInfo.nGameStartCount or 0
- -- local str = string.format("局数%d/%d", curCount, roomInfo.nTotalGameNum)
- -- self.ui.Items.Text_JuShu:setText(str)
-
- --更新牌数
- -- self.ui.Items.Text_CardNum:setText(roomInfo.nLeaveCardNum or 0)
- -- if curCount>0 then
- -- self.ui.Items.ImageView_CardNum:setVisible(false)
- -- self.ui.Items.Layout_GameInfo:setVisible(true)
- -- else
- -- self.ui.Items.ImageView_CardNum:setVisible(false)
- -- self.ui.Items.Layout_GameInfo:setVisible(false)
- -- end
-
- local roomInfo = app.room.roomInfo
-
- if self.direcionView then
- self.direcionView:updateGameNums()
- end
-
- if self._lastCardTip then
- self._lastCardTip:setLastCardCount(roomInfo.nLeaveCardNum or 0)
- end
-
- if self._roomHeadInfo then
- self._roomHeadInfo:setRoundCount(roomInfo.nGameStartCount, roomInfo.nTotalGameNum)
- end
- end
-
- --更新庄家
- function zigong7zRoomView:updateBanker()
- --隐藏所有的庄家标志
- -- self:setBankerVisible()
- --只显示当前的庄家座位号
- local nBankerSeatId = app.room.roomInfo.nBankSeatId
- local viewId = app.room:getViewIdBySeatId(nBankerSeatId)
- self.playerView:setBankerVisible(viewId,true)
- -- if self.allNodes[viewId] then
- -- self.allNodes[viewId].banker:setVisible(true)
- -- else
- -- showTooltip("庄家椅子号"..nBankerSeatId.."不匹配")
- -- end
- end
-
- --隐藏准备按钮
- function zigong7zRoomView:setBtnSitDownVisible(bVisible)
- -- self.toolView.ui.Items.Button_Ready:setVisible(bVisible)
- --self.ui.Items.Button_Ready:setVisible(bVisible)
- -- self:updateButtonPosition()
- end
-
- --倒牌
- function zigong7zRoomView:showOpenCard()
- local roomInfo = app.room.roomInfo
- for k,v in pairs(roomInfo.memberList) do
- local viewId = app.room:getViewIdByUserId(v.nUserId)
- if viewId and self.playerHandCards[viewId] then
- if viewId==MJDefine.MyViewId then
- -- 我自己则屏蔽触摸事件
- self.playerHandCards[viewId]:removeTouchEvent()
- else
- --倒牌
- self.playerHandCards[viewId]:removeAllHandCards()
- self.playerHandCards[viewId]:createOpenHandCards(v.handCards)
- end
- end
- end
- end
-
- -- 胡标记偏移位置
- function zigong7zRoomView:getHuFlagOffset(viewId)
- local offset = {
- [MJDefine.PlayerViewType.My] = {x = 0, y = 0},
- [MJDefine.PlayerViewType.LeftUp] = {x = 0, y = 0},
- [MJDefine.PlayerViewType.LeftDown] = {x = 0, y = 0},
- [MJDefine.PlayerViewType.Top] = {x = 0, y = 0},
- [MJDefine.PlayerViewType.RightUp] = {x = 0, y = 0},
- [MJDefine.PlayerViewType.RightDown] = {x = 0, y = 0},
- }
-
- if offset[viewId] then
- return offset[viewId].x, offset[viewId].y
- else
- return 0, 0
- end
- end
-
- --显示高亮头像
- function zigong7zRoomView:onHeadShowHighLight(response)
- if not response then return end
- local data = response.response
- if not data then return end
-
- self.playerView:setPlayerHeadLight(data.viewId, true)
- self.playerView:setPlayerClock(data.viewId, true, 30) -- 清空头像闹钟
- end
-
- -- 手势提示
- function zigong7zRoomView:showGuideTip(isShow)
- if self._isReplay then
- self.ui.Items.Layout_tips:setVisible(false)
- return
- end
-
- local isShow = isShow or false
- self.ui.Items.Layout_tips:setVisible(isShow)
- local startPos = cc.p(97, 67)
- if isShow then
- local moveBy = cc.MoveBy:create(0.5, cc.p(0, 80))
- local callfunc = cc.CallFunc:create(function()
- self.ui.Items.ImageView_3:setPosition(startPos)
- end)
-
- local delay = cc.DelayTime:create(1)
- local seq = cc.Sequence:create(moveBy, delay, callfunc)
- local rep = cc.RepeatForever:create(seq)
- self.ui.Items.ImageView_3:runAction(rep)
- else
- self.ui.Items.ImageView_3:stopAllActions()
- self.ui.Items.ImageView_3:setPosition(startPos)
- end
-
- local is3D = self:getDeskopType() == MJDefine.DesktopType.ThreeD
- self.ui.Items.ImageView_1:setVisible(not is3D)
- self.ui.Items.ImageView_2:setVisible(not is3D)
- self.ui.Items.ImageView_3:setVisible(is3D)
- end
-
- -- 获得方位组件
- function zigong7zRoomView:getDirectionView()
- return self.direcionView
- end
-
- -- 获得桌子类型
- function zigong7zRoomView:getDeskopType()
- return self.desktopType
- end
-
- -- 获得玩家面板
- function zigong7zRoomView:getPlayerView()
- return self.playerView
- end
-
- -- 设置正在重连属性
- function zigong7zRoomView:setRunningReconnect(bool)
- self.isRunGameReconnection = bool
- end
-
- -- 获得特效面板
- function zigong7zRoomView:getEffectLayer()
- return self.ui.Items.Layout_Effect
- end
-
- -- 获得萝卜特效面板
- function zigong7zRoomView:getEffectLuoboLayer()
- return self.ui.Items.Layout_Effect_luobo
- end
-
- -- 获得听按钮
- function zigong7zRoomView:getButtonTingInfo()
- return self.ui.Items.Button_Ting_Info
- end
-
- -- 设置操作数据
- function zigong7zRoomView:setOperates(data)
- self.operates = data or {}
- end
-
- -- 获得工具层
- function zigong7zRoomView:getToolView()
- return self.toolView
- end
-
- -- 隐藏操作界面
- function zigong7zRoomView:onHideOperateLayer()
- if not self._operateComponent then
- return
- end
-
- self._operateComponent:hideOperateLayer()
- end
-
- -- 获得操作界面
- function zigong7zRoomView:getOperateComponent()
- return self._operateComponent
- end
-
- -- 萝卜标记偏移位置
- function zigong7zRoomView:getLuoBoOffset(viewId)
- local offset = {
- [MJDefine.PlayerViewType.My] = {x = -500, y = -100},
- [MJDefine.PlayerViewType.LeftUp] = {x = 0, y = -60},
- [MJDefine.PlayerViewType.LeftDown] = {x = 0, y = -60},
- [MJDefine.PlayerViewType.Top] = {x = 100, y = 100},
- [MJDefine.PlayerViewType.RightUp] = {x = 0, y = -60},
- [MJDefine.PlayerViewType.RightDown] = {x = 0, y = -60},
- }
-
- if offset[viewId] then
- return offset[viewId].x, offset[viewId].y
- else
- return 0, 0
- end
- end
-
- -- 获得是否回放
- function zigong7zRoomView:getIsReplay()
- return self._isReplay or false
- end
-
- -- 设置剩余牌显示
- function zigong7zRoomView:setLastCardTipVisible(bool)
- self._lastCardTip:setVisible(bool or false)
- end
-
- -- 隐藏手势提示界面
- function zigong7zRoomView:onHideGuideTip()
- self:showGuideTip(false)
- end
-
- -- 请求重连
- function zigong7zRoomView:requestReconnect()
- if not MJDefine then
- return
- end
-
- if not MJDefine.MJEvent then
- return
- end
-
- if not MJDefine.MJEvent.GetTableInfo then
- return
- end
-
- self.ui:sendMsg(app.room,MJDefine.MJEvent.GetTableInfo)
- end
-
- return zigong7zRoomView
|