Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Donald Haase
Cockatrice
Commits
29c4c80d
Commit
29c4c80d
authored
Mar 11, 2011
by
Max-Wilhelm Bruker
Browse files
server crash fix
parent
712aa976
Changes
3
Hide whitespace changes
Inline
Side-by-side
common/server_game.cpp
View file @
29c4c80d
...
@@ -210,7 +210,25 @@ Server_Player *Server_Game::addPlayer(Server_ProtocolHandler *handler, bool spec
...
@@ -210,7 +210,25 @@ Server_Player *Server_Game::addPlayer(Server_ProtocolHandler *handler, bool spec
void
Server_Game
::
removePlayer
(
Server_Player
*
player
)
void
Server_Game
::
removePlayer
(
Server_Player
*
player
)
{
{
players
.
remove
(
player
->
getPlayerId
());
players
.
remove
(
player
->
getPlayerId
());
removeArrowsToPlayer
(
player
);
sendGameEvent
(
new
Event_Leave
(
player
->
getPlayerId
()));
bool
playerActive
=
activePlayer
==
player
->
getPlayerId
();
bool
spectator
=
player
->
getSpectator
();
delete
player
;
if
(
!
getPlayerCount
())
deleteLater
();
else
if
(
!
spectator
)
{
stopGameIfFinished
();
if
(
gameStarted
&&
playerActive
)
nextTurn
();
}
qobject_cast
<
Server_Room
*>
(
parent
())
->
broadcastGameListUpdate
(
this
);
}
void
Server_Game
::
removeArrowsToPlayer
(
Server_Player
*
player
)
{
// Remove all arrows of other players pointing to the player being removed or to one of his cards.
// Remove all arrows of other players pointing to the player being removed or to one of his cards.
QMapIterator
<
int
,
Server_Player
*>
playerIterator
(
players
);
QMapIterator
<
int
,
Server_Player
*>
playerIterator
(
players
);
while
(
playerIterator
.
hasNext
())
{
while
(
playerIterator
.
hasNext
())
{
...
@@ -231,20 +249,6 @@ void Server_Game::removePlayer(Server_Player *player)
...
@@ -231,20 +249,6 @@ void Server_Game::removePlayer(Server_Player *player)
p
->
deleteArrow
(
toDelete
[
i
]
->
getId
());
p
->
deleteArrow
(
toDelete
[
i
]
->
getId
());
}
}
}
}
sendGameEvent
(
new
Event_Leave
(
player
->
getPlayerId
()));
bool
playerActive
=
activePlayer
==
player
->
getPlayerId
();
bool
spectator
=
player
->
getSpectator
();
delete
player
;
if
(
!
getPlayerCount
())
deleteLater
();
else
if
(
!
spectator
)
{
stopGameIfFinished
();
if
(
gameStarted
&&
playerActive
)
nextTurn
();
}
qobject_cast
<
Server_Room
*>
(
parent
())
->
broadcastGameListUpdate
(
this
);
}
}
bool
Server_Game
::
kickPlayer
(
int
playerId
)
bool
Server_Game
::
kickPlayer
(
int
playerId
)
...
...
common/server_game.h
View file @
29c4c80d
...
@@ -75,6 +75,7 @@ public:
...
@@ -75,6 +75,7 @@ public:
ResponseCode
checkJoin
(
ServerInfo_User
*
user
,
const
QString
&
_password
,
bool
spectator
);
ResponseCode
checkJoin
(
ServerInfo_User
*
user
,
const
QString
&
_password
,
bool
spectator
);
Server_Player
*
addPlayer
(
Server_ProtocolHandler
*
handler
,
bool
spectator
,
bool
broadcastUpdate
=
true
);
Server_Player
*
addPlayer
(
Server_ProtocolHandler
*
handler
,
bool
spectator
,
bool
broadcastUpdate
=
true
);
void
removePlayer
(
Server_Player
*
player
);
void
removePlayer
(
Server_Player
*
player
);
void
removeArrowsToPlayer
(
Server_Player
*
player
);
bool
kickPlayer
(
int
playerId
);
bool
kickPlayer
(
int
playerId
);
void
startGameIfReady
();
void
startGameIfReady
();
void
stopGameIfFinished
();
void
stopGameIfFinished
();
...
...
common/server_protocolhandler.cpp
View file @
29c4c80d
...
@@ -518,6 +518,7 @@ ResponseCode Server_ProtocolHandler::cmdConcede(Command_Concede * /*cmd*/, Comma
...
@@ -518,6 +518,7 @@ ResponseCode Server_ProtocolHandler::cmdConcede(Command_Concede * /*cmd*/, Comma
return
RespContextError
;
return
RespContextError
;
player
->
setConceded
(
true
);
player
->
setConceded
(
true
);
game
->
removeArrowsToPlayer
(
player
);
player
->
clearZones
();
player
->
clearZones
();
game
->
sendGameEvent
(
new
Event_PlayerPropertiesChanged
(
player
->
getPlayerId
(),
player
->
getProperties
()),
new
Context_Concede
);
game
->
sendGameEvent
(
new
Event_PlayerPropertiesChanged
(
player
->
getPlayerId
(),
player
->
getProperties
()),
new
Context_Concede
);
game
->
stopGameIfFinished
();
game
->
stopGameIfFinished
();
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment