local ZPDef = ZPFramework.ZPImport("zp_base.luaScript.ZPDef") local ZPMessage = ZPFramework.ZPImport("zp_base.luaScript.Protocol.ZPMessage") local ZPFuc = ZPFramework.ZPImport("zp_base.luaScript.ZPFunctions") local ZPSound = ZPFramework.ZPImport("zp_base.luaScript.ZPSound") local ZPRoomPlayerView = ZPFramework.ZPFrameworkClassImprot("zp_base.luaScript.Views.Room.ZPRoomPlayerView") local doushisiRoomPlayerView = class("doushisiRoomPlayerView", ZPRoomPlayerView) function doushisiRoomPlayerView:ctor( ... ) doushisiRoomPlayerView.super.ctor(self) end function doushisiRoomPlayerView:loadUI() local ui = loadUI("zp_doushisi/res/ui/ui_fangjian/doushisi_ui_PlayerView.ui"); self.ui = ui; self:addChild(ui); end function doushisiRoomPlayerView:onEnter() doushisiRoomPlayerView.super.onEnter(self) self.PropAniManager = import("luaScript.Tools.PropAniPlayer"):new(self.ui) --发送道具 self:bindEvent(app.room,"showProp" , handler(self , self.showProp)); self:bindEvent(app , ZPDef.ZPEvent.ChangeChatEnable , handler(self , self.onChangeChatEnable)) self:resetTuoGuanShow() end --- -- 托管显示 -- @return -- function doushisiRoomPlayerView:resetTuoGuanShow() for i=1,4 do self.ui.Items["ImageView_tuoguan_"..i]:setVisible(false) end end --- -- 显示指定玩家头像托管标识 -- @param viewId -- @param bVisible -- @return -- function doushisiRoomPlayerView:showTuoGuanByViewId(viewId,bVisible) self.ui.Items["ImageView_tuoguan_"..viewId]:setVisible(bVisible) end function doushisiRoomPlayerView:initPlayerNodes() -- 玩家节点名称模板 local names = { player = "Layout_player_%d", -- 头像绿圈根节点 head = "ImageView_head_%d", -- 头像 headBoarder = "ImageView_head_border_%d", --头像边 name = "Text_Name_%d", -- 名字 score = "Text_Score_%d", -- 总分数 banker = "ImageView_banker_%d", -- 庄家 readyState = "ImageView_ready_%d", -- 准备 headInfo = "Layout_headInfo_%d", --个人信息点击触发框 offLine = "ImageView_offLine_%d", --离线标志 --其他节点 tip = "ImageView_tip_%d", --提示操作图 clock = "ImageView_clock_%d", --闹钟 txtClocl = "TextBMFont_clock_%d", --闹钟时间 offLineTime = "Text_offLineTime_%d", --离线时间 offLineTimeBg = "ImageView_txkYY_%d", --离线时间背景 toujia = "ImageView_toujia_icon_%d", --头家角标 xiaojia = "ImageView_xiao_icon_%d", --小家家角标 baojiao = "ImageView_bao_icon_%d", --报叫角标 } self.allNodes = {} self.headSize = {} for i = 1,ZPDef.GameMaxPlayer do local nodes = {} --玩家根节点 local namePlayer = string.format(names.player,i) local nodePlayer = self.ui.Items[namePlayer] nodes.player = nodePlayer --头像 local nameHead = string.format(names.head,i) local nodeHead = self.ui.Items[nameHead] nodes.head = nodeHead nodeHead:setTouchEnabled(true) nodeHead:registerClick(function() self:onClickHead(i) end) local headBoarder = string.format(names.headBoarder,i) local nodeheadBoarder = self.ui.Items[headBoarder] nodes.headBoarder = nodeheadBoarder -- 需要记录头像的原始尺寸 if not self.headSize.width then self.headSize.width = nodeHead:getContentSize().width self.headSize.height = nodeHead:getContentSize().height end --昵称 local nickName = string.format(names.name,i) local nodeName = self.ui.Items[nickName] nodes.name = nodeName nodeName:setText("") --总分 local nickScore = string.format(names.score,i) local nodeScore = self.ui.Items[nickScore] nodes.score = nodeScore --庄家 local nameBanker = string.format(names.banker,i) local nodeBanker = self.ui.Items[nameBanker] nodes.banker = nodeBanker nodes.banker.pos = nodeBanker:getPosition() --准备 local nameReadyState = string.format(names.readyState,i) local nodeReadyState = self.ui.Items[nameReadyState] nodes.readyState = nodeReadyState --头像信息 local headInfo = string.format(names.headInfo,i) local nodeheadInfo = self.ui.Items[headInfo] nodes.headInfo = nodeheadInfo --离线信息 local offLine = string.format(names.offLine,i) local nodeoffLine = self.ui.Items[offLine] nodes.offLine = nodeoffLine --tip local nameTip = string.format(names.tip,i) local nodeTip = self.ui.Items[nameTip] nodes.tip = nodeTip --闹钟 local nameClock = string.format(names.clock,i) local nodeClock = self.ui.Items[nameClock] nodes.clock = nodeClock --闹钟时间 local nametxtClock = string.format(names.txtClocl,i) local nodetxtClock = self.ui.Items[nametxtClock] nodes.txtclock = nodetxtClock --离线时间 local nameoffLineTime = string.format(names.offLineTime,i) local nodeoffLineTime = self.ui.Items[nameoffLineTime] nodes.offLineTime = nodeoffLineTime --离线时间背景 local nameoffLineTimeBg = string.format(names.offLineTimeBg,i) local nodeoffLineTimeBg = self.ui.Items[nameoffLineTimeBg] nodes.offLineTimeBg = nodeoffLineTimeBg nodes.offLineTimeBg:setVisible(false) --头家 local toujia = string.format(names.toujia,i) local nodetoujia = self.ui.Items[toujia] nodes.toujia = nodetoujia --小家 local xiaojia = string.format(names.xiaojia,i) local nodexiaojia = self.ui.Items[xiaojia] nodes.xiaojia = nodexiaojia --报叫 local baojiao = string.format(names.baojiao,i) local nodebaojiao = self.ui.Items[baojiao] nodes.baojiao = nodebaojiao self.allNodes[i] = nodes end self:setAllClockVisible(false) self:setOwnerVisible() self:stopAndHideBaoAnim() self:setXiaoJiaFlagVis(false) self:hideLeftCard()--隐藏剩余牌 self:hideTouJia() self:hideXiaoJia() self:hideBaoJiao() end --隐藏头家 function doushisiRoomPlayerView:hideTouJia() for i = 1,ZPDef.GameMaxPlayer do self.allNodes[i].toujia:setVisible(false) end end --设置某个玩家为头家 function doushisiRoomPlayerView:setPlayerTouJiaVisible(viewId,bVisible) if self.allNodes[viewId] then self.allNodes[viewId].toujia:setVisible(bVisible) return true end return false end --隐藏小家 function doushisiRoomPlayerView:hideXiaoJia() for i = 1,ZPDef.GameMaxPlayer do self.allNodes[i].xiaojia:setVisible(false) end end --设置某个玩家为小家 function doushisiRoomPlayerView:setPlayerXiaoJiaVisible(viewId,bVisible) if self.allNodes[viewId] then self.allNodes[viewId].xiaojia:setVisible(bVisible) return true end return false end --隐藏报叫 function doushisiRoomPlayerView:hideBaoJiao() for i = 1,ZPDef.GameMaxPlayer do self.allNodes[i].baojiao:setVisible(false) end end --设置某个报叫 function doushisiRoomPlayerView:setPlayerBaoJiaoVisible(viewId,bVisible) if self.allNodes[viewId] then self.allNodes[viewId].baojiao:setVisible(bVisible) return true end return false end --隐藏房主 function doushisiRoomPlayerView:setOwnerVisible() end --设置某个房主Visible function doushisiRoomPlayerView:setPlayerOwnerVisible(viewId,bVisible) return false end --设置胡息归0 function doushisiRoomPlayerView:setHuXizero() end --设置某个玩家胡息 function doushisiRoomPlayerView:setPlayerHuXi(viewId,huxi) end function doushisiRoomPlayerView:stopAndHideBaoAnim() end function doushisiRoomPlayerView:playBaoAnim(view) end --设置小家标志显示 function doushisiRoomPlayerView:setXiaoJiaFlagVis(vis) end --设置某个庄家Visible function doushisiRoomPlayerView:setPlayerBankerVisible(viewId,bVisible) return false end function doushisiRoomPlayerView:setLeftCardNum(viewId,bVisible,num) end --用户行为提示 function doushisiRoomPlayerView:showOperatorTip(viewId,mType) local tip = self.allNodes[viewId].tip local time = 1.3 tip:setVisible(true) local count = 0 if mType == ZPDef.OpType.OP_TYPE_CANCEL then tip:loadTextureFromPlist(ZPDef.TipFile.GUO) elseif mType == ZPDef.OpType.OP_TYPE_CHI then tip:loadTexture(ZPDef.TipFile.CHI) elseif mType == ZPDef.OpType.OP_TYPE_PENG then tip:loadTexture(ZPDef.TipFile.PENG) elseif mType == ZPDef.OpType.OP_TYPE_LAI_PENG then tip:loadTexture(ZPDef.TipFile.PENG) elseif mType == ZPDef.OpType.OP_TYPE_BA then tip:loadTexture(ZPDef.TipFile.BA) elseif mType == ZPDef.OpType.OP_TYPE_FANPAI_BA then tip:loadTexture(ZPDef.TipFile.BA) elseif mType == ZPDef.OpType.OP_TYPE_TOU then tip:loadTexture(ZPDef.TipFile.TOU) elseif mType == ZPDef.OpType.OP_TYPE_HU then time = 2.0 if app.room.roomInfo.huType and app.room.roomInfo.huType >= 0 then local name = string.format(ZPDef.TipFile.HU,app.room.roomInfo.huType) tip:loadTextureFromPlist(name) end elseif mType == -55 then--单独处理爆牌动画 tip:loadTexture(ZPDef.TipFile.BAOJIAO) elseif mType == -56 then tip:loadTexture(ZPDef.TipFile.BAOPEI) end --音效 local nUserId = app.room:getUserIdByViewId(viewId) local userInfo=app.room:getUserInfo(nUserId) if userInfo then ZPSound.PlayOperateSound(userInfo.sex,mType) end tip:setScale(3.0) local seq = cc.Sequence:create(cc.ScaleTo:create(0.2,1),cc.DelayTime:create(time),cc.CallFunc:create(function () tip:setVisible(false) end)) tip:runAction(seq) end function doushisiRoomPlayerView:initChatComponent() local heads = { [1] = self.allNodes[1].head, [2] = self.allNodes[2].head, [3] = self.allNodes[3].head, [4] = self.allNodes[4].head, } if not self.chatComponentView then self.chatComponentView=import("luaScript.Views.Room.RoomChatComponentView"):new(heads,ZPDef.DOUSHISI_GAME_CHAT_TXT) self:addChild(self.chatComponentView) end local voiceEnable = tonumber(loadUserInfo("voiceEnable")) or 1 local propEnable = tonumber(loadUserInfo("propEnable")) or 1 self.chatComponentView:setVoiceEnabled(voiceEnable==1) self.chatComponentView:setPropEnabled(propEnable==1) end function doushisiRoomPlayerView:onChangeChatEnable() if not self.chatComponentView or tolua.isnull(self.chatComponentView) then return end local voiceEnable = tonumber(loadUserInfo("voiceEnable")) or 1 local propEnable = tonumber(loadUserInfo("propEnable")) or 1 self.chatComponentView:setVoiceEnabled(voiceEnable==1) self.chatComponentView:setPropEnabled(propEnable==1) end function doushisiRoomPlayerView:onClickHead(index) playBtnEffect() local nUserId = app.room.seatShowList[index] local memberInfo = app.room.roomInfo.memberList[nUserId] if memberInfo then local view = import("luaScript.Views.Room.RoomPlayerInfoViewNew"):new(nUserId, memberInfo.userInfo) view:setAnchorPoint(cc.p(0.5, 0.5)) app:showWaitDialog(view, 0, true) end end function doushisiRoomPlayerView:showProp(data) local response = data.response logE("LHQRoomView:showProp response = "..table.tostring(response)) --ui表现开始 local uidStarId = response.uidStarId local uidEndId = response.uidEndId local propId = response.propId local isQunFa = response.isQunFa local beginViewId = app.room:getViewIdByUserId(uidStarId) local endViewId = app.room:getViewIdByUserId(uidEndId) if beginViewId==MJDefine.MyViewId then self:removePlayerInfoView() end if not self.allNodes[beginViewId] or not self.allNodes[endViewId] or not self.allNodes[endViewId].head or not self.allNodes[beginViewId].head then logE("场景还没初始化完成就收到道具消息果断return!") return end --播放动画 if isQunFa == 1 then local onLineList = app.room.roomInfo.memberList for nUserId,v in pairs(onLineList) do local endViewId = app.room:getViewIdByUserId(nUserId) if endViewId ~= beginViewId then self.PropAniManager:playAnimation(self.allNodes[beginViewId].head,self.allNodes[endViewId].head,propId) end end else self.PropAniManager:playAnimation(self.allNodes[beginViewId].head,self.allNodes[endViewId].head,propId) end end --隐藏离线 function doushisiRoomPlayerView:setPlayerOffLine(bVisible,viewId) --[[if not viewId or viewId > ZPDef.GameMaxPlayer or not self.allNodes[viewId] then return end--]] if viewId and self.allNodes[viewId] then --头像变灰 if app.room.offLineTime and next(app.room.offLineTime) ~= nil then local nUserId = app.room:getUserIdByViewId(viewId) if app.room.offLineTime[nUserId] then self.offLineTime[viewId] = app.room.offLineTime[nUserId] else self.offLineTime[viewId] = 0 end else self.offLineTime[viewId] = 0 end self.allNodes[viewId].offLineTimeBg:setVisible(bVisible) self.allNodes[viewId].offLineTime:setVisible(false) end end return doushisiRoomPlayerView