Move lobby handling into separate function

This commit is contained in:
loonycyborg 2015-10-25 14:36:01 +03:00
parent 6c7f907d49
commit 19f3ff9b6d
4 changed files with 16 additions and 4 deletions

View file

@ -227,9 +227,9 @@ void room_manager::exit_lobby(network::connection player)
store_player_rooms(player);
t_rooms_by_player_::iterator i = rooms_by_player_.find(player);
if (i != rooms_by_player_.end()) {
BOOST_FOREACH(room* r, i->second) {
//BOOST_FOREACH(room* r, i->second) {
//r->remove_player(player);
}
//}
}
rooms_by_player_.erase(player);
}

View file

@ -52,6 +52,10 @@ class RoomList : public boost::noncopyable
room_ptr make_room(const std::string& room_name);
public:
RoomList(PlayerMap& player_connections);
bool in_lobby(socket_ptr socket) {
return room_map_.left.count(socket);
}
void enter_room(const std::string& room_name, socket_ptr socket);
void leave_room(const std::string& room_name, socket_ptr socket);

View file

@ -76,6 +76,7 @@
namespace {
/*
clock_t get_cpu_time(bool active) {
if(!active) {
return 0;
@ -84,6 +85,7 @@ clock_t get_cpu_time(bool active) {
times(&buf);
return buf.tms_utime + buf.tms_stime;
}
*/
}
@ -1152,7 +1154,12 @@ void server::handle_read_from_player(socket_ptr socket, boost::shared_ptr<simple
handle_query(socket, *query);
}
// Lobby
if(room_list_.in_lobby(socket))
handle_player_in_lobby(socket, doc);
}
void server::handle_player_in_lobby(socket_ptr socket, boost::shared_ptr<simple_wml::document> doc) {
if(simple_wml::node* message = doc->child("message")) {
handle_message(socket, *message);
}
@ -1165,7 +1172,7 @@ void server::handle_read_from_player(socket_ptr socket, boost::shared_ptr<simple
if(simple_wml::node* room_query = doc->child("room_query")) {
handle_room_query(socket, *room_query);
}
if(simple_wml::node* create_game = doc->child("create_game")) {
handle_create_game(socket, *create_game);
}

View file

@ -80,6 +80,7 @@ private:
void add_player(socket_ptr socket, const wesnothd::player&);
void read_from_player(socket_ptr socket);
void handle_read_from_player(socket_ptr socket, boost::shared_ptr<simple_wml::document> doc);
void handle_player_in_lobby(socket_ptr socket, boost::shared_ptr<simple_wml::document> doc);
void handle_whisper(socket_ptr socket, simple_wml::node& whisper);
void handle_query(socket_ptr socket, simple_wml::node& query);
void handle_message(socket_ptr socket, simple_wml::node& message);