local WRDDZRoomConfig = {} local gameConfig = getSubGameConfig(GAME_IDS.zgWuRenDouDiZhu) local DdzDefine = require("luaScript.SubGameDefine.zgwrDdzDefine") -- 玩家节点位置 WRDDZRoomConfig.PLAYER_POS = { [5] = { cc.p((62+25)*g_radio_x, 84*g_radio_y), cc.p((1224-25)*g_radio_x, 366*g_radio_y), cc.p((1224-25)*g_radio_x, 561*g_radio_y), cc.p((62+25)*g_radio_x, 561*g_radio_y), cc.p((62+25)*g_radio_x, 366*g_radio_y), }, } --root cardRoot手牌开始位置,只有自己有,别人的手牌起始位置不用管 WRDDZRoomConfig.INIT_CARD_POS = { [5] = { cc.p(193*g_radio_x, 100*g_radio_y), }, } -- 小局展示牌的起始位置 WRDDZRoomConfig.SHOW_CARD_POS = { [5] = { cc.p(640*g_radio_x, 253*g_radio_y), cc.p((766+320)*g_radio_x, 352*g_radio_y), cc.p((766+320)*g_radio_x, 545*g_radio_y), cc.p(198*g_radio_x, 545*g_radio_y), cc.p(198*g_radio_x, 352*g_radio_y), }, } -- 回放牌的起始位置 WRDDZRoomConfig.RECORD_INIT_CARD_POS = { [5] = { cc.p(640*g_radio_x, 80*g_radio_y), cc.p((766+320-400)*g_radio_x, 352*g_radio_y), cc.p((766+320-400)*g_radio_x, 545*g_radio_y), cc.p((198+50)*g_radio_x, 545*g_radio_y), cc.p((198+50)*g_radio_x, 352*g_radio_y), }, } --专门给5人玩回放定义的出牌位置 WRDDZRoomConfig.RECORD_SHOW_CARD_POS5 = { [5] = { cc.p((200-8)*g_radio_x, 50*g_radio_y), cc.p((766+320)*g_radio_x, (372+50)*g_radio_y), cc.p((766+320)*g_radio_x, (575+50)*g_radio_y), cc.p(198*g_radio_x, (575+50)*g_radio_y), cc.p(198*g_radio_x, (372+50)*g_radio_y), }, } WRDDZRoomConfig.OUT_CARD_POS = { [5] = { cc.p(640*g_radio_x, 253*g_radio_y), cc.p(-146*g_radio_x, 20*g_radio_y), cc.p(-146*g_radio_x, 10*g_radio_y), cc.p(230*g_radio_x, 10*g_radio_y), cc.p(230*g_radio_x, 20*g_radio_y), }, } --抢地主 加倍 要不起 等显示操作的位置配置 WRDDZRoomConfig.PASS_SHOW_POS = { [4] = { cc.p(580*g_radio_x, 200*g_radio_y), cc.p((-160-40)*g_radio_x, 0),--x- cc.p((-160-40)*g_radio_x, 0),--x+ cc.p((170+40)*g_radio_x, 0),--x+ }, [5] = { cc.p(580*g_radio_x, 200*g_radio_y), cc.p(-200*g_radio_x, 0), cc.p(-200*g_radio_x, 0), cc.p(210*g_radio_x, 0), cc.p(210*g_radio_x, 0), }, } --每行最多放多少牌 WRDDZRoomConfig.ROW_MAX_CARDS_NUM = 17 --手牌行间距 WRDDZRoomConfig.ROW_SPACING = 92 --手牌中间点(牌以这个点向两边展开) WRDDZRoomConfig.HANDCARD_MIDPOS = 640*g_radio_x -- 牌缩放 WRDDZRoomConfig.CARD_SCALE = { [1] = 0.88, [2] = 0.5, [3] = 0.5, [4] = 0.5, [4] = 0.5, } -- 发牌时的起始缩放 WRDDZRoomConfig.CARD_SCALE_START = 0.5 -- 牌间距 WRDDZRoomConfig.CARD_DLT_WIDTH = 60 WRDDZRoomConfig.LCARD_DLT_WIDTH = 25 -- 发牌开始位置 WRDDZRoomConfig.CARD_START_POS = cc.p(640*g_radio_x, 340*g_radio_y) -- 牌的正常位置高度 WRDDZRoomConfig.NORMAL_HEIGHT = 100*g_radio_y -- 第二排牌的正常位置高度 WRDDZRoomConfig.ROW2_NORMAL_HEIGHT = WRDDZRoomConfig.NORMAL_HEIGHT - 92 -- 牌选择时的高度 WRDDZRoomConfig.SELECTED_HEIGHT = WRDDZRoomConfig.NORMAL_HEIGHT+40 -- 第二排牌选择时的高度 WRDDZRoomConfig.ROW2_SELECTED_HEIGHT = WRDDZRoomConfig.NORMAL_HEIGHT-92+30 -- 卡牌高度 WRDDZRoomConfig.CARD_HEIGHT = 231 WRDDZRoomConfig.CARD_WIDTH = 163 --[[ ]] -- 牌型显示类型 WRDDZRoomConfig.EffectType = { PASS = 0,--要不起 SINGLE_CARD = 0x01,--单牌 DUI_ZI = 0x02,--对子 THREE = 0x03,--三个 SHUN_ZI = 0x04,--顺子 LIAN_DUI = 0x05,--连对 SAN_SHUN = 0x06,--三顺 THREE_AND_ONE = 0x07,--三带一 THREE_AND_DUI = 0x08,--三带一对 AIRPLANE_SINGLE = 0x09,--飞机(带单张) AIRPLANE_DUI = 0x0a,--飞机带对 BOMB_FOUR = 0x0b,--炸弹4张 TWO_SMALL_KING = 0x0c,--炸弹两小王(王炸) BIG_SMALL_KING = 0x0d,--炸弹一大王一小王(王炸) TWO_BIG_KING = 0x0e,--炸弹两大王(王炸) BOMB_EIGHT = 0x0f,--炸弹8张 FOUR_SMALL_KING = 0x10,--炸弹四小王(王炸) BIG_THREE_SMALL_KING = 0x11,--炸弹一大王三小王(王炸) TWO_BIG_TWO_SMALL_KING = 0x12,--炸弹两大王两小王(王炸) THREE_BIG_SMALL_KING = 0x13,--炸弹三大王一小王(王炸) FOUR_BIG_KING = 0x14,--炸弹四大王(王炸) BOMB_TWELVE = 0x15,--炸弹12张 SIX_SMALL_KING = 0x16,--炸弹六小王(王炸) THREE_BIG_THREE_SMALL_KING = 0x17,--炸弹三大王三小王(王炸) FOUR_BIG_TWO_SMALL_KING = 0x18,--炸弹四大王两小王(王炸) FIVE_BIG_SMALL_KING = 0x19,--炸弹五大王一小王(王炸) SIX_BIG_KING = 0x1a,--炸弹六大王(王炸) NONE = 100,--不适用类型 } --是否是炸弹 function WRDDZRoomConfig.isBomb( tp ) if not tp or (not type(tp) == 'number') then return false end return tp >= WRDDZRoomConfig.EffectType.BOMB_FOUR and tp <= WRDDZRoomConfig.EffectType.SIX_BIG_KING end -- 游戏桌子状态 WRDDZRoomConfig.GameStatus = { GAME_STATE_INIT =0, --游戏初始状态 GAME_STATUS_WAIT_BANKER_START =1, --等待庄家开始游戏 GAME_STATUS_WAITTING =2, --等待中 GAME_STATUS_READALL =3, --所有玩家准备 GAME_STATUS_SHUFFLE =4, --洗牌中 GAME_STATUS_SENDCARDS =5, --发牌阶段 GAME_STATUS_ASK_LOARD =6, --叫地主 GAME_STATUS_ASK_DOUBLE =7, --加倍状态 GAME_STATUS_SELECT_CARD =8, --选牌(暗地主) GAME_STATUS_PLAYING =9, --开始游戏出牌 GAME_STATE_ROUND_OVER =10, --小局结束 GAME_STATE_GAME_OVER =11, --大局结束 } -- 创建房间参数 WRDDZRoomConfig.CreateParams = { 0x0001, --记牌器 0x0002, --有大必打 } WRDDZRoomConfig.CreateParamsMean = DdzDefine.CreateParamsMean WRDDZRoomConfig.RoonInfoConfig = { play = DdzDefine.GameTypesStr, num = DdzDefine.GamePlayerCount, wanfa = DdzDefine.GameWanfa, gui = DdzDefine.GameGui, keshu = DdzDefine.GameKeShu, } WRDDZRoomConfig.InviteConfig = { [2] = { [0] = "零缺二", [1] = "一缺一", [2] = "", }, [3] = { [0] = "零缺三", [1] = "一缺二", [2] = "二缺一", [3] = "", }, [5] = { [0] = "零缺五", [1] = "一缺四", [2] = "二缺三", [3] = "三缺二", [4] = "四缺一", } } WRDDZRoomConfig.PayConfig = { [0] = "房主付费", [1] = "AA支付" } function WRDDZRoomConfig.getPayInfo( gameInfo ) local data = json.decode(gameInfo) if data == nil then return "" end return WRDDZRoomConfig.PayConfig[tonumber(data.deductRule)] end function WRDDZRoomConfig.getRoundCount( gameInfo ) local data = json.decode(gameInfo) if data == nil then return "" end return WRDDZRoomConfig.RoonInfoConfig.num[tonumber(data.playnum)] end --带鬼数量 function WRDDZRoomConfig.getGuiCount( gameInfo ) local data = json.decode(gameInfo) if data == nil then return "" end return WRDDZRoomConfig.RoonInfoConfig.gui[tonumber(data.jokerCount)] end --颗数 function WRDDZRoomConfig.getKeCount( gameInfo ) local data = json.decode(gameInfo) if data == nil then return "" end return WRDDZRoomConfig.RoonInfoConfig.keshu[tonumber(data.keCount)] end function WRDDZRoomConfig.getWanfa( gameInfo ) local data = json.decode(gameInfo) if data == nil then return "" end return WRDDZRoomConfig.RoonInfoConfig.wanfa[tonumber(data.allowPass)] end --[[获取房间详情字符串--]] function WRDDZRoomConfig.getRuleString(gameInfo) -- local gameInfo = app.room:getRoomInfo().nGameInfo local data = json.decode(gameInfo) if data == nil then return "" end local rule = tonumber(data.specialRule) local ruleStr = "" ruleStr = ruleStr..WRDDZRoomConfig.RoonInfoConfig.play[tonumber(data.gamerule)].." " ruleStr = ruleStr..WRDDZRoomConfig.RoonInfoConfig.num[tonumber(data.playnum)].." " ruleStr = ruleStr..WRDDZRoomConfig.RoonInfoConfig.gui[tonumber(data.jokerCount)].." " ruleStr = ruleStr..WRDDZRoomConfig.RoonInfoConfig.keshu[tonumber(data.keCount)].." " --[[if data.allowPass and data.allowPass >= 0 then ruleStr = ruleStr..WRDDZRoomConfig.RoonInfoConfig.wanfa[tonumber(data.allowPass)].."," end--]] if getNumBand(rule, 0x0001)>0 then ruleStr = ruleStr..WRDDZRoomConfig.CreateParamsMean[0x0001].." " end if getNumBand(rule, 0x0002)>0 then ruleStr = ruleStr..WRDDZRoomConfig.CreateParamsMean[0x0002].." " end if getNumBand(rule, 0x0004)>0 then ruleStr = ruleStr..WRDDZRoomConfig.CreateParamsMean[0x0004].." " end -- if getNumBand(rule, 0x0008)>0 then -- ruleStr = ruleStr..WRDDZRoomConfig.CreateParamsMean[0x0008].."," -- end if getNumBand(rule, 0x0010)>0 then ruleStr = ruleStr..WRDDZRoomConfig.CreateParamsMean[0x0010].." " end if getNumBand(rule, 0x0020)>0 then ruleStr = ruleStr..WRDDZRoomConfig.CreateParamsMean[0x0020].." " end if getNumBand(rule, 0x0040)>0 then ruleStr = ruleStr..WRDDZRoomConfig.CreateParamsMean[0x0040].." " end if getNumBand(rule, 0x0080)>0 then ruleStr = ruleStr..WRDDZRoomConfig.CreateParamsMean[0x0080].." " end if string.len(ruleStr) > 0 then ruleStr = string.sub(ruleStr, 1, string.len(ruleStr)-1) end return ruleStr end function WRDDZRoomConfig.getRuleString2(gameInfo) -- local gameInfo = app.room:getRoomInfo().nGameInfo local data = json.decode(gameInfo) if data == nil then return "" end local rule = tonumber(data.specialRule) local ruleStr = "" ruleStr = ruleStr..WRDDZRoomConfig.RoonInfoConfig.play[tonumber(data.gamerule)].."、" ruleStr = ruleStr..WRDDZRoomConfig.RoonInfoConfig.num[tonumber(data.playnum)].."、" ruleStr = ruleStr..WRDDZRoomConfig.RoonInfoConfig.gui[tonumber(data.jokerCount)].."、" ruleStr = ruleStr..WRDDZRoomConfig.RoonInfoConfig.keshu[tonumber(data.keCount)].."、" if getNumBand(rule, 0x0001)>0 then ruleStr = ruleStr..WRDDZRoomConfig.CreateParamsMean[0x0001].. "、" end if getNumBand(rule, 0x0002)>0 then ruleStr = ruleStr..WRDDZRoomConfig.CreateParamsMean[0x0002] end --if getNumBand(rule, 0x0004)>0 then -- ruleStr = ruleStr..WRDDZRoomConfig.CreateParamsMean[0x0004].. "、" --end return ruleStr end function WRDDZRoomConfig.getWanfaTab(strGameInfo) local data = json.decode(strGameInfo) local rule = tonumber(data.specialRule) local rules = {} table.insert(rules,WRDDZRoomConfig.getPayInfo(strGameInfo)) table.insert(rules,WRDDZRoomConfig.getRoundCount(strGameInfo)) table.insert(rules,WRDDZRoomConfig.getGuiCount(strGameInfo)) table.insert(rules,WRDDZRoomConfig.getKeCount(strGameInfo)) --table.insert(rules,WRDDZRoomConfig.RoonInfoConfig.wanfa[tonumber(data.allowPass)]) if getNumBand(rule, 0x0001)>0 then table.insert(rules,WRDDZRoomConfig.CreateParamsMean[0x0001]) -- ruleStr = ruleStr..WRDDZRoomConfig.CreateParamsMean[0x0001].. "、" end if getNumBand(rule, 0x0002)>0 then table.insert(rules,WRDDZRoomConfig.CreateParamsMean[0x0002]) -- ruleStr = ruleStr..WRDDZRoomConfig.CreateParamsMean[0x0002].. "、" end --[[if getNumBand(rule, 0x0004)>0 then table.insert(rules,WRDDZRoomConfig.CreateParamsMean[0x0004]) -- ruleStr = ruleStr..WRDDZRoomConfig.CreateParamsMean[0x0004].. "、" end--]] return rules end function WRDDZRoomConfig.getClubInviteWanFa(gameId, roomInfo) local data = json.decode(roomInfo.nGameInfo or "") if data == nil then return "" end local gamerule = data.gamerule -- 玩法 local roundCount = roomInfo.nTotalGameNum -- 局数 local gameConfig = getSubGameConfig(gameId) local gameType = gameConfig.GameType or {} local content = string.format("%s局 %s", roundCount, gameType[gamerule] or gameConfig.gameName) return content end return WRDDZRoomConfig