diff options
| author | Ben Boeckel <MathStuf@gmail.com> | 2009-02-06 00:33:00 -0500 |
|---|---|---|
| committer | Ben Boeckel <MathStuf@gmail.com> | 2009-02-06 00:33:00 -0500 |
| commit | a9503d5f442359e185b81be517a22b74ad543d52 (patch) | |
| tree | b46aa9e94daad96d23be30fe5e3a7cde363f53b8 /sigencore/Arena.cpp | |
| parent | de3b8a54744494c27f92947727a086d1922b6950 (diff) | |
Fix handling of clients when entering/exiting arena
Diffstat (limited to 'sigencore/Arena.cpp')
| -rw-r--r-- | sigencore/Arena.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sigencore/Arena.cpp b/sigencore/Arena.cpp index b2acaf51..bcdfceba 100644 --- a/sigencore/Arena.cpp +++ b/sigencore/Arena.cpp @@ -138,7 +138,7 @@ Sigscript::SigmodWrapper* Sigencore::Arena::sigmod() const bool Sigencore::Arena::addClient(Client* client, const int team) { - if ((team < 0) || ((m_state == Setup) && qobject_cast<Player*>(client) && (teamMembers(Fighters).size() < m_sigmod->rules()->maxPlayers()))) + if (((team < 0) || ((m_state == Setup) && qobject_cast<Player*>(client) && (teamMembers(Fighters).size() < m_sigmod->rules()->maxPlayers()))) && client->enterArena(this)) { m_teams[client] = team; emit(clientAdded(client, team)); @@ -160,6 +160,8 @@ void Sigencore::Arena::removeClient(Client* client) player->giveMoney(net); m_spoils.remove(player); } + if (player && (0 <= m_teams[player])) + player->exitArena(); const int team = m_teams[client]; m_teams.remove(client); emit(clientRemoved(client, team)); |
