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()?); |