LobbyListInfoUtil.js 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. const GameRulesUtil = require("GameRulesUtil");
  2. var LobbyListInfoUtil = {
  3. GAME_RULE_RENSHU_2: 0x00040000, // 2人
  4. GAME_RULE_RENSHU_1: 0x00010000, // 4人
  5. GAME_RULE_SP_15: 0x04000000, // 台湾北部麻将
  6. GAME_RULE_SP_16: 0x08000000, // 台湾南部麻将
  7. /**
  8. * 构建详细的对象数组
  9. * @param {Array} listInfo - ListInfo数组
  10. * @returns {Array} 详细的对象数组
  11. */
  12. GetAllRoomList: function (listInfo) {
  13. if (!listInfo) return [];
  14. var AllRoomList = [];
  15. for (var i = 0; i < listInfo.length; i++) {
  16. var room = listInfo[i];
  17. if (!room) continue;
  18. AllRoomList.push({
  19. type: "序号", value: i + 1,
  20. type: "房间号", value: room.dwRoomID,
  21. type: "俱乐部ID", value: room.dwClubID,
  22. type: "分区ID", value: room.byPartID,
  23. type: "游戏类型", value: room.wKindID,
  24. type: "规则数组", value: room.dwRules,
  25. type: "服务器规则", value: room.dwServerRules,
  26. type: "当前局数", value: room.wProgress,
  27. type: "创建时间", value: room.dwCreateTime,
  28. type: "创建者ID", value: room.dwCreaterID,
  29. type: "玩家数量", value: room.byPlayerCnt,
  30. type: "玩家ID数组", value: room.dwUserID,
  31. });
  32. }
  33. return AllRoomList;
  34. },
  35. /**
  36. *
  37. * @param {Array} listInfo - ListInfo数组
  38. * @returns {Array}对象数组
  39. */
  40. getRoomArray: function (listInfo) {
  41. if (!listInfo) return [];
  42. var roomArray = [];
  43. for (var i = 0; i < listInfo.length; i++) {
  44. var room = listInfo[i];
  45. if (!room) continue;
  46. roomArray.push([
  47. { type: "房间号", value: room.dwRoomID },
  48. { type: "俱乐部ID", value: room.dwClubID },
  49. { type: "玩家数量", value: room.byPlayerCnt },
  50. { type: "当前局数", value: room.wProgress },
  51. ]);
  52. }
  53. return roomArray;
  54. },
  55. /**
  56. * 获取玩家ID数组
  57. * @param {dwUserID} dwUserID - dwUserID数组
  58. * @returns {playerIdArray} 玩家ID对象数组
  59. */
  60. getPlayerId: function (dwUserID) {
  61. if (!dwUserID) return [];
  62. var playerIdArray = [];
  63. for (var i = 0; i < dwUserID.length; i++) {
  64. var playerId = dwUserID[i];
  65. // 检查玩家ID是否有效(不为0)
  66. if (playerId && playerId !== 0) {
  67. playerIdArray.push({
  68. type: "玩家" + (i + 1),
  69. value: playerId
  70. });
  71. }
  72. }
  73. return playerIdArray;
  74. },
  75. /**
  76. * 获取两人房且是北部玩法游戏的房间数组
  77. * @param {Array} listInfo - ListInfo数组
  78. * @returns {Array} 两人游戏的房间列表数组
  79. */
  80. getTwoPlayerAndNorthPlayRoomList: function (listInfo) {
  81. if (!listInfo) return [];
  82. var twoPlayerAndNorthPlayRoomList = listInfo.filter(function (room) {
  83. if (!room) return false;
  84. // 对每个房间单独解析规则
  85. var rulesData = GameRulesUtil.GetRulesStr(room.dwServerRules, room.dwRules);
  86. var playerCount = rulesData[3].value;
  87. return playerCount === "2人" && (rulesData[1].value === "台湾北部麻将");
  88. });
  89. console.log("筛选两人且是北部玩法房间列表", twoPlayerAndNorthPlayRoomList);
  90. return twoPlayerAndNorthPlayRoomList;//筛选两人和北部玩法房间
  91. },
  92. /**
  93. * 获取两人房且是南部玩法游戏的房间数组
  94. * @param {Array} listInfo - ListInfo数组
  95. * @returns {Array} 两人游戏的房间列表数组
  96. */
  97. getTwoPlayerAndSouthPlayRoomList: function (listInfo) {
  98. if (!listInfo) return [];
  99. var twoPlayerAndSouthPlayRoomList = listInfo.filter(function (room) {
  100. if (!room) return false;
  101. // 对每个房间单独解析规则
  102. var rulesData = GameRulesUtil.GetRulesStr(room.dwServerRules, room.dwRules);
  103. var playerCount = rulesData[3].value;
  104. return playerCount === "2人" && (rulesData[1].value === "台湾南部麻将");
  105. });
  106. console.log("筛选两人且是南部玩法房间列表", twoPlayerAndSouthPlayRoomList);
  107. return twoPlayerAndSouthPlayRoomList;//筛选两人和南部玩法房间
  108. },
  109. /**
  110. * 获取四人且是北部游戏的房间数组
  111. * @param {Array} listInfo - ListInfo数组
  112. * @returns {Array} 四人游戏的房间列表数组
  113. */
  114. getFourPlayerAndNorthPlayRoomList: function (listInfo) {
  115. if (!listInfo) return [];
  116. // 使用filter方法筛选4人房间
  117. var fourPlayerAndNorthPlayRoomList = listInfo.filter(function (room) {
  118. if (!room) return false;
  119. // 对每个房间单独解析规则
  120. var rulesData = GameRulesUtil.GetRulesStr(room.dwServerRules, room.dwRules);
  121. var playerCount = rulesData[3].value;
  122. // 检查玩家数量是否为4人且游戏类型为北部麻将
  123. return playerCount === "4人" && (rulesData[1].value === "台湾北部麻将");
  124. });
  125. console.log("筛选四人且是北部玩法房间列表", fourPlayerAndNorthPlayRoomList);
  126. return fourPlayerAndNorthPlayRoomList;
  127. },
  128. /**
  129. * 获取四人且是南部游戏的房间数组
  130. * @param {Array} listInfo - ListInfo数组
  131. * @returns {Array} 四人游戏的房间列表数组
  132. */
  133. getFourPlayerAndSouthPlayRoomList: function (listInfo) {
  134. if (!listInfo) return [];
  135. // 使用filter方法筛选4人房间
  136. var fourPlayerAndSouthPlayRoomList = listInfo.filter(function (room) {
  137. if (!room) return false;
  138. // 对每个房间单独解析规则
  139. var rulesData = GameRulesUtil.GetRulesStr(room.dwServerRules, room.dwRules);
  140. var playerCount = rulesData[3].value;
  141. // 检查玩家数量是否为4人且游戏类型为北部麻将
  142. return playerCount === "4人" && (rulesData[1].value === "台湾南部麻将");
  143. });
  144. console.log("筛选四人且是南部玩法房间列表", fourPlayerAndSouthPlayRoomList);
  145. return fourPlayerAndSouthPlayRoomList;
  146. },
  147. // /**
  148. // * 获取北部玩法房间数组
  149. // * @param {Array} listInfo - ListInfo数组
  150. // * @returns {Array} 大厅列表信息数组
  151. // */
  152. // getNorthPlayRoomList: function (listInfo) {
  153. // if (!listInfo) return [];
  154. // var northPlayRoomList = listInfo.filter(function (room) {
  155. // if (!room) return false;
  156. // // 对每个房间单独解析规则
  157. // var rulesData = GameRulesUtil.GetRulesStr(room.dwServerRules, room.dwRules);
  158. // var mahjongType = rulesData[1].value;
  159. // return mahjongType === "台湾北部麻将";
  160. // });
  161. // console.log("筛选北部玩法房间列表", northPlayRoomList);
  162. // return northPlayRoomList;
  163. // },
  164. // /**
  165. // * 获取南部玩法房间数组
  166. // * @param {Array} listInfo - ListInfo数组
  167. // * @returns {Array} 大厅列表信息数组
  168. // */
  169. // getSouthPlayRoomList: function (listInfo) {
  170. // if (!listInfo) return [];
  171. // var southPlayRoomList = listInfo.filter(function (room) {
  172. // if (!room) return false;
  173. // // 对每个房间单独解析规则
  174. // var rulesData = GameRulesUtil.GetRulesStr(room.dwServerRules, room.dwRules);
  175. // var mahjongType = rulesData[1].value;
  176. // return mahjongType === "台湾南部麻将";
  177. // });
  178. // console.log("筛选南部玩法房间列表", southPlayRoomList);
  179. // return southPlayRoomList;
  180. // },
  181. };
  182. module.exports = LobbyListInfoUtil;