-- 房间设置界面 local RoomXiaoJuView = class("RoomXiaoJuView_28", cc.UIView) local Functions = require("pk_doudizhu.luaScript.Functions_28") local PokerUtil = require('pk_doudizhu.luaScript.Views.Room.newPokerUtil') -- 文字颜色 local Font_Win_Score_Color = cc.c3b(255, 228, 128) local Font_Lose_Score_Color = cc.c3b(255, 255, 255) -- 扑克模板的tag(每个面板的是此tag+viewid值) local Tag_Model_Card = 10000 function RoomXiaoJuView:ctor(xiaYiJu) RoomXiaoJuView.super.ctor(self) self.xiaYiJu = xiaYiJu end function RoomXiaoJuView:onEnter() RoomXiaoJuView.super.onEnter(self) local ui = loadUI("pk_doudizhu/res/ui/ui_fangjian/doudizhu_ui_xiaoju.ui") self:addChild(ui) self.ui = ui --查牌后返回小局按钮 self.ui.Items.Button_ReXiaoJu:registerClick(handler(self , self.onClickReXiaoJu)) -- 下一局 self.ui.Items.Button_XiaYiJu:registerClick(handler(self , self.onClickXiaYiJu)) --查牌 self.ui.Items.Button_ChaPai:registerClick(handler(self , self.onClickChaPai)) self.ui.Items.Layout_ChaPai:setVisible(false) --确认 self.ui.Items.Button_QueRen:registerClick(handler(self , self.onClickQueRen)) -- 结算 self.ui.Items.ImageView_Dismiss:registerClick(handler(self, self.onClickDismiss)) self:setVisible(false) end function RoomXiaoJuView:updateView(data) --显示 self:setVisible(true) --小局主界面 self.ui.Items.Layout_View:setVisible(true) --查牌后返回小局按钮 self.ui.Items.Button_ReXiaoJu:setVisible(false) --更新按钮状态 local isGameOver = (app.room.roomInfo.isGameOver or 0) == 1 self.ui.Items.Layout_QueRen:setVisible(isGameOver) self.ui.Items.Layout_XiaYiJu:setVisible(not isGameOver) self.ui.Items.Layout_Buttons:requestDoLayout() self.ui.Items.Layout_Buttons:doLayout() -- 解散房间按钮 self.ui.Items.ImageView_Dismiss:setVisible(not isGameOver) --更新房间号 self.ui.Items.Text_RoomId:setText("房号: " .. app.room.roomInfo.nShowTableId) --更新局数 self.ui.Items.Text_JuShu:setText(string.format("%02d / %02d 局", app.room.roomInfo.nGameStartCount, app.room.roomInfo.nTotalGameNum)) --更新时间 self.ui.Items.Text_SystemTime:setText(getTimeString()) --更新玩家信息 self:updatePlayer(data) self:checkCanDismiss() end function RoomXiaoJuView:updatePlayer(data) --隐藏所有玩家 for i = 1, 4 do local player = self.ui.Items["Layout_Player_" .. i] if player then player:setVisible(false) end end --更新输赢标题 local myMemberInfo = data.memberList[app.room:getMyUserId()] local image_win_or_lose = self.ui.Items["Image_Win_Or_Lose"] if image_win_or_lose and myMemberInfo then stopBGMusic() if tonumber(myMemberInfo.nTurnScore) >= 0 then Functions.playVoice("common", "pk_doudizhu/res/sound/doudizhu_common_win.ogg") image_win_or_lose:loadTexture("pk_doudizhu/res/ui/zy_fangjian/doudizhu_xiaoju/doudizhu_xiaoju_win.png") else Functions.playVoice("common", "pk_doudizhu/res/sound/doudizhu_common_lose.ogg") image_win_or_lose:loadTexture("pk_doudizhu/res/ui/zy_fangjian/doudizhu_xiaoju/doudizhu_xiaoju_lose.png") end end --更新玩家数据 for k,v in pairs(data.memberList) do local viewId = app.room:getViewIdByUserId(v.nUserId) local player = self.ui.Items["Layout_Player_" .. viewId] local userInfo = json.decode(v.userInfo) if player then v.nTurnScore = tonumber(v.nTurnScore) --显示玩家信息 player:setVisible(true) -- 默认隐藏胜字 self.ui.Items['ImageView_WinFont_' .. viewId]:setVisible(false) --更新头像 local head = self.ui.Items["Image_Head_" .. viewId] if head then setPlayerHeadImage(v.nUserId, userInfo.headimgurl, head) end --名字 local name = self.ui.Items["Text_Name_" .. viewId] if name then name:setText("" .. userInfo.nickname) end --玩家id local userId = self.ui.Items["Text_UserId_" .. viewId] if userId then userId:setText("" .. v.nUserId) --显示隐藏游戏内选手id(主办人和管理员不限制,只针对海选赛) -- todo lwq -- begin local ClubDefine = require("luaScript.Protocol.Club.ClubDefine") if app.club_php.clubID and app.club_php.clubID ~= 0 then if app.club_php:getCestIsOpen(app.club_php.clubID) then --隐私数据 local clubInfo = app.club_php.clubList[app.club_php.clubID] self.cliext = clubInfo.groupext and clubInfo.groupext.cliext if not self.cliext or not self.cliext.is_hideUid or (self.cliext and self.cliext.is_hideUid == 1) then if clubInfo.role == ClubDefine.Job.Creator or clubInfo.role == ClubDefine.Job.Manager then userId:setVisible(true) else userId:setVisible(false) end end end end if v.nUserId == tonumber(app.user.loginInfo.uid) then userId:setVisible(true) end -- end end --显示隐藏游戏内选手id(主办人和管理员不限制,只针对海选赛) -- todo lwq -- begin local ClubDefine = require("luaScript.Protocol.Club.ClubDefine") if app.club_php.clubID and app.club_php.clubID ~= 0 then if app.club_php:getCestIsOpen(app.club_php.clubID) then --隐私数据 local clubInfo = app.club_php.clubList[app.club_php.clubID] self.cliext = clubInfo.groupext and clubInfo.groupext.cliext if not self.cliext or not self.cliext.is_hideUid or (self.cliext and self.cliext.is_hideUid == 1) then if clubInfo.role == ClubDefine.Job.Creator or clubInfo.role == ClubDefine.Job.Manager then userId:setVisible(true) else userId:setVisible(false) end end end end if v.nUserId == tonumber(app.user.loginInfo.uid) then userId:setVisible(true) end -- end --分数 local score = self.ui.Items["Text_Score_" .. viewId] if score then if v.nTurnScore > 0 then score:setText("+" .. v.nTurnScore) score:setColor(Font_Win_Score_Color) self.ui.Items['ImageView_WinFont_' .. viewId]:setVisible(true) else score:setText("" .. v.nTurnScore) score:setColor(Font_Lose_Score_Color) end end --更新背景 local bg = self.ui.Items["Image_Bg_" .. viewId] if bg then if v.nTurnScore >= 0 then bg:loadTexture("pk_doudizhu/res/ui/zy_fangjian/doudizhu_xiaoju/doudizhu_xiaoju_winbg.png") else bg:loadTexture("pk_doudizhu/res/ui/zy_fangjian/doudizhu_xiaoju/doudizhu_xiaoju_losebg.png") end bg:setVisible(false) end --庄家标识 local banker = self.ui.Items["Image_Banker_" .. viewId] if banker then banker:setVisible(v.nUserId == data.nBankerId) end -- 剩余牌数字 local leftNum = self.ui.Items['Text_Left_' .. viewId] if leftNum then leftNum:setText(string.format('剩余:%d', #v.handCards)) leftNum:setVisible(false) end -- 默认隐藏掉模板扑克牌 self.ui.Items['ImageView_Card_' .. viewId]:setVisible(false) self.ui.Items['ImageView_Card_' .. viewId]:setTag(Tag_Model_Card + viewId) -- 默认隐藏掉模板棍子 self.ui.Items['ImageView_Stick_' .. viewId]:setVisible(false) -- 加倍 self.ui.Items['ImageView_AskLoard_' .. viewId]:setVisible(v.askBei == 2) -- 小结算加倍(1:不加倍 2加倍),与游戏中不同,游戏中内是(0:不加倍,1:加倍) -- 扑克牌(打出的牌) self.curCardNum = 0 self:resetCardLayout(viewId) if v.ext then local operateCard = json.decode(v.ext).cards if operateCard and operateCard ~= '' then local groupCards = string.split(operateCard, ',') for i, v in pairs(groupCards) do local tgCard = string.split(v, ' ') self:showCard(viewId, tgCard, true) end end end -- 扑克牌(剩余手牌) local temp = {} for i, v in ipairs(v.handCards) do if v.card then table.insert(temp, v.card) end end self:showCard(viewId, temp, false, true) end end self.ui.Items.Layout_Players:requestDoLayout() self.ui.Items.Layout_Players:doLayout() end -- 查牌后返回小局按钮 function RoomXiaoJuView:onClickReXiaoJu() playBtnEffect() self.ui.Items.Layout_View:setVisible(true) self.ui.Items.Button_ReXiaoJu:setVisible(false) end -- 下一局 function RoomXiaoJuView:onClickXiaYiJu() playBtnEffect() Functions.playMusic() self:setVisible(false) if self.xiaYiJu then self.xiaYiJu() end end -- 查牌 function RoomXiaoJuView:onClickChaPai() playBtnEffect() self.ui.Items.Layout_View:setVisible(false) self.ui.Items.Button_ReXiaoJu:setVisible(true) end -- 确认 function RoomXiaoJuView:onClickQueRen() playBtnEffect() self:setVisible(false) if self.xiaYiJu then self.xiaYiJu() end end function RoomXiaoJuView:showCard(viewId, cards, isShowLine, isGray) if not cards then return end local offsetX = 35 local layout = self.ui.Items['Layout_Card_' .. viewId] local cardNode = self.ui.Items['ImageView_Card_' .. viewId] local cardPos = cardNode:getPosition() local cardScale = cardNode:getScale() local cardSize = cc.size(cardNode:getContentSize().width * cardScale.x, cardNode:getContentSize().height * cardScale.y) local stickNode = self.ui.Items['ImageView_Stick_' .. viewId] local num = #cards -- 棍子(出牌线) if num > 1 and isShowLine and true == isShowLine then local sNode = stickNode:getCopied() sNode:setSize(cc.size((num-1)*offsetX, 10)) sNode:setPosition(offsetX * self.curCardNum + cardSize.width / 3, cardPos.y + 40) layout:addChild(sNode) end -- 牌 for _, val in ipairs(cards) do if val and val ~= '' then local cNode = cardNode:getCopied() cNode:loadTexture(string.format("ddz_cards_%d_%d.png", PokerUtil:getCardType(tonumber(val)), PokerUtil:getCardValue(tonumber(val))), 1) -- 新资源 cNode:setPosition(cardPos.x + offsetX*self.curCardNum, cardPos.y) cNode:setVisible(true) layout:addChild(cNode) -- 置灰 if isGray and true == isGray then cNode:setColor(cc.c3b(0xb3, 0xaa, 0xaa))--DOWN_COLOR end self.curCardNum = self.curCardNum + 1 end end end -- 清除layout的东西,只保留扑克模板 function RoomXiaoJuView:resetCardLayout(viewId) local layout = self.ui.Items['Layout_Card_' .. viewId] local child = layout:getChildren() for i, v in ipairs(child) do if v:getTag() ~= (Tag_Model_Card + viewId) then v:removeFromParent() end end end function RoomXiaoJuView:onClickDismiss(sender) app.room:dispatchEvent({name = "onResultInformDisMiss", sender = sender}) end --- -- 检测是否可以解散房间 -- @param -- @return -- function RoomXiaoJuView:checkCanDismiss( ) local onCanDismissCallback = function (info) local nUserId = app.room:getMyUserId() local roomInfo = app.room.roomInfo local canDismiss = tonumber(info.canDismiss or 1) == 1 self:onCanDismissCallback(canDismiss) end if dd.IClub.getCanDismiss then local canDismiss = dd.IClub.getCanDismiss(onCanDismissCallback) if canDismiss then onCanDismissCallback({canDismiss = canDismiss}) end end end function RoomXiaoJuView:onCanDismissCallback(canDismiss) if not tolua.isnull(self.ui.Items.ImageView_Dismiss) then self.ui.Items.ImageView_Dismiss:setVisible(canDismiss) end end return RoomXiaoJuView