gameServer2/src/server/room.rs
changeset 13801 5fb40c8e5542
parent 13795 e335daaa77a9
child 13805 0463a4221327
equal deleted inserted replaced
13800:0118b7412570 13801:5fb40c8e5542
    22 }
    22 }
    23 
    23 
    24 #[derive(Clone, Serialize, Deserialize)]
    24 #[derive(Clone, Serialize, Deserialize)]
    25 struct Scheme {
    25 struct Scheme {
    26     name: String,
    26     name: String,
    27     settings: Option<Vec<String>>
    27     settings: Vec<String>
    28 }
    28 }
    29 
    29 
    30 #[derive(Clone, Serialize, Deserialize)]
    30 #[derive(Clone, Serialize, Deserialize)]
    31 struct RoomConfig {
    31 struct RoomConfig {
    32     feature_size: u32,
    32     feature_size: u32,
    52             maze_size: 0,
    52             maze_size: 0,
    53             seed: "seed".to_string(),
    53             seed: "seed".to_string(),
    54             template: 0,
    54             template: 0,
    55 
    55 
    56             ammo: Ammo {name: "Default".to_string(), settings: None },
    56             ammo: Ammo {name: "Default".to_string(), settings: None },
    57             scheme: Scheme {name: "Default".to_string(), settings: None },
    57             scheme: Scheme {name: "Default".to_string(), settings: Vec::new() },
    58             script: "Normal".to_string(),
    58             script: "Normal".to_string(),
    59             theme: "\u{1f994}".to_string(),
    59             theme: "\u{1f994}".to_string(),
    60             drawn_map: None
    60             drawn_map: None
    61         }
    61         }
    62     }
    62     }
   178 
   178 
   179     pub fn addable_hedgehogs(&self) -> u8 {
   179     pub fn addable_hedgehogs(&self) -> u8 {
   180         MAX_HEDGEHOGS_IN_ROOM - self.hedgehogs_number()
   180         MAX_HEDGEHOGS_IN_ROOM - self.hedgehogs_number()
   181     }
   181     }
   182 
   182 
   183     pub fn add_team(&mut self, owner_id: ClientId, mut team: TeamInfo) -> &TeamInfo {
   183     pub fn add_team(&mut self, owner_id: ClientId, mut team: TeamInfo, preserve_color: bool) -> &TeamInfo {
   184         team.color = iter::repeat(()).enumerate()
   184         if !preserve_color {
   185             .map(|(i, _)| i as u8).take(u8::max_value() as usize + 1)
   185             team.color = iter::repeat(()).enumerate()
   186             .find(|i| self.teams.iter().all(|(_, t)| t.color != *i ))
   186                 .map(|(i, _)| i as u8).take(u8::max_value() as usize + 1)
   187             .unwrap_or(0u8);
   187                 .find(|i| self.teams.iter().all(|(_, t)| t.color != *i))
       
   188                 .unwrap_or(0u8)
       
   189         };
   188         team.hedgehogs_number = if self.teams.is_empty() {
   190         team.hedgehogs_number = if self.teams.is_empty() {
   189             self.default_hedgehog_number
   191             self.default_hedgehog_number
   190         } else {
   192         } else {
   191             self.teams[0].1.hedgehogs_number.min(self.addable_hedgehogs())
   193             self.teams[0].1.hedgehogs_number.min(self.addable_hedgehogs())
   192         };
   194         };