-- 房间设置界面 local MJOtherPlayerInfoView = MJFramework.MJImport("mj.luaScript.Views.Room.MJOtherPlayerInfoView") local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine") local MJRoomPlayerView = class("MJRoomPlayerView", cc.UIView) function MJRoomPlayerView:ctor() MJRoomPlayerView.super.ctor(self); end function MJRoomPlayerView:onEnter() MJRoomPlayerView.super.onEnter(self) self:loadUI() self:init() end function MJRoomPlayerView:loadUI() local ui = loadUI("mj/res/ui/ui_fangjian/mj_ui_player_view.ui"); self.ui = ui; self:addChild(ui); end function MJRoomPlayerView:init() 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_PlayerInfo_%d", --个人信息点击触发框 offLine = "ImageView_offLine_%d", --离线标志 --其他节点 arrow = "ImageView_arrow_%d", -- 指示器 tip = "ImageView_tip_%d", --提示操作图 huxi = "Text_huxi_%d", --胡息 qihu = "ImageView_qihu_%d", --弃胡 } self.allNodes = {} self.headSize = {} for i = 1,4 do--LHQ_GAME_CONST.LHQ_GAME_CONST_PLAYER do local nodes = {} --玩家根节点 local namePlayer = string.format(names.player,i) local nodePlayer = self.ui.Items[namePlayer] -- nodePlayer:setVisible(false) 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] nodeBanker:setVisible(false) nodes.banker = nodeBanker --准备 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 --指示器 -- local nameArrow = string.format(names.arrow,i) -- local nodeArrow = self.ui.Items[nameArrow] -- nodes.arrow = nodeArrow --tip local nameTip = string.format(names.tip,i) local nodeTip = self.ui.Items[nameTip] nodes.tip = nodeTip --huxi local nameHuxi = string.format(names.huxi,i) local nodeHuxi = self.ui.Items[nameHuxi] nodes.huxi = nodeHuxi --弃胡 local nameQiHu = string.format(names.qihu,i) local nodeQiHu = self.ui.Items[nameQiHu] nodeQiHu:setVisible(false) nodes.qihu = nodeQiHu self.allNodes[i] = nodes end self:initChatComponent() self.PropAniManager = import("luaScript.Tools.PropAniPlayer"):new(self.ui) --发送道具 self:bindEvent(app.room,"showProp" , handler(self , self.showProp)); self:bindEvent(app , MJDefine.MJEvent.ChangeChatEnable , handler(self , self.onChangeChatEnable)) end function MJRoomPlayerView:initChatComponent() if self.chatComponentView and not tolua.isnull(self.chatComponentView) then return end local heads = { [1] = self.allNodes[1].head, [2] = self.allNodes[2].head, [3] = self.allNodes[3].head, [4] = self.allNodes[4].head, } self.chatComponentView = import("luaScript.Views.Room.RoomChatComponentView"):new(heads,MJDefine.MJChatTxt,MJDefine.MJFaceConfig) local voiceEnable = tonumber(loadUserInfo("voiceEnable")) or 1 local propEnable = tonumber(loadUserInfo("propEnable")) or 1 self.chatComponentView:setVoiceEnabled(voiceEnable==1) self.chatComponentView:setPropEnabled(propEnable==1) self:addChild(self.chatComponentView) end function MJRoomPlayerView: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 MJRoomPlayerView:setBankerVisible(viewId,ani) for i = 1,4 do self.allNodes[i].banker:setVisible(false) end if not self.allNodes[viewId] then logE("not viewId "..viewId) return end self.allNodes[viewId].banker:setVisible(true) if ani then self.allNodes[viewId].banker:setScale(3.0) local seq = cc.Sequence:create(cc.ScaleTo:create(0.25,0.8),cc.ScaleTo:create(0.2,1.2),cc.ScaleTo:create(0.1,1.0)) self.allNodes[viewId].banker:runAction(seq) -- local seq2 = cc.Sequence:create(cc.CallFunc:create(function () -- self.allNodes[viewId].headLight:setVisible(true) -- end),cc.DelayTime:create(1.0),cc.CallFunc:create(function () -- self.allNodes[viewId].headLight:setVisible(false) -- self.allNodes[viewId].headLightFlag:setVisible(true) -- end)) -- self.allNodes[viewId].headLight:runAction(seq2) end end function MJRoomPlayerView:setQiHuVisible(viewId) if self.allNodes[viewId] then self.allNodes[viewId].qihu:setVisible(true) else logE("MJRoomPlayerView:showPlayerQiHu ->viewId is not"..viewId) end end --隐藏玩家 function MJRoomPlayerView:setPlayerVisible(bVisible) for i = 1,4 do self.allNodes[i].player:setVisible(bVisible) end end --隐藏离线 function MJRoomPlayerView:setOffLineVisible(bVisible) for i = 1,4 do --LHQ_GAME_CONST.LHQ_GAME_CONST_PLAYER do self.allNodes[i].offLine:setVisible(false) end end --隐藏离线 function MJRoomPlayerView:setPlayerOffLineVisible(bVisible,viewId) if not viewId or viewId > 4 or not self.allNodes[viewId] then return end self.allNodes[viewId].offLine:setVisible(bVisible) --头像变灰 -- self.allNodes[viewId].head:setGreyEnabled(bVisible) -- self.allNodes[viewId].headBoarder:setGreyEnabled(bVisible) local Text_offtime = self.allNodes[viewId].offLine:getChildByName("Text_offline_time_"..viewId) if Text_offtime then local userId = app.room:getUserIdByViewId(viewId) local member = app.room.roomInfo.memberList[userId] local offtime = member and member.offlinetime or 0 Text_offtime:setText(formatTimeToStr(offtime)) Text_offtime:stopAllActions() Text_offtime:runAction(cc.RepeatForever:create(cc.Sequence:create(cc.DelayTime:create(1),cc.CallFunc:create(function() offtime = offtime + 1 Text_offtime:setText(formatTimeToStr(offtime)) end)))) end end --隐藏提示 function MJRoomPlayerView:setOperatorTipVisible(bVisible) for i = 1,4 do self.allNodes[i].tip:setVisible(bVisible) end end function MJRoomPlayerView:setHeadTouchEnable(b) for i = 1,4 do self.allNodes[i].head:setTouchEnabled(b) end end --设置准备状态 function MJRoomPlayerView:setReadyStatus(viewId,bVisible) if self.allNodes[viewId] then self.allNodes[viewId].readyState:setVisible(bVisible) else logE("MJRoomPlayerView:setReadyStatus ->viewId is not"..viewId) end end -- 更新玩家基本信息 : 昵称、头像 -- index :是玩家展示出来的座位号 function MJRoomPlayerView:updatePlayerInfo(index) logE("MJRoomView:updatePlayerInfo() index = ", index) local nodes = self.allNodes[index] local nUserId = app.room.seatShowList[index] local roomInfo = app.room.roomInfo local memberInfo = app.room.roomInfo.memberList[nUserId] if memberInfo then --[[if memberInfo.nPlayerFlag == LHQ_GAME_CONST.LHQ_GAME_CONST_ONLOOKER then return end--]] nodes.player:setVisible(true) local userInfo = json.decode(memberInfo.userInfo) if not userInfo then return end -- 玩家名字 local nickname = userInfo.nickname nickname = getSubStringNickname(nickname) nodes.name:setText(tostring(nickname)) nodes.score:setText(tostring(memberInfo.nTotalMoney)) -- 玩家头像 local nodeHead = nodes.head; --先设置默认头像 local width = nodeHead:getContentSize().width setPlayerHeadImage(nUserId, userInfo.headimgurl, nodeHead) else nodes.player:setVisible(false) nodes.offLine:setVisible(bVisible) end end function MJRoomPlayerView: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 MJRoomPlayerView:getHead(index) local nodes = self.allNodes[index] return nodes.head end function MJRoomPlayerView:removePlayerInfoView() if self.playerInfoView then self.playerInfoView:removeFromParent() self.playerInfoView=nil end end function MJRoomPlayerView: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 return MJRoomPlayerView;