|
- local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine")
- local MJ=MJFramework.MJImport("mj.luaScript.Views.Game.MJ")
- local MJRoomDaJuView=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomDaJuView")
- local MJRoomXiaoJuPlayerInfo=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomXiaoJuPlayerInfo")
- local MJWanFa=MJFramework.ImportWanFa("luaScript.SubGameDefine.MaJiang.MJWanFa")
- -- 房间设置界面
- local MJRoomXiaoJuView = class("MJRoomXiaoJuView", cc.UIView)
-
-
- local MJ_WIDTH=47
-
- --起始位置
- local MJ_HAND_CARD_INIT_X=130 * g_radio_x
- local MJ_HAND_CARD_INIT_Y=55 * g_radio_y
-
- local MJ_GROUP_CARD_INIT_X=100 * g_radio_x
-
- --麻将组间隔
- local MJ_GROUP_PADDING_X=0
-
- --麻将直接间隔
- local MJ_PADDING_X=-3
-
- --胡牌麻将间隔
- local MJ_HU_X=8
-
- function MJRoomXiaoJuView:ctor(desktopType)
- MJRoomXiaoJuView.super.ctor(self)
- self:loadUI()
- self.desktopType = desktopType or MJDefine.DesktopType.ThreeD
- -- self:initDeskType()
-
- cc.Director:getInstance():getEventDispatcher():addEventListenerWithFixedPriority(
- cc.EventListenerCustom:create("applicationScreenSizeChanged" , handler(self, self.applicationScreenSizeChanged)), 1
- )
- end
-
- -- function MJRoomXiaoJuView:initDeskType()
- -- if app.systemSetting.info.viewType == MJDefine.DesktopType.TwoD then -- viewType只保存2d 3d类型 mj_desktop_2d_mjType保存2d麻将类型
- -- local value = loadUserInfo("mj_desktop_2d_mjType")
- -- if value=="" or not value then
- -- value = MJDefine.DesktopType.TwoD
- -- saveUserInfo("mj_desktop_2d_mjType", value)
- -- end
- -- self.desktopType = value
- -- else
- -- self.desktopType = app.systemSetting.info.viewType
- -- end
- -- end
-
- function MJRoomXiaoJuView:loadUI()
- local ui = loadUI("mj/res/ui/ui_fangjian/mj_ui_xiaoju_jiesaun.ui")
- self.ui = ui
- self:addChild(ui)
- end
-
- function MJRoomXiaoJuView:onEnter()
- MJRoomXiaoJuView.super.onEnter(self)
- cc.SpriteFrameCache:getInstance():addSpriteFramesWithFile("mj/res/ui/zy_fangjian/mj_xiaoju_new.plist")
- cc.SpriteFrameCache:getInstance():addSpriteFramesWithFile("mj/res/ui/zy_fangjian/mj_xiao_ju.plist")
-
- -- 下一局
- self.ui.Items.Button_Next:registerClick(handler(self , self.onClickNext))
-
- --显示总结算
- self.ui.Items.Button_All:registerClick(handler(self , self.onClickZongJieSuan))
-
- --查牌
- self.ui.Items.Button_Cha:registerClick(function ()
- playBtnEffect()
- self:onClickChaPai()
- end)
-
- --确定按钮
- self.ui.Items.Button_Sure:registerClick(function ()
- playBtnEffect()
- self:onBtnSureClicked()
- end)
-
- --显示结束
- if app.room.roomInfo.isGameOver == 1 then
- setShowCountAll(true)
- self.ui.Items.Button_Next:setVisible(false)
- self.ui.Items.Button_All:setVisible(true)
- else
- self.ui.Items.Button_All:setVisible(false)
- end
-
- self.ui.Items.Layout_Sure:setVisible(false)
- self.ui.Items.Layout_Sure:setTouchEnabled(true)
-
-
- --洗牌
- if self.ui.Items.Button_XiPai then
- if app.room.roomInfo.isGameOver == 1 then
- self.ui.Items.Button_XiPai:setVisible(false)
- end
-
- self.ui.Items.Button_XiPai:registerClick(handler(self , self.onClickXiPai))
- end
-
- -- self.ui.Items.Layout_WeaveCard_Item:setVisible(false)
- -- self.ui.Items.Layout_MingTang:setVisible(false)
-
-
- --初始化人物信息
- self:initPlayerView()
- --初始化组合牌
- self:initWeaveCard()
- --初始化其他数据
- self:initOther()
- end
-
- function MJRoomXiaoJuView:initPlayerView()
- local roomInfo=app.room.roomInfo
- -- local indexPlayer = 1
-
- -- local roomInfo = app.room.roomInfo
- --获得放炮用户ID
- local resultInfo=json.decode(roomInfo.strResultInfo)
- self.fangPaoUserId=tonumber(resultInfo.fangpao)
-
- if resultInfo.hucard and resultInfo.hucard~="" then
- self.huCard=tonumber(resultInfo.hucard)
- end
-
- self.ui.Items.Layout_Player:removeAllChildren()
-
-
-
- -- local playerNum = table.nums(roomInfo.memberList)
- -- for i=1,4 do
- -- if i>playerNum then
- -- self.ui.Items["Layout_Player_"..i]:setVisible(false)
- -- end
- -- end
-
- self.items={}
-
- for k,v in pairs(roomInfo.memberList) do
- local i = v.nSeatId+1
- local item=self:createPlayerItem()
- self.ui.Items.Layout_Player:addChild(item)
- self:setPlayerItemInfo(item,v)
- self.items[i]=item
- -- table.insert(self.items,)
- end
- end
-
- function MJRoomXiaoJuView:createPlayerItem()
- local ui=loadUI("mj/res/ui/ui_fangjian/mj_ui_xiaoju_item.ui")
- autoAdapt(ui)
- return ui
- end
-
- function MJRoomXiaoJuView:setPlayerItemInfo(ui,player)
- local roomInfo=app.room.roomInfo
- local resultInfo=json.decode(roomInfo.strResultInfo)
- local bg = "ImageView_ItemBg"--"ImageView_Win_"..i..""
- -- local bg2 = "ImageView_ItemBg_2"
- -- local lose = "ImageView_Lose_"..i
- local head = "ImageView_Head"
- local name = "Text_Name"
- local benJuScore = "TextBMFont_Score"
- local benJuScore1 = "Text_Score"
- local hu = "ImageView_Hu"
- local info = "Button_Info"
- local result="Text_ResultInfo"
-
- local nodeBg = ui.Items[bg]
- -- local nodeBg2 = ui.Items[bg2]
- -- local nodeLose = self.ui.Items[lose]
- local nodeHead = ui.Items[head]
- local nodeName = ui.Items[name]
- local nodeBenJu = ui.Items[benJuScore]
- local bmFontScore = true
- if not nodeBenJu then
- nodeBenJu = ui.Items[benJuScore1]
- bmFontScore = false
- end
- local nodeHu = ui.Items[hu]
- local nodeBanker= ui.Items.ImageView_Banker
-
- -- local btnInfo = ui.Items[info]
- local nodeResult= ui.Items[result]
- --[[if app.room.roomInfo.opsCntMapString and app.room.roomInfo.opsCntMapString[tostring(player.nUserId)] then
- nodeResult:setText(app.room.roomInfo.opsCntMapString[tostring(player.nUserId)])
- else--]]
- nodeResult:setVisible(false)
- --end
-
- local userInfo = app.room:getUserInfo(player.nUserId)
-
- player.nTurnScore = tonumber(player.nTurnScore)
-
- --先设置默认头像
- local width = nodeHead:getContentSize().width
-
- local nickname = ""
- if userInfo and userInfo.nickname then
- nickname = getSubStringNickname(userInfo.nickname)
- self:updateUserHead(nodeHead,player.nUserId, userInfo.sex, userInfo.headimgurl);
- end
-
- nodeName:setText(nickname)
- -- nodeLose:setVisible(false)
- -- nodeWin:setVisible(false)
- if player.result~=MJDefine.MJGameResultType.Win then
- nodeHu:setVisible(false)
- else
- if resultInfo.hutype == 1 then--自摸
- nodeHu:setVisible(true)
- nodeHu:loadTexture("mj_xiao_ju1_zimo.png",cc.TextureResType.plistType)
- end
- end
-
- if self.fangPaoUserId==player.nUserId then
- nodeHu:setVisible(true)
- nodeHu:loadTexture("mj_xiao_ju1_dian_pao.png",cc.TextureResType.plistType)
- end
-
- if app.room:getUserIdBySeatId(app.room.roomInfo.nBankSeatId)~=player.nUserId then
- nodeBanker:setVisible(false)
- end
-
-
- if player.nTurnScore > 0 then
- nodeBenJu:setText("+"..player.nTurnScore)
- --nodeBenJu:setTextColor(cc.c4b(243,50,24,255))
- nodeBg:loadTexture("mj_xiao_ju_item_hu_bg.png",cc.TextureResType.plistType)
- nodeBg:setVisible(true)
- -- nodeBg2:loadTexture("mj_xiao_ju_item_hu_bg.png",cc.TextureResType.plistType)
-
- else
- nodeBenJu:setText(player.nTurnScore)
- if player.nTurnScore<0 and bmFontScore == true then
- nodeBenJu:setFntFile("mj/res/ui/font/mj_jiesuan_num_lose.fnt")
- --nodeBenJu:setTextColor(cc.c4b(16,172,82,255))
- end
-
- end
- end
-
- function MJRoomXiaoJuView:initWeaveCard()
- local roomInfo=app.room.roomInfo
- -- self.initX=MJ_HAND_CARD_INIT_X
- self.initX={}
-
- for k,v in pairs(roomInfo.memberList) do
- local i = v.nSeatId+1
- --local x=MJ_HAND_CARD_INIT_X
- local groups={}
- for _,group in pairs(v.gruoupCards) do
- table.insert(groups,self:getChangeGruopDatas(group))
- end
- self.initX[i]=MJ_HAND_CARD_INIT_X
- -- if #groups>0 then
- -- self.initX[i]=MJ_GROUP_CARD_INIT_X
- -- end
- self:createGroupCards(self.items[i].Items.Layout_Player,groups,i)
- self:removeHuCard(v)
- -- dump(v.handCards,"initWeaveCard")
- self:createHandCards(self.items[i].Items.Layout_Player,v.handCards,i)
- --创建胡的牌
- if self.huCard and v.result==MJDefine.MJGameResultType.Win then
- self.initX[i]=self.initX[i]+MJ_HU_X
- self:createHuCard(self.items[i].Items.Layout_Player,self.huCard,i)
- -- self:createHandCards(self.items[i].Items.Layout_Player,{{card=self.huCard}},i)
- end
- end
- end
-
- --移除手牌胡的牌
- function MJRoomXiaoJuView:removeHuCard(player)
- if player.result~=MJDefine.MJGameResultType.Win then return end
- for k,v in pairs(player.handCards) do
- if v.card==self.huCard then
- table.remove(player.handCards.Datas,k)
- return
- -- dump(v.handCards,"-----removeHuCard-----")
- -- v.handCards:remove(k)
- end
- end
- end
-
-
- function MJRoomXiaoJuView:getChangeGruopDatas(g)
- local opType=MJDefine.MJOperateToGroupType[g.opType]
- local opCard=g.opCard
- --组合一下牌
- local group={
- opType=opType,
- values={}
- }
-
- if MJDefine.MJGroupType.Chi==opType then
- group.values={opCard,opCard+1,opCard+2}
- elseif MJDefine.MJGroupType.Peng==opType then
- group.values={opCard,opCard,opCard}
- else
- group.values={opCard,opCard,opCard,opCard}
- end
- return group
- end
-
- function MJRoomXiaoJuView:createChi(values)
- local node=cc.Layer:create()--Color:create(cc.c4b(255,0,0,255))
- node:setAnchorPoint(cc.p(0.5,0.5))
- node:ignoreAnchorPointForPosition(false)
- local width=0
- local height=0
-
- for i=1,3 do
- if values[i] then
- local mj=MJ:new(values[i],MJDefine.MJType.Out,MJDefine.MyViewId,self.desktopType)
- node:addChild(mj)
- local mjWidth=mj:getContentSize().width
- local mjHeight=mj:getContentSize().height
- local x=mjWidth/2+(i-1)*(mjWidth+MJ_PADDING_X)
- local y=mjHeight/2
- width=width+mjWidth
- height=mjHeight
- mj:setPosition(x,y)
- end
- end
- node:setContentSize(cc.size(width,height))
- return node
- end
-
- function MJRoomXiaoJuView:createGang(values)
- local node=cc.Layer:create()--Color:create(cc.c4b(255,0,0,255))
- node:setAnchorPoint(cc.p(0.5,0.5))
- node:ignoreAnchorPointForPosition(false)
- local width=0
- local height=0
- for i=1,4 do
- if values[i] then
- local mj=MJ:new(values[i],MJDefine.MJType.Out,MJDefine.MyViewId,self.desktopType)
- node:addChild(mj)
- local mjWidth=mj:getContentSize().width
- local mjHeight=mj:getContentSize().height
- local x=mjWidth/2+(i-1)*(mjWidth+MJ_PADDING_X)
- local y=mjHeight/2
- width=width+mjWidth
- height=mjHeight
- mj:setPosition(x,y)
- end
- end
- node:setContentSize(cc.size(width,height))
- return node
- end
-
- function MJRoomXiaoJuView:createAnGang(values)
- local node=cc.Layer:create()--Color:create(cc.c4b(255,0,0,255))
- node:setAnchorPoint(cc.p(0.5,0.5))
- node:ignoreAnchorPointForPosition(false)
- local width=0
- local height=0
- for i=1,4 do
- if values[i] then
- local mj
- if i<=3 then
- mj=MJ:new(values[i],MJDefine.MJType.OutBlack,MJDefine.MyViewId,self.desktopType)
- else
- mj=MJ:new(values[i],MJDefine.MJType.Out,MJDefine.MyViewId)
- end
- node:addChild(mj)
- local mjWidth=mj:getContentSize().width
- local mjHeight=mj:getContentSize().height
- local x=mjWidth/2+(i-1)*(mjWidth+MJ_PADDING_X)
- local y=mjHeight/2
- width=width+mjWidth
- height=mjHeight
- mj:setPosition(x,y)
- end
- end
- node:setContentSize(cc.size(width,height))
- return node
- end
-
-
-
- function MJRoomXiaoJuView:createGroupCards(layer,arg,seatId)
- local handlers={
- [MJDefine.MJGroupType.Chi]=handler(self,self.createChi),
- [MJDefine.MJGroupType.Peng]=handler(self,self.createChi),
- [MJDefine.MJGroupType.Gang]=handler(self,self.createGang),
- [MJDefine.MJGroupType.AnGang]=handler(self,self.createAnGang),
- }
-
- for k,v in pairs(arg) do
- if handlers[v.opType] then
- local group=handlers[v.opType](v.values)
- local w=(group:getContentSize().width-MJ_WIDTH)/2
- group:setPosition(cc.p(self.initX[seatId]+w,MJ_HAND_CARD_INIT_Y))
- if k<#arg then
- self.initX[seatId]=self.initX[seatId]+group:getContentSize().width+MJ_GROUP_PADDING_X
- else
- self.initX[seatId]=self.initX[seatId]+group:getContentSize().width+MJ_GROUP_PADDING_X
- end
- layer:addChild(group)
- end
- end
- end
-
- function MJRoomXiaoJuView:createHandCards(layer,arg,seatId)
- for k,v in pairs(arg) do
- local mj=MJ:new(v.card,MJDefine.MJType.Out,MJDefine.MyViewId,self.desktopType)
- layer:addChild(mj)
- mj:setPosition(cc.p(self.initX[seatId],MJ_HAND_CARD_INIT_Y))
- self.initX[seatId]=self.initX[seatId]+mj:getContentSize().width+MJ_PADDING_X
- end
- end
-
- function MJRoomXiaoJuView:createHuCard(layer,card,seatId)
- local mj=MJ:new(card,MJDefine.MJType.Out,MJDefine.MyViewId,self.desktopType)
- layer:addChild(mj)
- mj:setPosition(cc.p(self.initX[seatId],MJ_HAND_CARD_INIT_Y))
- self.initX[seatId]=self.initX[seatId]+mj:getContentSize().width+MJ_PADDING_X
-
- local flag = cc.Sprite:create("mj/res/ui/zy_fangjian/mj_hu_flag.png")
- mj:addChild(flag)
-
- if self.desktopType == MJDefine.DesktopType.TwoDGold then
- flag:setPosition(cc.p(16,40))
- else
- flag:setPosition(cc.p(16,55))
- end
- end
-
- function MJRoomXiaoJuView:initOther()
- local roomInfo = app.room.roomInfo
- -- local winUserId = app.room.roomInfo.winUserId
-
- --规则
- local ruleAll = MJWanFa.getWanFaInfo(roomInfo.strGameInfo)
- self.ui.Items.Text_Rule:setText(ruleAll)
- --时间
- self.ui.Items.Text_Time:setText(os.date("%m-%d %X"))--(getTimeString())
- --房号
- self.ui.Items.Text_RoomNum:setText("房号:"..roomInfo.nShowTableId)
-
- if roomInfo.stopFlag==MJDefine.StopFlag.STOP_FLAG_HUANG_ZHUANG then
- self.ui.Items.ImageView_Title:loadTexture("mj_xiao_ju_liu_ju_title.png",cc.TextureResType.plistType)
- end
- end
-
-
- function MJRoomXiaoJuView:updateUserHead(nodeHead,nUserId, sex, headimgurl)
- setPlayerHeadImage(nUserId, headimgurl, nodeHead);
- end
-
- function MJRoomXiaoJuView:createWeaveCard(value,list,index,isHand)
-
- end
-
- -- 查牌
- function MJRoomXiaoJuView:onClickChaPai()
- self.ui.Items.Layout_Content:setVisible(false)
- self.ui.Items.Layout_Sure:setVisible(true)
- end
-
- function MJRoomXiaoJuView:onBtnSureClicked()
- self.ui.Items.Layout_Content:setVisible(true)
- self.ui.Items.Layout_Sure:setVisible(false)
- end
-
- -- 下一局
- function MJRoomXiaoJuView:onClickNext()
- playBtnEffect()
-
- self.ui:sendMsg(app.room, MJDefine.MJEvent.CallReadyRequest)
-
-
- -- if self.nextCallBack then
- -- self.nextCallBack()
- -- end
- end
-
- function MJRoomXiaoJuView:onClickZongJieSuan()
- playBtnEffect()
- self:removeAllChildren()
- local view=MJRoomDaJuView:new()
- view:setAnchorPoint(cc.p(0.5, 0.5))
- app:showWaitDialog(view)
- -- if self.nextCallBack then
- -- self.nextCallBack()
- -- end
- self:showGameOverAward()
- end
-
- function MJRoomXiaoJuView:changeHandCardY(initY)
- MJ_HAND_CARD_INIT_Y = initY
- end
-
- -- 分辨率改变回调(针对部分机型切后台后,导致牌数据位置不对(宽高分辨率对调了),暂时处理部分游戏)
- function MJRoomXiaoJuView:applicationScreenSizeChanged()
- if not self then
- print('MJRoomXiaoJuView:applicationScreenSizeChanged return not self')
- return
- end
-
- if tolua.isnull(self) then
- print('MJRoomXiaoJuView:applicationScreenSizeChanged return tolua.isnull(self)')
- return
- end
-
- if not self.ui.Items.Layout_Player then
- print('MJRoomXiaoJuView:applicationScreenSizeChanged return self.ui.Items.Layout_Player')
- return
- end
-
- if tolua.isnull(self.ui.Items.Layout_Player) then
- print('MJRoomXiaoJuView:applicationScreenSizeChanged return tolua.isnull(self.ui.Items.Layout_Player)')
- return
- end
-
- MJ_HAND_CARD_INIT_X=150 * g_radio_x
- MJ_HAND_CARD_INIT_Y=55 * g_radio_y
- MJ_GROUP_CARD_INIT_X=100 * g_radio_x
-
- --初始化人物信息
- self:initPlayerView()
- --初始化组合牌
- self:initWeaveCard()
- end
- ---
- -- 显示抽奖界面
- --
- function MJRoomXiaoJuView:showGameOverAward()
- if not (dd and dd.IGameOverAward) then
- return
- end
- self:runDelay(0.1, function ( )
- -- 延迟0.1秒执行,可能有些游戏弹大结算的时候还未收到抽奖消息
- dd.IGameOverAward.showAwardView();
- end)
- end
-
-
- -- 洗牌
- function MJRoomXiaoJuView:onClickXiPai()
- playBtnEffect()
- local function onClickOk()
- logD("点击确认洗牌")
- -- if self.createView == nil and self.istuoguan == true then
- -- return
- -- end
-
- saveUserInfo("mj_shuffle_isSure", 1) -- 确定洗牌
- app.room:sendGameXiPai()
- self:removeAllChildren()
- -- if self.nextCallback then
- -- self.nextCallback()
- -- end
- self.ui:sendMsg(app.room, MJDefine.MJEvent.CallReadyRequest)
- end
-
- local bMJShuffle = tonumber(loadUserInfo("mj_shuffle")) or 0
- local bMjShuffleIsSure = tonumber(loadUserInfo("mj_shuffle_isSure")) or 0 -- 确定洗牌
- if bMJShuffle == 1 and bMjShuffleIsSure == 1 then
- onClickOk()
- else
- local createView = import("mj.luaScript.Views.Room.MJRoomXiPaiView"):new(onClickOk)
- createView:setAnchorPoint(cc.p(0.5, 0.5))
- app:showWaitDialog(createView)
- --self.createView = createView
- end
- end
-
- return MJRoomXiaoJuView
|