summaryrefslogtreecommitdiffstats
path: root/sigencore/Arena.cpp
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2009-02-06 00:33:00 -0500
committerBen Boeckel <MathStuf@gmail.com>2009-02-06 00:33:00 -0500
commita9503d5f442359e185b81be517a22b74ad543d52 (patch)
treeb46aa9e94daad96d23be30fe5e3a7cde363f53b8 /sigencore/Arena.cpp
parentde3b8a54744494c27f92947727a086d1922b6950 (diff)
Fix handling of clients when entering/exiting arena
Diffstat (limited to 'sigencore/Arena.cpp')
-rw-r--r--sigencore/Arena.cpp4
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));