diff --git a/server/gameserver/roommgr.cc b/server/gameserver/roommgr.cc index 6e3a8210..160e9dec 100644 --- a/server/gameserver/roommgr.cc +++ b/server/gameserver/roommgr.cc @@ -346,28 +346,35 @@ std::shared_ptr RoomMgr::GetJoinableRoom(std::shared_ptr p) for (int i = 0; i < RoomType_Max; ++i) { group_rooms.push_back(std::vector>()); } - #if 0 for (auto& pair : inactive_room_hash_) { auto& room = pair.second; if (!room->GetCustomBattle() && - room->CanJoin(msg.account_id(), - self_room_type, - (RoomMode_e)msg.room_mode(), - proto_version, - channel, - msg.mapid(), - msg)) { - if (!msg.team_uuid().empty() && room->HaveMyTeam(msg.team_uuid())) { - return room; - } - group_rooms[room->GetRoomType()].push_back(room); + room->CanJoin(p)) { + group_rooms.at(room->GetRoomType()).push_back(room); } } - #endif - if (!group_rooms[p->GetRoomType()].empty()) { + if (!group_rooms.at(p->GetRoomType()).empty()) { return group_rooms[p->GetRoomType()][rand() % group_rooms[p->GetRoomType()].size()]; } + if (p->GetRoomType() == kPvpRankMode) { + } else { + if (p->GetRoomType() == RoomType_OldBrid2) { + for (auto& room : group_rooms[RoomType_OldBrid3]) { + if (room->GetGasInactiveReaminTime() > 8 && + room->GetPlayerNum() + 8 < room->GetRoomMaxPlayerNum()) { + return room; + } + } + } else if (p->GetRoomType() == RoomType_OldBrid3) { + for (auto& room : group_rooms[RoomType_OldBrid2]) { + if (room->GetGasInactiveReaminTime() > 8 && + room->GetPlayerNum() + 8 < room->GetRoomMaxPlayerNum()) { + return room; + } + } + } + } return nullptr; }