-- 房间设置界面 local RoomXiaoJuView = class("RoomXiaoJuView_53", cc.UIView) local Functions = require("pk_nanchongdoudizhu.luaScript.Functions_53") local PokerUtil = require('pk_nanchongdoudizhu.luaScript.Views.Room.newPokerUtil') local defs = require("pk_nanchongdoudizhu.luaScript.Def_53") -- 文字颜色 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_nanchongdoudizhu/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.ui.Items.Text_Rule:setText(self:getRuleText()) --更新玩家信息 self:updatePlayer(data) 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 if tonumber(myMemberInfo.nTurnScore) >= 0 then stopBGMusic() Functions.playVoice("common", "pk_nanchongdoudizhu/res/sound/doudizhu_common_win.ogg") image_win_or_lose:loadTexture("pk_nanchongdoudizhu/res/ui/zy_fangjian/doudizhu_xiaoju/doudizhu_xiaoju_win.png") else stopBGMusic() Functions.playVoice("common", "pk_nanchongdoudizhu/res/sound/doudizhu_common_lose.ogg") image_win_or_lose:loadTexture("pk_nanchongdoudizhu/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 --分数 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_nanchongdoudizhu/res/ui/zy_fangjian/doudizhu_xiaoju/doudizhu_xiaoju_winbg.png") else bg:loadTexture("pk_nanchongdoudizhu/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)) local str = '' if v.nPiaoState == defs.PIAO_STATE.PIAO_STATE_YES then str = str .. '漂 ' end if v.nMenZhuaState == defs.MEN_STATE.MEN_STATE_ZHUAI then str = str .. '闷抓 ' -- elseif v.nUserId == data.nBankerId then -- str = str .. '抓 ' end if v.nMenZhuaState == defs.MEN_STATE.MEN_STATE_DAO then str = str .. '闷倒 ' end if v.nMenLaState == defs.MEN_LA_STATE.MEN_STATE_LA_ZHUAI then -- str = str .. '闷拉 ' str = str .. '拉 ' elseif v.nLaState == defs.DAO_STATE.LA_STATE_YES then str = str .. '拉 ' end -- if v.nUserId == data.nBankerId then -- str = str .. '抓 ' -- end if v.nDaoState == defs.DAO_STATE.DAO_STATE_YES then str = str .. '倒 ' end -- if v.nLaState == defs.DAO_STATE.LA_STATE_YES then -- str = str .. '拉 ' -- end leftNum:setText(str) -- 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.ui.Items['ImageView_AskLoard_' .. viewId]:setVisible(false) -- 扑克牌(打出的牌) 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, false, 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() app:dispatchEvent({name = "onChangeBgm"}) 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, isOutCard) 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 _, cardVal in ipairs(cards) do local val = cardVal if val and val ~= '' then local cNode = cardNode:getCopied() local isGodCard = false -- 打出的牌检测,是否是要改变扑克值,将0x5x打头的赖子值,更改为普通的0x0x标准值(注意王牌不是0x0x打头) if isOutCard then if PokerUtil:isGodCardReplaceCard(val) then val = PokerUtil:getCardValue(val) if val == 0x0e or val == 0x0f then -- -- 如果是小王,大王,则要改为0x4e和0x4f val = val + 4 * 16 end isGodCard = true end end 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 isGodCard then local imgPath = 'pk_nanchongdoudizhu/res/ui/zy_fangjian/doudizhu_desk/doudizhu_desk_lzMark.png' local imgNode = cc.ImageView:create(imgPath) imgNode:setAnchorPoint(cc.p(0, 0)) imgNode:setPosition(cc.p(8, 8)) cNode:addChild(imgNode) end -- 置灰 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 function RoomXiaoJuView:getRuleText() local str = '' local ruleAll = Functions.getRuleStr() str = str .. ruleAll return str end return RoomXiaoJuView