# HG changeset patch # User alfadur # Date 1549482038 -10800 # Node ID 2071da901c63b5bd5a47acd256cd8fef88e66b8a # Parent f61ce544d43671f7d71af644f4c67906705c30ac reconnect some message handlers diff -r f61ce544d436 -r 2071da901c63 rust/hedgewars-server/src/main.rs --- a/rust/hedgewars-server/src/main.rs Wed Feb 06 22:29:02 2019 +0300 +++ b/rust/hedgewars-server/src/main.rs Wed Feb 06 22:40:38 2019 +0300 @@ -1,9 +1,6 @@ #![allow(unused_imports)] #![deny(bare_trait_objects)] -//use std::io::*; -//use rand::Rng; -//use std::cmp::Ordering; use log::*; use mio::net::*; use mio::*; diff -r f61ce544d436 -r 2071da901c63 rust/hedgewars-server/src/server/handlers/common.rs --- a/rust/hedgewars-server/src/server/handlers/common.rs Wed Feb 06 22:29:02 2019 +0300 +++ b/rust/hedgewars-server/src/server/handlers/common.rs Wed Feb 06 22:40:38 2019 +0300 @@ -95,6 +95,7 @@ is_in_game: bool, response: &mut Response, ) { + let mut game_ended = false; if let Some(ref mut info) = room.game_info { for team_name in &team_names { info.left_teams.push(team_name.clone()); @@ -109,9 +110,6 @@ ); info.teams_in_game -= 1; - if info.teams_in_game == 0 { - //FinishRoomGame(room.id) - } let remove_msg = to_engine_msg(once(b'F').chain(team_name.bytes())); if let Some(m) = &info.sync_msg { diff -r f61ce544d436 -r 2071da901c63 rust/hedgewars-server/src/server/handlers/inroom.rs --- a/rust/hedgewars-server/src/server/handlers/inroom.rs Wed Feb 06 22:29:02 2019 +0300 +++ b/rust/hedgewars-server/src/server/handlers/inroom.rs Wed Feb 06 22:40:38 2019 +0300 @@ -190,11 +190,11 @@ ClientFlags(flags.to_string(), vec![client.nick.clone()]) }; response.add(msg.send_all().in_room(room.id)); + client.set_is_ready(!client.is_ready()); + if room.is_fixed() && room.ready_players_number == room.players_number { - //StartRoomGame(r.id) + super::common::start_game(server, room_id, response); } - - client.set_is_ready(!client.is_ready()); } } AddTeam(info) => { @@ -249,24 +249,30 @@ } } RemoveTeam(name) => { - if let (client, Some(room)) = server.client_and_room(client_id) { - match room.find_team_owner(&name) { - None => response.add( - Warning("Error: The team you tried to remove does not exist.".to_string()) - .send_self(), - ), - Some((id, _)) if id != client_id => response.add( - Warning("You can't remove a team you don't own.".to_string()).send_self(), - ), - Some((_, name)) => { - client.teams_in_game -= 1; - client.clan = room.find_team_color(client.id); - super::common::remove_teams( - room, - vec![name.to_string()], - client.is_in_game(), - response, - ); + let client = &mut server.clients[client_id]; + let room = &mut server.rooms[room_id]; + match room.find_team_owner(&name) { + None => response.add( + Warning("Error: The team you tried to remove does not exist.".to_string()) + .send_self(), + ), + Some((id, _)) if id != client_id => response + .add(Warning("You can't remove a team you don't own.".to_string()).send_self()), + Some((_, name)) => { + client.teams_in_game -= 1; + client.clan = room.find_team_color(client.id); + super::common::remove_teams( + room, + vec![name.to_string()], + client.is_in_game(), + response, + ); + + match room.game_info { + Some(ref info) if info.teams_in_game == 0 => { + super::common::end_game(server, room_id, response) + } + _ => (), } } } @@ -513,7 +519,7 @@ } } StartGame => { - // StartRoomGame(room_id); + super::common::start_game(server, room_id, response); } EngineMessage(em) => { if let (c, Some(r)) = server.client_and_room(client_id) {