rust/hedgewars-server/src/server/demo.rs
changeset 15578 0b6094660557
parent 15576 3be9c98ae190
child 15580 98482c4ccf4b
equal deleted inserted replaced
15577:7d4f552e317f 15578:0b6094660557
   316         teams.push(team_info)
   316         teams.push(team_info)
   317     }
   317     }
   318 
   318 
   319     let mut config = Vec::with_capacity(map_config.len() + game_config.len());
   319     let mut config = Vec::with_capacity(map_config.len() + game_config.len());
   320 
   320 
   321     for item in map_config {}
   321     for item in map_config {
   322 
   322         let mut tuple = item.into_tuple()?;
   323     for item in game_config {}
   323         let mut tuple_iter = tuple.drain(..);
       
   324         let name = tuple_iter.next()?.into_string()?;
       
   325         let value = tuple_iter.next()?.into_string()?;
       
   326 
       
   327         let config_item = match &name[..] {
       
   328             "FEATURE_SIZE" => GameCfg::FeatureSize(u32::from_str(&value).ok()?),
       
   329             "MAP" => GameCfg::MapType(value),
       
   330             "MAPGEN" => GameCfg::MapGenerator(u32::from_str(&value).ok()?),
       
   331             "MAZE_SIZE" => GameCfg::MazeSize(u32::from_str(&value).ok()?),
       
   332             "SEED" => GameCfg::Seed(value),
       
   333             "TEMPLATE" => GameCfg::Template(u32::from_str(&value).ok()?),
       
   334             "DRAWNMAP" => GameCfg::DrawnMap(value),
       
   335             _ => None?,
       
   336         };
       
   337         config.push(config_item);
       
   338     }
       
   339 
       
   340     for item in game_config {
       
   341         let mut tuple = item.into_tuple()?;
       
   342         let mut tuple_iter = tuple.drain(..);
       
   343         let name = tuple_iter.next()?.into_string()?;
       
   344         let value = tuple_iter.next()?;
       
   345 
       
   346         let config_item = match &name[..] {
       
   347             "AMMO" => {
       
   348                 let mut ammo = value.into_list()?;
       
   349                 let mut ammo_iter = ammo.drain(..);
       
   350                 GameCfg::Ammo(
       
   351                     ammo_iter.next()?.into_string()?,
       
   352                     ammo_iter.next().and_then(|v| v.into_string()),
       
   353                 )
       
   354             }
       
   355             "SCHEME" => {
       
   356                 let mut scheme = value.into_list()?;
       
   357                 let mut scheme_iter = scheme.drain(..);
       
   358                 GameCfg::Scheme(
       
   359                     scheme_iter.next()?.into_string()?,
       
   360                     scheme_iter
       
   361                         .next()?
       
   362                         .into_list()?
       
   363                         .drain(..)
       
   364                         .filter_map(|v| v.into_string())
       
   365                         .collect(),
       
   366                 )
       
   367             }
       
   368             "SCRIPT" => GameCfg::Script(value.into_string()?),
       
   369             "THEME" => GameCfg::Theme(value.into_string()?),
       
   370             _ => None?,
       
   371         };
       
   372         config.push(config_item);
       
   373     }
   324 
   374 
   325     let mut messages = Vec::with_capacity(engine_messages.len());
   375     let mut messages = Vec::with_capacity(engine_messages.len());
   326 
   376 
   327     for message in engine_messages {
   377     for message in engine_messages {
   328         messages.push(message.into_string()?);
   378         messages.push(message.into_string()?);