diff options
| author | tom barrett <spalf0@gmail.com> | 2018-04-17 04:17:29 -0500 | 
|---|---|---|
| committer | tom barrett <spalf0@gmail.com> | 2018-04-17 04:17:29 -0500 | 
| commit | aeaaefd2706479378a24c1ab6d1dc8f74d557e78 (patch) | |
| tree | 82b1ed085a2c098fc92e83257f4cbfa52b0cad00 /src/client/navigation.rs | |
| parent | 07b0ba697bff4209907f6abb734fb52a889753e9 (diff) | |
-moved over to if let to get less indentation
Diffstat (limited to 'src/client/navigation.rs')
| -rw-r--r-- | src/client/navigation.rs | 88 | 
1 files changed, 41 insertions, 47 deletions
| diff --git a/src/client/navigation.rs b/src/client/navigation.rs index 59b6987..eb9a2c4 100644 --- a/src/client/navigation.rs +++ b/src/client/navigation.rs @@ -28,58 +28,52 @@ pub fn client_navigation(name : String, mut stream : TcpStream, mut buff_r : Buf          let ship = within_range.remove(&name).unwrap(); -        match ship.mass_type { -            MassType::Ship{ref modules, ..} => { -                match modules.get("Navigation").unwrap().module_type { -                    ModuleType::Navigation{ref status, ref target_name, ..} => { -                        for (i, (mass_name, mass)) in within_range.iter().enumerate() { -                            let target_data = match target_name.clone() { -                                Some(target_name) => { -                                    if &target_name == mass_name { -                                        serde_json::to_string(status).unwrap() -                                    } -                                    else { -                                        String::new() -                                    } -                                } -                                None => String::new(), -                            }; - -                            write!(stdout, "{}{}) {} ({:.2}, {:.2}, {:.2}) Distance : {:.2} {}", -                                   termion::cursor::Goto(1, 2 + i as u16), -                                   i, -                                   mass_name, -                                   mass.position.0, -                                   mass.position.1, -                                   mass.position.2, -                                   distance(mass.position, ship.position), -                                   target_data -                                   ).unwrap(); +        if let MassType::Ship{ref modules, ..} = ship.mass_type { +            if let ModuleType::Navigation{ref status, ref target_name, ..} = modules.get("Navigation").unwrap().module_type { +                for (i, (mass_name, mass)) in within_range.iter().enumerate() { +                    let target_data = match target_name.clone() { +                        Some(target_name) => { +                            if &target_name == mass_name { +                                serde_json::to_string(status).unwrap() +                            } +                            else { +                                String::new() +                            }                          } +                        None => String::new(), +                    }; -                        match stdin.next() { -                            Some(c) => { -                                let c = c.unwrap() as char; -                                if c == 'q' { -                                    break; -                                } -                                else { -                                    let i = c.to_digit(10).unwrap() as usize; -                                    if i < within_range.len() { -                                        let mut send = String::new(); -                                        send.push_str(within_range.iter().nth(i).unwrap().0); -                                        send.push_str("\n"); -                                        stream.write(send.as_bytes()).unwrap(); -                                    } -                                } +                    write!(stdout, "{}{}) {} ({:.2}, {:.2}, {:.2}) Distance : {:.2} {}", +                           termion::cursor::Goto(1, 2 + i as u16), +                           i, +                           mass_name, +                           mass.position.0, +                           mass.position.1, +                           mass.position.2, +                           distance(mass.position, ship.position), +                           target_data +                           ).unwrap(); +                } + +                match stdin.next() { +                    Some(c) => { +                        let c = c.unwrap() as char; +                        if c == 'q' { +                            break; +                        } +                        else { +                            let i = c.to_digit(10).unwrap() as usize; +                            if i < within_range.len() { +                                let mut send = String::new(); +                                send.push_str(within_range.iter().nth(i).unwrap().0); +                                send.push_str("\n"); +                                stream.write(send.as_bytes()).unwrap();                              } -                            None => ()                          } -                    }, -                    _ => (), +                    } +                    None => ()                  } -            }, -            _ => (), +            }          }          stdout.flush().unwrap(); | 
