You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

368 regels
12 KiB

  1. local WRDDZRoomConfig = {}
  2. local gameConfig = getSubGameConfig(GAME_IDS.zgWuRenDouDiZhu)
  3. local DdzDefine = require("luaScript.SubGameDefine.zgwrDdzDefine")
  4. -- 玩家节点位置
  5. WRDDZRoomConfig.PLAYER_POS = {
  6. [5] = {
  7. cc.p((62+25)*g_radio_x, 84*g_radio_y),
  8. cc.p((1224-25)*g_radio_x, 366*g_radio_y),
  9. cc.p((1224-25)*g_radio_x, 561*g_radio_y),
  10. cc.p((62+25)*g_radio_x, 561*g_radio_y),
  11. cc.p((62+25)*g_radio_x, 366*g_radio_y),
  12. },
  13. }
  14. --root cardRoot手牌开始位置,只有自己有,别人的手牌起始位置不用管
  15. WRDDZRoomConfig.INIT_CARD_POS = {
  16. [5] = {
  17. cc.p(193*g_radio_x, 100*g_radio_y),
  18. },
  19. }
  20. -- 小局展示牌的起始位置
  21. WRDDZRoomConfig.SHOW_CARD_POS = {
  22. [5] = {
  23. cc.p(640*g_radio_x, 253*g_radio_y),
  24. cc.p((766+320)*g_radio_x, 352*g_radio_y),
  25. cc.p((766+320)*g_radio_x, 545*g_radio_y),
  26. cc.p(198*g_radio_x, 545*g_radio_y),
  27. cc.p(198*g_radio_x, 352*g_radio_y),
  28. },
  29. }
  30. -- 回放牌的起始位置
  31. WRDDZRoomConfig.RECORD_INIT_CARD_POS = {
  32. [5] = {
  33. cc.p(640*g_radio_x, 80*g_radio_y),
  34. cc.p((766+320-400)*g_radio_x, 352*g_radio_y),
  35. cc.p((766+320-400)*g_radio_x, 545*g_radio_y),
  36. cc.p((198+50)*g_radio_x, 545*g_radio_y),
  37. cc.p((198+50)*g_radio_x, 352*g_radio_y),
  38. },
  39. }
  40. --专门给5人玩回放定义的出牌位置
  41. WRDDZRoomConfig.RECORD_SHOW_CARD_POS5 = {
  42. [5] = {
  43. cc.p((200-8)*g_radio_x, 50*g_radio_y),
  44. cc.p((766+320)*g_radio_x, (372+50)*g_radio_y),
  45. cc.p((766+320)*g_radio_x, (575+50)*g_radio_y),
  46. cc.p(198*g_radio_x, (575+50)*g_radio_y),
  47. cc.p(198*g_radio_x, (372+50)*g_radio_y),
  48. },
  49. }
  50. WRDDZRoomConfig.OUT_CARD_POS = {
  51. [5] = {
  52. cc.p(640*g_radio_x, 253*g_radio_y),
  53. cc.p(-146*g_radio_x, 20*g_radio_y),
  54. cc.p(-146*g_radio_x, 10*g_radio_y),
  55. cc.p(230*g_radio_x, 10*g_radio_y),
  56. cc.p(230*g_radio_x, 20*g_radio_y),
  57. },
  58. }
  59. --抢地主 加倍 要不起 等显示操作的位置配置
  60. WRDDZRoomConfig.PASS_SHOW_POS = {
  61. [4] = {
  62. cc.p(580*g_radio_x, 200*g_radio_y),
  63. cc.p((-160-40)*g_radio_x, 0),--x-
  64. cc.p((-160-40)*g_radio_x, 0),--x+
  65. cc.p((170+40)*g_radio_x, 0),--x+
  66. },
  67. [5] = {
  68. cc.p(580*g_radio_x, 200*g_radio_y),
  69. cc.p(-200*g_radio_x, 0),
  70. cc.p(-200*g_radio_x, 0),
  71. cc.p(210*g_radio_x, 0),
  72. cc.p(210*g_radio_x, 0),
  73. },
  74. }
  75. --每行最多放多少牌
  76. WRDDZRoomConfig.ROW_MAX_CARDS_NUM = 17
  77. --手牌行间距
  78. WRDDZRoomConfig.ROW_SPACING = 92
  79. --手牌中间点(牌以这个点向两边展开)
  80. WRDDZRoomConfig.HANDCARD_MIDPOS = 640*g_radio_x
  81. -- 牌缩放
  82. WRDDZRoomConfig.CARD_SCALE = {
  83. [1] = 0.88,
  84. [2] = 0.5,
  85. [3] = 0.5,
  86. [4] = 0.5,
  87. [4] = 0.5,
  88. }
  89. -- 发牌时的起始缩放
  90. WRDDZRoomConfig.CARD_SCALE_START = 0.5
  91. -- 牌间距
  92. WRDDZRoomConfig.CARD_DLT_WIDTH = 60
  93. WRDDZRoomConfig.LCARD_DLT_WIDTH = 25
  94. -- 发牌开始位置
  95. WRDDZRoomConfig.CARD_START_POS = cc.p(640*g_radio_x, 340*g_radio_y)
  96. -- 牌的正常位置高度
  97. WRDDZRoomConfig.NORMAL_HEIGHT = 100*g_radio_y
  98. -- 第二排牌的正常位置高度
  99. WRDDZRoomConfig.ROW2_NORMAL_HEIGHT = WRDDZRoomConfig.NORMAL_HEIGHT - 92
  100. -- 牌选择时的高度
  101. WRDDZRoomConfig.SELECTED_HEIGHT = WRDDZRoomConfig.NORMAL_HEIGHT+40
  102. -- 第二排牌选择时的高度
  103. WRDDZRoomConfig.ROW2_SELECTED_HEIGHT = WRDDZRoomConfig.NORMAL_HEIGHT-92+30
  104. -- 卡牌高度
  105. WRDDZRoomConfig.CARD_HEIGHT = 231
  106. WRDDZRoomConfig.CARD_WIDTH = 163
  107. --[[
  108. ]]
  109. -- 牌型显示类型
  110. WRDDZRoomConfig.EffectType = {
  111. PASS = 0,--要不起
  112. SINGLE_CARD = 0x01,--单牌
  113. DUI_ZI = 0x02,--对子
  114. THREE = 0x03,--三个
  115. SHUN_ZI = 0x04,--顺子
  116. LIAN_DUI = 0x05,--连对
  117. SAN_SHUN = 0x06,--三顺
  118. THREE_AND_ONE = 0x07,--三带一
  119. THREE_AND_DUI = 0x08,--三带一对
  120. AIRPLANE_SINGLE = 0x09,--飞机(带单张)
  121. AIRPLANE_DUI = 0x0a,--飞机带对
  122. BOMB_FOUR = 0x0b,--炸弹4张
  123. TWO_SMALL_KING = 0x0c,--炸弹两小王(王炸)
  124. BIG_SMALL_KING = 0x0d,--炸弹一大王一小王(王炸)
  125. TWO_BIG_KING = 0x0e,--炸弹两大王(王炸)
  126. BOMB_EIGHT = 0x0f,--炸弹8张
  127. FOUR_SMALL_KING = 0x10,--炸弹四小王(王炸)
  128. BIG_THREE_SMALL_KING = 0x11,--炸弹一大王三小王(王炸)
  129. TWO_BIG_TWO_SMALL_KING = 0x12,--炸弹两大王两小王(王炸)
  130. THREE_BIG_SMALL_KING = 0x13,--炸弹三大王一小王(王炸)
  131. FOUR_BIG_KING = 0x14,--炸弹四大王(王炸)
  132. BOMB_TWELVE = 0x15,--炸弹12张
  133. SIX_SMALL_KING = 0x16,--炸弹六小王(王炸)
  134. THREE_BIG_THREE_SMALL_KING = 0x17,--炸弹三大王三小王(王炸)
  135. FOUR_BIG_TWO_SMALL_KING = 0x18,--炸弹四大王两小王(王炸)
  136. FIVE_BIG_SMALL_KING = 0x19,--炸弹五大王一小王(王炸)
  137. SIX_BIG_KING = 0x1a,--炸弹六大王(王炸)
  138. NONE = 100,--不适用类型
  139. }
  140. --是否是炸弹
  141. function WRDDZRoomConfig.isBomb( tp )
  142. if not tp or (not type(tp) == 'number') then return false end
  143. return tp >= WRDDZRoomConfig.EffectType.BOMB_FOUR and tp <= WRDDZRoomConfig.EffectType.SIX_BIG_KING
  144. end
  145. -- 游戏桌子状态
  146. WRDDZRoomConfig.GameStatus = {
  147. GAME_STATE_INIT =0, --游戏初始状态
  148. GAME_STATUS_WAIT_BANKER_START =1, --等待庄家开始游戏
  149. GAME_STATUS_WAITTING =2, --等待中
  150. GAME_STATUS_READALL =3, --所有玩家准备
  151. GAME_STATUS_SHUFFLE =4, --洗牌中
  152. GAME_STATUS_SENDCARDS =5, --发牌阶段
  153. GAME_STATUS_ASK_LOARD =6, --叫地主
  154. GAME_STATUS_ASK_DOUBLE =7, --加倍状态
  155. GAME_STATUS_SELECT_CARD =8, --选牌(暗地主)
  156. GAME_STATUS_PLAYING =9, --开始游戏出牌
  157. GAME_STATE_ROUND_OVER =10, --小局结束
  158. GAME_STATE_GAME_OVER =11, --大局结束
  159. }
  160. -- 创建房间参数
  161. WRDDZRoomConfig.CreateParams = {
  162. 0x0001, --记牌器
  163. 0x0002, --有大必打
  164. }
  165. WRDDZRoomConfig.CreateParamsMean = DdzDefine.CreateParamsMean
  166. WRDDZRoomConfig.RoonInfoConfig = {
  167. play = DdzDefine.GameTypesStr,
  168. num = DdzDefine.GamePlayerCount,
  169. wanfa = DdzDefine.GameWanfa,
  170. gui = DdzDefine.GameGui,
  171. keshu = DdzDefine.GameKeShu,
  172. }
  173. WRDDZRoomConfig.InviteConfig = {
  174. [2] = {
  175. [0] = "零缺二",
  176. [1] = "一缺一",
  177. [2] = "",
  178. },
  179. [3] = {
  180. [0] = "零缺三",
  181. [1] = "一缺二",
  182. [2] = "二缺一",
  183. [3] = "",
  184. },
  185. [5] = {
  186. [0] = "零缺五",
  187. [1] = "一缺四",
  188. [2] = "二缺三",
  189. [3] = "三缺二",
  190. [4] = "四缺一",
  191. }
  192. }
  193. WRDDZRoomConfig.PayConfig = {
  194. [0] = "房主付费",
  195. [1] = "AA支付"
  196. }
  197. function WRDDZRoomConfig.getPayInfo( gameInfo )
  198. local data = json.decode(gameInfo)
  199. if data == nil then
  200. return ""
  201. end
  202. return WRDDZRoomConfig.PayConfig[tonumber(data.deductRule)]
  203. end
  204. function WRDDZRoomConfig.getRoundCount( gameInfo )
  205. local data = json.decode(gameInfo)
  206. if data == nil then
  207. return ""
  208. end
  209. return WRDDZRoomConfig.RoonInfoConfig.num[tonumber(data.playnum)]
  210. end
  211. --带鬼数量
  212. function WRDDZRoomConfig.getGuiCount( gameInfo )
  213. local data = json.decode(gameInfo)
  214. if data == nil then
  215. return ""
  216. end
  217. return WRDDZRoomConfig.RoonInfoConfig.gui[tonumber(data.jokerCount)]
  218. end
  219. --颗数
  220. function WRDDZRoomConfig.getKeCount( gameInfo )
  221. local data = json.decode(gameInfo)
  222. if data == nil then
  223. return ""
  224. end
  225. return WRDDZRoomConfig.RoonInfoConfig.keshu[tonumber(data.keCount)]
  226. end
  227. function WRDDZRoomConfig.getWanfa( gameInfo )
  228. local data = json.decode(gameInfo)
  229. if data == nil then
  230. return ""
  231. end
  232. return WRDDZRoomConfig.RoonInfoConfig.wanfa[tonumber(data.allowPass)]
  233. end
  234. --[[获取房间详情字符串--]]
  235. function WRDDZRoomConfig.getRuleString(gameInfo)
  236. -- local gameInfo = app.room:getRoomInfo().nGameInfo
  237. local data = json.decode(gameInfo)
  238. if data == nil then
  239. return ""
  240. end
  241. local rule = tonumber(data.specialRule)
  242. local ruleStr = ""
  243. ruleStr = ruleStr..WRDDZRoomConfig.RoonInfoConfig.play[tonumber(data.gamerule)].." "
  244. ruleStr = ruleStr..WRDDZRoomConfig.RoonInfoConfig.num[tonumber(data.playnum)].." "
  245. ruleStr = ruleStr..WRDDZRoomConfig.RoonInfoConfig.gui[tonumber(data.jokerCount)].." "
  246. ruleStr = ruleStr..WRDDZRoomConfig.RoonInfoConfig.keshu[tonumber(data.keCount)].." "
  247. --[[if data.allowPass and data.allowPass >= 0 then
  248. ruleStr = ruleStr..WRDDZRoomConfig.RoonInfoConfig.wanfa[tonumber(data.allowPass)]..","
  249. end--]]
  250. if getNumBand(rule, 0x0001)>0 then
  251. ruleStr = ruleStr..WRDDZRoomConfig.CreateParamsMean[0x0001].." "
  252. end
  253. if getNumBand(rule, 0x0002)>0 then
  254. ruleStr = ruleStr..WRDDZRoomConfig.CreateParamsMean[0x0002].." "
  255. end
  256. if getNumBand(rule, 0x0004)>0 then
  257. ruleStr = ruleStr..WRDDZRoomConfig.CreateParamsMean[0x0004].." "
  258. end
  259. -- if getNumBand(rule, 0x0008)>0 then
  260. -- ruleStr = ruleStr..WRDDZRoomConfig.CreateParamsMean[0x0008]..","
  261. -- end
  262. if getNumBand(rule, 0x0010)>0 then
  263. ruleStr = ruleStr..WRDDZRoomConfig.CreateParamsMean[0x0010].." "
  264. end
  265. if getNumBand(rule, 0x0020)>0 then
  266. ruleStr = ruleStr..WRDDZRoomConfig.CreateParamsMean[0x0020].." "
  267. end
  268. if getNumBand(rule, 0x0040)>0 then
  269. ruleStr = ruleStr..WRDDZRoomConfig.CreateParamsMean[0x0040].." "
  270. end
  271. if getNumBand(rule, 0x0080)>0 then
  272. ruleStr = ruleStr..WRDDZRoomConfig.CreateParamsMean[0x0080].." "
  273. end
  274. if string.len(ruleStr) > 0 then
  275. ruleStr = string.sub(ruleStr, 1, string.len(ruleStr)-1)
  276. end
  277. return ruleStr
  278. end
  279. function WRDDZRoomConfig.getRuleString2(gameInfo)
  280. -- local gameInfo = app.room:getRoomInfo().nGameInfo
  281. local data = json.decode(gameInfo)
  282. if data == nil then
  283. return ""
  284. end
  285. local rule = tonumber(data.specialRule)
  286. local ruleStr = ""
  287. ruleStr = ruleStr..WRDDZRoomConfig.RoonInfoConfig.play[tonumber(data.gamerule)].."、"
  288. ruleStr = ruleStr..WRDDZRoomConfig.RoonInfoConfig.num[tonumber(data.playnum)].."、"
  289. ruleStr = ruleStr..WRDDZRoomConfig.RoonInfoConfig.gui[tonumber(data.jokerCount)].."、"
  290. ruleStr = ruleStr..WRDDZRoomConfig.RoonInfoConfig.keshu[tonumber(data.keCount)].."、"
  291. if getNumBand(rule, 0x0001)>0 then
  292. ruleStr = ruleStr..WRDDZRoomConfig.CreateParamsMean[0x0001].. "、"
  293. end
  294. if getNumBand(rule, 0x0002)>0 then
  295. ruleStr = ruleStr..WRDDZRoomConfig.CreateParamsMean[0x0002]
  296. end
  297. --if getNumBand(rule, 0x0004)>0 then
  298. -- ruleStr = ruleStr..WRDDZRoomConfig.CreateParamsMean[0x0004].. "、"
  299. --end
  300. return ruleStr
  301. end
  302. function WRDDZRoomConfig.getWanfaTab(strGameInfo)
  303. local data = json.decode(strGameInfo)
  304. local rule = tonumber(data.specialRule)
  305. local rules = {}
  306. table.insert(rules,WRDDZRoomConfig.getPayInfo(strGameInfo))
  307. table.insert(rules,WRDDZRoomConfig.getRoundCount(strGameInfo))
  308. table.insert(rules,WRDDZRoomConfig.getGuiCount(strGameInfo))
  309. table.insert(rules,WRDDZRoomConfig.getKeCount(strGameInfo))
  310. --table.insert(rules,WRDDZRoomConfig.RoonInfoConfig.wanfa[tonumber(data.allowPass)])
  311. if getNumBand(rule, 0x0001)>0 then
  312. table.insert(rules,WRDDZRoomConfig.CreateParamsMean[0x0001])
  313. -- ruleStr = ruleStr..WRDDZRoomConfig.CreateParamsMean[0x0001].. "、"
  314. end
  315. if getNumBand(rule, 0x0002)>0 then
  316. table.insert(rules,WRDDZRoomConfig.CreateParamsMean[0x0002])
  317. -- ruleStr = ruleStr..WRDDZRoomConfig.CreateParamsMean[0x0002].. "、"
  318. end
  319. --[[if getNumBand(rule, 0x0004)>0 then
  320. table.insert(rules,WRDDZRoomConfig.CreateParamsMean[0x0004])
  321. -- ruleStr = ruleStr..WRDDZRoomConfig.CreateParamsMean[0x0004].. "、"
  322. end--]]
  323. return rules
  324. end
  325. function WRDDZRoomConfig.getClubInviteWanFa(gameId, roomInfo)
  326. local data = json.decode(roomInfo.nGameInfo or "")
  327. if data == nil then
  328. return ""
  329. end
  330. local gamerule = data.gamerule -- 玩法
  331. local roundCount = roomInfo.nTotalGameNum -- 局数
  332. local gameConfig = getSubGameConfig(gameId)
  333. local gameType = gameConfig.GameType or {}
  334. local content = string.format("%s局 %s", roundCount, gameType[gamerule] or gameConfig.gameName)
  335. return content
  336. end
  337. return WRDDZRoomConfig