1
This commit is contained in:
parent
5ae637fec4
commit
af77448d8b
@ -1023,8 +1023,7 @@ void Room::OnPlayerOffline(Player* hum)
|
||||
{
|
||||
if (a8::TIMER_EXEC_EVENT == event) {
|
||||
if (GetOnlinePlayerNum() <= 0 && !added_to_over_room) {
|
||||
GameLog::Instance()->ForceOver(this);
|
||||
RoomMgr::Instance()->AddOverRoom(room_uuid_);
|
||||
ForceOver();
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -3660,3 +3659,57 @@ int Room::GetPvpMatchMode()
|
||||
{
|
||||
return GetRoomMode() == kPvpRankMode ? 1 : 0;
|
||||
}
|
||||
|
||||
void Room::ForceOver()
|
||||
{
|
||||
if (added_to_over_room) {
|
||||
return;
|
||||
}
|
||||
std::vector<Team*> alive_teams;
|
||||
TraverseTeams
|
||||
(
|
||||
[&alive_teams] (Team* team)
|
||||
{
|
||||
if (team->HasAliveMember()) {
|
||||
alive_teams.push_back(team);
|
||||
}
|
||||
return true;
|
||||
});
|
||||
std::sort(alive_teams.begin(), alive_teams.end(),
|
||||
[] (Team* a, Team *b) -> bool
|
||||
{
|
||||
if (a->HasPlayer()) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
for (Team* team : alive_teams) {
|
||||
team->TraverseMembers
|
||||
(
|
||||
[] (Human* member)
|
||||
{
|
||||
if (!member->dead) {
|
||||
member->BeKill(VP_Gas,
|
||||
TEXT("battle_server_killer_gas", "毒圈"),
|
||||
VW_Gas,
|
||||
VP_Gas,
|
||||
TEXT("battle_server_killer_gas", "毒圈"));
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
GameLog::Instance()->ForceOver(this);
|
||||
xtimer.SetTimeoutEx
|
||||
(SERVER_FRAME_RATE * 5,
|
||||
[this] (int event, const a8::Args* args)
|
||||
{
|
||||
if (a8::TIMER_EXEC_EVENT == event) {
|
||||
if (!game_over_) {
|
||||
game_over_ = true;
|
||||
game_over_frameno_ = GetFrameNo();
|
||||
OnGameOver();
|
||||
}
|
||||
}
|
||||
},
|
||||
&xtimer_attacher_);
|
||||
}
|
||||
|
@ -235,6 +235,7 @@ public:
|
||||
Team* GetVictoryTeam() { return victory_team_;};
|
||||
int GetReportRoomMode();
|
||||
int GetPvpMatchMode();
|
||||
void ForceOver();
|
||||
|
||||
private:
|
||||
void ShuaAndroid();
|
||||
|
Loading…
x
Reference in New Issue
Block a user