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 (a8::TIMER_EXEC_EVENT == event) {
|
||||||
if (GetOnlinePlayerNum() <= 0 && !added_to_over_room) {
|
if (GetOnlinePlayerNum() <= 0 && !added_to_over_room) {
|
||||||
GameLog::Instance()->ForceOver(this);
|
ForceOver();
|
||||||
RoomMgr::Instance()->AddOverRoom(room_uuid_);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -3660,3 +3659,57 @@ int Room::GetPvpMatchMode()
|
|||||||
{
|
{
|
||||||
return GetRoomMode() == kPvpRankMode ? 1 : 0;
|
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_;};
|
Team* GetVictoryTeam() { return victory_team_;};
|
||||||
int GetReportRoomMode();
|
int GetReportRoomMode();
|
||||||
int GetPvpMatchMode();
|
int GetPvpMatchMode();
|
||||||
|
void ForceOver();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void ShuaAndroid();
|
void ShuaAndroid();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user