equal
deleted
inserted
replaced
1 use mio; |
1 use mio; |
2 |
2 |
3 use super::common::rnd_reply; |
3 use super::common::rnd_reply; |
4 use crate::utils::to_engine_msg; |
4 use crate::utils::to_engine_msg; |
5 use crate::{ |
5 use crate::{ |
6 protocol::messages::{server_chat, HWProtocolMessage, HWServerMessage::*}, |
6 protocol::messages::{ |
|
7 add_flags, remove_flags, server_chat, HWProtocolMessage, HWServerMessage::*, |
|
8 ProtocolFlags as Flags, |
|
9 }, |
7 server::{ |
10 server::{ |
8 core::HWServer, |
11 core::HWServer, |
9 coretypes, |
12 coretypes, |
10 coretypes::{ClientId, GameCfg, RoomId, VoteType, Voting, MAX_HEDGEHOGS_PER_TEAM}, |
13 coretypes::{ClientId, GameCfg, RoomId, VoteType, Voting, MAX_HEDGEHOGS_PER_TEAM}, |
11 room::{HWRoom, RoomFlags}, |
14 room::{HWRoom, RoomFlags}, |
168 } |
171 } |
169 } |
172 } |
170 ToggleReady => { |
173 ToggleReady => { |
171 let flags = if client.is_ready() { |
174 let flags = if client.is_ready() { |
172 room.ready_players_number -= 1; |
175 room.ready_players_number -= 1; |
173 "-r" |
176 remove_flags(&[Flags::Ready]) |
174 } else { |
177 } else { |
175 room.ready_players_number += 1; |
178 room.ready_players_number += 1; |
176 "+r" |
179 add_flags(&[Flags::Ready]) |
177 }; |
180 }; |
178 |
181 |
179 let msg = if client.protocol_number < 38 { |
182 let msg = if client.protocol_number < 38 { |
180 LegacyReady(client.is_ready(), vec![client.nick.clone()]) |
183 LegacyReady(client.is_ready(), vec![client.nick.clone()]) |
181 } else { |
184 } else { |
182 ClientFlags(flags.to_string(), vec![client.nick.clone()]) |
185 ClientFlags(flags, vec![client.nick.clone()]) |
183 }; |
186 }; |
184 response.add(msg.send_all().in_room(room.id)); |
187 response.add(msg.send_all().in_room(room.id)); |
185 client.set_is_ready(!client.is_ready()); |
188 client.set_is_ready(!client.is_ready()); |
186 |
189 |
187 if room.is_fixed() && room.ready_players_number == room.players_number { |
190 if room.is_fixed() && room.ready_players_number == room.players_number { |
503 RoundFinished => { |
506 RoundFinished => { |
504 let mut game_ended = false; |
507 let mut game_ended = false; |
505 if client.is_in_game() { |
508 if client.is_in_game() { |
506 client.set_is_in_game(false); |
509 client.set_is_in_game(false); |
507 response.add( |
510 response.add( |
508 ClientFlags("-g".to_string(), vec![client.nick.clone()]) |
511 ClientFlags(remove_flags(&[Flags::InGame]), vec![client.nick.clone()]) |
509 .send_all() |
512 .send_all() |
510 .in_room(room.id), |
513 .in_room(room.id), |
511 ); |
514 ); |
512 let team_names: Vec<_> = room |
515 let team_names: Vec<_> = room |
513 .client_teams(client_id) |
516 .client_teams(client_id) |