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
e105c425
Commit
e105c425
authored
Sep 13, 2011
by
unknown
Browse files
preliminary: moved auto-rejoin code back to login
parent
4744cf7d
Changes
1
Hide whitespace changes
Inline
Side-by-side
common/server_protocolhandler.cpp
View file @
e105c425
...
@@ -308,6 +308,35 @@ ResponseCode Server_ProtocolHandler::cmdLogin(Command_Login *cmd, CommandContain
...
@@ -308,6 +308,35 @@ ResponseCode Server_ProtocolHandler::cmdLogin(Command_Login *cmd, CommandContain
_ignoreList
.
append
(
new
ServerInfo_User
(
ignoreIterator
.
next
().
value
()));
_ignoreList
.
append
(
new
ServerInfo_User
(
ignoreIterator
.
next
().
value
()));
}
}
server
->
serverMutex
.
lock
();
QList
<
ServerInfo_Game
*>
gameList
;
QMapIterator
<
int
,
Server_Room
*>
roomIterator
(
server
->
getRooms
());
QMutexLocker
gameListLocker
(
&
gameListMutex
);
while
(
roomIterator
.
hasNext
())
{
Server_Room
*
room
=
roomIterator
.
next
().
value
();
room
->
roomMutex
.
lock
();
QMapIterator
<
int
,
Server_Game
*>
gameIterator
(
room
->
getGames
());
while
(
gameIterator
.
hasNext
())
{
Server_Game
*
game
=
gameIterator
.
next
().
value
();
QMutexLocker
gameLocker
(
&
game
->
gameMutex
);
const
QList
<
Server_Player
*>
&
gamePlayers
=
game
->
getPlayers
().
values
();
for
(
int
j
=
0
;
j
<
gamePlayers
.
size
();
++
j
)
if
(
gamePlayers
[
j
]
->
getUserInfo
()
->
getName
()
==
userInfo
->
getName
())
{
gamePlayers
[
j
]
->
setProtocolHandler
(
this
);
game
->
postConnectionStatusUpdate
(
gamePlayers
[
j
],
true
);
games
.
insert
(
game
->
getGameId
(),
QPair
<
Server_Game
*
,
Server_Player
*>
(
game
,
gamePlayers
[
j
]));
enqueueProtocolItem
(
new
Event_GameJoined
(
game
->
getGameId
(),
game
->
getDescription
(),
gamePlayers
[
j
]
->
getPlayerId
(),
gamePlayers
[
j
]
->
getSpectator
(),
game
->
getSpectatorsCanTalk
(),
game
->
getSpectatorsSeeEverything
(),
true
));
enqueueProtocolItem
(
GameEventContainer
::
makeNew
(
new
Event_GameStateChanged
(
game
->
getGameStarted
(),
game
->
getActivePlayer
(),
game
->
getActivePhase
(),
game
->
getGameState
(
gamePlayers
[
j
])),
game
->
getGameId
()));
break
;
}
}
room
->
roomMutex
.
unlock
();
}
server
->
serverMutex
.
unlock
();
ProtocolResponse
*
resp
=
new
Response_Login
(
cont
->
getCmdId
(),
RespOk
,
new
ServerInfo_User
(
userInfo
,
true
),
_buddyList
,
_ignoreList
);
ProtocolResponse
*
resp
=
new
Response_Login
(
cont
->
getCmdId
(),
RespOk
,
new
ServerInfo_User
(
userInfo
,
true
),
_buddyList
,
_ignoreList
);
if
(
getCompressionSupport
())
if
(
getCompressionSupport
())
resp
->
setCompressed
(
true
);
resp
->
setCompressed
(
true
);
...
@@ -414,26 +443,6 @@ ResponseCode Server_ProtocolHandler::cmdJoinRoom(Command_JoinRoom *cmd, CommandC
...
@@ -414,26 +443,6 @@ ResponseCode Server_ProtocolHandler::cmdJoinRoom(Command_JoinRoom *cmd, CommandC
enqueueProtocolItem
(
new
Event_RoomSay
(
r
->
getId
(),
QString
(),
r
->
getJoinMessage
()));
enqueueProtocolItem
(
new
Event_RoomSay
(
r
->
getId
(),
QString
(),
r
->
getJoinMessage
()));
// This might not scale very well. Use an extra QMap if it becomes a problem.
QMutexLocker
gameListLocker
(
&
gameListMutex
);
QMapIterator
<
int
,
Server_Game
*>
gameIterator
(
r
->
getGames
());
while
(
gameIterator
.
hasNext
())
{
Server_Game
*
game
=
gameIterator
.
next
().
value
();
QMutexLocker
gameLocker
(
&
game
->
gameMutex
);
const
QList
<
Server_Player
*>
&
gamePlayers
=
game
->
getPlayers
().
values
();
for
(
int
j
=
0
;
j
<
gamePlayers
.
size
();
++
j
)
if
(
gamePlayers
[
j
]
->
getUserInfo
()
->
getName
()
==
userInfo
->
getName
())
{
gamePlayers
[
j
]
->
setProtocolHandler
(
this
);
game
->
postConnectionStatusUpdate
(
gamePlayers
[
j
],
true
);
games
.
insert
(
game
->
getGameId
(),
QPair
<
Server_Game
*
,
Server_Player
*>
(
game
,
gamePlayers
[
j
]));
enqueueProtocolItem
(
new
Event_GameJoined
(
game
->
getGameId
(),
game
->
getDescription
(),
gamePlayers
[
j
]
->
getPlayerId
(),
gamePlayers
[
j
]
->
getSpectator
(),
game
->
getSpectatorsCanTalk
(),
game
->
getSpectatorsSeeEverything
(),
true
));
enqueueProtocolItem
(
GameEventContainer
::
makeNew
(
new
Event_GameStateChanged
(
game
->
getGameStarted
(),
game
->
getActivePlayer
(),
game
->
getActivePhase
(),
game
->
getGameState
(
gamePlayers
[
j
])),
game
->
getGameId
()));
break
;
}
}
ServerInfo_Room
*
info
=
r
->
getInfo
(
true
);
ServerInfo_Room
*
info
=
r
->
getInfo
(
true
);
if
(
getCompressionSupport
())
if
(
getCompressionSupport
())
info
->
setCompressed
(
true
);
info
->
setCompressed
(
true
);
...
...
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