rust/hedgewars-server/src/server/handlers/inroom.rs
changeset 14787 50fcef24003f
parent 14786 01f8ab45f806
child 14789 8390d5e4e39c
equal deleted inserted replaced
14786:01f8ab45f806 14787:50fcef24003f
     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)