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