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;