| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- const GameRulesUtil = require("GameRulesUtil");
- var LobbyListInfoUtil = {
- GAME_RULE_RENSHU_2: 0x00040000, // 2人
- GAME_RULE_RENSHU_1: 0x00010000, // 4人
- GAME_RULE_SP_15: 0x04000000, // 台湾北部麻将
- GAME_RULE_SP_16: 0x08000000, // 台湾南部麻将
- /**
- * 构建详细的对象数组
- * @param {Array} listInfo - ListInfo数组
- * @returns {Array} 详细的对象数组
- */
- GetAllRoomList: function (listInfo) {
- if (!listInfo) return [];
- var AllRoomList = [];
- for (var i = 0; i < listInfo.length; i++) {
- var room = listInfo[i];
- if (!room) continue;
- AllRoomList.push({
- type: "序号", value: i + 1,
- type: "房间号", value: room.dwRoomID,
- type: "俱乐部ID", value: room.dwClubID,
- type: "分区ID", value: room.byPartID,
- type: "游戏类型", value: room.wKindID,
- type: "规则数组", value: room.dwRules,
- type: "服务器规则", value: room.dwServerRules,
- type: "当前局数", value: room.wProgress,
- type: "创建时间", value: room.dwCreateTime,
- type: "创建者ID", value: room.dwCreaterID,
- type: "玩家数量", value: room.byPlayerCnt,
- type: "玩家ID数组", value: room.dwUserID,
- });
- }
- return AllRoomList;
- },
- /**
- *
- * @param {Array} listInfo - ListInfo数组
- * @returns {Array}对象数组
- */
- getRoomArray: function (listInfo) {
- if (!listInfo) return [];
- var roomArray = [];
- for (var i = 0; i < listInfo.length; i++) {
- var room = listInfo[i];
- if (!room) continue;
- roomArray.push([
- { type: "房间号", value: room.dwRoomID },
- { type: "俱乐部ID", value: room.dwClubID },
- { type: "玩家数量", value: room.byPlayerCnt },
- { type: "当前局数", value: room.wProgress },
- ]);
- }
- return roomArray;
- },
- /**
- * 获取玩家ID数组
- * @param {dwUserID} dwUserID - dwUserID数组
- * @returns {playerIdArray} 玩家ID对象数组
- */
- getPlayerId: function (dwUserID) {
- if (!dwUserID) return [];
- var playerIdArray = [];
- for (var i = 0; i < dwUserID.length; i++) {
- var playerId = dwUserID[i];
- // 检查玩家ID是否有效(不为0)
- if (playerId && playerId !== 0) {
- playerIdArray.push({
- type: "玩家" + (i + 1),
- value: playerId
- });
- }
- }
- return playerIdArray;
- },
- /**
- * 获取两人房且是北部玩法游戏的房间数组
- * @param {Array} listInfo - ListInfo数组
- * @returns {Array} 两人游戏的房间列表数组
- */
- getTwoPlayerAndNorthPlayRoomList: function (listInfo) {
- if (!listInfo) return [];
- var twoPlayerAndNorthPlayRoomList = listInfo.filter(function (room) {
- if (!room) return false;
- // 对每个房间单独解析规则
- var rulesData = GameRulesUtil.GetRulesStr(room.dwServerRules, room.dwRules);
- var playerCount = rulesData[3].value;
- return playerCount === "2人" && (rulesData[1].value === "台湾北部麻将");
- });
- console.log("筛选两人且是北部玩法房间列表", twoPlayerAndNorthPlayRoomList);
- return twoPlayerAndNorthPlayRoomList;//筛选两人和北部玩法房间
- },
- /**
- * 获取两人房且是南部玩法游戏的房间数组
- * @param {Array} listInfo - ListInfo数组
- * @returns {Array} 两人游戏的房间列表数组
- */
- getTwoPlayerAndSouthPlayRoomList: function (listInfo) {
- if (!listInfo) return [];
- var twoPlayerAndSouthPlayRoomList = listInfo.filter(function (room) {
- if (!room) return false;
- // 对每个房间单独解析规则
- var rulesData = GameRulesUtil.GetRulesStr(room.dwServerRules, room.dwRules);
- var playerCount = rulesData[3].value;
- return playerCount === "2人" && (rulesData[1].value === "台湾南部麻将");
- });
- console.log("筛选两人且是南部玩法房间列表", twoPlayerAndSouthPlayRoomList);
- return twoPlayerAndSouthPlayRoomList;//筛选两人和南部玩法房间
- },
- /**
- * 获取四人且是北部游戏的房间数组
- * @param {Array} listInfo - ListInfo数组
- * @returns {Array} 四人游戏的房间列表数组
- */
- getFourPlayerAndNorthPlayRoomList: function (listInfo) {
- if (!listInfo) return [];
- // 使用filter方法筛选4人房间
- var fourPlayerAndNorthPlayRoomList = listInfo.filter(function (room) {
- if (!room) return false;
- // 对每个房间单独解析规则
- var rulesData = GameRulesUtil.GetRulesStr(room.dwServerRules, room.dwRules);
- var playerCount = rulesData[3].value;
- // 检查玩家数量是否为4人且游戏类型为北部麻将
- return playerCount === "4人" && (rulesData[1].value === "台湾北部麻将");
- });
- console.log("筛选四人且是北部玩法房间列表", fourPlayerAndNorthPlayRoomList);
- return fourPlayerAndNorthPlayRoomList;
- },
- /**
- * 获取四人且是南部游戏的房间数组
- * @param {Array} listInfo - ListInfo数组
- * @returns {Array} 四人游戏的房间列表数组
- */
- getFourPlayerAndSouthPlayRoomList: function (listInfo) {
- if (!listInfo) return [];
- // 使用filter方法筛选4人房间
- var fourPlayerAndSouthPlayRoomList = listInfo.filter(function (room) {
- if (!room) return false;
- // 对每个房间单独解析规则
- var rulesData = GameRulesUtil.GetRulesStr(room.dwServerRules, room.dwRules);
- var playerCount = rulesData[3].value;
- // 检查玩家数量是否为4人且游戏类型为北部麻将
- return playerCount === "4人" && (rulesData[1].value === "台湾南部麻将");
- });
- console.log("筛选四人且是南部玩法房间列表", fourPlayerAndSouthPlayRoomList);
- return fourPlayerAndSouthPlayRoomList;
- },
- // /**
- // * 获取北部玩法房间数组
- // * @param {Array} listInfo - ListInfo数组
- // * @returns {Array} 大厅列表信息数组
- // */
- // getNorthPlayRoomList: function (listInfo) {
- // if (!listInfo) return [];
- // var northPlayRoomList = listInfo.filter(function (room) {
- // if (!room) return false;
- // // 对每个房间单独解析规则
- // var rulesData = GameRulesUtil.GetRulesStr(room.dwServerRules, room.dwRules);
- // var mahjongType = rulesData[1].value;
- // return mahjongType === "台湾北部麻将";
- // });
- // console.log("筛选北部玩法房间列表", northPlayRoomList);
- // return northPlayRoomList;
- // },
- // /**
- // * 获取南部玩法房间数组
- // * @param {Array} listInfo - ListInfo数组
- // * @returns {Array} 大厅列表信息数组
- // */
- // getSouthPlayRoomList: function (listInfo) {
- // if (!listInfo) return [];
- // var southPlayRoomList = listInfo.filter(function (room) {
- // if (!room) return false;
- // // 对每个房间单独解析规则
- // var rulesData = GameRulesUtil.GetRulesStr(room.dwServerRules, room.dwRules);
- // var mahjongType = rulesData[1].value;
- // return mahjongType === "台湾南部麻将";
- // });
- // console.log("筛选南部玩法房间列表", southPlayRoomList);
- // return southPlayRoomList;
- // },
- };
- module.exports = LobbyListInfoUtil;
|