|
- -- 房间设置界面
- 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
|