|
- local ZPDef = ZPFramework.ZPImport("zp_base.luaScript.ZPDef")
- local ZPRoomView = ZPFramework.ZPFrameworkClassImprot("zp_base.luaScript.Views.Room.ZPRoomView")
- local ZPFuc = ZPFramework.ZPImport("zp_base.luaScript.ZPFunctions")
- local ZPSound = ZPFramework.ZPImport("zp_base.luaScript.ZPSound")
- local XichongRoomCard=ZPFramework.ZPImport("zp_xichong.luaScript.Views.Room.xichongRoomCard")
- local ZPMessage = ZPFramework.ZPImport("zp_base.luaScript.Protocol.ZPMessage")
- local XiChongRoomOperationView=ZPFramework.ZPImport("zp_xichong.luaScript.Views.Room.xichongRoomOperationView")
- local ZPRoomPlayerView=ZPFramework.ZPImport("zp_base.luaScript.Views.Room.ZPRoomPlayerView")
- local ZPRoomToolView=ZPFramework.ZPImport("zp_base.luaScript.Views.Room.ZPRoomToolView")
- local ZPRoomXiaoJuChaPaiView=ZPFramework.ZPImport("zp_base.luaScript.Views.Room.ZPRoomXiaoJuChaPaiView")
- local xichongRoomXiaoJuView=ZPFramework.ZPImport("zp_xichong.luaScript.Views.Room.xichongRoomXiaoJuView")
- local ZPRoomQuickStartView=ZPFramework.ZPImport("zp_base.luaScript.Views.Room.ZPRoomQuickStartView")
- local xichongRoomSettingView=ZPFramework.ZPImport("zp_xichong.luaScript.Views.Room.xichongRoomSettingView")
- local ZPWanFa=ZPFramework.ImportWanFa("luaScript.SubGameDefine.ZiPai.ZPWanFa")
- local XiChongCard = ZPFramework.ZPImport("zp_xichong.luaScript.Views.Room.xichongCard")
- local ZPRoomCountAllView=ZPFramework.ZPImport("zp_base.luaScript.Views.Room.ZPRoomCountAllView")
- local xichongRoomView = class("xichongRoomView", ZPRoomView)
-
-
- --每张牌的点数 用于排序
- local tempCardVlue ={
- [17] = 2, --11
- [18] = 3, --12
- [49] = 4, --31
- [34] = 4, --22
- [20] = 5, --14
- [50] = 5, --32
- [21] = 6, --15
- [36] = 6, --24
- [51] = 6, --33
- [22] = 7, --16
- [82] = 7, --52
- [52] = 7, --34
- [38] = 8, --26
- [53] = 8, --35
- [68] = 8, --44
- [54] = 9, --36
- [84] = 9, --54
- [70] = 10, --46
- [85] = 10, --55
- [86] = 11, --56
- [102] = 12, --66
- }
-
- function xichongRoomView:ctor()
- xichongRoomView.super.ctor(self)
- --self.BackColor = ZPDef.
- self.outCardScale = 1
-
- --一共九列
- self.lieshulist[1] = {5}
- self.lieshulist[2] = {5,6}
- self.lieshulist[3] = {4,5,6}
- self.lieshulist[4] = {4,5,6,7}
- self.lieshulist[5] = {3,4,5,6,7}
- self.lieshulist[6] = {3,4,5,6,7,8}
- self.lieshulist[7] = {2,3,4,5,6,7,8}
- self.lieshulist[8] = {2,3,4,5,6,7,8,9}
- self.lieshulist[9] = {1,2,3,4,5,6,7,8,9}
- self.lieshulist[10] = {1,2,3,4,5,6,7,8,9,10}
-
- self.lieshuBlanklist[1] = {1,2,3,4,6,7,8,9,10}
- self.lieshuBlanklist[2] = {1,2,3,4,7,8,9,10}
- self.lieshuBlanklist[3] = {1,2,3,7,8,9,10}
- self.lieshuBlanklist[4] = {1,2,3,8,9,10}
- self.lieshuBlanklist[5] = {1,2,8,9,10}
- self.lieshuBlanklist[6] = {1,2,9,10}
- self.lieshuBlanklist[7] = {1,9,10}
- self.lieshuBlanklist[8] = {1,10}
- self.lieshuBlanklist[9] = {10}
- self.lieshuBlanklist[10]= {}
-
- --扇形最大列数
- self.lieShuMax = 10
-
- self.isBingPeng = false
-
- self.verticleInterval = 5
-
- --操作牌数组
- self.opOutCard = {}
-
- --操作牌数量数组 用来保存每个方位操作牌的数量
- self.opOutCardNum = {}
-
- local cacheStyle = "gameStyleType"..(ZPDef.GameID or app.gameId)
- self.desktopType = tonumber(loadUserInfo(cacheStyle)) or ZPDef.GameStyleType.JINGDIAN
-
- end
-
- function xichongRoomView:onEnter()
- xichongRoomView.super.onEnter(self)
- end
-
- function xichongRoomView:loadRoomUI()
- local ui = loadUI("zp_xichong/res/ui/ui_fangjian/xichong_ui_fangjian.ui");
- self.ui = ui;
- self:addChild(ui);
- end
-
- function xichongRoomView:loadTextureCache()
- xichongRoomView.super.loadTextureCache(self)
-
- ZPFuc.loadSpriteFromFile("zp_xichong/res/ui/zy_fangjian/cards1/xichong_groupCards_jingdian.plist")
- ZPFuc.loadSpriteFromFile("zp_xichong/res/ui/zy_fangjian/cards1/xichong_handCards_jingdian.plist")
- ZPFuc.loadSpriteFromFile("zp_xichong/res/ui/zy_fangjian/cards1/xichong_handCards_xiandai.plist")
- ZPFuc.loadSpriteFromFile("zp_xichong/res/ui/zy_fangjian/cards1/xichong_outCards_jingdian.plist")
- ZPFuc.loadSpriteFromFile("zp_xichong/res/ui/zy_fangjian/cards1/xichong_outCards_xiandai.plist")
- ZPFuc.loadSpriteFromFile("zp_xichong/res/ui/zy_fangjian/cards1/xichong_samllCards.plist")
-
- end
-
- function xichongRoomView:initMySelfCardPos()
- self.boxPosList4 = {}
- local weaveCardPos4 = self.ui.Items.Layout_StartPos:getPosition()
- local weaveCardPosXianDai4 = self.ui.Items.Layout_StartPos1:getPosition()
-
- for i = 1, self.lieShuMax do
- --矩形3
- if self.desktopType == ZPDef.GameStyleType.JINGDIAN then
- self.boxPosList4[i] = cc.p(weaveCardPosXianDai4.x + 70 * (i - 1),weaveCardPosXianDai4.y)--手牌间隙改这里
- else
- self.boxPosList4[i] = cc.p(weaveCardPos4.x + 93 * (i - 1) - 100,weaveCardPos4.y)--手牌间隙改这里
- end
- end
- end
-
- function xichongRoomView:changeOutCardPos()
- if self.desktopType == ZPDef.GameStyleType.JINGDIAN then
- self.ui.Items.Layout_outCardPoint_1:setPosition(self.JdOutCardPos1)
- self.ui.Items.Layout_outCardPoint_3:setPosition(self.JdOutCardPos3)
- else
- self.ui.Items.Layout_outCardPoint_1:setPosition(self.XDOutCardPos1)
- self.ui.Items.Layout_outCardPoint_3:setPosition(self.XDOutCardPos3)
- end
- end
-
- --初始化操作牌数量
- function xichongRoomView:initOpOutCardNum()
- for k = 1,ZPDef.GameMaxPlayer do
- self.opOutCardNum[k] = 0
- end
- end
-
- function xichongRoomView:initBaseNode()
- --自己的出生坐标,视图是4
- self:initMySelfCardPos()
- --坐标记录
- self.srcOutCardPosList = {}
- self.JdOutCardPos1 = self.ui.Items.Layout_JD_outCardPoint_1:getPosition()
- self.JdOutCardPos3 = self.ui.Items.Layout_JD_outCardPoint_3:getPosition()
- self.XDOutCardPos1 = self.ui.Items.Layout_outCardPoint_1:getPosition()
- self.XDOutCardPos3 = self.ui.Items.Layout_outCardPoint_3:getPosition()
- self.scorePosList = {}
- for k = 1,ZPDef.GameMaxPlayer do
- local name = string.format("Layout_outCardPoint_%d",k)
- local imgName = string.format("ImageView_outCardImg_%d",k)
- self.ui.Items[name]:setScale(self.outCardScale)
- self.srcOutCardPosList[k] = self.ui.Items[imgName]:getPosition()
- --操作分数坐标
- --name = string.format("TextBMFont_Score_%d",k)
- --self.scorePosList[k] = self.ui.Items[name]:getPosition()
- end
-
- self:initOpOutCardNum()
-
- for k = 1,ZPDef.GameMaxPlayer do
- local name = string.format("Layout_DiPai_%d",k)
- if self.ui.Items[name] then
- self.ui.Items[name]:setVisible(false)
- end
- end
-
- for k = 1,ZPDef.GameMaxPlayer do
- local name = string.format("Layout_DiPai_JD_%d",k)
- if self.ui.Items[name] then
- self.ui.Items[name]:setVisible(false)
- end
- end
-
- --初始化扎鸟
- self.PlayerView:initPlayerPiaoFenByRule()
-
- local timestr = os.date("%y-%m-%d %H:%M:%S")
- self.ui.Items.Text_systemTime:setText(timestr)
- --定时器
- if not self.Time then
- self.Time = cc.Director:getInstance():getScheduler():scheduleScriptFunc(function()
- local timestr = os.date("%y-%m-%d %H:%M:%S")
- self.ui.Items.Text_systemTime:setText(timestr)--(getTimeString())
- end,1.0,false)
- end
- end
-
-
-
- function xichongRoomView:initGameButton()
- --出牌按钮
- self.ui.Items.Button_OutCard:registerClick(function()
- local k = self.ui.Items.ImageView_handTempCard.cIdx
- local value = self.ui.Items.ImageView_handTempCard.value
- --send sender
- self.isGodHand = true;
- self.handCardItem[k]:setOpacity(0)
- self:setColorWhite()
- self:sendOutCard(value)
- self.bOutCard = false
- end)
- --提牌按钮
- --[[ self.ui.Items.Button_tipai:registerClick(function()
- self:requestFlashHandCard()
- end)
- --暂时屏蔽提牌功能
- self:showTiPaiBtn(true)--]]
-
- --点击空白
- self.ui.Items.Layout_Touch:registerClick(nil,function()
-
- -- local list = {
- -- ZPDef.BaoOpCode.BAO_ZHAO_CHI,
- -- ZPDef.BaoOpCode.BAO_TUI,
- -- ZPDef.BaoOpCode.BAO_HOU_DUI,
- -- ZPDef.BaoOpCode.BAO_PO_DUI,
- -- ZPDef.BaoOpCode.BAO_CHENG_KAN,
- -- ZPDef.BaoOpCode.BAO_SI_ZHANG,
- -- ZPDef.BaoOpCode.DIAO_CHENG_KAN,
- -- ZPDef.BaoOpCode.DIAO_CHENG_SIZHANG,
- -- }
- -- for i = 1, 4 do
- -- self.PlayerView:playPaiXingAniList(i, list, 0x31, function ()
-
- -- end)
- -- end
-
- -- for i = 1, 4 do
- -- self.PlayerView:playChiChengSiZhang(i, 0x31, true)
- -- end
-
- --[[ for k,v in ipairs(self.handCardItem or {}) do
- v:removeFromParent()
- end
-
- self:runDelay(0.5, function ()
- local uid = app.user.loginInfo.uid
- app.room.cards = {}
- app.room.cards[uid] = {
- {102, 17},
- {86, 18},
- {70, 34, 49},
- {84, 50, 50, 20},
- {68, 53, 51},
- {52, 52, 22, 22},
- {52, 52, 22, 22},
- }
-
- self:createCard(true, uid, nil)
- end)
- --]]
-
-
- --local list = {102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102}
-
- --[[ for k,v in pairs(list) do
- self:playQiPaiAni(false,v,1,nil,false)
- self:playQiPaiAni(false,v,2,nil,false)
- self:playQiPaiAni(false,v,3,nil,false)
- self:playQiPaiAni(false,v,4,nil,false)
- end--]]
-
-
- --[[ self.PlayerView:setPClockVisible(4,true)
-
- self.PlayerView:setOperatorTipVisible(true)
-
- self:setOutCardVisible(true,1,102,false,nil,true)--]]
-
- --隐藏工具界面 详情
- if self.toolView.ui.Items.ImageView_Rule_bg then
- self.toolView.ui.Items.ImageView_Rule_bg:setVisible(false)
- end
- self.ui.Items.Layout_Rule:setVisible(false)
- self.ui.Items.Button_wanfa:setVisible(true)
- end)
- -- 玩法
- self.ui.Items.Button_wanfa:registerClick(function ()
- playBtnEffect()
- self.ui.Items.Layout_Rule:setVisible(not self.ui.Items.Layout_Rule:isVisible())
- self.ui.Items.Button_wanfa:setVisible(false)
- end)
- if app.room.roomInfo.nGameStartCount and app.room.roomInfo.nGameStartCount > 0 then
- self.ui.Items.Layout_Rule:setVisible(false)
- else
- self.ui.Items.Layout_Rule:setVisible(true)
- self.ui.Items.Button_wanfa:setVisible(false)
- self.ui.Items.Layout_Rule:runAction(cc.Sequence:create(
- cc.DelayTime:create(2),
- cc.CallFunc:create(function()
- self.ui.Items.Layout_Rule:setVisible(false)
- self.ui.Items.Button_wanfa:setVisible(true)
- end)))
- end
- self.ui.Items.Text_Rule:setVisible(false)
- local bar = self.ui.Items.ListView:getVBar()
- bar:setVisible(false)
- end
-
-
- function xichongRoomView:initToolLayer()
- --人物头像层
- self.PlayerView = ZPRoomPlayerView:new()
- self.ui.Items.Layout_Player:addChild(self.PlayerView)
-
- --操作界面(吃碰杠胡)
- self.operationView = XiChongRoomOperationView:new()
- --self.operationView:setVisible(false)
- self.ui.Items.Layout_Tool:addChild(self.operationView)
-
- --加载工具层
- self.toolView = ZPRoomToolView:new()
- self.ui.Items.Layout_Tool:addChild(self.toolView)
-
-
- -- 小局查牌界面
- -- 小局查牌界面
- self.xiaojuChaPaiView = ZPRoomXiaoJuChaPaiView:new(self.desktopType)
- self.xiaojuChaPaiView:setVisible(false)
- --亮牌界面确定
- local function cb()
- --显示小局结算
- if self.xiaojuView then
- self.xiaojuView:setVisible(true)
- end
- end
- self.xiaojuChaPaiView:setQueDingCallBack(cb)
- self.xiaojuChaPaiView:showHuCardCallBack(handler(self , self.onShowHuCard))
- self:addChild(self.xiaojuChaPaiView)
- end
-
- function xichongRoomView:onChangeTable(data)
- local idx = data.idx
- self:setTableImg(idx)
-
- if self.fapaiqiLeftCard and #self.fapaiqiLeftCard > 0 then
- for i = 1, #self.fapaiqiLeftCard do
- if self.fapaiqiLeftCard[i] then
- self.fapaiqiLeftCard[i]:removeFromParent()
- self.fapaiqiLeftCard[i] = nil
- end
- end
- end
-
- self.fapaiqiLeftCard = nil
- if self.leftNum and self.leftNum > 0 then
- self:setCircleCardLeftPanelView(true,nil,self.leftNum)
- end
- end
-
- function xichongRoomView:setTableImg(idx)
-
- if idx and (idx == 1 or idx == 4) then
- self.colorType = ZPDef.BackType.Green
- else
- self.colorType = ZPDef.BackType.Red
- end
-
- local name = string.format("zp_xichong/res/ui/zy_fangjian/bg/fangjian_di_%d.jpg",idx)
- --桌布
- self.ui.Items.ImageView_bg:loadTexture(name)
-
- local cacheGameBgPic = "gameBgPicture"..(ZPDef.GameID or app.gameId)
- saveUserInfo(cacheGameBgPic,idx)
- end
-
-
- --改变外发光颜色
- function xichongRoomView:changeOutCardLight(isMoPai)
- for i = 1 ,ZPDef.GameMaxPlayer do
- local outCardLightName = string.format("ImageView_outCardLight_%d",i)
- local light = self.ui.Items[outCardLightName]
- local fileName
- if self.desktopType == ZPDef.GameStyleType.JINGDIAN then
- fileName = ZPDef.LightType.JINGDIAN
- else
- fileName = ZPDef.LightType.XIANDAI
- end
- light:loadTexture(fileName)
- --light:setVisible(false)
- end
- end
-
- function xichongRoomView:setFaPaiQiPanelView(bVisible,viewId,leftNum)
- if leftNum then
- if not self.fapaiqiLeftCard then
- self.fapaiqiLeftCard = {}
- local bgsize = self.ui.Items.ImageView_card_bg:getContentSize()
- for i = 1,tonumber(leftNum) do ---只显示28张底牌牌面,太多了不太好看
- self.fapaiqiLeftCard[i] = cc.ImageView:createNode()
- if self.colorType == ZPDef.BackType.Red then
- self.fapaiqiLeftCard[i]:loadTexture("zp_xichong/res/ui/zy_fangjian/cardBack/xichong_cardBack_paidun_red.png")
- else
- self.fapaiqiLeftCard[i]:loadTexture("zp_xichong/res/ui/zy_fangjian/cardBack/xichong_cardBack_paidun_green.png")
- end
-
- self.ui.Items.ImageView_card_bg:addChild(self.fapaiqiLeftCard[i])
- self.fapaiqiLeftCard[i]:setPosition(cc.p(bgsize.width/2,bgsize.height/2+i))
- if i > 28 then
- self.fapaiqiLeftCard[i]:setVisible(false)
- end
- end
- else
- for i = #self.fapaiqiLeftCard,leftNum+1,-1 do
- if self.fapaiqiLeftCard[i] then
- self.fapaiqiLeftCard[i]:removeFromParent()
- self.fapaiqiLeftCard[i] = nil
- end
- end
- end
- self.ui.Items.TextBMFont_leftCardNum:setText(tostring(self.leftNum))
- end
- end
-
- --更新头家家
- function xichongRoomView:updateBanker()
- --隐藏所有的庄家标志
- self.PlayerView:setBankerVisible()
- self.PlayerView:hideTouJia()
- --只显示当前的庄家座位号
- local nBankerSeatId = app.room.roomInfo.nBankSeatId
- local viewId = app.room:getViewIdBySeatId(nBankerSeatId)
- if self.PlayerView:setPlayerTouJiaVisible(viewId,true) then
-
- else
- showTooltip("头家椅子号"..nBankerSeatId.."不匹配")
- end
- end
-
- --更新当
- function xichongRoomView:updateBankerDang()
- --隐藏所有的庄家标志
- self.PlayerView:setBankerVisible()
- self.PlayerView:hideTouJia()
- --只显示当前的庄家座位号
- local nBankerSeatId = app.room.roomInfo.nBankSeatId
- local viewId = app.room:getViewIdBySeatId(nBankerSeatId)
- if self.PlayerView:setPlayerDangVisible(viewId,true) then
-
- else
- showTooltip("头家椅子号"..nBankerSeatId.."不匹配")
- end
- end
-
- --显示小家
- function xichongRoomView:updateXiaojia()
- self.PlayerView:hideXiaoJia()
- --只显示当前的庄家座位号
- local nBankerSeatId = app.room.roomInfo.xiaoSeatId
- local viewId = app.room:getViewIdBySeatId(nBankerSeatId)
- self.PlayerView:setPlayerXiaoJiaVisible(viewId,true)
- end
-
-
- --隐藏剩余牌层
- function xichongRoomView:setCircleCardLeftPanelView(bVisible,viewId,leftNum)
- self.leftNum = leftNum
- self.ui.Items.Layout_fapaiqi:setVisible(true)
- self:setFaPaiQiPanelView(bVisible,viewId,leftNum)
- if viewId and not self.isRecordStart then
- self.PlayerView:setPClockVisible(viewId,true)
- end
- end
-
-
- --更新房间基础数据
- function xichongRoomView:updateRoomBaseData()
- --初始化背景
- local ZiPaigameBgPicture = "gameBgPicture"..(ZPDef.GameID or app.gameId)
- local idx2 = tonumber(loadUserInfo(ZiPaigameBgPicture)) or 1
- self:setTableImg(idx2)
-
- local roomInfo = app.room.roomInfo;
-
- -- 房间号
- self.ui.Items.Text_roomNum:setText(tostring(roomInfo.nShowTableId));
-
- --局数
- self:updateGameNums()
-
- --房间玩法
- --local ruleAll = ZPFuc.getRuleInfo();
- --self.toolView.ui.Items.Text_Rule:setText(ruleAll)
- self:setRoomInfo()
-
- self:onUserReadyResponse()
-
- for i = 1,ZPDef.GameMaxPlayer do
- self.PlayerView:updatePlayerInfo(i)
- end
-
- -- 是否显示邀请好友
- self:setWetChatVisible(table.nums(app.room.roomInfo.memberList) < ZPFuc.getCreateRoomPlayerNum())
- self.toolView:showFastStart(true)
-
- if isReviewVersion() then
- self:setWetChatVisible(false);
- end
-
- -- 更新玩家手牌列表时,按需显示
- if app.room.roomInfo.nGameStartCount > 0 then
- self:setWetChatVisible(false)
- end
- if app.room.roomInfo.nGameStartCount == 0 then
- self.ui.Items.Button_tipai:setVisible(false)
- end
- end
-
- function xichongRoomView:onGameReconnection()
- --logE("ZiPai当前版本号:"..ZPFuc.getZPCurVersion())
- --更新房间基础数据
- self:updateRoomBaseData()
-
- local roomInfo = app.room.roomInfo;
-
- --self:updateAllGpsInfo()
- --self:checkGpsDistance(nil,roomInfo.nGameStartCount==0)
- --self:checkMyGpsNeedUpdate();
-
- self.PlayerView:setPlayerPosByChangeTable(self.desktopType)
-
- self:changeOutCardPos()
- --断线重连
- if roomInfo.nGameStartCount > 0 then
- local function runOnGameReconnection(onEnd)
-
- self.ui.Items.Button_tipai:setVisible(false)
- local roomInfo = app.room.roomInfo;
- local isBiHu = roomInfo.isBiHu
- self.ui.Items.ImageView_handTempCard:stopAllActions()
- --显示庄家
- self:updateBankerDang()
- self:showOwner()
- self:updateXiaojia()
- local myUserID = app.room:getMyRecordUserId()
- --解散状态
- local isDismiss = false
- local uid = 0
- for k,v in pairs(roomInfo.arrayTableInfo) do
- local viewId = app.room:getViewIdByUserId(k)
- local nOffLineState = v.nOnlineStatus
- --显示离线
- self.PlayerView:setPlayerOffLine(nOffLineState ~= 1,viewId)
-
- local viewId = app.room:getViewIdByUserId(k)
- --记录玩家解散状态 0:初始状态, 1:发起解散 2: 同意解散 3:不同意解散
- app.room.dismissInfo[k] = v.nDisbandStatus;
- app.room.roomInfo.memberList[k].nDisbandStatus = v.nDisbandStatus;
- --有人发起解散时才显示解散界面
- if v.nDisbandStatus == 1 then
- isDismiss = true
- uid = k
- end
-
- --必碰
- if viewId == self:getMeViewId() and v.isBiPeng == 1 then
- self.isBingPeng = true
- end
- end
- --self.PlayerView:setXiaoJiaFlagVis(true)
-
- local actualNum = app.room:getActualPlayerNum()
-
- --有人发起解散时才显示解散界面
- if isDismiss then
- app.room.roomInfo.nDismissStateTime = roomInfo.nDismissStateTime;
- app.room.roomInfo.nDismissToTalTime = roomInfo.nDismissToTalTime;
-
- local view = require("luaScript.Views.Room.RoomDismissView"):new(uid,app.room.roomInfo.memberList,roomInfo.nDismissStateTime)
- view:setAnchorPoint(cc.p(0.5, 0.5));
- app:showWaitDialog(view);
- end
-
- --如果一局结束,玩家点了准备,不再显示牌信息
- if ZPDef.ReconnectState.GAME_STATUS_ROUND_OVER == roomInfo.nStatus and roomInfo.memberList[myUserID].nPlayerFlag == 1
- or ZPDef.ReconnectState.GAME_STATUS_GAME_OVER == roomInfo.nStatus and roomInfo.memberList[myUserID].nPlayerFlag == 1
- then --游戏为停止或开始状态
- self:onUserReadyResponse()
- self.ui.Items.Button_tipai:setVisible(false)
- if onEnd then
- onEnd()
- end
- return
- end
-
- --胡牌类型
- local huType = ZPDef.ReconnectHuType.NO_HU
-
- --状态显示
- if ZPDef.ReconnectState.GAME_STATUS_ROUND_OVER == roomInfo.nStatus
- or ZPDef.ReconnectState.GAME_STATUS_GAME_OVER == roomInfo.nStatus then --游戏为停止或开始状态
-
- for hi,hv in pairs(app.room.roomInfo.hupaiInfo) do
- if hv.huPaiUid > -1 then
- app.room.roomInfo.fourNormolNum = hv.fourNormolNum
- app.room.roomInfo.fourHongNum = hv.fourHongNum
- app.room.roomInfo.threeHongNum = hv.threeHongNum
- end
-
- if hv.weiGuiUid > -1 then
- app.room.roomInfo.weiGuiUid = hv.weiGuiUid
- end
- end
-
- self.ui.Items.Button_tipai:setVisible(false)
- --显示小局结算亮牌画布
- self:setLiangPaiVisible(true)
- --显示底牌
- self.xiaojuChaPaiView:showDiPai()
- --亮手牌
- huType = self.xiaojuChaPaiView:liangShouPai(true)
-
- local function nextCallBackFun()
- self:resetGameData()
- end
-
- self.xiaojuView = xichongRoomXiaoJuView:new(nextCallBackFun,true)
-
- self:addChild(self.xiaojuView)
-
- --播放黄庄动画
- if roomInfo.stopFlag == ZPDef.XiaoJuEndType.STOP_FLAG_HUANG_ZHUANG then
- local userInfo=app.room:getUserInfo(app.user.loginInfo.uid)
- if userInfo then
- --ZPSound.PlayHuangZhuang(userInfo.sex)
- end
- self.xiaojuChaPaiView:PlayHuangZhuangAni(false)
- end
-
- self.xiaojuView:setVisible(true)
-
- self:setBtnSitDownVisible(false)
- end
-
- local diPaiMax = table.nums(roomInfo.dipaiList)
- for k,v in pairs(roomInfo.arrayTableInfo) do
- local viewId = app.room:getViewIdByUserId(k)
- local nScore = v.nTotalMoney or 0
-
- --玩家分数
- self.PlayerView:setPlayerScore(viewId,nScore)
- --扎鸟
- --self.PlayerView:setPlayerPiaoFen(viewId,v.nZhaBirdScore)
-
- --恢复手牌
- if k == myUserID then
- self:createCard(false,myUserID,nil)
- end
-
-
- --恢复爆牌动画
- if v.nBaoPaiStatus == 2 then
- self.PlayerView:setPlayerPiaoVisible(viewId,true)
- end
-
-
-
- local hushu = 0
- --恢复组合牌
- for key,value in pairs(v.tableWeaveCard) do
- local list,operationType = ZPFuc.getZPCardList(value.card,value.type)
- local isShow = true
- local card = value.opcard
- local optype = value.type
- hushu = hushu + value.hushu
-
- list = value.card
-
- --上面吃或不吃不要用if else因为还可能都不成立
- local isMoPaiOrId = value.seatId
- --创建桌面操作牌
- self:recontactDoOperation(operationType,viewId,list,optype)
- end
- self.tableHuXiList[viewId] = hushu
- --self.PlayerView:setPlayerHuXi(viewId,hushu)
- --self.PlayerView:setPlayerHuXi("油:"..tostring(hushu))
- if viewId ~= self:getMeViewId() then
- self.PlayerView:setLeftCardNum(viewId,true,tonumber(v.leftCardNum))
- end
-
- end
- --self:getLocalHuShu()
-
- for i = 1, 4 do
- local tt = self.qiPaiList[i]
- end
-
- --恢复弃牌
- for k,v in pairs(roomInfo.arrayTableInfo) do
- local viewId = app.room:getViewIdByUserId(v.nUserId)
- local qiList = self.qiPaiList[viewId]
- for key,value in pairs(v.desertedArea) do
- local card = value.card
- local maxQi = table.nums(qiList)
- if maxQi > 0 then
- --染色弃牌
- local isInQiList = false
- for qiK,qiCard in pairs(qiList) do
- if qiCard == value.card then
- --染色弃牌
- self:playQiPaiAni(false,value.card,viewId,nil,true)
- isInQiList = true
- qiList[qiK] = nil
- break
- end
- end
- if not isInQiList then
- self:playQiPaiAni(false,value.card,viewId,nil,false)
- end
- else
- --普通弃牌
- self:playQiPaiAni(false,value.card,viewId,nil,false)
- end
- end
-
- end
-
- --显示玩家剩余手牌
- if app.room.roomInfo.offLineInfo and next(app.room.roomInfo.offLineInfo) ~= nil then
- for i,v in pairs(app.room.roomInfo.offLineInfo) do
- if v.extInfo then
- local extIf = json.decode(v.extInfo)
- if extIf.HuShu and v.nUserId then
- local viewId = app.room:getViewIdByUserId(v.nUserId)
- self.PlayerView:setPlayerTuoShu(viewId,extIf.HuShu)
- end
- end
- end
- end
-
- local nSeatId = roomInfo.showCardSeatId
- local viewId = app.room:getViewIdBySeatId(nSeatId)
- --判断当前操作玩家是否是自己
- if viewId == self:getMeViewId() then
- --吃后巴后油牌
- if table.nums(app.room.roomInfo.firstOutCard or {}) > 0 then
- self:lockMyHandCards()
- else
- if table.nums(app.room.roomInfo.disCard or {}) > 0 and (ZPDef.ReconnectState.GAME_STATUS_WAIT_OUT_CARDS == roomInfo.nStatus or ZPDef.ReconnectState.GAME_STATUS_WAIT_BANKER_OUTCARD == roomInfo.nStatus) then
- self:lockYouPai(app.room.roomInfo.disCard)
- end
- end
- end
-
- if roomInfo.baoType and roomInfo.baoType > 0 then
- self.operationView:showBaoPaiOpView(true,roomInfo.baoType)
- self:setCircleCardLeftPanelView(true,viewId,diPaiMax)
- end
-
- --self:setTotalTuoNum(app.room.roomInfo.totalTuoNum)
- local myViewId = self:getMeViewId()
- self.PlayerView:setPlayerTuoShu(myViewId,app.room.roomInfo.totalTuoNum)
-
- --状态显示
- if ZPDef.ReconnectState.GAME_STATUS_ROUND_OVER == roomInfo.nStatus
- or ZPDef.ReconnectState.GAME_STATUS_GAME_OVER == roomInfo.nStatus then --游戏为停止或开始状态
- self.PlayerView:hideLeftCard()
- --所有的暗偎默认亮起一张
- --self:showLastAnWeiPai()
- --点炮显示
- --self:showPaoImage()
- local winerViewId = -1
- for hi,hv in pairs(app.room.roomInfo.hupaiInfo) do
- if hv.huPaiUid > -1 then
- winerViewId = app.room:getViewIdByUserId(hv.huPaiUid)
- app.room.roomInfo.huType = hv.huTypes
- self:playHuEffect(winerViewId,nil,true)
- --self:setLayoutScoreTipVisible(true,playerList,false,nil,true)
- end
- end
-
- local nCard = roomInfo.showCard
- if nCard > 0 and roomInfo.stopFlag == ZPDef.XiaoJuEndType.STOP_FLAG_WEIGUI then
- self:setOutCardVisible(true,viewId,nCard,false,nil,true)
- end
-
- --显示坨数
- for k,v in pairs(roomInfo.arrayTableInfo) do
- local viewId = app.room:getViewIdByUserId(v.nUserId)
- local tuoNum = v.totalTuoNum
- self.PlayerView:setPlayerTuoShu(viewId,tuoNum)
- self.PlayerView:setHuCardVisible(viewId, viewId == winerViewId, app.room.roomInfo.huCard)
- end
- elseif ZPDef.ReconnectState.GAME_STATUS_WAIT_OP_TIAN_HU == roomInfo.nStatus
- or ZPDef.ReconnectState.GAME_STATUS_WAIT_OP_AFTER_TURN_OVER == roomInfo.nStatus
- or ZPDef.ReconnectState.GAME_STATUS_WAIT_OP_TOU == roomInfo.nStatus
- or ZPDef.ReconnectState.GAME_STATUS_WAIT_OP_AFTER_OUTCARD == roomInfo.nStatus then -- 天胡,翻牌后等待玩家操作中,出牌后等待玩家操作中
- local nSeatId = roomInfo.showCardSeatId
- local nCard = roomInfo.showCard
- local operateCode = roomInfo.mainOpCode
- local viewId = app.room:getViewIdBySeatId(nSeatId)
- local nUserId = app.room:getUserIdBySeatId(nSeatId)
- local opCardList = {}
-
- local curOpeateid = roomInfo.curOpreateID --当前操作ID
- local curOpView = app.room:getViewIdBySeatId(curOpeateid)
-
- --记录真实数据
- self.outCard = nCard
- self.EatOperationCode = operateCode
- self.moPaiViewId = viewId
-
-
- if ZPDef.ReconnectState.GAME_STATUS_WAIT_OP_TIAN_HU == roomInfo.nStatus then --等待天胡
-
- if nCard > 0 then
- self:setOutCardVisible(true,viewId,nCard,false,nil,true) --十八烂的时候要显示庄家出的那张牌
- end
-
- local curOpView = app.room:getViewIdBySeatId(curOpeateid)
- local opCard = 0
-
- --操作码
- if roomInfo.startOpList and #roomInfo.startOpList.ToucardList > 0 then
- opCard = roomInfo.startOpList.ToucardList[1]
- end
-
- if operateCode > 0 and roomInfo.isSubmitOp == 0 then
- self.outCard = 0
- self:showOpeation(operateCode,opCard, nil, isBiHu) --天胡没有过
- end
-
- elseif ZPDef.ReconnectState.GAME_STATUS_WAIT_OP_TOU == roomInfo.nStatus then --玩家进牌状态
- local opCard = 0
- --操作码
- if roomInfo.startOpList and #roomInfo.startOpList.ToucardList > 0 then
- opCard = roomInfo.startOpList.ToucardList[1]
- end
-
- if operateCode > 0 then
- self.outCard = 0
- self:showOpeation(operateCode,opCard, nil, isBiHu) --天胡没有过
- end
- elseif ZPDef.ReconnectState.GAME_STATUS_WAIT_OP_AFTER_OUTCARD == roomInfo.nStatus then
- --是否已经操作过 0表示没有,非0表示已经提交了操作
-
- if operateCode ~= 0 and roomInfo.isSubmitOp == 0 then
- opCardList = {}
- for k,v in ipairs(roomInfo.chiPaiList or {}) do
- table.insert(opCardList,v)
- end
- self:showOpeation(operateCode,nCard,opCardList, isBiHu)
- self:setOutCardVisible(true,viewId,nCard,false,nil,true)
- elseif roomInfo.isSubmitOp == 1 or roomInfo.isSubmitOp == 0 or roomInfo.isSubmitOp == 2 then
- self:setOutCardVisible(true,viewId,nCard,false,nil,true)
- --playVoiceCardValue(nCard,nUserId)
- --elseif roomInfo.isSubmitOp == 2 then --比牌不显示出牌或者摸牌
- --self.operationView:touchEatOneCardCallBack(true)
- end
- elseif ZPDef.ReconnectState.GAME_STATUS_WAIT_OP_AFTER_TURN_OVER == roomInfo.nStatus then
- if roomInfo.isSubmitOp == 1 then
- operateCode = 0
- self:playMoPaiAni(diPaiMax,nCard,viewId,operateCode,roomInfo.showCardFlag,nil,true, nil, nil, isBiHu)
- elseif roomInfo.isSubmitOp == 0 then --自己摸牌翻牌
- opCardList = {}
- for k,v in ipairs(roomInfo.chiPaiList or {}) do
- table.insert(opCardList,v)
- end
-
- self:playMoPaiAni(diPaiMax,nCard,viewId,operateCode,roomInfo.showCardFlag,nil,true,opCardList, nil, isBiHu)
- elseif roomInfo.isSubmitOp == 2 then --比牌不显示出牌或者摸牌
- operateCode = 0
- self:playMoPaiAni(diPaiMax,nCard,viewId,operateCode,roomInfo.showCardFlag,nil,true, nil, nil, isBiHu)
- self.operationView:touchEatOneCardCallBack(true)
- end
- end
-
- --显示剩余牌
- --如果有出的牌,则闹钟显示在该玩家,如果没有则显示在等待操作的玩家
- self:setCircleCardLeftPanelView(true,viewId,diPaiMax)
- elseif ZPDef.ReconnectState.GAME_STATUS_WAIT_OUT_CARDS == roomInfo.nStatus or ZPDef.ReconnectState.GAME_STATUS_WAIT_BANKER_OUTCARD == roomInfo.nStatus then --等待玩家出牌中
- --显示底牌
- local viewId = app.room:getViewIdBySeatId(roomInfo.showCardSeatId)
- --显示剩余牌
- self:setCircleCardLeftPanelView(true,viewId,diPaiMax)
- if viewId == self:getMeViewId() then
- self:setGuideView(true)
- self.bOutCard = true
- end
- elseif ZPDef.ReconnectState.GAME_STATUS_AUTO_DISCSRD == roomInfo.nStatus then --玩家自动弃牌中
- local nSeatId = roomInfo.showCardSeatId
- local nCard = roomInfo.disCard
- local viewId = app.room:getViewIdBySeatId(nSeatId)
- --显示剩余牌
- self:setCircleCardLeftPanelView(true,viewId,diPaiMax)
- --弃牌
- self:playQiPaiAni(true,nCard,viewId,nil)
- elseif ZPDef.ReconnectState.GAME_STATUS_WAIT_OP_BAO == roomInfo.nStatus then --等待玩家爆牌中
- --爆牌中
- local viewId = app.room:getViewIdBySeatId(roomInfo.showCardSeatId)
- self:setCircleCardLeftPanelView(true,viewId,84)
- for k,v in pairs(roomInfo.arrayTableInfo) do
- local viewId = app.room:getViewIdByUserId(k)
- local nBankerSeatId = app.room.roomInfo.nBankSeatId
- local toujiaviewId = app.room:getViewIdBySeatId(nBankerSeatId)
-
- --等待爆牌状态
- if v.nBaoPaiStatus == 1 and k == app.user.loginInfo.uid then
- self:showPiao(app.user.loginInfo.uid)
- elseif v.nBaoPaiStatus == 2 and k == app.user.loginInfo.uid then
- self.PlayerView:setPlayerPiaoVisible(viewId,true)
- end
-
- if k ~= app.user.loginInfo.uid then
- if v.nBaoPaiStatus == 1 then
- self.PlayerView:setPlayerDingPiaoVisible(viewId,true)
- elseif v.nBaoPaiStatus == 2 then
- self.PlayerView:setPlayerPiaoVisible(viewId,true)
- self.PlayerView:setPlayerDingPiaoVisible(viewId,false)
- end
- end
- end
-
- end
-
- if onEnd then
- onEnd()
- end
- end
- log("2000000000-ZPRoomView - self:addCallBack(runOnGameReconnection)" )
- self:addCallBack(runOnGameReconnection)
-
- else
- --未开局正常坐下这里会进来
- for k,v in pairs(roomInfo.memberList) do
- local viewId = app.room:getViewIdByUserId(k)
- local nOffLineState = v.nOnlineStatus or 1
- --显示离线
- self.PlayerView:setPlayerOffLine(nOffLineState ~= 1,viewId)
- end
-
- --未开局重连坐下
- for k,v in pairs(roomInfo.arrayTableInfo) do
- local viewId = app.room:getViewIdByUserId(k)
- local nOffLineState = v.nOnlineStatus
- --显示离线
- self.PlayerView:setPlayerOffLine(nOffLineState ~= 1,viewId)
- end
-
- self.ui.Items.Layout_fapaiqi:setVisible(false)
- end
- end
-
- --断线重连
- function xichongRoomView:recontactDoOperation(operationType,viewId,list,optype)
- if optype == ZPDef.SendCardType.TOU_THREE_SAME or optype == ZPDef.SendCardType.CHI_PAI_PENG then
- local card = list[1]
- if self.desktopType == ZPDef.GameStyleType.JINGDIAN then
- local templist = {card,card,card}
- self:createOpOutcard(viewId,templist,3)
- else
- local templist = {card,card,card}
- self:createPengView(viewId,templist,false)
- end
-
- elseif optype == ZPDef.SendCardType.BA_FOUR_SAME then
- local card = list[1]
- if self.desktopType == ZPDef.GameStyleType.JINGDIAN then
- local templist = {card,card,card,card}
- self:createOpOutcard(viewId,templist,4)
- else
- local templist = {card,card,card,card}
- self:createPengView(viewId,templist,false)
- end
- elseif optype == ZPDef.SendCardType.TWO_SUM_CHI then
- local card = list[1]
- if self.desktopType == ZPDef.GameStyleType.JINGDIAN then
-
- self:createOpOutcard(viewId,list,2)
- else
- self:createEatView(card,viewId,list,false,nil,nil)
- end
-
- end
- end
-
-
- -- 立即开始
- function xichongRoomView:onQuickStartResponse(event)
- log("2000000000-ZPRoomView - runnQuickStartResponse()" )
- if not event or not event.response then
- return
- end
- logE("onQuickStartResponse() response = ", event.response)
- local response = event.response
- --app.room.roomInfo.nShowDismiss = true
- local isStart = true
- local selectNums = table.nums(app.room.quickStartInfo)
-
- for i,v in pairs(app.room.quickStartInfo) do
- if v > 1 then
- --有人投过票
- isStart = false
- end
- end
-
- if tolua.isnull(self.quickStartView) then
- for i,v in pairs(app.room.quickStartInfo) do
- if v == 1 then
- self.quickStartView = ZPRoomQuickStartView:new(i);
- self.quickStartView:setAnchorPoint(cc.p(0.5, 0.5));
- app:showWaitDialog(self.quickStartView);
- log("onQuickStartResponse() v = 1 "..i )
- return
- else
- local startuid = 0
- for i,v in pairs(app.room.quickStartInfo) do
- if v == 1 then
- startuid = i
- end
- end
- self.quickStartView = ZPRoomQuickStartView:new(startuid);
- self.quickStartView:setAnchorPoint(cc.p(0.5, 0.5));
- app:showWaitDialog(self.quickStartView);
- log("onQuickStartResponse() v ~= 1 "..i )
- return
- end
- end
- end
- end
-
- function xichongRoomView:showPiao(uid)
-
- local viewId = app.room:getViewIdByUserId(uid)
-
- if viewId == self:getMeViewId() then
- self:hidePiao()
- local ui=loadUI("zp_xichong/res/ui/ui_fangjian/xichong_ui_piao.ui")
- self:addChild(ui)
- self.piao=ui
-
- --[[ for i = 1,ZPDef.GameMaxPlayer do
- self.PlayerView:setPlayerDingPiaoVisible(i, true)
- end--]]
-
- ui.Items.Button_BuPiao:registerClick(function()
- playBtnEffect()
- self:hidePiao()
- local request = ZPMessage.BaoPai:new()
- request.optType = 0
- self.ui:sendMsg(app.room, "BaoPai", request, function(status, response)
- logE("xichongRoomView baojiao response = ", table.tostring(response))
- end)
- end)
-
- ui.Items.Button_Piao:registerClick(function()
- playBtnEffect()
- self:hidePiao()
- local request = ZPMessage.BaoPai:new()
- request.optType = 1
- self.ui:sendMsg(app.room, "BaoPai", request, function(status, response)
- logE("xichongRoomView baojiao response = ", table.tostring(response))
- end)
- end)
- else
- self.PlayerView:setPlayerDingPiaoVisible(viewId, true)
- end
-
- end
-
-
- function xichongRoomView:hidePiao()
- if self.piao then
- self.piao:removeFromParent()
- self.piao=nil
- end
- end
-
-
- function xichongRoomView:createCard(bShowAnimation,nUserID,onEnd)
- logE("====================RoomView:createCard()===================");
-
- local cardList = app.room.cards[nUserID]
- if not cardList or table.nums(cardList) <= 0 then
- --重连当自己没有手牌且有7方门子
- if onEnd then
- onEnd()
- end
- return
- end
- local lieshuMax = table.nums(cardList)
- local RankCardList = {}
- local colList = self.lieshulist[lieshuMax]
- local blankList = self.lieshuBlanklist[lieshuMax]
-
- local wuIndex = 0
- local youIndex = 0
-
- --重新调整
- for k = 1,self.lieShuMax do
- if not cardList[k] then
- cardList[k] = {}
- end
- if table.nums(cardList[k]) <= 0 then
- wuIndex = wuIndex + 1
- local blankIndex = blankList[wuIndex] -- 1,10
- if blankIndex then
- RankCardList[blankIndex] = {}
- end
- else
- youIndex = youIndex + 1
- local index = colList[youIndex] -- 2,3,4,5,6,7,8,9
- RankCardList[index] = cardList[k]
- end
- end
-
- cardList = {}
- cardList = RankCardList
- logE("createCard Rank ok :"..table.tostring(cardList))
-
- local index = 1
- --不管有无数据,默认创建10列数据
- for i = 1,self.lieShuMax do
- local value = cardList[i] or {}
- local isKan = self:getCurrentColIsKan(value)
- local card = XichongRoomCard:new(value,ZPDef.CardType.CARD_TYPE_HAND,i,isKan,false,self.desktopType)
- local pos = self.boxPosList4[i]
- card.ui:setPosition(pos)
- self.ui.Items.LayoutMain_4:addChild(card.ui,1)
- --数据记录
- self.handCardRoot[i] = card
- self.handCardValueLocal[i] = value
- self.handCardValueBak[i] = clone(value)
-
- --存储所有的单牌节点Image
- for k = 1 ,self.hangShuMax do
- self.handCardItem[index] = card.imgList[k]
- index = index + 1
- end
- end
-
- logE("create card finish self.handCardValueLocal : "..table.tostring(self.handCardValueLocal))
-
- if bShowAnimation then
- --发牌动画(10*0.1+ 0.15 = 1.15miao)
- local columnWidth = 70
- if self.desktopType == ZPDef.GameStyleType.JINGDIAN then
- columnWidth = 70
- else
- columnWidth = 93
- end
- local startX = nil
- local totalColumns = table.nums(self.handCardRoot)
- for k,v in ipairs(self.handCardRoot) do
- if k == totalColumns / 2 then
- startX = v.ui:getPositionX()
- break
- end
- end
- for k,v in ipairs(self.handCardRoot) do
- if v.ui:isVisible() then
- v.ui:setOpacity(100)
- v.ui:setPositionX(startX)
- local diffCol = k - totalColumns / 2 -- 以第5列为中间,距离中间的差多少列
- local offsetX = diffCol * columnWidth -- 需要移动的距离
- local delayTime = diffCol * 0.02 -- 每一列的开始移动延迟动画时间
- local duration = 0.1 -- 移动过程持续时间
- local acDelay = cc.DelayTime:create(delayTime)
- local acFadeIn = cc.FadeIn:create(duration)
- local acMoveBy = cc.MoveBy:create(duration, cc.p(offsetX, 0))
- local acSpawn = cc.Spawn:create(acFadeIn, acMoveBy)
- local acCall = cc.CallFunc:create(function ()
- self:runDelay(0.5, function ()
- --排序
- self:RankCard()
- --注册点击
- self:registerCardTouch()
- if onEnd then
- onEnd()
- end
- for _,card in ipairs(self.handCardRoot) do
- card.ui:setOpacity(255)
- end
- end)
- end)
- local acSeq = nil
- if k == self:getVisibleCardLayoutNum() then
- acSeq = cc.Sequence:create(acDelay, acSpawn, acCall)
- else
- acSeq = cc.Sequence:create(acDelay, acSpawn)
- end
- v.ui:runAction(acSeq)
- end
- end
- else
- --注册点击
- self:registerCardTouch()
- --排序
- self:RankCard()
- if onEnd then
- onEnd()
- end
- end
- end
-
-
-
- -- 游戏开始
- function xichongRoomView:onGameStartResponse()
-
- local function runGameStartResponse(onEnd)
- log("2000000000-xichongRoomView - runGameStartResponse()" )
-
- local actualNum = app.room:getActualPlayerNum()
- --重置玩家数据
- self:resetGameData()
-
- app.room.roomInfo.firstOutCard = {}
- app.room.roomInfo.disCard = {}
-
- if not tolua.isnull(self.quickStartView) then
- self.quickStartView:removeView()
- self.quickStartView = nil
- end
-
- --写入数据
- for k,v in pairs(app.room.roomInfo.memberList) do
- v.nPlayerFlag = 2
- end
-
- --更新玩家状态状态
- self:onUserReadyResponse()
-
- -- 隐藏邀请好友
- self:setWetChatVisible(false)
- self.toolView:showFastStart(false)
-
- -- 更新局数
- self:updateGameNums()
- --更新位置
- app.room:updateUserSeateShowId()
- local bankerViewId = app.room:getViewIdBySeatId(app.room.roomInfo.nBankSeatId)
- --显示剩余牌
- self:setCircleCardLeftPanelView(true,nil,84)
-
-
- for k,v in pairs(app.room.roomInfo.memberList) do
- local nSeatShowId = app.room:getViewIdByUserId(v.nUserId)
- self.PlayerView:updatePlayerInfo(nSeatShowId)
- end
-
- --翻牌
- local fanpaiSeatid = app.room.roomInfo.fanpaiSeatId
- local fanCard = app.room.roomInfo.fanpaiValue
- local fanViewId = app.room:getViewIdBySeatId(fanpaiSeatid)
- local nBankerSeatId = app.room.roomInfo.nBankSeatId
- local ZhuangviewId = app.room:getViewIdBySeatId(nBankerSeatId)
-
-
- local function jiaoCallBack()
- self.PlayerView:showOperatorTip(fanViewId,ZPDef.OpType.OP_TYPE_JIAOPAI)
- end
-
- local function callback()
- self:playMoPaiAni(84,fanCard,fanViewId,0,1,nil,false, nil, nil, nil)
- end
-
- local function call_func()
- self:setOutCardVisible(false)
- --local toujiaId = app.room.roomInfo.nBankSeatId
- --local toujiaViewId = app.room:getViewIdBySeatId(toujiaId)
- self.PlayerView:showOperatorTip(ZhuangviewId,ZPDef.OpType.OP_TYPE_ZUOZHUANG)
- --更新庄家
- self:updateBanker()
- self:updateXiaojia()
- end
-
- local function dangCallBack()
- self.PlayerView:showOperatorTip(ZhuangviewId,ZPDef.OpType.OP_TYPE_DANG)
- self.PlayerView:setPlayerBankerVisible(ZhuangviewId,false)
- self.PlayerView:setPlayerDangVisible(ZhuangviewId,true)
- end
-
- local seq = cc.Sequence:create(cc.CallFunc:create(jiaoCallBack),cc.DelayTime:create(0.8),cc.CallFunc:create(callback),cc.DelayTime:create(1),cc.CallFunc:create(call_func),cc.DelayTime:create(0.7),cc.CallFunc:create(dangCallBack),cc.DelayTime:create(0.7),cc.CallFunc:create(function()
- if onEnd then
- onEnd()
- end
- end))
-
- self.ui:runAction(seq)
-
-
-
- end
- log("2000000000-xichongRoomView - addCallBack(runGameStartResponse)" )
- self:addCallBack(runGameStartResponse);
- end
-
-
- function xichongRoomView:onGameSendCardResponse()
- local function runGameSendCardResponse(onEnd)
- self.PlayerView:stopAndHideBaoAnim()
- log("2000000000-xichongRoomView - runGameSendCardResponse()" )
- if self.taiPaiTimer then
- cc.Director:getInstance():getScheduler():unscheduleScriptEntry(self.taiPaiTimer)
- end
-
- for i = 1,ZPDef.GameMaxPlayer do
- self.PlayerView:setPlayerDingPiaoVisible(i, false)
- end
-
- --local nBankerSeatId = app.room.roomInfo.nBankSeatId
- --local ZhuangviewId = app.room:getViewIdBySeatId(nBankerSeatId)
-
- --self.PlayerView:showOperatorTip(ZhuangviewId,ZPDef.OpType.OP_TYPE_DANG)
-
- --显示指示器
- local bankerViewId = app.room:getViewIdBySeatId(app.room.roomInfo.nBankSeatId)
- local leftCardNum = 32
- if app.room:getActualPlayerNum() == 4 then--and GameFunctions.getCurFangShu() == 0
- leftCardNum = 27
- end
- self:setCircleCardLeftPanelView(true,bankerViewId,leftCardNum)
-
- --发牌
- self:createCard(true,app.user.loginInfo.uid,onEnd)
-
- print("ding piao:"..table.tostring(app.room.roomInfo.memberList))
- --self.ui.Items.Button_tipai:setVisible(true)
-
- local xiaojiaViewId = app.room:getViewIdBySeatId(app.room.roomInfo.xiaoSeatId)
-
- local toujiaViewId = app.room:getViewIdBySeatId(app.room.roomInfo.nBankSeatId)
-
- --self:setTotalTuoNum(app.room.roomInfo.totalTuoNum)
- local myViewId = self:getMeViewId()
- self.PlayerView:setPlayerTuoShu(myViewId,app.room.roomInfo.totalTuoNum)
-
- end
- log("2000000000-xichongRoomView - addCallBack(runGameSendCardResponse)" )
- self:addCallBack(runGameSendCardResponse);
- end
-
- --漂结果
- function xichongRoomView:onBaoPaiResponese(data)
- local function runBaoPai(onEnd)
- log("2000000000-ZPRoomView - (runBaoPai)")
- local response = data.response
- local uid = response.nUserId
- local viewId = app.room:getViewIdByUserId(uid)
- --玩家选择了爆牌 播放爆牌动画
- local time = 0
-
- if viewId == self:getMeViewId() and app.room:getMeIsInAIStatus() then
- self:hidePiao()
- end
-
- if response.optType == 1 then --随漂状态
- time = 1
- self.PlayerView:showOperatorTip(viewId,ZPDef.OpType.OP_TYPE_PIAO)
-
- self.PlayerView:setPlayerDingPiaoVisible(viewId,false)
-
- self.PlayerView:setPlayerPiaoVisible(viewId,true)
-
- local bankerViewId = app.room:getViewIdBySeatId(app.room.roomInfo.nBankSeatId)
- if bankerViewId == viewId then
- self.bankerBaoPao = true
- end
- elseif response.optType == 2 then --定漂状态
-
- self.PlayerView:setPlayerDingPiaoVisible(viewId,false)
-
- self.PlayerView:setPlayerPiaoVisible(viewId,true)
-
- else
-
- self.PlayerView:setPlayerDingPiaoVisible(viewId,false)
-
- self.PlayerView:setPlayerPiaoVisible(viewId,false)
-
- local userInfo=app.room:getUserInfo(uid)
- if userInfo then
- ZPSound.PlayBuPiao(userInfo.sex)
- end
- end
- --[[ if uid == app.user.loginInfo.uid or app.room:isLittleFamily() then
- self.operationView:showBaoPaiOpView(false)
- end--]]
-
- self:runAction(cc.Sequence:create(cc.DelayTime:create(time),cc.CallFunc:create(function ()
- if onEnd then
- onEnd()
- end
- end)))
- end
- self:addCallBack(runBaoPai)
- end
-
- -- 正在漂
- function xichongRoomView:onSystemOperationStart(data)
- log("2000000000-xichongRoomView piaoing -------")
- local uid = data.response.nUserId
- local viewId = app.room:getViewIdByUserId(uid)
- self.PlayerView:setPlayerDingPiaoVisible(viewId,true)
- end
-
-
- function xichongRoomView:showOpeation(mainOpCode,card,chilist, isBiHu)
- self.operationView:setVisible(true)
- self.operationView:setSameParame(self.outCard,self.handCardValueLocal)
-
- local hasGuo = true
- if self.isBingPeng then
- hasGuo = false
- end
-
- if isBiHu == 1 then
- hasGuo = false
- end
-
- self.operationView:showOpeation(mainOpCode,card,chilist,hasGuo)
- --检测是否少牌
- --self:neatenCard(true)--无感知的整理一次手牌
- self:checkCardAndRecover()
- end
-
- --通知用户暗的操作
- function xichongRoomView:onUserOperateResponse(data)
- local function runUserOperate(onEnd)
- log("2000000000-xichongRoomView - (runUserOperate)")
- logE("runUserOperate :"..table.tostring(data.response))
- if data.response.nUserId == app.room:getMyUserId() then
- if data.response.TouoperateCode ~= ZPDef.OpCode.OP_ERROR or data.response.BaoperateCode ~= ZPDef.OpCode.OP_ERROR then
- local ishu = data.response.ishu
- local hasGuo = true
- local anCard = 0
- local opeateCode = 0
- self.outCard = 0
- if #data.response.BacardList > 0 then
- opeateCode = getNumOr(opeateCode,data.response.BaoperateCode)
- end
- --操作码
- if #data.response.ToucardList > 0 then
- anCard = data.response.BacardList[1]
- opeateCode = getNumOr(opeateCode,data.response.TouoperateCode)
- end
-
- local mainOpCode = data.response.mainOpCode
-
- local retHu = bit32.band(mainOpCode,ZPDef.OpCode.OP_HU)
- local retHu1 = bit32.band(mainOpCode,ZPDef.OpCode.OP_TIAN_HU)
-
- if ishu == 1 then
- if retHu > 0 then
- opeateCode = getNumOr(opeateCode,ZPDef.OpCode.OP_HU)
- else
- opeateCode = ZPDef.OpCode.OP_TIAN_HU
- end
- end
-
- local viewId = app.room:getViewIdByUserId(data.response.nUserId)
- self.operationLocalCode = opeateCode
- if self.operationLocalCode > 0 then
- self:showOpeation(opeateCode,anCard, nil, data.response.isBiHu)
- end
- local myViewId = self:getMeViewId()
- self.PlayerView:setPlayerTuoShu(myViewId,data.response.totalTuoNum)
- self:setGuideView(false)
- self.bOutCard = false
- end
- end
-
-
- local operations = {}
- --操作码
- local viewId = app.room:getViewIdByUserId(data.response.nUserId)
- operations[viewId] = {}
- operations[viewId].nUserId = data.response.nUserId
- operations[viewId].isCanOpereate = 1
- self:showDelayTimeTip(operations)
-
- if onEnd then
- onEnd()
- end
- end
-
- log("2000000000-xichongRoomView - addCallBack(runUserOperate)")
- self:addCallBack(runUserOperate);
- end
-
-
- function xichongRoomView:playQiPaiAni(isShowAni,disCard,viewId,onEnd,isDianPaoPeng)
- if self.desktopType == ZPDef.GameStyleType.JINGDIAN then
- local outCardname = string.format("ImageView_outCardImg_%d",viewId)
- local outCardPoint = string.format("Layout_outCardPoint_%d",viewId)
- local giveupCardname = string.format("Layout_outCardPos_%d",viewId)
-
- --牌的图片
- local outCardImg = self.ui.Items[outCardname]
- --牌的图片父节点
- local outCardLayout = self.ui.Items[outCardPoint]
-
- --弃牌的layout
- local giveUpLayout = self.ui.Items[giveupCardname]
- --获取弃牌节点存在的数量
- local count = giveUpLayout:getChildrenCount()
- --创建一张精灵
- local mSprite = cc.ImageView:createNode()
- mSprite:setScale(self.littleCardScale)
- local finalFileName = ZPFuc.getZPCardImgByValue(disCard,ZPDef.CardType.CARD_TYPE_GROUPCARD,self.desktopType)
- mSprite:loadTextureFromPlist(finalFileName)
- mSprite:setVisible(false)
- mSprite:setAnchorPoint(cc.p(0,0))
- mSprite.value = disCard
- giveUpLayout:addChild(mSprite)
-
- local orderPos = cc.p(0,0)
- local giveCardOffset = ZPDef.GiveCardOffset[viewId]
-
-
- local width = mSprite:getContentSize().width * self.littleCardScale;
- local height = mSprite:getContentSize().height * self.littleCardScale;
-
- local getHeightCount = function (count)
- if count >= 8 then
- return math.floor(count/8)
- else
- return 0
- end
- end
-
-
- local colMax = getHeightCount(count)
-
- if colMax == 1 then
- if viewId == self:getMeViewId() then
- orderPos.x = orderPos.x - 40
- orderPos.y = orderPos.y - 20
- elseif viewId == 1 then
- orderPos.x = orderPos.x + 40
- orderPos.y = orderPos.y - 20
- elseif viewId == 2 then
- orderPos.x = orderPos.x + 40
- orderPos.y = orderPos.y + 20
- elseif viewId == 3 then
- orderPos.x = orderPos.x - 30
- orderPos.y = orderPos.y + 35
- end
- end
-
- count = count % 8
-
-
- local tarPos
- if viewId == self:getMeViewId() then
- mSprite:setEulerRotation(cc.vec3(0, 0, -155))
- tarPos = cc.p(orderPos.x + giveCardOffset.x*count,orderPos.y + giveCardOffset.y*count)
- elseif viewId == 1 then
- mSprite:setEulerRotation(cc.vec3(0, 0, -25))
- tarPos = cc.p(orderPos.x + giveCardOffset.x*count,orderPos.y + giveCardOffset.y*count)
- elseif viewId == 2 then
- mSprite:setEulerRotation(cc.vec3(0, 0, 25))
- tarPos = cc.p(orderPos.x + giveCardOffset.x*count,orderPos.y + giveCardOffset.y*count)
- elseif viewId == 3 then
- mSprite:setEulerRotation(cc.vec3(0, 0, 130))
- tarPos = cc.p(orderPos.x + giveCardOffset.x*count,orderPos.y + giveCardOffset.y*count)
- end
-
- mSprite:setPosition(tarPos)
-
- --动画显示
- if not isShowAni then
- mSprite:setVisible(true)
- if isDianPaoPeng then
- mSprite:setColor(cc.c3b(125,125,125))
- end
- else
- local fileName = ZPFuc.getZPCardImgByValue(disCard,ZPDef.CardType.CARD_TYPE_OUTCARD,self.desktopType)
- --弃牌
- local giveSprite = cc.ImageView:createNode()
- giveSprite:loadTextureFromPlist(fileName)
- giveSprite:setScale(self.outCardScale)
- giveUpLayout:addChild(giveSprite)
- giveSprite:setVisible(false)
-
- local spriteSizeWidth = giveSprite:getContentSize().width * self.outCardScale
- local spriteSizeHeight = giveSprite:getContentSize().height * self.outCardScale
- local worldPos = outCardImg:convertToWorldSpace(outCardImg:getPosition())
- local nodePos = giveUpLayout:convertToNodeSpace(worldPos)
- --调整上下2个玩家的坐标和牌的角度
- if viewId == 2 or viewId == 4 then
- --nodePos = cc.p(nodePos.x - spriteSizeWidth,nodePos.y - spriteSizeHeight/2)
- --giveSprite:setEulerRotation(cc.vec3(0,0,90))
- end
- giveSprite:setPosition(nodePos)
-
-
- local mSpawn = cc.Spawn:create(cc.MoveTo:create(self.gameSpeedConfig.QI_PAI_TIME,tarPos),cc.ScaleTo:create(self.gameSpeedConfig.QI_PAI_TIME,self.outCardScale - 0.7))
- giveSprite:runAction(cc.Sequence:create(cc.DelayTime:create(0.3),cc.CallFunc:create(function()
- outCardLayout:setVisible(false)
- giveSprite:setVisible(true)
- end),mSpawn,cc.CallFunc:create(function()
- mSprite:setVisible(true)
- if isDianPaoPeng then
- mSprite:setColor(cc.c3b(125,125,125))
- end
- end),cc.RemoveSelf:create()))
-
- --要求弃牌飞到一半,摸牌就开始摸了
- mSprite:runAction(cc.Sequence:create(cc.DelayTime:create(0.4 + self.gameSpeedConfig.QI_PAI_TIME/2),cc.CallFunc:create(function ()
- if onEnd then
- onEnd()
- end
- end)))
- end
- else
- local outCardname = string.format("ImageView_outCardImg_%d",viewId)
- local outCardPoint = string.format("Layout_outCardPoint_%d",viewId)
- local giveupCardname = string.format("Layout_giveUp_%d",viewId)
-
- --牌的图片
- local outCardImg = self.ui.Items[outCardname]
- --牌的图片父节点
- local outCardLayout = self.ui.Items[outCardPoint]
-
- --弃牌的layout
- local giveUpLayout = self.ui.Items[giveupCardname]
- --获取弃牌节点存在的数量
- local count = giveUpLayout:getChildrenCount()
- --创建一张精灵
- local mSprite = cc.ImageView:createNode()
- mSprite:setScale(self.littleCardScale)
- local finalFileName = ZPFuc.getZPCardImgByValue(disCard,ZPDef.CardType.CARD_TYPE_TABLE)
- mSprite:loadTextureFromPlist(finalFileName)
- mSprite:setVisible(false)
- mSprite:setAnchorPoint(cc.p(0,0))
- mSprite.value = disCard
- giveUpLayout:addChild(mSprite)
-
-
- local width = mSprite:getContentSize().width * self.littleCardScale;
- local height = mSprite:getContentSize().height * self.littleCardScale;
-
- local getHeightCount = function (count)
- if count >= 10 then
- return math.floor(count/10)
- else
- return 0
- end
- end
- local x = count % 10
-
- local tarPos
- if viewId == 1 then
- local adjustPos = cc.p(width * x,height * getHeightCount(count))
- tarPos = cc.p(0 - adjustPos.x,0 - adjustPos.y)
- elseif viewId == 2 then
- local adjustPos = cc.p(width * x,getHeightCount(count) * height)
- tarPos = cc.p(0 + adjustPos.x,0 - adjustPos.y)
- elseif viewId == 3 then
- local adjustPos = cc.p(width * x,height * getHeightCount(count))
- tarPos = cc.p(0 + adjustPos.x,0 - adjustPos.y)
- elseif viewId == self:getMeViewId() then
- local adjustPos = cc.p(width * x,height * getHeightCount(count))
- tarPos = cc.p(0 - adjustPos.x,0 - adjustPos.y)
- end
-
- mSprite:setPosition(tarPos)
-
- --动画显示
- if not isShowAni then
- mSprite:setVisible(true)
- if isDianPaoPeng then
- mSprite:setColor(cc.c3b(125,125,125))
- end
- else
- local fileName = ZPFuc.getZPCardImgByValue(disCard,ZPDef.CardType.CARD_TYPE_OUTCARD,self.desktopType)
- --弃牌
- local giveSprite = cc.ImageView:createNode()
- giveSprite:loadTextureFromPlist(fileName)
- giveSprite:setScale(self.outCardScale)
- giveUpLayout:addChild(giveSprite)
- giveSprite:setVisible(false)
-
- local spriteSizeWidth = giveSprite:getContentSize().width * self.outCardScale
- local spriteSizeHeight = giveSprite:getContentSize().height * self.outCardScale
- local worldPos = outCardImg:convertToWorldSpace(outCardImg:getPosition())
- local nodePos = giveUpLayout:convertToNodeSpace(worldPos)
- --调整上下2个玩家的坐标和牌的角度
- if viewId == 2 or viewId == 4 then
- --nodePos = cc.p(nodePos.x - spriteSizeWidth,nodePos.y - spriteSizeHeight/2)
- --giveSprite:setEulerRotation(cc.vec3(0,0,90))
- end
- giveSprite:setPosition(nodePos)
-
-
- local mSpawn = cc.Spawn:create(cc.MoveTo:create(self.gameSpeedConfig.QI_PAI_TIME,tarPos),cc.ScaleTo:create(self.gameSpeedConfig.QI_PAI_TIME,self.outCardScale - 0.7))
- giveSprite:runAction(cc.Sequence:create(cc.DelayTime:create(0.3),cc.CallFunc:create(function()
- outCardLayout:setVisible(false)
- giveSprite:setVisible(true)
- end),mSpawn,cc.CallFunc:create(function()
- mSprite:setVisible(true)
- if isDianPaoPeng then
- mSprite:setColor(cc.c3b(125,125,125))
- end
- end),cc.RemoveSelf:create()))
-
- --要求弃牌飞到一半,摸牌就开始摸了
- mSprite:runAction(cc.Sequence:create(cc.DelayTime:create(0.4 + self.gameSpeedConfig.QI_PAI_TIME/2),cc.CallFunc:create(function ()
- if onEnd then
- onEnd()
- end
- end)))
- end
- end
-
- end
-
-
-
- function xichongRoomView:playMoPaiAni(leftCardNum,turnOverCard,viewId,mainOpCode,showCardFlag,onEnd,isNotShowAni,chiOpCardlist,isJinPai, isBiHu)
- self.isMoPaiOperator = true
-
- --重置出牌坐标
- self:resetOutCardPoint()
-
- --图片
- local outCardname = string.format("ImageView_outCardImg_%d",viewId)
- local outCardLayoutName = string.format("Layout_outCardPoint_%d",viewId)
- local mSprite = self.ui.Items[outCardname]
- local srcPos = mSprite:getPosition()
- local fileName = ZPFuc.getZPCardImgByValue(0xfa,ZPDef.CardType.CARD_TYPE_OUTCARD)
- local fileNameReal = ZPFuc.getZPCardImgByValue(turnOverCard,ZPDef.CardType.CARD_TYPE_OUTCARD,self.desktopType,self.colorType)
-
- self.ui.Items[outCardLayoutName]:setVisible(true)
-
- if viewId == self:getMeViewId() then
- mSprite:loadTextureFromPlist(fileNameReal)
- end
-
- --公谱出牌不串不哨立马亮牌,看到亮牌的听得到牌的音效
- if mainOpCode ~= ZPDef.OpCode.OP_CANCEL and mainOpCode ~= ZPDef.OpCode.OP_ERROR then
- mSprite:loadTextureFromPlist(fileNameReal)
- else
- if showCardFlag == 1 then
- mSprite:loadTextureFromPlist(fileNameReal)
- if not isNotShowAni and not isJinPai then
- local nUserId = app.room:getUserIdByViewId(viewId)
- local userInfo=app.room:getUserInfo(nUserId)
- if userInfo then
- ZPSound.PlayZPSound(userInfo.sex,turnOverCard)
- end
- end
- else
- mSprite:loadTextureFromPlist(fileName)
- end
- end
-
- self:changeOutCardLight(true)
-
- local function callback()
- if mainOpCode ~= ZPDef.OpCode.OP_CANCEL and mainOpCode ~= ZPDef.OpCode.OP_ERROR then
- self.EatOperationCode = mainOpCode
- local chilist = {}
-
- for k,v in pairs(chiOpCardlist or {}) do
- table.insert(chilist,v)
- end
- self:showOpeation(mainOpCode,turnOverCard,chilist, isBiHu)
- end
- end
-
- if isNotShowAni then
- mSprite:setPosition(srcPos)
- callback()
- if onEnd then
- onEnd()
- end
- return
- else
- local outCardLightName = string.format("ImageView_outCardLight_%d",viewId)
- self.ui.Items[outCardLightName]:setVisible(false)
- mSprite:setScale(0)
-
- if showCardFlag ~= 1 then
- mSprite:loadTextureFromPlist(fileName)
-
- --起始坐标调整和角度,扫为横的出来
- if viewId == self:getMeViewId() then
- mSprite:setEulerRotation(cc.vec3(0,0,0))
- beginPos = cc.p(srcPos.x,srcPos.y + 200)
- elseif viewId == 1 then
- mSprite:setEulerRotation(cc.vec3(0,0,-90))
- beginPos = cc.p(srcPos.x - 200 ,srcPos.y)
- elseif viewId == 2 then
- mSprite:setEulerRotation(cc.vec3(0,0,0))
- beginPos = cc.p(srcPos.x,srcPos.y - 100)
- elseif viewId == 3 then
- mSprite:setEulerRotation(cc.vec3(0,0,-90))
- beginPos = cc.p(srcPos.x + 200 ,srcPos.y-50)
- end
-
- mSprite:setPosition(beginPos)
-
- --目标调整、角度
- if viewId == 1 then
- srcPos = cc.p(srcPos.x + 250,srcPos.y)
- elseif viewId == 2 then
- srcPos = cc.p(srcPos.x,srcPos.y+50)
- elseif viewId == 3 then
- srcPos = cc.p(srcPos.x - 250,srcPos.y-50)
- elseif viewId == 4 then
- srcPos = cc.p(srcPos.x,srcPos.y-100)
- end
-
- mSprite:setScale(1)
- mSprite:runAction(cc.Sequence:create(cc.MoveTo:create(0.3,srcPos),cc.CallFunc:create(function ()
- self.ui.Items[outCardLightName]:setVisible(true)
- end),cc.CallFunc:create(function()
- --恢复原来的角度
- if viewId == self:getMeViewId() then
- mSprite:setEulerRotation(cc.vec3(0,0,90))
- elseif viewId == 1 then
- mSprite:setEulerRotation(cc.vec3(0,0,0))
- elseif viewId == 2 then
- mSprite:setEulerRotation(cc.vec3(0,0,90))
- elseif viewId == 3 then
- mSprite:setEulerRotation(cc.vec3(0,0,0))
- end
- self.ui.Items[outCardLayoutName]:setVisible(false)
- self:setCircleCardLeftPanelView(true,viewId,leftCardNum)
- callback()
- if onEnd then
- onEnd()
- end
- end)))
- else
- if mainOpCode ~= ZPDef.OpCode.OP_CANCEL and mainOpCode ~= ZPDef.OpCode.OP_ERROR then
- local nUserId = app.room:getUserIdByViewId(viewId)
- local userInfo=app.room:getUserInfo(nUserId)
- if userInfo and not isJinPai then
- ZPSound.PlayZPSound(userInfo.sex,turnOverCard)
- end
- end
- --播放摸牌动画(这里最好用出牌器的坐标进行转换,暂时这样调整吧)
- if viewId == self:getMeViewId() then
- beginPos = cc.p(srcPos.x,srcPos.y + 200)
- elseif viewId == 1 then
- beginPos = cc.p(srcPos.x - 300 ,srcPos.y)
- elseif viewId == 2 then
- beginPos = cc.p(srcPos.x ,srcPos.y - 200)
- elseif viewId == 3 then
- beginPos = cc.p(srcPos.x + 300 ,srcPos.y)
- end
-
- mSprite:setPosition(beginPos)
- local mSpawn = cc.Spawn:create(cc.ScaleTo:create(self.gameSpeedConfig.MO_PAI_TIME,1.0),cc.MoveTo:create(self.gameSpeedConfig.MO_PAI_TIME,srcPos))
- mSprite:runAction(cc.Sequence:create(mSpawn,cc.CallFunc:create(function ()
- self.ui.Items[outCardLightName]:setVisible(true)
- --显示指示器
- self:setCircleCardLeftPanelView(true,viewId,leftCardNum)
- end),cc.DelayTime:create(0.15),cc.CallFunc:create(function()
- callback()
- if onEnd then
- onEnd()
- end
- end)))
- end
- end
- end
-
- function xichongRoomView:removeHandByNums(card,nums)
- local nums = nums
- for col = self.lieShuMax,1,-1 do --列数
- for row = self.hangShuMax,1,-1 do --行数
- local tempCard = self.handCardRoot[col].imgList[row].value
- if tempCard and card == tempCard and nums > 0 then
- table.remove(self.handCardValueLocal[col],row)
- self:rankDeletOneBakCard(card)
- --单张图片的值归nil
- self.handCardRoot[col].imgList[row].value = nil
- self.handCardRoot[col].imgList[row].isKan = false
- --单个图片隐藏
- self.handCardRoot[col].imgList[row]:setVisible(false)
- self.handCardRoot[col].imgList[row]:setColor(cc.c3b(255,255,255))
- nums = nums - 1
- end
- end
- end
- end
-
-
- --用户吃(手动)
- function xichongRoomView:Chi(viewId,card,onEnd)
- logD("function do Chi")
- logE("xichongRoomView chi:",card)
-
-
- local chiShowPaiList = {}
-
- --吃的牌放下面
-
-
- table.insert(chiShowPaiList, self.chiCard)
- table.insert(chiShowPaiList, card)
-
-
- logE("xichongRoomView chilist:",chiShowPaiList)
-
- if viewId == self:getMeViewId() then
- self:removeHandByNums(card,1)
- self:neatenCard(true)
- end
-
- if self.desktopType == ZPDef.GameStyleType.JINGDIAN then
- self:createOpOutcard(viewId,chiShowPaiList,2)
- --self:createOpOutcard(viewId,card,1)
- else
- self:createEatView(card,viewId,chiShowPaiList,true,nil,onEnd)
- end
-
- if onEnd then
- onEnd()
- end
- end
-
- --创建吃的UI
- function xichongRoomView:createEatView(card,viewId,list,isShowAni,callbackFunc,onEnd)
- --是否轮到我
- local bMeTurn = viewId == self:getMeViewId()
- --更新视图
- --获取自己的出牌点
- local name = string.format("Layout_player1Table_%d",viewId)
- local UnitCardNode = self.ui.Items[name]
-
- --牌大小
- local mSprite = cc.ImageView:createNode()
- local FileName = ZPFuc.getZPCardImgByValue(card,ZPDef.CardType.CARD_TYPE_TABLE)
- mSprite:loadTextureFromPlist(FileName)
- local width = mSprite:getContentSize().width * self.littleCardScale + self.cardInterval
- local height = mSprite:getContentSize().height * self.littleCardScale - self.verticleInterval
- local mLayout = nil
-
- --list 反向操作
- local tempList = {}
- for k,v in pairsByKeys(list) do
- table.insert(tempList,v)
- end
-
- local endPos = nil
- logE("tempList:"..table.tostring(tempList))
- for k,weaveCard in pairsByKeys(tempList) do
- if k % 3 == 1 then
- --获取出牌点的儿子数量
- local count = UnitCardNode:getChildrenCount();
- --数量即为列数
- local col = count;
- --创建一个空的layout,layout放到组合牌点上
- mLayout = cc.Layout:createNode()
- mLayout:setTag(ZPDef.TableConst.TABLE_CONST_NO_TOUCH)
- if bMeTurn then
- endPos = cc.p(width * col,0)
- elseif viewId == 1 or viewId == 2 then
- endPos = cc.p(-width * col,0)
- else
- endPos = cc.p(width * col,0)
- end
- --设置锚点
- mLayout:setAnchorPoint(cc.p(0,1))
- --设置大小
- mLayout:setSize(cc.size(width,height*3))
- --layout数据存储:
- mLayout.type = "chi"
-
- --顺子没用到
- mLayout:setName("10086")
- end
-
- local cardShow = weaveCard
- local row = (k % 3) - 1
- if k % 3 == 0 then
- row = 2
- end
- --界面
- local mWeiCard = cc.ImageView:createNode()
- mWeiCard:loadTextureFromPlist(ZPFuc.getZPCardImgByValue(cardShow,ZPDef.CardType.CARD_TYPE_TABLE))
- mWeiCard:setScale(self.littleCardScale)
- mWeiCard:setPosition(width/2,0 + height * row - height /2);
- mLayout:addChild(mWeiCard,#tempList-k+1);
- if row == 2 then
- --mWeiCard:setOpacity(125)
- end
-
- if k % 3 == 2 then
- --动画
- UnitCardNode:addChild(mLayout);
- if isShowAni then
- self:playWeaveCardAni(mLayout,viewId,1,endPos,nil,1.0,true)
- else
- mLayout:setPosition(endPos)
- end
- end
- end
-
- end
-
-
- --用户碰(手动)
- function xichongRoomView:Peng(viewId,card,onEnd)
- logD("function do Peng")
- logE("xichongRoomView Peng:",card)
-
- if viewId == self:getMeViewId() then
- self:removeHandByNums(card,2)
- self:neatenCard(true)
- end
-
- local list = {card,card,card}
-
- if self.desktopType == ZPDef.GameStyleType.JINGDIAN then
- self:createOpOutcard(viewId,list,3)
- else
- self:createPengView(viewId,list,true)
- end
-
-
- self:runAction(cc.Sequence:create(cc.DelayTime:create(0.7),cc.CallFunc:create(function()
- if onEnd then
- onEnd()
- end
- end)))
-
- end
-
- --创建碰的UI
- function xichongRoomView:createPengView(viewId,list,isShowAni)
- --是否轮到我
- local bMeTurn = viewId == self:getMeViewId()
- local card = list[1]
- --更新自己(3张暗加一个数字(值分大小写))
- --获取自己的出牌点
- local name = string.format("Layout_player1Table_%d",viewId)
- local UnitCardNode = self.ui.Items[name]
- --获取出牌点的儿子数量
- local count = UnitCardNode:getChildrenCount();
- --数量即为列数
- local col = count;
-
- --牌大小
- local mSprite = cc.ImageView:createNode()
- local FileName = ZPFuc.getZPCardImgByValue(card,ZPDef.CardType.CARD_TYPE_TABLE)
- mSprite:loadTextureFromPlist(FileName)
- local width = mSprite:getContentSize().width * self.littleCardScale + self.cardInterval
- local height = mSprite:getContentSize().height * self.littleCardScale - self.verticleInterval
-
- --创建一个空的layout,layout放到组合牌点上
- local mLayout = cc.Layout:createNode()
- --1.记录坐标
- local endPos = nil
- if bMeTurn then
- endPos = cc.p(width * col,0)
- elseif viewId == 1 or viewId == 2 then
- endPos = cc.p(-width * col,0)
- else
- endPos = cc.p(width * col,0)
- end
- --设置锚点
- mLayout:setAnchorPoint(cc.p(0,1))
- --设置大小
- mLayout:setSize(cc.size(width,height*3))
- --layout数据存储:
- --下面的牌数据:
- mLayout.cardList = {}
- --查找layout的唯一性
- mLayout:setName(string.format("%d",card))
- mLayout.type = "peng4"
- mLayout:setTag(ZPDef.TableConst.TABLE_CONST_NO_TOUCH)
- --判断是不是摸牌,如果是摸牌碰就3张,不是就2张,放炮的人显示一张牌为弃牌
- local forTimeS = #list
-
- for i = 1,forTimeS do
- local mPengCard;
- local row = i - 1;
- --数据
- mLayout.cardList[i] = card
- --界面
- mPengCard = cc.ImageView:createNode()
- mPengCard:loadTextureFromPlist(ZPFuc.getZPCardImgByValue(card,ZPDef.CardType.CARD_TYPE_TABLE))
- mPengCard:setScale(self.littleCardScale)
- mPengCard:setPosition(width/2,0 + height * row - height /2);
- mLayout:addChild(mPengCard,forTimeS-i+1);
- end
-
- UnitCardNode:addChild(mLayout);
-
- --2.全部拷贝动画
- if isShowAni then
- self:playWeaveCardAni(mLayout,viewId,1,endPos,nil,1.0,true)
- else
- mLayout:setPosition(endPos)
- end
- end
-
- --用户暗三张(手动)
- function xichongRoomView:AnSanZhang(viewId,card,onEnd)
- logD("function do AnSanZhang")
- logE("xichongRoomView AnSanZhang:",card)
-
- local operateCode = self.operationSuccessCode
-
- if viewId == self:getMeViewId() then
- self:removeHandByNums(card,3)
- self:neatenCard(true)
- end
-
- local list = {card,card,card}
- if self.desktopType == ZPDef.GameStyleType.JINGDIAN then
- self:createOpOutcard(viewId,list,3)
- else
- self:createPengView(viewId,list,true)
- end
-
- self:runAction(cc.Sequence:create(cc.DelayTime:create(0.7),cc.CallFunc:create(function()
- if onEnd then
- onEnd()
- end
- end)))
-
- end
-
-
- --用户暗四张(手动)
- function xichongRoomView:AnSiZhang(viewId,card,onEnd)
- logD("function do AnSiZhang")
- logE("xichongRoomView AnSiZhang:",card)
-
- local operateCode = self.operationSuccessCode
-
- if viewId == self:getMeViewId() then
- self:removeHandByNums(card,4)
- self:neatenCard(true)
- end
-
- local list = {card,card,card,card}
- if self.desktopType == ZPDef.GameStyleType.JINGDIAN then
- self:createOpOutcard(viewId,list,4)
- else
- self:createPengView(viewId,list,true)
- end
-
- self:runAction(cc.Sequence:create(cc.DelayTime:create(0.7),cc.CallFunc:create(function()
- if onEnd then
- onEnd()
- end
- end)))
- end
-
-
- --用户暗三张(手动)
- function xichongRoomView:Kua(viewId,card,onEnd)
- logD("function do Kua")
- logE("xichongRoomView Kua:",card)
-
- local operateCode = self.operationSuccessCode
-
- if viewId == self:getMeViewId() then
- self:removeHandByNums(card,3)
- self:neatenCard(true)
- end
-
- local list = {card,card,card}
- if self.desktopType == ZPDef.GameStyleType.JINGDIAN then
- self:createOpOutcard(viewId,list,3)
- else
- self:createPengView(viewId,list,true)
- end
-
- self:runAction(cc.Sequence:create(cc.DelayTime:create(0.7),cc.CallFunc:create(function()
- if onEnd then
- onEnd()
- end
- end)))
- end
-
-
-
- function xichongRoomView:doOperation(operationType,viewId,card,onEnd)
- if operationType == ZPDef.OpType.OP_TYPE_CHI then
- self:Chi(viewId,card,onEnd)
- self:showOperatorTip(viewId,operationType)
- elseif operationType == ZPDef.OpType.OP_TYPE_PENG then
- self:Peng(viewId,card,onEnd)
- self:showOperatorTip(viewId,operationType)
- elseif operationType == ZPDef.OpType.OP_TYPE_ANSANZHANG then
- self:AnSanZhang(viewId,card,onEnd)
- self:showOperatorTip(viewId,operationType)
- elseif operationType == ZPDef.OpType.OP_TYPE_ANSIZHANG then
- self:AnSiZhang(viewId,card,onEnd)
- self:showOperatorTip(viewId,operationType)
- elseif operationType == ZPDef.OpType.OP_TYPE_KUA then --垮
- self:Kua(viewId,card,onEnd)
- self:showOperatorTip(viewId,operationType)
- elseif operationType == ZPDef.OpType.OP_TYPE_HU then
- self:showOperatorTip(viewId,operationType)
- elseif operationType == ZPDef.OpType.OP_TYPE_WEIGUI then
- self:showOperatorTip(viewId,operationType)
- end
- end
-
-
-
- --起手偷巴操作
- function xichongRoomView:onUserOperateSuccess(data)
- local function runUserOperateSuccess(onEnd)
- log("2000000000-xichongRoomView - (runUserOperateSuccess)")
- logE("runUserOperateSuccess :"..table.tostring(data.response))
- local response = data.response
- local nUserId = response.nUserId
- local opType = response.operateCodes
- local opCard = response.opCard
- local totoalTuoNum = response.totalTuoNum
- local leftCardNum = tonumber(response.leftCardNum)
-
- self.operationSuccessCode = opType
-
- local viewId = app.room:getViewIdByUserId(nUserId)
-
- if opType == ZPDef.OpCode.OP_TOU_QI_SHOU or opType == ZPDef.OpCode.OP_TOU_ZHUA then --按三张
- self:doOperation(ZPDef.OpType.OP_TYPE_ANSANZHANG,viewId,opCard,nil)
- elseif opType == ZPDef.OpCode.OP_BA_QI_SHOU or opType == ZPDef.OpCode.OP_BA_ZHUA or opType == ZPDef.OpCode.OP_BA_FAN then --按四张
- self:doOperation(ZPDef.OpType.OP_TYPE_ANSIZHANG,viewId,opCard,nil)
- end
-
- if viewId == self:getMeViewId() then
- self.PlayerView:setPlayerTuoShu(viewId,totoalTuoNum)
- if app.room:getMeIsInAIStatus() then
- self:hideOperation()
- end
- else
- self.PlayerView:setPlayerTuoShu(viewId,response.otherTuoNum)
- end
-
- if viewId ~= 4 then
- self.PlayerView:setLeftCardNum(viewId,true,leftCardNum)
- end
-
- self:runAction(cc.Sequence:create(cc.DelayTime:create(0.7),cc.CallFunc:create(function()
- if onEnd then
- onEnd()
- end
- end)))
- end
-
- log("2000000000-xichongRoomView - addCallBack(runUserOperateSuccess)")
- self:addCallBack(runUserOperateSuccess);
- end
-
- function xichongRoomView:onUserCanBaoResponse(data)
- local function runUserCanBao(onEnd)
- log("2000000000-xichongRoomView - (runUserCanBao)")
- local response = data.response
- local baoType = response.operateCode
-
- self.operationView:showBaoPaiOpView(true,baoType)
-
- if onEnd then
- onEnd()
- end
- end
- log("2000000000-xichongRoomView - addCallBack(runUserCanBao)")
-
- self:addCallBack(runUserCanBao)
- end
-
-
- function xichongRoomView:onBroadUserBaoResponse(data)
- local function runUserBaoResponse(onEnd)
- log("2000000000-xichongRoomView - (runUserBaoResponse)")
- local response = data.response
- local uid = response.nUserId
- local viewId = app.room:getViewIdByUserId(uid)
- local baoCard = response.baoCard
- --玩家选择了爆牌 播放爆牌动画
- if response.baoType > 0 then
- self:showOperatorTip(viewId,-55)
-
- local baoTypeList = self:getBaoTypeList(response.baoType)
-
- self.PlayerView:playBaoTypeAni(viewId,baoTypeList,baoCard)
- end
-
- if viewId == self:getMeViewId() and app.room:getMeIsInAIStatus() then
- self:hideOperation()
- end
-
- if onEnd then
- onEnd()
- end
-
- end
- self:addCallBack(runUserBaoResponse)
- end
-
-
- function xichongRoomView:getBaoTypeList(baoType)
- local baoTypeList = {}
- local ret1 = bit32.band(baoType,ZPDef.BaoOpCode.BAO_ZHAO_CHI)
- if ret1 > 0 then
- table.insert(baoTypeList,ZPDef.BaoOpCode.BAO_ZHAO_CHI)
- end
-
- local ret2 = bit32.band(baoType,ZPDef.BaoOpCode.BAO_TUI)
- if ret2 > 0 then
- table.insert(baoTypeList,ZPDef.BaoOpCode.BAO_TUI)
- end
-
- local ret3 = bit32.band(baoType,ZPDef.BaoOpCode.BAO_HOU_DUI)
- if ret3 > 0 then
- table.insert(baoTypeList,ZPDef.BaoOpCode.BAO_HOU_DUI)
- end
-
- local ret4 = bit32.band(baoType,ZPDef.BaoOpCode.BAO_PO_DUI)
- if ret4 > 0 then
- table.insert(baoTypeList,ZPDef.BaoOpCode.BAO_PO_DUI)
- end
-
- local ret5 = bit32.band(baoType,ZPDef.BaoOpCode.BAO_CHENG_KAN)
- if ret5 > 0 then
- table.insert(baoTypeList,ZPDef.BaoOpCode.BAO_CHENG_KAN)
- end
-
- local ret6 = bit32.band(baoType,ZPDef.BaoOpCode.BAO_SI_ZHANG)
- if ret6 > 0 then
- table.insert(baoTypeList,ZPDef.BaoOpCode.BAO_SI_ZHANG)
- end
-
- local ret7 = bit32.band(baoType,ZPDef.BaoOpCode.DIAO_CHENG_KAN)
- if ret7 > 0 then
- table.insert(baoTypeList,ZPDef.BaoOpCode.DIAO_CHENG_KAN)
- end
-
- local ret8 = bit32.band(baoType,ZPDef.BaoOpCode.DIAO_CHENG_SIZHANG)
- if ret8 > 0 then
- table.insert(baoTypeList,ZPDef.BaoOpCode.DIAO_CHENG_SIZHANG)
- end
-
-
- return baoTypeList
- end
-
- --锁住吃后不能出的牌
- function xichongRoomView:lockYouPai(youlist)
- --先全部解锁
- self:unLockYouPai()
- --根据服务器发来的牌解锁
- for k,v in pairs(youlist or {}) do
- for col = self.lieShuMax,1,-1 do --列数
- for row = self.hangShuMax,1,-1 do --行数
- local cardValue = self.handCardRoot[col].imgList[row].value
- if v == cardValue and not self.handCardRoot[col].imgList[row].isKan then --防止锁两次
- self.handCardRoot[col].imgList[row].isKan = true
- self.handCardRoot[col].imgList[row]:setTouchEnabled(false)
- self.handCardRoot[col].imgList[row]:setColor(cc.c3b(125,125,125))
- end
-
- end
- end
- end
- end
-
- --解锁
- function xichongRoomView:unLockYouPai()
- --根据服务器发来的牌解锁
- for col = 1, self.lieShuMax do
- for row = 1,self.hangShuMax do
- self.handCardRoot[col].imgList[row].isKan = false
- self.handCardRoot[col].imgList[row]:setTouchEnabled(true)
- self.handCardRoot[col].imgList[row]:setColor(cc.c3b(255,255,255))
- end
- end
- end
-
- function xichongRoomView:lockMyHandCards()
- --先把手牌全部锁了
- for col = self.lieShuMax,1,-1 do --列数
- for row = self.hangShuMax,1,-1 do --行数
- self.handCardRoot[col].imgList[row].isKan = true
- self.handCardRoot[col].imgList[row]:setTouchEnabled(false)
- self.handCardRoot[col].imgList[row]:setColor(cc.c3b(125,125,125))
- end
- end
-
- local firstOutCardList = app.room.roomInfo.firstOutCard or {}
-
- if table.nums(firstOutCardList) <= 0 then
- self:unLockYouPai()
- else
- --根据服务器发来的牌解锁
- for k,v in pairs(firstOutCardList) do
- for col = self.lieShuMax,1,-1 do --列数
- for row = self.hangShuMax,1,-1 do --行数
- local cardValue = self.handCardRoot[col].imgList[row].value
- if v == cardValue then
- self.handCardRoot[col].imgList[row].isKan = false
- self.handCardRoot[col].imgList[row]:setTouchEnabled(true)
- self.handCardRoot[col].imgList[row]:setColor(cc.c3b(255,255,255))
- end
-
- end
- end
- end
- end
-
-
- end
-
- function xichongRoomView:onBroadCastUserOutCard(data)
- local function fnCallack(onEnd)
- log("2000000000-xichongRoomView - (onBroadCastUserOutCard)")
- logE("onBroadCastUserOutCard :"..table.tostring(data.response))
- local viewId = app.room:getViewIdByUserId(data.response.nUserId)
- --吃后不能出的牌
- if data.response.nUserId == app.room:getMyUserId() then
- app.room.roomInfo.disCard = {}
- app.room.roomInfo.firstOutCard = {}
-
- for k,v in ipairs(data.response.disCard or {}) do
- table.insert(app.room.roomInfo.disCard,v)
- end
-
- for k,v in ipairs(data.response.nomorlDisCard or {}) do
- table.insert(app.room.roomInfo.disCard,v)
- end
-
- for k,v in ipairs(data.response.firstOutCard or {}) do
- table.insert(app.room.roomInfo.firstOutCard,v)
- end
-
- if table.nums(app.room.roomInfo.firstOutCard) > 0 then
- self:lockMyHandCards()
- else
- if table.nums(app.room.roomInfo.disCard) > 0 then
- self:lockYouPai(app.room.roomInfo.disCard)
- end
- end
-
-
- self:setGuideView(true)
- self.bOutCard = true
- end
-
- self:setCircleCardLeftPanelView(true,viewId,self.leftNum)
- if onEnd then
- onEnd()
- end
- end
-
- log("xichongRoomView:onBroadCastUserOutCard", "addCallBack(fnCallack)")
- self:addCallBack(fnCallack);
- end
-
- --出牌成功
- function xichongRoomView:onOutCardSuccess(data)
- logE("xichongRoomView:onOutCardSuccess(), response = ", table.tostring(data.response))
- local function runOnOutCardSuccess(onEnd)
- log("2000000000-xichongRoomView - runOnOutCardSuccess")
- --设置出牌动画隐藏
- self:setGuideView(false)
- --只要出了牌就不是起手操作了
-
- local response = data.response
- local nUserId = response.nOutCardUserId
- local card = response.byOutCard
- local operateCode = response.mainOpCode
- local leftHandCardNum = response.leftHandCardNum
- local isBiPeng = response.isBiPeng
- local opCardList = response.opCardList
- local isBiHu = response.isBiHu
-
- local fistOut = response.isBankerFirstOut
-
- if isBiPeng == 1 then
- self.isBingPeng = true
- else
- self.isBingPeng = false
- end
-
- local viewId = app.room:getViewIdByUserId(nUserId)
-
-
- if self.moValue and self.moValue > 0 and viewId == self:getMeViewId() then
- logE("xichongRoomView:onOutCardSuccess(), moVlaue = ", self.moValue)
- --self:requestFlashHandCard()
- --self.moValue = 0
- end
-
- self.moPaiViewId = viewId
- --隐藏出牌
- self.bOutCard = false
- --记录真实牌值
- self.outCard = card
- --记录操作码
- self.EatOperationCode = operateCode
-
- self:showDelayTimeTip()
-
- self.PlayerView:setLeftCardNum(viewId,true,leftHandCardNum)
- --self.PlayerView:setNoOpTime(false,viewId)
- logE("my userid :"..app.room:getMyUserId())
- logE("out card response nUserId:"..nUserId)
-
- if fistOut ~= 1 then
- local userInfo=app.room:getUserInfo(nUserId)
- if userInfo then
- ZPSound.PlayZPSound(userInfo.sex,card)
- else
- ZPSound.PlayZPSound(1,card)
- end
- end
-
- local chiCardlist = {}
-
- for k,v in ipairs(opCardList or {}) do
- table.insert(chiCardlist,v)
- end
-
-
- if nUserId ~= app.room:getMyUserId() then
- if operateCode ~= ZPDef.OpCode.OP_CANCEL and operateCode ~= ZPDef.OpCode.OP_ERROR then
- self:showOpeation(operateCode,card,chiCardlist, isBiHu)
- end
- --其他玩家显示
- logE("isFirstOutCard:"..fistOut)
- if fistOut ~= 1 then
- logE("is showOutCard:"..fistOut)
- self:setOutCardVisible(true,viewId,card,false,onEnd)
- else
- logE("niot is showOutCard:"..fistOut)
- if onEnd then --如果是第一次出牌也要结束这个函数
- onEnd()
- end
- end
-
- else
- if fistOut ~= 1 then
- self.isGodHand = true
- local function rankDeletOneCard(card)
- local isEnd = false
- --倒叙遍历1-10列
- for col = self.lieShuMax,1,-1 do --列数
- for row = self.hangShuMax,1,-1 do --行数
- if card == self.handCardRoot[col].imgList[row].value then --判断值是否相等
- logE("delete card1 ============= :"..card)
- table.remove(self.handCardValueLocal[col],row)
- --单张图片的值归nil
- self.handCardRoot[col].imgList[row].value = nil
- self.handCardRoot[col].imgList[row].isKan = false
- --单个图片隐藏
- self.handCardRoot[col].imgList[row]:setOpacity(255)
- self.handCardRoot[col].imgList[row]:setVisible(false)
- isEnd = true
- break
- end
- end
- if isEnd then
- break
- end
- end
- end
- local index = self.ui.Items.ImageView_handTempCard.index
- local lieshu = self.ui.Items.ImageView_handTempCard.lieshu
- local row = self.ui.Items.ImageView_handTempCard.hangshu --self:getRowByIndex(index)
- --说明:数据校验:弱网棋牌的通病(麻将出牌等一切可以允许玩家自己插牌的游戏,需要注意弱网情况,出牌会出现删错牌)
- --判断该列是否有牌
- if self.handCardValueLocal[lieshu] ~= nil and table.nums(self.handCardValueLocal[lieshu]) > 0 then
- --二次校验牌数据是否是出牌数据
- local recordValue = self.handCardRoot[lieshu].imgList[row].value
- if recordValue == card then
- logE("delete card2 ============= :"..card)
- table.remove(self.handCardValueLocal[lieshu],row)
- --数据干掉
- self.handCardRoot[lieshu].imgList[row].value = nil
- self.handCardRoot[lieshu].imgList[row].isKan = false
- --视图处理
- self.handCardRoot[lieshu].imgList[row]:setOpacity(255)
- self.handCardRoot[lieshu].imgList[row]:setVisible(false)
- else
- --随机删掉手里那张牌
- rankDeletOneCard(card)
- end
- else
- --随机删掉手里那张牌
- rankDeletOneCard(card)
- end
-
- if app.room:getMeIsInAIStatus() then
- self:setOutCardVisible(true,viewId,card,false, function () end)
- end
-
- self:rankDeletOneBakCard(card)
- --self:reflashHandCards()
- self:neatenCard(true)
-
- end
-
- if onEnd then
- onEnd()
- end
- --检查是否少牌
- self:checkCardAndRecover()
-
- --设置坨数
- --self:setTotalTuoNum(data.response.totoltuoNum)
- local myViewId = self:getMeViewId()
- self.PlayerView:setPlayerTuoShu(myViewId,data.response.totoltuoNum)
-
- if viewId == self:getMeViewId() then
- self:reflashHandCards()
- end
-
- app.room.roomInfo.firstOutCard = {}
- app.room.roomInfo.disCard = {}
- self:unLockYouPai()
-
- end
-
- end
- log("2000000000-xichongRoomView - addCallBack(runOnOutCardSuccess)")
- self:addCallBack(runOnOutCardSuccess)
-
- end
-
- -- 广播桌子上所有玩家庄家起手操作
- function xichongRoomView:onBankerOutCard(data)
- local function runOnBankerOutCard(onEnd)
- log("2000000000-xichongRoomView - (runOnBankerOutCard)")
- logE("onBankerOutCard :"..table.tostring(data.response))
- if data.response.nUserId ~= app.room:getMyUserId() then
- if data.response.mainOpCode ~= ZPDef.OpCode.OP_CANCEL and data.response.mainOpCode ~= ZPDef.OpCode.OP_ERROR then
- --操作码
- local viewId = app.room:getViewIdByUserId(data.response.nUserId)
- self.operationLocalCode = data.response.mainOpCode
- local card = data.response.byOutCard
- self:showOpeation(data.response.mainOpCode, card, nil, data.response.isBiHu)
- self:setGuideView(false)
- self.bOutCard = false
- end
- else
- self:setGuideView(false)
- self.bOutCard = false
- local card = data.response.byOutCard
- local viewId = app.room:getViewIdByUserId(data.response.nUserId)
- self.isGodHand = true
- local function rankDeletOneCard(card)
- local isEnd = false
- --倒叙遍历1-10列
- for col = self.lieShuMax,1,-1 do --列数
- for row = self.hangShuMax,1,-1 do --行数
- if card == self.handCardRoot[col].imgList[row].value then --判断值是否相等
- logE("delete card1 ============= :"..card)
- table.remove(self.handCardValueLocal[col],row)
- --单张图片的值归nil
- self.handCardRoot[col].imgList[row].value = nil
- self.handCardRoot[col].imgList[row].isKan = false
- --单个图片隐藏
- self.handCardRoot[col].imgList[row]:setOpacity(255)
- self.handCardRoot[col].imgList[row]:setVisible(false)
- isEnd = true
- break
- end
- end
- if isEnd then
- break
- end
- end
- end
- local index = self.ui.Items.ImageView_handTempCard.index
- local lieshu = self.ui.Items.ImageView_handTempCard.lieshu
- local row = self.ui.Items.ImageView_handTempCard.hangshu --self:getRowByIndex(index)
- --说明:数据校验:弱网棋牌的通病(麻将出牌等一切可以允许玩家自己插牌的游戏,需要注意弱网情况,出牌会出现删错牌)
- --判断该列是否有牌
- if self.handCardValueLocal[lieshu] ~= nil and table.nums(self.handCardValueLocal[lieshu]) > 0 then
- --二次校验牌数据是否是出牌数据
- local recordValue = self.handCardRoot[lieshu].imgList[row].value
- if recordValue == card then
- logE("delete card2 ============= :"..card)
- table.remove(self.handCardValueLocal[lieshu],row)
- --数据干掉
- self.handCardRoot[lieshu].imgList[row].value = nil
- self.handCardRoot[lieshu].imgList[row].isKan = false
- --视图处理
- self.handCardRoot[lieshu].imgList[row]:setOpacity(255)
- self.handCardRoot[lieshu].imgList[row]:setVisible(false)
- else
- --随机删掉手里那张牌
- rankDeletOneCard(card)
- end
- else
- --随机删掉手里那张牌
- rankDeletOneCard(card)
- end
- self:rankDeletOneBakCard(card)
- --self:reflashHandCards()
- self:neatenCard(true)
-
- if viewId == self:getMeViewId() then
- self:reflashHandCards()
- end
-
- app.room.roomInfo.firstOutCard = {}
- app.room.roomInfo.disCard = {}
- self:unLockYouPai()
- end
-
- local viewId = app.room:getViewIdByUserId(data.response.nUserId)
- local card = data.response.byOutCard
-
- local userInfo=app.room:getUserInfo(data.response.nUserId)
- if userInfo then
- ZPSound.PlayZPSound(userInfo.sex,card)
- else
- ZPSound.PlayZPSound(1,card)
- end
-
- self:setOutCardVisible(true,viewId,card,false,nil)
-
- local operations = {}
- --操作码
- local viewId = app.room:getViewIdByUserId(data.response.nUserId)
- operations[viewId] = {}
- operations[viewId].nUserId = data.response.nUserId
- operations[viewId].isCanOpereate = 1
- self:showDelayTimeTip(operations)
-
-
-
- if onEnd then
- onEnd()
- end
- end
-
-
- log("2000000000-ZPRoomView - addCallBack(runOnBankerOutCard)")
- self:addCallBack(runOnBankerOutCard);
- end
-
- --多维数组转 一维数组
- function xichongRoomView:ChangeDataToVector(data)
- local tt = {}
- for i = 1, self.lieShuMax do
- for j = 1, #data[i] do ---因为理了牌之后本地牌值的数组和保存的数组可能会不一致,保存的数组的一列长度可能会大于行数,所以要判断数组的长度
- if data[i][j] then
- table.insert(tt,data[i][j])
- end
- end
- end
- return tt
- end
-
-
- function xichongRoomView:reflashHandCards()
-
- local handCard = self:ChangeDataToVector(self.handCardValueBak)
- local sendCardResult = app.room:rankHandCard(handCard)
- local newCardList
- newCardList = app.room:serverCardToMyCard(sendCardResult)
-
- self.ui.Items.LayoutMain_4:removeAllChildren()
-
- self.handCardRoot = {}
- self.handCardItem = {}
- self.handCardValueLocal = {}
- self.handCardValueBak = {}
-
- local myUserID = app.room:getMyUserId()
-
- app.room.cards[myUserID] = newCardList
-
- self:createCard(false,myUserID,nil)
-
- end
-
-
-
- -- 操作成功
- function xichongRoomView:onOperationCodeSuccess(data)
- local function runOnOperationSuccess(onEnd)
- log("2000000000-xichongRoomView - (runOnOperationSuccess)")
- logE("xichongRoomView:onOperationCodeSuccess :"..table.tostring(data.response))
- local response = data.response
- local nUserID = response.nUserId
- local card = response.card
- local tablecard = response.tableCard
- local bIsOutCard = response.isShouldOutCard > 0
- local operateCodes = response.operateCodes
- local weaveCardList = response.weaveCardList
- local playerList = response.playerList
- local maxWeave = table.nums(weaveCardList)
- local totalHuShu = response.totalHuShu
- local leftHandCardNum = response.leftHandCardNum
-
- --local isMoPaiOrId = -1
- --app.room.roomInfo.huType = response.huType
-
- --点炮胡时,表示为点炮用户
- app.room.roomInfo.dianPaoSeatId = response.dianPaoSeatId
-
- --碰胡规则
- if maxWeave > 0 then
- --isMoPaiOrId = weaveCardList[maxWeave].seatId
- end
-
- --记录操作成功
- self.operationSuccessCode = operateCodes
- self.outCard = card
- self.chiCard = tablecard
-
- --视图ID
- local viewId = app.room:getViewIdByUserId(nUserID)
-
-
- --[[
- if self.moValue and self.moValue > 0 and viewId == self:getMeViewId() then
- logE("changpaiRoomView:onOutCardSuccess(), moVlaue = ", self.moValue)
- self:requestFlashHandCard()
- end
- ]]
-
- if nUserID == app.room:getMyUserId() then
- --self:setTotalTuoNum(totalHuShu)
- self.PlayerView:setPlayerTuoShu(viewId,totalHuShu)
- else
- self.PlayerView:setPlayerTuoShu(viewId,response.otherTuoNum)
- end
- self.tableHuXiList[viewId] = totalHuShu
- self.PlayerView:setPlayerHuXi(viewId,totalHuShu)
- self.PlayerView:setLeftCardNum(viewId,true,leftHandCardNum)
- --self.PlayerView:setNoOpTime(false,viewId)
- if bIsOutCard then
- for k,v in pairs(app.room.roomInfo.memberList) do
- local operations = {}
- operations[viewId] = {}
- operations[viewId].nUserId = v.nUserId
- operations[viewId].isCanOpereate = 0
- self:showDelayTimeTip(operations)
- end
- end
- local operations = {}
- operations[viewId] = {}
- operations[viewId].nUserId = nUserID
- operations[viewId].isCanOpereate = bIsOutCard and 1 or 0
- self:showDelayTimeTip(operations)
-
-
- --隐藏handTemp
- if viewId == self:getMeViewId() then
- self.isGodHand = true
- --出牌动画 setGuideView延迟了0.5
- self:runAction(cc.Sequence:create(cc.DelayTime:create(0.5),cc.CallFunc:create(function ()
- self:setColorWhite()
- if operateCodes == 0 then--点击过的时候设置可以点牌
- self.isGodHand = false
- end
- end)))
- self.ui.Items.ImageView_handTempCard:setVisible(false)
- end
-
- --显示指示器
- if bIsOutCard and operateCodes ~= 0 then
- self:setCircleCardLeftPanelView(true,viewId,self.leftNum)
- end
-
- --隐藏操作层
- self:setOperatorPanelView(false,nil)
-
- --判断自己是否需要出牌
- if bIsOutCard and viewId == self:getMeViewId()
- and operateCodes ~= 0
- and operateCodes ~= ZPDef.OpCode.OP_HU then
- self:runAction(cc.Sequence:create(cc.DelayTime:create(0.5),cc.CallFunc:create(function ()
- self:setGuideView(true)
- end)))
- self.bOutCard = true
- end
-
- if self.isTianHu and viewId == self:getMeViewId() then
- self.isTianHu = false
- self:setGuideView(true)
- self.bOutCard = true
- end
-
- --隐藏吃牌层
- self.operationView:setEatCardView(false)
-
- --执行操作
- local code = operateCodes
- logE("xichongRoomView:onOperationCodeSuccess nOperationCode:"..code)
- local operations = ZPFuc.getZPOperationType(code,false,false)
- local operationType = operations[1]
-
- if response.isSanGen then
- if response.isSanGen == 1 then
- self.PlayerView:playChiChengKan(viewId,tablecard,0)
- elseif response.isSanGen == 2 then
- self.PlayerView:playChiChengSiZhang(viewId,tablecard,0)
- end
- end
-
- if response.isSiGen then
- if response.isSiGen == 1 then
- self.PlayerView:playChiChengKan(viewId,card,1)
- elseif response.isSiGen == 2 then
- self.PlayerView:playChiChengSiZhang(viewId,card,1)
- end
- end
-
- --体验:等待0.5秒结束
- if operationType ~= ZPDef.OpType.OP_TYPE_WEIGUI and operationType ~= ZPDef.OpType.OP_TYPE_HU and operationType ~= ZPDef.OpType.OP_TYPE_CANCEL and operationType ~= nil then
- --吃碰操作
- --隐藏出牌层
- self:setOutCardVisible(false)
- self:doOperation(operationType,viewId,card,onEnd)
- elseif operationType == ZPDef.OpType.OP_TYPE_HU then
- --胡牌操作
- --1.隐藏引导出牌动画2.显示胡了哪张牌,3.播放胡牌特效
- self:setGuideView(false)
- local imgName = string.format("ImageView_outCardImg_%d",self.moPaiViewId)
- local mSprite = self.ui.Items[imgName]
- if self.outCard ~= 0 then
- local fileName = ZPFuc.getZPCardImgByValue(self.outCard,ZPDef.CardType.CARD_TYPE_OUTCARD,self.desktopType)
- mSprite:loadTextureFromPlist(fileName)
- end
-
- if coperateCodes ~= 0 then
- self:runAction(cc.Sequence:create(cc.DelayTime:create(0),cc.CallFunc:create(function ()
- self:setLayoutScoreTipVisible(true,playerList,false,onEnd,true)
- app.room.roomInfo.winUserId = nUserID
- --self:playHuEffect(viewId,onEnd)
- if self.leftNum and not self.isTianHu and card ~= 0 and app.room.roomInfo.dianPaoSeatId == -1 and viewId == self.moPaiViewId then
- self:playMoPaiAni(self.leftNum,card,viewId,0,1,nil,true, nil, nil, nil)
- end
- if onEnd then
- onEnd()
- end
- end)))
- end
- elseif operationType == ZPDef.OpType.OP_TYPE_WEIGUI then ---违规单独处理
- self:doOperation(ZPDef.OpType.OP_TYPE_WEIGUI,viewId,card,nil)
- --播放违规动画
- self:runAction(cc.Sequence:create(cc.DelayTime:create(0.5),cc.CallFunc:create(function()
- if onEnd then
- onEnd()
- end
- end)))
-
- else
- --self:showOperatorTip(viewId,ZPDef.OpType.OP_TYPE_CANCEL)
- --过
- self:doOperation(ZPDef.OpType.OP_TYPE_CANCEL,viewId,card,nil)
- if onEnd then
- onEnd()
- end
- end
- --if viewId == self:getMeViewId() then
- --self:reflashHandCards()
- --end
- end
- log("2000000000-xichongRoomView - addCallBack(runOnOperationSuccess)")
-
- self:addCallBack(runOnOperationSuccess)
- end
-
-
- function xichongRoomView:onGetCard(card)
- local dstCol1 = 0
- local isEnd = false
- for col = self.lieShuMax,1,-1 do --列数
- for row = self.hangShuMax,1,-1 do --行数
- if #self.handCardValueLocal[col] < 4 then
- dstCol1 = col
- isEnd = true
- break
- end
- end
- if isEnd then
- break
- end
- end
-
- if dstCol1 > 0 then
- table.insert(self.handCardValueLocal[dstCol1],card)
- --数据备份
- table.insert(self.handCardValueBak[dstCol1],card)
- end
-
-
- local handCard = self:ChangeDataToVector(self.handCardValueBak)
- local sendCardResult = app.room:rankHandCard(handCard)
- local newCardList
- newCardList = app.room:serverCardToMyCard(sendCardResult)
-
- self.ui.Items.LayoutMain_4:removeAllChildren()
-
- self.handCardRoot = {}
- self.handCardItem = {}
- self.handCardValueLocal = {}
- self.handCardValueBak = {}
-
- local myUserID = app.room:getMyUserId()
-
- app.room.cards[myUserID] = newCardList
-
- self:createCard(false,myUserID,nil)
- end
-
-
- --从手牌找与牌值相等的牌,没有再找加起来可以成14的,没有再找点数相同的
- function xichongRoomView:findCardPos(card)
- local secondDstCard
-
- logE("xichongRoomView - findCardPos",card)
-
- secondDstCard = 14 - tempCardVlue[tonumber(card)]
-
- local threeDstCard = tempCardVlue[tonumber(card)]
- --第一目标
- local dstCol1,dstRow1
- --第二目标
- local dstCol2,dstRow2
- --第三目标
- local dstCol3,dstRow3
- --第四目标
- local dstCol4,dstRow4
- --第一次找到值时,赋值一次,
- local firstSet = true
- local isEnd = false
- for col = self.lieShuMax, 1, -1 do
- for row = self.hangShuMax, 1, -1 do
- --if self.handCardRoot[col].imgList[row].value == card then
- --牌值相同的
- if self.handCardValueLocal[col][row] == card and #self.handCardValueLocal[col] < self.hangShuMax then
- dstCol1 = col
- dstRow1 = #self.handCardValueLocal[col]+1
- isEnd = true
- break
- end
- --if self.handCardRoot[col].imgList[row].value == secondDstCard then
- --点数加起来等于十四的
- local tempCard = tempCardVlue[tonumber(self.handCardValueLocal[col][row])]
- if tempCard == secondDstCard and #self.handCardValueLocal[col] < self.hangShuMax then
- dstCol2 = col
- dstRow2 = #self.handCardValueLocal[col]+1
- end
-
- --点数一样的
- if tempCard == threeDstCard and #self.handCardValueLocal[col] < self.hangShuMax then
- dstCol3 = col
- dstRow3 = #self.handCardValueLocal[col]+1
- end
-
-
- if firstSet and self.handCardValueLocal[col][row] then
- if col == self.lieShuMax then
- local secondLieshu = self.lieShuMax - 1
- local thirdLieshu = self.lieShuMax - 2
- if #self.handCardValueLocal[col] < self.hangShuMax then
- firstSet = false
- dstCol4 = col
- dstRow4 = #self.handCardValueLocal[col]+1
- elseif #self.handCardValueLocal[secondLieshu] < self.hangShuMax then
- firstSet = false
- dstCol4 = secondLieshu
- dstRow4 = #self.handCardValueLocal[col]+1
- elseif #self.handCardValueLocal[thirdLieshu] < self.hangShuMax then
- firstSet = false
- dstCol4 = thirdLieshu
- dstRow4 = #self.handCardValueLocal[col]+1
- end
- else
- firstSet = false
- dstCol4 = col + 1
- dstRow4 = 1
- end
-
- end
-
- --[[
- if firstSet and self.handCardValueLocal[col][row] then
- firstSet = false
- dstCol4 = col + 1
- dstRow4 = 1
- end
- ]]
-
-
- end
- if isEnd then
- break
- end
- end
- if dstCol1 then
- return dstCol1,dstRow1
- end
- if dstCol2 then
- return dstCol2,dstRow2
- end
- if dstCol3 then
- return dstCol3,dstRow3
- end
-
- if dstCol4 then
- return dstCol4,dstRow4
- end
-
- if firstSet then --手里面没有列数了
- return 5,1
- end
- end
-
- function xichongRoomView:showGetCardAni(leftNum,viewId,card)
- if self:getMeViewId() == viewId then
- self:playMoPaiAni(leftNum,card,viewId,0,1,nil,false,nil,true, nil)
- local seq = cc.Sequence:create(cc.DelayTime:create(self.gameSpeedConfig.MO_PAI_TIME + 0.7),cc.CallFunc:create(function ()
- local name = string.format("Layout_outCardPoint_%d",viewId)
- local mLayout = self.ui.Items[name]
- mLayout:setVisible(false)
- local srcPos = mLayout:getPosition()
- self.ui.Items.ImageView_handTempCard:setVisible(true)
- self.ui.Items.ImageView_handTempCard:loadTextureFromPlist(ZPFuc.getZPCardImgByValue(card,ZPDef.CardType.CARD_TYPE_HAND,self.desktopType,self.colorType))
- self.ui.Items.ImageView_handTempCard:setPosition(srcPos)
-
- local firstCol,firstRow = self:findCardPos(card)
- logD("xichongRoomView showGetCardAni",firstCol,firstRow)
- local node = self.handCardRoot[firstCol].imgList[firstRow]
- node.value = card
- local nodeSize = node:getParent():getContentSize()
- local nodePos = cc.pAdd(node:getWorldPosition(),cc.p(nodeSize.width/2,nodeSize.height/2))
- local seq2 = cc.Sequence:create(cc.MoveTo:create(0.2,nodePos),cc.CallFunc:create(function ()
- local firstCol1,firstRow1 = self:findCardPos(card)
- --防止在切换版式的时候摸牌,然后牌已经被删掉报错
- if not tolua.isnull(node) then
- node:loadTextureFromPlist(ZPFuc.getZPCardImgByValue(card,ZPDef.CardType.CARD_TYPE_HAND,self.desktopType))
- node:setVisible(true)
- end
-
- self.ui.Items.ImageView_handTempCard:setVisible(false)
- self.ui.Items.ImageView_handTempCard:setScale(1.0)
- self.ui.Items.ImageView_handTempCard:setOpacity(255)
-
- --self.handCardValueLocal[firstCol1][firstRow1] = card
- --table.insert(self.handCardValueBak[firstCol1],card)
- --self.handCardValueBak[firstCol1][firstRow1] = card
- if self:getCurrentColIsKan(self.handCardValueLocal[firstCol]) then
- for i=1,3 do
- self.handCardRoot[firstCol].imgList[i].isKan = true
- self.handCardRoot[firstCol].imgList[i]:setColor(cc.c3b(125,125,125))
- end
- end
- self.isGodHand = false
- --self:showTiPaiBtn(true)
-
- --排序
- --self:RankCard(true)
- self:onGetCard(card)
- --检测一遍手牌防止进牌的时候玩家在拖动牌导致的少牌问题
- self:checkCardAndRecover()
- if onEnd then
- onEnd()
- end
- end))
- self.ui.Items.ImageView_handTempCard:runAction(seq2)
- end))
- self:runAction(seq)
- else
- self:playMoPaiAni(leftNum,0,viewId,0,1,nil,false,nil,true, nil)
- --self.PlayerView:changeLeftCardNum(viewId,1)
- local name = string.format("Layout_outCardPoint_%d",viewId)
- --播放动画
- self.ui.Items.ImageView_handTempCard:loadTextureFromPlist(ZPFuc.getZPCardImgByValue(0,ZPDef.CardType.CARD_TYPE_OUTCARD,self.desktopType,self.colorType))--card
- local mSprite = self.ui.Items[name]
- local srcPos = mSprite:getPosition()
- self.ui.Items.ImageView_handTempCard:setPosition(srcPos)
- local tarPos = self.PlayerView:getPlayerPosByViewId(viewId)
- --self.ui.Items.ImageView_handTempCard:setEulerRotation(cc.vec3(0,0,90))
-
- local time = 0.2
- local spawn = cc.Spawn:create(cc.MoveTo:create(time,tarPos),cc.FadeOut:create(time),cc.ScaleTo:create(time,0))
- local seq = cc.Sequence:create(cc.DelayTime:create(self.gameSpeedConfig.MO_PAI_TIME + 0.7),cc.CallFunc:create(function ()
- self.ui.Items.ImageView_handTempCard:setVisible(true)
- local name = string.format("Layout_outCardPoint_%d",viewId)
- local mLayout = self.ui.Items[name]
- mLayout:setVisible(false)
- end),spawn,cc.CallFunc:create(function ()
- self.ui.Items.ImageView_handTempCard:setVisible(false)
- self.ui.Items.ImageView_handTempCard:setScale(1.0)
- self.ui.Items.ImageView_handTempCard:setOpacity(255)
- self.ui.Items.ImageView_handTempCard:setEulerRotation(cc.vec3(0,0,0))
- self.isGodHand = false
- --self:showTiPaiBtn(true)
- if onEnd then
- onEnd()
- end
- end))
- self.ui.Items.ImageView_handTempCard:runAction(seq)
- end
- end
-
-
- function xichongRoomView:onBroadCastUserGetCard(data)
- local function runUserGetCard(onEnd)
- log("2000000000-xichongRoomView - (runUserGetCard)")
- logE("runUserGetCard :"..table.tostring(data.response))
- self:checkCardAndRecover()
- local viewId = app.room:getViewIdByUserId(data.response.nUserId)
- local leftcardNum = data.response.leftCardNum
- local mocard = data.response.moCard
- self.moPaiViewId = viewId
- self.moValue = mocard
- if data.response.nUserId == app.room:getMyUserId() then
- --进牌后解锁油牌
- --如果报叫了则不能解锁
- --先刷新一遍手牌,存在上一轮摸了牌无操作也没出牌的情况
- self:unLockYouPai()
- app.room.roomInfo.disCard = {}
-
- --进牌的时候点过发0给服务器
- self.outCard = 0
-
- --self:onGetCard(moValue)
- local myViewId = self:getMeViewId()
- self.PlayerView:setPlayerTuoShu(myViewId,data.response.totoltuoNum)
- end
-
-
- local leftCard = data.response.tableCardNum
- self:setCircleCardLeftPanelView(true,viewId,leftCard)
-
- self.PlayerView:setLeftCardNum(viewId,true,leftcardNum)
-
- if data.response.baoType > 0 then
- local baoTypeList = self:getBaoTypeList(data.response.baoType)
-
- self.PlayerView:playPaiXingAniList(viewId, baoTypeList, mocard)
-
- local userInfo=app.room:getUserInfo(data.response.nUserId)
- if userInfo then
- ZPSound.PlayOperateSound(userInfo.sex,-55)
- end
- end
-
- self.isGodHand = true
- local seq = cc.Sequence:create(cc.CallFunc:create(function()
- self:showGetCardAni(leftCard,viewId,mocard)
- --播放偷音效
- local userInfo=app.room:getUserInfo(data.response.nUserId)
- if userInfo then
- ZPSound.PlayOperateSound(userInfo.sex,-64)
- end
- end),cc.DelayTime:create(1.2),cc.CallFunc:create(function()
- if onEnd then
- onEnd()
- end
- end))
-
- self:runAction(seq)
-
- end
-
- log("2000000000-xichongRoomView - addCallBack(runUserGetCard)")
- self:addCallBack(runUserGetCard);
- end
-
-
- function xichongRoomView:onUserGetCardOperteResponse(data)
- local function runonUserGetCardOperte(onEnd)
- log("2000000000-xichongRoomView - (runonUserGetCardOperte)")
- logE("runonUserGetCardOperte :"..table.tostring(data.response))
- if data.response.nUserId == app.room:getMyUserId() then
- if data.response.TouoperateCode ~= ZPDef.OpCode.OP_ERROR or data.response.BaoperateCode ~= ZPDef.OpCode.OP_ERROR then
- local opCard = 0
- local opeateCode = data.response.mainOpCode
- local ishu = data.response.ishu
- local isBiHu = data.response.isBiHu
- local hasGuo = true
- self.outCard = 0
- if #data.response.ToucardList > 0 then
- opCard = data.response.ToucardList[1]
- end
-
-
- local viewId = app.room:getViewIdByUserId(data.response.nUserId)
- self.operationLocalCode = opeateCode
- if self.operationLocalCode > 0 then
- self:showOpeation(opeateCode,opCard, nil, isBiHu)
- self:setGuideView(false)
- self.bOutCard = false
- end
-
- self.PlayerView:setPlayerTuoShu(viewId,data.response.totalTuoNum)
- end
- end
-
- local operations = {}
- --操作码
- local viewId = app.room:getViewIdByUserId(data.response.nUserId)
- operations[viewId] = {}
- operations[viewId].nUserId = data.response.nUserId
- operations[viewId].isCanOpereate = 1
- self:showDelayTimeTip(operations)
-
- if onEnd then
- onEnd()
- end
- end
-
-
- log("2000000000-xichongRoomView - addCallBack(runonUserGetCardOperte)")
- self:addCallBack(runonUserGetCardOperte);
- end
-
-
- --摸牌
- function xichongRoomView:onMoPai(data)
- local function runOnMoPai(onEnd)
- local response = data.response
- local nUserId = response.nUserId
- local turnOverCard = response.turnOverCard
- local code = response.mainOpCode
- local leftCardNum = response.leftCardNum
- --local operations = response.operations
- local isBiPeng = response.isBiPeng
- local chiOpCardlist = response.chiOpCardList
- local isBiHu = response.isBiHu
-
- if isBiPeng == 1 then
- self.isBingPeng = true
- end
-
-
- local viewId = app.room:getViewIdByUserId(nUserId)
- self.EatOperationCode = code
- self.outCard = turnOverCard
- self.moPaiViewId = viewId
-
- self:showDelayTimeTip()
-
- --更新剩余牌数
- self:playMoPaiAni(leftCardNum,turnOverCard,viewId,code,1,onEnd,false,chiOpCardlist, nil, isBiHu)
-
- if self.bankerBaoPao then
- self.bankerBaoPao = nil
- self:showTiPaiBtn(true)
- --小家不能看牌时,牌堆牌显示剩余张数
- if app.room:isLittleFamily() and (not ZPFuc.getLittleIsCanLookCard()) then
- self:setCircleCardLeftPanelView(true,viewId,19)
- end
- end
- if self:getIsMeUId(nUserId) then
- --检测是否少牌
- self:checkCardAndRecover()
- end
-
- --[[ --结束
- if onEnd then
- onEnd()
- end--]]
- end
- log("2000000000-ZPRoomView - addCallBack(runOnMoPai)")
-
- self:addCallBack(runOnMoPai)
- end
-
- --刷新手牌
- function xichongRoomView:onReflashHandcardsResponese(event)
- log("2000000000-xichongRoomView - onReflashHandcardsResponese()" )
-
- logD("onReflashHandcardsResponese self.handCardValueBak---",table.tostring(self.handCardValueBak));
- logD("onReflashHandcardsResponese self.handCardValueLocal---",table.tostring(self.handCardValueLocal));
- --uploadLogs("reflashhandcard2")
-
- self.ui.Items.LayoutMain_4:removeAllChildren()
- self.handCardRoot = {}
- self.handCardItem = {}
- self.handCardValueLocal = {}
- self.handCardValueBak = {}
- local myUserID = app.room:getMyUserId()
- self:createCard(false,myUserID,nil)
-
- if table.nums(app.room.roomInfo.firstOutCard) > 0 then
- self:lockMyHandCards()
- else
- if table.nums(app.room.roomInfo.disCard) > 0 then
- self:lockYouPai(app.room.roomInfo.disCard)
- end
- end
- end
-
-
- --[[function xichongRoomView:setLiangPaiVisible(bVisible)
- if self.xiaojuView then
- self.xiaojuView:setVisible(bVisible)
- end
- end
- --]]
-
- -- 小局结算
- function xichongRoomView:onGameXiaoJuResponse(data)
- local function runGameXiaoJuResponse(onEnd)
- self.ui.Items.Button_tipai:setVisible(false)
- self.PlayerView:stopAndHideBaoAnim()
- self.PlayerView:hideLeftCard()
- --显示所有底牌
- local response = data.response;
-
- --标记单局结束
- self.isGameOver = true
- --禁止出牌
- self.bOutCard = false
-
- local roomInfo = app.room.roomInfo
- --结束原因
- roomInfo.stopFlag = response.stopFlag
- --赢家uid, -1则下面6个字段是无用
- roomInfo.winUserId = response.winUserId
- --点炮胡时,表示为点炮用户
- roomInfo.dianPaoUserId = response.dianPaoUserId
- --违规
- roomInfo.weiGuiUid = response.weiGuiUid
- --胡的类型(如天胡、地胡 ,自摸胡等)
- roomInfo.huType = response.huTypes
- --多少个玩家
- roomInfo.playList = response.playList
- --底牌信息
- roomInfo.dipaiList = response.dipaiList
- --胡牌牌值
- roomInfo.huCard = response.huCard
- --是否大局结束,结束是1
- roomInfo.isGameOver = response.isGameOver
- --胡牌信息
- roomInfo.hupaiInfo = response.hupaiInfo
-
- --是否自摸胡
- roomInfo.isZiMoHu = response.isZiMoHu
-
- local huViewId = 0
- local isSomebodyHuPai = false
- for i,v in pairs(roomInfo.hupaiInfo) do
- huViewId = app.room:getViewIdByUserId(v.huPaiUid)
- roomInfo.dianPaoUserId = v.dianPaoUid
- roomInfo.weiGuiUid = v.weiGuiUid
- roomInfo.baopeiUserid = app.room:getUserIdBySeatId(v.BaoPeiUid)
- roomInfo.fourNormolNum = v.fourNormolNum
- roomInfo.fourHongNum = v.fourHongNum
- roomInfo.threeHongNum = v.threeHongNum
- roomInfo.huCard = v.huCard
- self.PlayerView:setPlayerHuXi(v.huPaiHuShu)
- roomInfo.huType = v.huTypes
-
- isSomebodyHuPai = true
- end
-
- self.PlayerView:setHuCardVisible(huViewId, true, roomInfo.huCard)
-
- --所有的暗偎默认亮起一张
- --self:showLastAnWeiPai()
-
- --完成底牌展示
- self.xiaojuChaPaiView:showDiPai()
-
- --完成手牌展示
- local hasHandCard = true
-
- for k,v in pairs(roomInfo.playList) do
- --三个人的时候要加UId为0的判断
- if v.nUserId > 0 and v.handCard and #v.handCard == 0 then
- hasHandCard = false
- break
- end
- end
-
- --如果没有手牌则直接进入大结算
- if not hasHandCard then
- app.room.roomInfo.needJieSuanInfo = 1
- end
-
- for k,v in pairs(roomInfo.playList) do
- local cardData = app.room:serverCardToMyCard(v.handCard)
- if not roomInfo.memberList[v.nUserId] then
- roomInfo.memberList[v.nUserId] = {}
- end
- roomInfo.memberList[v.nUserId].cardList = {}
- roomInfo.memberList[v.nUserId].cardList = cardData
- local tuoNum = v.totalTuoNum
- local viewId = app.room:getViewIdByUserId(v.nUserId)
- self.PlayerView:setPlayerTuoShu(viewId,tuoNum)
- --[[logE("XiaoJu nUserID:"..v.nUserId)
- logE("XiaoJu cardList:"..table.tostring(cardData))--]]
- end
- self.xiaojuChaPaiView:liangShouPai(false)
-
- --玩家分数
- for k,v in pairs(roomInfo.playList) do
- local viewId = app.room:getViewIdByUserId(k)
- local nScore = v.nTotalMoney
- local memberInfo = app.room.roomInfo.memberList[k]
-
- --[[roomInfo.memberList[v.nUserId].nPlayerFlag = 0--]]
- memberInfo.nTotalMoney = nScore
- self.PlayerView:setPlayerScore(viewId,nScore)
- end
-
-
- local function nextCallBackFun()
- self:resetGameData()
- end
-
- local function showAllJieSuan()
- if self.RoomCountAllViewUI then
- if not self.RoomCountAllViewUI:isVisible() then
- self.RoomCountAllViewUI:playAni()
- end
- self.RoomCountAllViewUI:setVisible(true)
- self:showGameOverAward()
- end
- end
-
- if app.room.roomInfo.isGameOver == 0 then
- self.xiaojuView = xichongRoomXiaoJuView:new(nextCallBackFun,false)
- else
- self.xiaojuView = xichongRoomXiaoJuView:new(showAllJieSuan,false)
- end
-
- self:addChild(self.xiaojuView)
- self.xiaojuView:setVisible(false)
-
-
- local function showChaPai()
- runDelay(1, function ()
- self:setLiangPaiVisible(true)
- if self.xiaojuView then
- self.xiaojuView:setVisible(true)
- end
- end)
- end
-
- if huViewId and huViewId > 0 then --违规的时候没有胡牌id
- self:playHuEffect(huViewId,showChaPai)
- end
- --结束原因表现
- if roomInfo.stopFlag == ZPDef.XiaoJuEndType.STOP_FLAG_HUANG_ZHUANG or (not isSomebodyHuPai and roomInfo.stopFlag == ZPDef.XiaoJuEndType.STOP_FLAG_TUOGUAN_DISMISS) then
- roomInfo.huType = 0
- local viewId = self:getMeViewId()
- -- self:playHuEffect(viewId,showChaPai)
- showChaPai()
- --播放黄庄动画
- local userInfo=app.room:getUserInfo(app.user.loginInfo.uid)
- if userInfo then
- --ZPSound.PlayHuangZhuang(userInfo.sex)
- end
- self.xiaojuChaPaiView:PlayHuangZhuangAni(true)
- elseif roomInfo.stopFlag == ZPDef.XiaoJuEndType.STOP_FLAG_WEIGUI then
- local userInfo=app.room:getUserInfo(roomInfo.weiGuiUid)
- if userInfo then
- ZPSound.PlayWeiGui(userInfo.sex)
- end
- showChaPai()
- elseif roomInfo.stopFlag == ZPDef.XiaoJuEndType.STOP_FLAG_DISBAND_GAME then
- showChaPai()
- elseif roomInfo.stopFlag == ZPDef.XiaoJuEndType.STOP_FLAG_LONG_NOT_END then
- app.room.roomInfo.needJieSuanInfo = 1
- --[[ showConfirmDialog("游戏长久未打完,超过房间存在时间,本局结束",function()
- logE("超时回到大厅")
- self:runAction(cc.Sequence:create(cc.DelayTime:create(1.0),cc.CallFunc:create(function ()
- --房间号
- local roomid = app.room.roomInfo.nShowTableId
- --app:gotoView(import("luaScript.Views.Main.MainView"):new(app.gameId, roomid))
- gotoMainView(app.gameId,roomid)
- end)))
- end,nil)--]]
- end
-
-
- --结束
- if onEnd then
- onEnd()
- end
- end
- log("2000000000-xichongRoomView - addCallBack(runGameXiaoJuResponse)" )
- self:addCallBack(runGameXiaoJuResponse);
- end
-
- --胡牌特效
- function xichongRoomView:playHuEffect(viewId,onEnd,isRecontect)
- --[[ --黄庄了直接return
- if app.room.roomInfo.stopFlag == ZPDef.XiaoJuEndType.STOP_FLAG_HUANG_ZHUANG then
- return
- end--]]
- logE("xichongRoomView playHuEffect",app.room.roomInfo.huType,viewId)
- local nUserID = app.room:getUserIdByViewId(viewId)
- if (app.room.roomInfo.huType and app.room.roomInfo.huType >= 0) and (app.room.roomInfo.stopFlag == ZPDef.XiaoJuEndType.STOP_FLAG_NORMAL) then
- local userInfo=app.room:getUserInfo(nUserID)
- if userInfo then
- ZPSound.PlayOperateSound(userInfo.sex,4)
- --if ZPFuc.isZiMo(app.room.roomInfo.huType) then
- --ZPSound.PlayOperateSound(userInfo.sex,11)
- --else
- --ZPSound.PlayOperateSound(userInfo.sex,4)
- --end
- end
- end
-
- local name = string.format("Layout_outCardPoint_%d",viewId)
- local mLayout = self.ui.Items[name]
-
- local huEffectUI = loadUI("zp_base/res/ui/ui_fangjian/zipai_ui_effectHu.ui")
- local pos = mLayout:getPosition()
-
- if viewId == self:getMeViewId() then
- local centerPos = cc.Director:getInstance():getVisibleSize()
- local pos = cc.p(centerPos.width/2,centerPos.height/2 - 70)
- huEffectUI:setPosition(pos)
- elseif viewId == 1 then
- huEffectUI:setPosition(cc.pAdd(pos,cc.p(90,-30)))
- elseif viewId == 2 then
- huEffectUI:setPosition(cc.pAdd(pos,cc.p(0,20)))
- elseif viewId == 3 then
- huEffectUI:setPosition(cc.pAdd(pos,cc.p(-70,-30)))
- end
-
- self.ui.Items.Layout_Player_HuEffect:addChild(huEffectUI,2)
-
- --模式切换头像位置会变所以要实时获取头像的位置
- local headInfos = {}
- for k,v in pairs(self.PlayerView.allNodes) do
- if k == 2 then
- local pos = cc.pAdd(v.player:getPosition(),cc.p(0,30))
- table.insert(headInfos,{headPos=pos})
- elseif k == 4 then
- local pos = cc.pAdd(v.player:getPosition(),cc.p(40,40))
- table.insert(headInfos,{headPos=pos})
- elseif k == 3 then
- local pos = cc.pAdd(v.player:getPosition(),cc.p(40,40))
- table.insert(headInfos,{headPos=pos})
- elseif k == 1 then
- local pos = cc.pAdd(v.player:getPosition(),cc.p(0,40))
- table.insert(headInfos,{headPos=pos})
- end
- end
-
- local pPos = cc.p(0,0)
- for k,v in pairs(headInfos) do
- if k == viewId then
- --pPos = v.headPos
- if viewId == 2 then
- pPos.y = v.headPos.y + 30
- pPos.x = v.headPos.x - 5
- elseif viewId == 1 then
- pPos.y = v.headPos.y + 20
- pPos.x = v.headPos.x
- elseif viewId == 3 then
- pPos.y = v.headPos.y + 20
- pPos.x = v.headPos.x
- elseif viewId == 4 then
- pPos.y = v.headPos.y + 20
- pPos.x = v.headPos.x
- end
- end
- end
-
- local mSpawn = cc.Spawn:create(cc.MoveTo:create(0.5,pPos),cc.ScaleTo:create(0.3,0.5))
-
- huEffectUI:runAction(cc.Sequence:create(cc.DelayTime:create(0.5),mSpawn))
-
- local delayTime = 0.8
- --动画展现
- if app.room.roomInfo.huType and app.room.roomInfo.huType >= 0 then
- local name = ""
- local bankerViewId = app.room:getViewIdBySeatId(app.room.roomInfo.nBankSeatId)
- local nWinerId = app.room.roomInfo.winUserId
- local winerViewId = app.room:getViewIdByUserId(nWinerId)
- if app.room.roomInfo.stopFlag == ZPDef.XiaoJuEndType.STOP_FLAG_HUANG_ZHUANG then--app.room.roomInfo.huType == 0 and
- name = "zp_room_chapai_huangzhuang.png"--显示叫(表示听牌了)
- local centerPos = cc.Director:getInstance():getVisibleSize()
- local pos = cc.p(centerPos.width/2,centerPos.height/2 - 70)
- huEffectUI:setPosition(pos)
- huEffectUI.Items.ImageView_huType:loadTextureFromPlist(name)
- huEffectUI:setVisible(false)
- delayTime = 0
- else
- --name = "zp_room_chapai_hu.png"--string.format(ZPDef.TipFile.HU,app.room.roomInfo.huType)
- huEffectUI.Items.ImageView_huType:loadTexture(ZPDef.TipFile.HU)
- end
-
- end
- isRecontect = true--不显示动画
- if isRecontect then
- huEffectUI.Items.ImageView_Light:setVisible(false)
- huEffectUI.Items.ImageView_Point:setVisible(false)
- huEffectUI.Items.ImageView_Coin:setVisible(false)
- self:showPaoImage()
- self:runAction(cc.Sequence:create(cc.DelayTime:create(delayTime),cc.CallFunc:create(function ()
- if onEnd then
- onEnd()
- end
- end)))
- return
- end
- local mSpawn1 = cc.Spawn:create(cc.ScaleTo:create(0.3,1.0),cc.RotateBy:create(2,-120*6))
- huEffectUI.Items.ImageView_Point:runAction(mSpawn1)
-
- local mSpawn2 = cc.Spawn:create(cc.ScaleTo:create(0.3,1.0),cc.RotateBy:create(2,120*6))
- huEffectUI.Items.ImageView_Light:runAction(mSpawn2)
-
- huEffectUI.Items.ImageView_Coin:setScale(0)
- local mSeq1 = cc.Sequence:create(cc.ScaleTo:create(0.3,1))
- huEffectUI.Items.ImageView_Coin:runAction(mSeq1)
-
- huEffectUI.Items.ImageView_huType:setScale(2)
- huEffectUI.Items.ImageView_huType:setOpacity(0)
- local mSeq2 = cc.Sequence:create(cc.DelayTime:create(0.6),cc.FadeIn:create(0),cc.ScaleTo:create(0.2,1.0))
- huEffectUI.Items.ImageView_huType:runAction(mSeq2)
-
- huEffectUI:runAction(cc.Sequence:create(cc.DelayTime:create(2.2),cc.CallFunc:create(function()
- huEffectUI.Items.ImageView_Light:setVisible(false)
- huEffectUI.Items.ImageView_Point:setVisible(false)
- huEffectUI.Items.ImageView_Coin:setVisible(false)
- self:showPaoImage()
- if onEnd then
- onEnd()
- end
- end)))
- end
-
- --点炮显示
- function xichongRoomView:showPaoImage()
- if app.room.roomInfo.dianPaoUserId and app.room.roomInfo.dianPaoUserId >= 0 then
- local dianPaoViewId = app.room:getViewIdByUserId(app.room.roomInfo.dianPaoUserId)
- --点炮精灵
- local mSprite = cc.ImageView:createNode()
- mSprite:loadTexture(ZPDef.TipFile.DIANPAO)
- --if dianPaoViewId == 2 then
- --mSprite:setEulerRotation(cc.vec3(0, 0, -90))
- --end
-
- local name = string.format("Layout_outCardPoint_%d",dianPaoViewId)
- local mLayout = self.ui.Items[name]
-
- local pos = mLayout:getPosition()
-
- if dianPaoViewId == self:getMeViewId() then
- local centerPos = cc.Director:getInstance():getVisibleSize()
- local pos = cc.p(centerPos.width/2,centerPos.height/2 - 70)
- mSprite:setPosition(pos)
- elseif dianPaoViewId == 1 then
- mSprite:setPosition(cc.pAdd(pos,cc.p(90,-30)))
- elseif dianPaoViewId == 2 then
- mSprite:setPosition(cc.pAdd(pos,cc.p(0,20)))
- elseif dianPaoViewId == 3 then
- mSprite:setPosition(cc.pAdd(pos,cc.p(90,-30)))
- end
-
- self.ui.Items.Layout_Player_HuEffect:addChild(mSprite,2)
-
- --模式切换头像位置会变所以要实时获取头像的位置
- local headInfos = {}
- for k,v in pairs(self.PlayerView.allNodes) do
- if k == 2 then
- local pos = cc.pAdd(v.player:getPosition(),cc.p(0,30))
- table.insert(headInfos,{headPos=pos})
- elseif k == 4 then
- local pos = cc.pAdd(v.player:getPosition(),cc.p(40,40))
- table.insert(headInfos,{headPos=pos})
- elseif k == 3 then
- local pos = cc.pAdd(v.player:getPosition(),cc.p(40,40))
- table.insert(headInfos,{headPos=pos})
- elseif k == 1 then
- local pos = cc.pAdd(v.player:getPosition(),cc.p(0,40))
- table.insert(headInfos,{headPos=pos})
- end
- end
-
- local pPos = cc.p(0,0)
- for k,v in pairs(headInfos) do
- if k == dianPaoViewId then
- --pPos = v.headPos
- if dianPaoViewId == 2 then
- pPos.y = v.headPos.y + 5
- pPos.x = v.headPos.x - 10
- elseif dianPaoViewId == 1 then
- pPos.y = v.headPos.y + 5
- pPos.x = v.headPos.x - 5
- elseif dianPaoViewId == 3 then
- pPos.y = v.headPos.y + 5
- pPos.x = v.headPos.x
- elseif dianPaoViewId == 4 then
- pPos.y = v.headPos.y + 5
- pPos.x = v.headPos.x
- end
- end
- end
-
- local mSpawn = cc.Spawn:create(cc.MoveTo:create(0.5,pPos),cc.ScaleTo:create(0.3,0.4))
-
- mSprite:runAction(cc.Sequence:create(cc.DelayTime:create(0.5),mSpawn))
- end
- end
-
- --游戏消息
- function xichongRoomView:bindGameMessage()
- xichongRoomView.super.bindGameMessage(self)
- --下飘
- self:bindEvent(app.room , "onBroadCastUserPiao" , handler(self , self.onXiaPiaoTime))
- --通知用户暗操作
- self:bindEvent(app.room , "onUserOperateResponse", handler(self , self.onUserOperateResponse));
- --暗操作成功
- self:bindEvent(app.room , "onBroadCastQiShouOperate", handler(self , self.onUserOperateSuccess));
- --接收到报操作提示
- self:bindEvent(app.room , "onUserCanBaoResponse" , handler(self, self.onUserCanBaoResponse))
- --广播用户报操作
- self:bindEvent(app.room , "onBroadUserBaoResponse", handler(self, self.onBroadUserBaoResponse))
- --通知玩家出牌
- self:bindEvent(app.room , "onBroadCastUserOutCard", handler(self, self.onBroadCastUserOutCard))
- --广播玩家进牌
- self:bindEvent(app.room , "onBroadCastUserGetCard", handler(self , self.onBroadCastUserGetCard));
- --刷新手牌
- self:bindEvent(app.room , "onReflashHandcardsResponese" , handler(self , self.onReflashHandcardsResponese));
- --通知进牌后操作提示
- self:bindEvent(app.room , "onUserGetCardOperteResponse", handler(self , self.onUserGetCardOperteResponse));
- --切换视图
- self:bindEvent(app , ZPDef.ZPEvent.ChangeViewType, handler(self, self.changeViewType))
- -- 托管
- self:bindEvent(app.room , ZPDef.ZPEvent.HostingRequest, handler(self, self.onHostingRequest))
- end
-
-
- function xichongRoomView:changeViewType(event)
-
- if event and event.desktopType and self.desktopType~=event.desktopType then
- self.desktopType=event.desktopType
- if self.xiaojuChaPaiView then
- self.xiaojuChaPaiView:setDeskTopType(event.desktopType)
- end
- end
-
- --[[ if event and event.colorType and self.desktopType~=event.colorType then
- self.colorType=event.colorType
-
-
- if self.xiaojuChaPaiView then
- self.xiaojuChaPaiView:setCardColorType(event.colorType)
- end
- end--]]
- self.PlayerView:setPlayerPosByChangeTable(self.desktopType)
-
- self:changeOutCardPos()
-
- self:initOpOutCardNum()
-
- self:initMySelfCardPos()
-
- self:loadTextureCache()
-
- self.ui:sendMsg(app.room,ZPDef.ZPEvent.GetTableInfo)
-
- end
-
- --显示提牌按钮
- function xichongRoomView:showTiPaiBtn(vis)
- vis = vis or false
- self.ui.Items.Button_tipai:setVisible(false)
- end
-
- function xichongRoomView:onXiaPiaoTime(data)
- local function runXiaPiao(onEnd)
- log("xichongRoomView onXiaPiaoTime")
- local nUserId = data.response.nUserId
- self:showPiao(nUserId)
-
- if onEnd then
- onEnd()
- end
- end
- log("2000000000-xichongRoomView - addCallBack(onXiaPiaoTime)" )
- self:addCallBack(runXiaPiao)
- end
-
-
- function xichongRoomView:resetGameData()
- xichongRoomView.super.resetGameData(self)
- for i = 1,ZPDef.GameMaxPlayer do
- self.PlayerView:setPlayerTuoShu(i, 0)
- self.PlayerView:setHuCardVisible(i, false, nil)
- end
- self.PlayerView:hideDingPiao()
- if app.room.roomInfo.nGameStartCount == 0 then
- self.PlayerView:hidePiao()
- end
-
-
- for i = 1, ZPDef.GameMaxPlayer do
- local giveupName = string.format("Layout_outCardPos_%d",i)
- self.ui.Items[giveupName]:removeAllChildren()
- end
-
- self:cleanOpOutCard()
- self.PlayerView:hidePaiXing()
- self.PlayerView:hideDang()
- self.PlayerView:hideTouJia()
- self.PlayerView:hideXiaoJia()
- self:initOpOutCardNum()
- self.isBingPeng = false
-
- if self.xiaojuView then
- self.xiaojuView:removeFromParent()
- self.xiaojuView = nil
- end
-
- if self.xiaojuChaPaiView then
- self.xiaojuChaPaiView:setVisible(false)
- end
-
- end
-
- --@parm:手牌列表
- function xichongRoomView:getLocalHuShu(list)
- return 0
- end
-
-
- --注册点击事件
- function xichongRoomView:registerCardTouch()
- local function getPosOO()
- local nodeTouch = self.ui.Items.Layout_Touch;
- local posTouch = nodeTouch:getWorldPosition()
- local poaAnchor = nodeTouch:getAnchorPoint()
- local sizeTouch = nodeTouch:getContentSize();
- local posOO = { x = posTouch.x - sizeTouch.width * poaAnchor.x , y = posTouch.y - sizeTouch.height * poaAnchor.y}
-
- return posOO;
- end
-
- --触摸
- for k,v in ipairs(self.handCardItem) do
- local function onTouchBegan(touch)
- --[[if app.room:isLittleFamily() then
- --showTooltip("小家禁止操作")
- return
- end--]]
- if self.isGodHand then
- --showTooltip("禁止操作")
- return
- end
- local posOO = getPosOO()
- local localPos = touch:getLocation();
- local pos = cc.p(localPos.x - posOO.x, localPos.y - posOO.y);
-
- local lieshu = v.lieshu
- local hangshu = v.hangshu
- local value = v.value
- local isKan = v.isKan
- if isKan then
- --showTooltip("坎牌不可移动")
- return
- end
-
- self.handCardRoot[lieshu].ui:setVisible(true)
-
- if value == nil then
- return
- end
- --playZiPaiSelectCardVoice()
- logE("88888888-=============onTouchBegan1================")
- logE("88888888-isKan:")
- logE(isKan)
- logE("88888888-touch lieshu:",lieshu)
- logE("88888888-touch hangshu:",hangshu)
- logE("88888888-touch value:",value)
- if value - 16 > 0 then
- logE("玩家点了"..lieshu.."列"..hangshu.."行的大"..value - 16)
- else
- logE("玩家点了"..lieshu.."列"..hangshu.."行的小"..value)
- end
- if isKan then
- logE("该牌为坎牌")
- else
- logE("该牌不是坎牌")
- end
- logE("88888888-card :"..table.tostring(self.handCardValueLocal))
- logE("88888888-=============onTouchBegan2================")
- v:setOpacity(0)
- if self.ui.Items.ImageView_handTempCard.cIdx ~= k then
- self:setColorWhite()
- v:setColor(ZPDef.ColorConfig.TOUCH_CARD_COLOR)
- self.ui.Items.Button_OutCard:setEnabled(true)
- elseif self.ui.Items.ImageView_handTempCard.cIdx == k then
- if v:getColor().r == ZPDef.ColorConfig.TOUCH_CARD_COLOR.r and v:getColor().g == ZPDef.ColorConfig.TOUCH_CARD_COLOR.g and v:getColor().b == ZPDef.ColorConfig.TOUCH_CARD_COLOR.b then
- self:setColorWhite()
- self.ui.Items.Button_OutCard:setEnabled(false)
- else
- v:setColor(ZPDef.ColorConfig.TOUCH_CARD_COLOR)
- self.ui.Items.Button_OutCard:setEnabled(true)
- end
- end
-
- self:showTingPaiView(v.value)
-
- --出牌线
- self:setOutCardLineVisible(true)
-
- --临时牌
- self.ui.Items.ImageView_handTempCard.cIdx = k
- self.ui.Items.ImageView_handTempCard.lieshu = lieshu
- self.ui.Items.ImageView_handTempCard.hangshu = hangshu
- self.ui.Items.ImageView_handTempCard.value = value
- self.ui.Items.ImageView_handTempCard.index = k
- self.ui.Items.ImageView_handTempCard:setVisible(true)
- self.ui.Items.ImageView_handTempCard:loadTextureFromPlist(ZPFuc.getZPCardImgByValue(value,ZPDef.CardType.CARD_TYPE_OUTCARD,self.desktopType))
- self.ui.Items.ImageView_handTempCard:setPosition(pos)
- end
- local function onTouchMove(touch)
- if self.isGodHand then
- --showTooltip("end 禁止操作")
- return
- end
- local posOO = getPosOO()
- local localPos = touch:getLocation();
- local pos = cc.p(localPos.x - posOO.x, localPos.y - posOO.y);
- self.ui.Items.ImageView_handTempCard:setPosition(pos)
- end
- local function onTouchEnd(touch)
- if self.isGodHand then
- --showTooltip("end 禁止操作")
- return
- end
- logE("88888888-=============onTouchEnd1================")
- if not self.ui.Items.ImageView_handTempCard:isVisible() then
- --showTooltip("End 临时牌阻止了事件")
- v:setOpacity(255)
- self.ui.Items.ImageView_handTempCard:setVisible(false)
- return
- end
- self.ui.Items.ImageView_handTempCard:setVisible(false)
- --出牌线
- self:setOutCardLineVisible(false)
- if v.isKan then
- return
- end
- if not v.value then
- return
- end
- v:setOpacity(255)
- --回到原点动画
- self:goBackWithAni(v,0.15)
- logE("88888888-=============onTouchEnd2================")
- end
- local function onTouchCancel(touch)
- if self.isGodHand then
- --showTooltip("禁止操作")
- return
- end
- self:setColorWhite()
- logE("88888888-=============onTouchCancel 1================")
- --出牌线
- self:setOutCardLineVisible(false)
- if not self.ui.Items.ImageView_handTempCard:isVisible() then
- --showTooltip("cancel 临时牌阻止了事件")
- v:setOpacity(255)
- self.ui.Items.ImageView_handTempCard:setVisible(false)
- return
- end
- self.ui.Items.ImageView_handTempCard:setVisible(false)
-
- if v.isKan then
- return
- end
- if not v.value then
- return
- end
-
- v:setOpacity(255)
- --临时牌
- self.ui.Items.ImageView_handTempCard:setVisible(false)
- local touchPos = touch:getLocation()
- -------------------------------------------------------
- -------------------------------------------------------
- local hitCount = 0
- local hitItem = {}
- for i = #self.handCardItem,1,-1 do
- local mSprite = self.handCardItem[i]
- local posNode = mSprite:convertToNodeSpace(touchPos);
- local width = mSprite:getContentSize().width
- local height = mSprite:getContentSize().height
- --不可以用getWorldPosition(),因为会出现旋转后,可点区域会停留在原来的地方。
- local x = mSprite:getPosition().x
- local y = mSprite:getPosition().y
- local mRect = cc.Rectangle:new(x,y,width,height)
- if mRect:contains(posNode.x,posNode.y) then
- hitCount = hitCount + 1
- hitItem[hitCount] = mSprite
- break
- --[[--干掉for循环
- if hitCount == 3 then
- break
- end--]]
- end
- end
-
- --处理多层点击穿透:如果是3个,取第三个,如果是2个,取第二个,如果是一个,取第一个
- local curItem = hitItem[#hitItem]
- --不可手动理牌
- local curItem = nil
- if curItem then
- logE("cancel hitCount :"..hitCount)
- if curItem.value == nil then
- logE("88888888-=============curItem.value == nil 1================")
- logE("88888888-=============执行牌插入,插入位置为空的================")
- --牌插入逻辑:
- --数组数据更新
- local curLieShu = hitItem[#hitItem].lieshu
- local curHangShu = hitItem[#hitItem].hangshu
- local value = hitItem[#hitItem].value
-
- logE("88888888-self.handCardValueLocal[v.lieshu]:"..table.tostring(self.handCardValueLocal[v.lieshu]))
- logE("88888888-self.handCardValueLocal[curLieShu]:"..table.tostring(self.handCardValueLocal[curLieShu]))
-
- --行数
- local row = v.hangshu
- local lieshu = v.lieshu
-
- logE("88888888-touch row :"..row)
- logE("88888888-touch lieshu :"..lieshu)
- --原来的数据删除
- --if self.handCardRoot[lieshu].imgList[row].value == v.value then
- table.remove(self.handCardValueLocal[lieshu],row)
- --end
-
- --在新的数据列里插入新的值
- for i = 1,self.hangShuMax do
- if self.handCardRoot[curLieShu].imgList[i].value == nil then
- table.insert(self.handCardValueLocal[curLieShu],v.value)
- break
- end
- end
-
- --数据交换
- local tempValue = nil
- tempValue = v.value
- v.value = hitItem[#hitItem].value
- hitItem[#hitItem].value = tempValue
-
- --ui更新
- self.ui.Items.ImageView_handTempCard:setVisible(true)
- v:setVisible(false)
- local function callback()
- self.ui.Items.ImageView_handTempCard:setVisible(false)
- local cardvalue = hitItem[#hitItem].value or tempValue
- if cardvalue then
- local fileName = ZPFuc.getZPCardImgByValue(cardvalue,ZPDef.CardType.CARD_TYPE_HAND,self.desktopType)
- hitItem[#hitItem]:loadTextureFromPlist(fileName)
- hitItem[#hitItem]:setVisible(true)
- hitItem[#hitItem]:setOpacity(255)
- end
-
- --听牌标签
- if v:getChildren()[1]:isVisible() then
- v:getChildren()[1]:setVisible(false)
- hitItem[#hitItem]:getChildren()[1]:setVisible(true)
- end
- self.ui.Items.ImageView_handTempCard.lieshu = curLieShu
- self.ui.Items.ImageView_handTempCard.hangshu = curHangShu
- self:neatenCard()
- end
-
- --handTemp->tarPos action
- if self.handCardRoot[curLieShu].imgList[curHangShu - 1] and
- self.handCardRoot[curLieShu].imgList[curHangShu - 1].value then
- local node = hitItem[#hitItem]
- local nodeSize = node:getParent():getContentSize()
- local nodePos = cc.pAdd(node:getWorldPosition(),cc.p(nodeSize.width/2,nodeSize.height/2))
- local seq = cc.Sequence:create(cc.MoveTo:create(0,nodePos),cc.CallFunc:create(callback))--self.gameSpeedConfig.OPCARDTIME
- self.ui.Items.ImageView_handTempCard:runAction(seq)
- else
- callback()
- end
- logE("88888888-=============curItem.value == nil 2================")
- logE("88888888-=============执行牌插入结束================")
-
- else
- logE("88888888-=============cancel curItem.value exist 1================")
-
- --数组数据更新
- local curLieShu = hitItem[#hitItem].lieshu
- local curHangShu = hitItem[#hitItem].hangshu
- local value = hitItem[#hitItem].value
- local isKan = hitItem[#hitItem].isKan
- if isKan then
- showTooltip("坎牌不可拆")
- return
- end
-
- --如果小于3则插入到空的那个
- if self:getRowVisibleCount(curLieShu) < 3 then
- logE("88888888-=============如果小于3则插入到空的那个================")
- logE("88888888-=============执行牌插入到空的位置================")
- --同列有多个牌相同的,找出对应点击的牌
- local row = v.hangshu
- local lieshu = v.lieshu
- logE("88888888-row :"..row)
- logE("88888888-lieshu :"..lieshu)
- --原来的数据删除
- table.remove(self.handCardValueLocal[lieshu],row)
- --在新的数据列里插入新的值
- local newRow = 0
- for i = 1,self.hangShuMax do
- if self.handCardRoot[curLieShu].imgList[i].value == nil then
- newRow = i
- table.insert(self.handCardValueLocal[curLieShu],v.value)
- break
- end
- end
-
- --数据交换
- local tempValue = nil
- tempValue = v.value
- v.value = nil
- self.handCardRoot[curLieShu].imgList[newRow].value = tempValue
- logE("888888888-curLieShu:"..tostring(curLieShu))
- logE("888888888-newRow:"..tostring(newRow))
- --ui更新
- v:setVisible(false)
- local fileName = ZPFuc.getZPCardImgByValue(self.handCardRoot[curLieShu].imgList[newRow].value,ZPDef.CardType.CARD_TYPE_HAND,self.desktopType)
- self.handCardRoot[curLieShu].imgList[newRow]:loadTextureFromPlist(fileName)
- self.handCardRoot[curLieShu].imgList[newRow]:setVisible(true)
- self.handCardRoot[curLieShu].imgList[newRow]:setOpacity(255)
-
- --听牌标签
- if v:getChildren()[1]:isVisible() then
- v:getChildren()[1]:setVisible(false)
- self.handCardRoot[curLieShu].imgList[newRow]:getChildren()[1]:setVisible(true)
- end
-
- logE("88888888-======================after insert card=========================")
- logE("88888888-first item lieshu:"..v.lieshu)
- logE("88888888-first item value:"..0)
- self:neatenCard()
- logE("88888888-=============如果小于3则插入到空的那个 结束================")
- logE("88888888-=============执行牌插入到空的位置 结束================")
- else
- logE("88888888-=============该列满3个牌只能交换================")
- logE("88888888-=============执行牌交换================")
- if value - 16 > 0 then
- logE("被交换的牌为大"..value - 16)
- else
- logE("被交换的牌为小"..value)
- end
-
- --牌交换:
- --同列有多个牌相同的,找出对应点击的牌
- local rowFirst = v.hangshu
- local rowSecond = curHangShu
-
- logE("88888888-rowFirst 第一个交换的行数:"..rowFirst)
- logE("88888888-rowSecond 第二个交换的行数:"..rowSecond)
-
- logE("88888888-原始列数数据:"..table.tostring(self.handCardValueLocal[v.lieshu]))
- logE("88888888-交换列数数据:"..table.tostring(self.handCardValueLocal[curLieShu]))
-
- --原来的数据删除
- if self.handCardRoot[v.lieshu].imgList[rowFirst].value == v.value then
- table.remove(self.handCardValueLocal[v.lieshu],rowFirst)
- table.insert(self.handCardValueLocal[v.lieshu],rowFirst,value)
- end
-
- --原来的数据删除
- if self.handCardRoot[curLieShu].imgList[rowSecond].value == value then
- table.remove(self.handCardValueLocal[curLieShu],rowSecond)
- table.insert(self.handCardValueLocal[curLieShu],rowSecond,v.value)
- end
-
- logE("88888888-删除后的原始列数数据:"..table.tostring(self.handCardValueLocal[v.lieshu]))
- logE("88888888-删除后的列数数据:"..table.tostring(self.handCardValueLocal[curLieShu]))
-
- logE("查看数据:")
- logE("88888888-first item lieshu:"..v.lieshu)
- logE("88888888-first item value:"..v.value)
- logE("88888888-second item lieshu:"..curItem.lieshu)
- logE("88888888-second item value:"..curItem.value)
- logE("查看数据完毕")
- --数据交换
- local tempValue = nil
- tempValue = v.value
- v.value = hitItem[#hitItem].value
- hitItem[#hitItem].value = tempValue
-
- --ui交换
- local fileName = ZPFuc.getZPCardImgByValue(v.value,ZPDef.CardType.CARD_TYPE_HAND,self.desktopType)
- v:loadTextureFromPlist(fileName)
- fileName = ZPFuc.getZPCardImgByValue(hitItem[#hitItem].value,ZPDef.CardType.CARD_TYPE_HAND,self.desktopType)
- hitItem[#hitItem]:loadTextureFromPlist(fileName)
-
- local srcVisible = v:getChildren()[1]:isVisible()
- local changeVisible = hitItem[#hitItem]:getChildren()[1]:isVisible()
-
- --听牌标签
- hitItem[#hitItem]:getChildren()[1]:setVisible(srcVisible)
- v:getChildren()[1]:setVisible(changeVisible)
-
- logE("交换完毕,查看数据:")
- logE("88888888-first item lieshu:"..v.lieshu)
- logE("88888888-first item value:"..v.value)
- logE("88888888-second item lieshu:"..hitItem[#hitItem].lieshu)
- logE("88888888-second item value:"..hitItem[#hitItem].value)
- logE("查看数据完毕")
- logE("88888888-=============牌交换 结束================")
- logE("88888888=============cancel curItem.value exist 2================")
- end
- end
- else
- --@part:牌取消回来,出牌逻辑的实现
- --判断是否大于出牌点
- if touchPos.y > self.ui.Items.ImageView_line:getPosition().y and self.bOutCard then
- if app.room:isLittleFamily() then
- return
- end
- --比牌的时候,在比牌间隔点到了牌,拖出去报错
- if v.value == nil then
- showTooltip("牌已经操作过!")
- return
- end
-
- --send sender
- v:setOpacity(0)
- self:sendOutCard(v.value)
- logE("玩家出牌:"..v.value)
- self.bOutCard = false
- self.isGodHand = true;
- --记录数据
- local lieshu = v.lieshu
- local hangshu = v.hangshu
- local value = v.value
-
- self.ui.Items.ImageView_handTempCard.lieshu = lieshu
- self.ui.Items.ImageView_handTempCard.hangshu = hangshu
- self.ui.Items.ImageView_handTempCard.value = value
- self.ui.Items.ImageView_handTempCard.index = k
-
- else
- logE("牌回到原来的位置")
- --回到原点动画
- self:goBackWithAni(v,0.15)
- end
- end
-
- -------------------------------------------------------
- -------------------------------------------------------
- logE("88888888=============onTouchCancel 2================")
- logE("88888888-onTouchCancel :card :"..table.tostring(self.handCardValueLocal))
-
- end
- v:setTouchEnabled(true)
- v:registerTouchEvent(onTouchBegan, onTouchMove, onTouchEnd, onTouchCancel)
- end
- end
-
-
- --检测是否少牌,如果少牌则恢复 --目前在抓牌,出牌成功,和显示操作三个地方检测少牌情况
- function xichongRoomView:checkCardAndRecover()
- --当前的手牌数
- local curCardNum = 0
- --当前显示的手牌数
- local curShowNum = 0
- --实际手牌数
- local factCardNum = 0
- --计算当前手牌数
- for i,cards in pairs(self.handCardValueLocal) do
- for j,card in pairs(cards) do
- if card and card > 0 then
- curCardNum = curCardNum + 1
- end
- end
- end
- --计算当前显示的手牌数
- for i = 1,self.lieShuMax do
- if self.handCardRoot[i].ui:isVisible() then
- for j = 1,self.hangShuMax do
- if self.handCardRoot[i].imgList[j]:isVisible() and self.handCardRoot[i].imgList[j]:getOpacity() == 255
- and self.handCardRoot[i].imgList[j].value then
- curShowNum = curShowNum + 1
- end
- end
- end
- end
- --计算备份数据的手牌数(以这个数据为准)
- for i,cards in pairs(self.handCardValueBak) do
- for j,card in pairs(cards) do
- if card and card > 0 then
- factCardNum = factCardNum + 1
- end
- end
- end
- logD("checkCardAndRecover curCardNum="..curCardNum.." curShowNum="..curShowNum.." factCardNum="..factCardNum)
- if curCardNum ~= factCardNum or curShowNum ~= factCardNum then
- print("checkCardAndRecover curCardNum="..curCardNum.." curShowNum="..curShowNum.." factCardNum="..factCardNum)
- logD("checkCardAndRecover self.handCardValueBak---",table.tostring(self.handCardValueBak));
- logD("checkCardAndRecover self.handCardValueLocal---",table.tostring(self.handCardValueLocal));
- --self:requestFlashHandCard()
- --刷新手牌
- self:setHandTempCardVisible(false)
- self:reflashHandCards()
- end
- end
-
-
- function xichongRoomView:requestFlashHandCard()
- local request = ZPMessage.ReflashHandCard:new()
- request.isFflash = 1
- logE("reflashHandCard:"..table.tostring(request))
- self.ui:sendMsg(app.room, "reflashHandCard", request, function(status, response)
- logE("xichongRoomView reflashHandCard() response = ", table.tostring(response))
- end)
- end
-
-
-
- --整理牌
- function xichongRoomView:neatenCard(isNotShowAni)
- --logE("neatenCard -------- ", debug.traceback())
- --是否短暂屏蔽点击牌事件
- self:downCard()
- self:RankCard(isNotShowAni)
- end
-
- --判断列数是否是砍牌
- function xichongRoomView:getCurrentColIsKan(list)
- return false
- end
- --判断列数是否是龙
- function xichongRoomView:getCurrentColIsLong(list)
- return false
- end
-
-
- --如果牌正在掉落的时候,不允许操作!
- --落牌检测
- function xichongRoomView:downCard()
- if app.room:isLittleFamily() and (not ZPFuc.getLittleIsCanLookCard()) then
- return
- end
- --是否需要掉落
- local bDown = false
- for i = 1,self.lieShuMax do
- if self.handCardRoot[i].ui:isVisible() then
- for j = 1,3 do
- for k = j+1,self.hangShuMax do
- if not self.handCardRoot[i].imgList[j]:isVisible() and self.handCardRoot[i].imgList[k]:isVisible() and j < k then
- --底部
- local firstValue = self.handCardRoot[i].imgList[j].value
- --顶部
- local secondeValue = self.handCardRoot[i].imgList[k].value
-
- --插入
- --数据交换
- local tempValue = nil
- tempValue = self.handCardRoot[i].imgList[j].value
- self.handCardRoot[i].imgList[j].value = self.handCardRoot[i].imgList[k].value
- self.handCardRoot[i].imgList[k].value = tempValue
-
- --换底数据
- --[[local tempHuanDi = nil
- tempHuanDi = self.handCardRoot[i].imgList[j].isHuanDi
- self.handCardRoot[i].imgList[j].isHuanDi = self.handCardRoot[i].imgList[k].isHuanDi
- self.handCardRoot[i].imgList[k].isHuanDi = tempHuanDi--]]
- --ui交换
- self.handCardRoot[i].imgList[k]:setVisible(false)
- local fileName = ZPFuc.getZPCardImgByValue(self.handCardRoot[i].imgList[j].value,ZPDef.CardType.CARD_TYPE_HAND,self.desktopType)
- self.handCardRoot[i].imgList[j]:loadTextureFromPlist(fileName)
- self.handCardRoot[i].imgList[j]:setVisible(true)
-
- --听牌标签
- local visibleA = self.handCardRoot[i].imgList[j]:getChildren()[1]:isVisible()
- local visibleB = self.handCardRoot[i].imgList[k]:getChildren()[1]:isVisible()
- self.handCardRoot[i].imgList[j]:getChildren()[1]:setVisible(visibleB)
- self.handCardRoot[i].imgList[k]:getChildren()[1]:setVisible(visibleA)
-
- --落牌动画
- local lieshu = self.ui.Items.ImageView_handTempCard.lieshu
- local value = self.ui.Items.ImageView_handTempCard.value
- --if self.handCardRoot[i].imgList[j].value == value and i == lieshu then
- -- self:goBackWithAni(self.handCardRoot[i].imgList[j])
- --else
- local recordPos = self.handCardRoot[i].imgList[j]:getParent():getPosition()
- self.handCardRoot[i].imgList[j]:getParent():setPosition(self.handCardRoot[i].imgList[k]:getParent():getPosition())
- local act = cc.MoveTo:create(self.gameSpeedConfig.OPCARDTIME,recordPos)
- --self.handCardRoot[i].imgList[j]:getParent():stopAllActions()
- self.handCardRoot[i].imgList[j]:getParent():runAction(act)
- --end
-
- bDown = true
- end
- end
- end
- end
- end
- --判断是否有掉落
- if not bDown then
- self.isGodHand = false
- else
- local seq = cc.Sequence:create(cc.DelayTime:create(0.25),cc.CallFunc:create(function ()
- self.isGodHand = false
- end))
- self.ui:runAction(seq)
- end
- end
-
-
- --隐藏出牌点
- function xichongRoomView:setOutCardVisible(bVisible,viewId,card,isSend,onEnd,isNoShowAni)
- for i = 1 ,ZPDef.GameMaxPlayer do
- local name = string.format("Layout_outCardPoint_%d",i)
- self.ui.Items[name]:setVisible(false)
- end
-
- --重置出牌坐标
- self:resetOutCardPoint()
- --显示出牌
- if bVisible then
- self.isMoPaiOperator = false
- self:changeOutCardLight(false)
- local name = string.format("Layout_outCardPoint_%d",viewId)
- local mLayout = self.ui.Items[name]
- mLayout:setVisible(true)
- local imgName = string.format("ImageView_outCardImg_%d",viewId)
- local fileName = ZPFuc.getZPCardImgByValue(card,ZPDef.CardType.CARD_TYPE_OUTCARD,self.desktopType)
- local mSprite = self.ui.Items[imgName]
- local srcPos = mSprite:getPosition()
- self.ui.Items[imgName]:loadTextureFromPlist(fileName)
-
- local beginPos
- local time = self.gameSpeedConfig.CHU_PAI_TIME
- if viewId == self:getMeViewId() then
- beginPos = self.ui.Items.ImageView_handTempCard:getPosition()
- beginPos = mSprite:getParent():convertToNodeSpace(beginPos)
- else
- if viewId == 1 then
- beginPos = cc.p(srcPos.x + 400,srcPos.y)
- elseif viewId == 2 then
- beginPos = cc.p(srcPos.x,srcPos.y + 200)
- elseif viewId == 3 then
- beginPos = cc.p(srcPos.x - 400,srcPos.y)
- end
- end
-
- mSprite:setPosition(beginPos)
- mSprite:setScale(0)
-
- if isNoShowAni then
- mSprite:setScale(1)
- mSprite:setPosition(srcPos)
- if onEnd then
- onEnd()
- end
- return
- end
-
- local spawn = cc.Spawn:create(cc.ScaleTo:create(time,1,1),cc.MoveTo:create(time,srcPos))
- local seq = cc.Sequence:create(spawn,cc.CallFunc:create(function ()
- if isSend then
- local request = ZPMessage.OutCard:new()
- request.nCard = card
- logE("ZPRoomView:setOutCardVisible"..table.tostring(request))
- self.ui:sendMsg(app.room, "sendOutCard", request, function(status, response)
- logE("ZPRoomView sendOutCard() response = ", table.tostring(response))
- end)
- end
- if onEnd then
- onEnd()
- end
- end))
- mSprite:runAction(seq)
- end
- end
-
-
-
- function xichongRoomView:createOpOutcard(viewId,valueList,nums)
- local opLayout = string.format("Layout_groupCard_%d",viewId)
- local position = self.ui.Items[opLayout]:getPosition()
-
- local colMax = 0
- local colNum = ZPDef.OpOutCardNum[viewId]
- local curNum = self.opOutCardNum[viewId]
-
- local resultNum = curNum + nums
- local colMax = math.modf(curNum/colNum)
-
- if resultNum > (colMax+1)*colNum then
- curNum = (colMax+1)*colNum
- colMax = colMax+1
- end
-
-
- for k,v in pairs(valueList) do
- local groupCard = XiChongCard:new(v,viewId)
-
- if self.opOutCard[viewId] and table.nums(self.opOutCard[viewId]) > 0 then
-
- --local opcardNum = #self.opOutCard[viewId]
-
- local orderX = position.x
- local orderY = position.y
- local offsetX = ZPDef.OpOutCardOffset[viewId].x
- local offsetY = ZPDef.OpOutCardOffset[viewId].y
- local offsetSpace = ZPDef.opOutCardSpace[viewId]
-
- if viewId == 1 then
- if colMax > 0 then
- orderX = orderX - offsetSpace*colMax
- end
- orderY = orderY + (curNum%colNum)*offsetY
- elseif viewId == 2 then
- if colMax > 0 then
- orderY = orderY - offsetY*colMax
- end
- orderX = orderX - (curNum%colNum)*offsetX
- elseif viewId == 3 then
- if colMax > 0 then
- orderX = orderX + offsetSpace*colMax
- end
- orderY = orderY - (curNum%colNum)*offsetY
- elseif viewId == 4 then
- if colMax > 0 then
- orderY = orderY + offsetY*colMax
- end
- orderX = orderX + (curNum%colNum)*offsetX
- end
-
- groupCard:setPosition(cc.p(orderX,orderY))
- else
- self.opOutCard[viewId] = {}
- groupCard:setPosition(position)
- end
-
- table.insert(self.opOutCard[viewId],groupCard)
-
- curNum = curNum + 1
-
- local Zoreder = 100
- if viewId == 3 then
- Zoreder = 99
- else
- Zoreder = viewId * 100
- end
- self.ui.Items.Layout_HandCard:addChild(groupCard,Zoreder)
- end
-
- self.opOutCardNum[viewId] = curNum
-
- end
-
-
- function xichongRoomView:cleanOpOutCard(viewId,card)
-
- for i = 1,ZPDef.GameMaxPlayer do
- if self.opOutCard[i] then
- for k,v in pairs(self.opOutCard[i]) do
- v:removeFromParent()
- end
- self.opOutCard[i] = {}
- else
- self.opOutCard[i] = {}
- end
- end
- end
-
-
- -- 大局结算
- function xichongRoomView:onGameDaJuResponse(data)
- local function runGameDaJuResponse(onEnd)
- local response = data.response.playList
- -- 打开结算
- local view = ZPRoomCountAllView:new(response,data.response.endTime);
- view:setAnchorPoint(cc.p(0.5, 0.5));
- local visibleSize = getVisibleSize()
- view:setPosition(cc.p(visibleSize.width/2,visibleSize.height/2))
- self:addChild(view);
-
- self.RoomCountAllViewUI = view;
-
- view:setVisible(false);
-
- app.room:dispatchEvent({name = GAME_EVENT.DISSMISS_CLOSE});
- if app.room.roomInfo.needJieSuanInfo == 1 then
- log("2000000000-onGameDaJuResponse --------- yichangjiesu ")
- --结算直接播放动画
- view:setVisible(true);
- view:playAni()
- self:showGameOverAward()
- else
- log("2000000000-onGameDaJuResponse --------- zhengchangjiesu ")
- --结算直接播放动画
- view:setVisible(false)
- end
-
- if onEnd then
- onEnd()
- end
- app.club_php:dispatchEvent({name = GAME_EVENT.CLUB_BACK_ROOM})
- end
- log("2000000000-ZPRoomView - addCallBack(runGameDaJuResponse)")
- self:addCallBack(runGameDaJuResponse);
- end
-
- ---
- -- 托管通知
- -- @param data
- -- @return
- --
- function xichongRoomView: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)
- end
-
- --弃牌
- function xichongRoomView:onQiPai(data)
- xichongRoomView.super.onQiPai(self, data)
- local function runOnQiPai(onEnd)
- self:hideOperation()
- --结束
- if onEnd then
- onEnd()
- end
- end
- log("2000000000-changpaiRoomView - addCallBack(runOnQiPai)")
- self:addCallBack(runOnQiPai)
- end
-
- function xichongRoomView:hideOperation()
- self.operationView:hideSelf()
- end
- return xichongRoomView
|