This commit is contained in:
aozhiwei 2023-06-20 16:20:57 +08:00
parent ffb835ccf3
commit 6b6daeda98
3 changed files with 25 additions and 1 deletions

View File

@ -999,9 +999,11 @@ bool Room::CanJoin(const std::string& accountid,
if (msg.force_enter_newbie_room()) { if (msg.force_enter_newbie_room()) {
return false; return false;
} }
#if 0
if (room_mode_ != self_room_mode) { if (room_mode_ != self_room_mode) {
return false; return false;
} }
#endif
if (GetGasData().GetGasMode() != GasInactive) { if (GetGasData().GetGasMode() != GasInactive) {
return false; return false;
} }
@ -2238,6 +2240,16 @@ long long Room::GetGasInactiveTime()
} }
} }
long long Room::GetGasInactiveReaminTime()
{
if (GetGasData().GetGasMode() != GasInactive) {
return -1;
}
long long remain_time = GetGasInactiveTime() -
(GetFrameNo() - GetGasData().gas_start_frameno) * FRAME_RATE_MS;
return std::max((int)remain_time, 0);
}
void Room::EnableHuman(Human* target) void Room::EnableHuman(Human* target)
{ {
if (!RuningInTimer()) { if (!RuningInTimer()) {

View File

@ -209,6 +209,7 @@ public:
int CreateAndTakeonCar(int car_id, glm::vec3 pos); int CreateAndTakeonCar(int car_id, glm::vec3 pos);
bool HaveMyTeam(const std::string& team_uuid); bool HaveMyTeam(const std::string& team_uuid);
long long GetGasInactiveTime(); long long GetGasInactiveTime();
long long GetGasInactiveReaminTime();
void CheckPartObjects(Human* testa = nullptr, Human* testb = nullptr); void CheckPartObjects(Human* testa = nullptr, Human* testb = nullptr);
bool RuningInTimer(); bool RuningInTimer();
Human* GetOneCanEnableAndroid(); Human* GetOneCanEnableAndroid();

View File

@ -284,8 +284,19 @@ Room* RoomMgr::GetJoinableRoom(const cs::CMJoin& msg,
return group_rooms[self_room_type][rand() % group_rooms[self_room_type].size()]; return group_rooms[self_room_type][rand() % group_rooms[self_room_type].size()];
} }
if (self_room_type == RoomType_OldBrid2) { if (self_room_type == RoomType_OldBrid2) {
for (auto& room : group_rooms[RoomType_OldBrid3]) {
if (room->GetGasInactiveReaminTime() > 8 &&
room->GetPlayerNum() + 8 < room->GetRoomMaxPlayerNum()) {
return room;
}
}
} else if (self_room_type == RoomType_OldBrid3) { } else if (self_room_type == RoomType_OldBrid3) {
for (auto& room : group_rooms[RoomType_OldBrid2]) {
if (room->GetGasInactiveReaminTime() > 8 &&
room->GetPlayerNum() + 8 < room->GetRoomMaxPlayerNum()) {
return room;
}
}
} }
return CreateRoom(msg, return CreateRoom(msg,
self_room_type, self_room_type,