diff options
Diffstat (limited to 'src/list.rs')
| -rw-r--r-- | src/list.rs | 51 | 
1 files changed, 39 insertions, 12 deletions
| diff --git a/src/list.rs b/src/list.rs index cdf00a8..d622d5c 100644 --- a/src/list.rs +++ b/src/list.rs @@ -4,33 +4,60 @@ use character::Character;  use location::Location;  pub struct List{ -    men : Vec<Character>, -    impassable : Vec<Location>, +    pub men : Vec<Character>, +    impassable_locations : Vec<Location>,  } -impl List{ -    pub fn new(impassable : Vec<Location>) -> List { +impl List { +    pub fn new(impassable_locations : Vec<Location>) -> List {          let mut men = Vec::new();          for i in 0..3 {              let l = Location{x:150,y:150+i};              let c = Character::new('@',4,l);              men.push(c);          } -        List{ +        List {              men : men, -            impassable : impassable, +            impassable_locations : impassable_locations,          }      } -    pub fn draw(&self, window : &pancurses::Window) { -        for man in self.men.iter(){ -            man.draw(window); +    pub fn action(&mut self) { +        for i in 0..self.men.len() { +            let tmp = self.men[i].location.clone(); +            let free_locations = self.get_free_locations(tmp); +            self.men[i].action(free_locations);          }      } -    pub fn action(&self) { -        for man in self.men.iter(){ -            man.action(self.men.to_vec(), self.impassable.to_vec()); +    fn get_free_locations(&mut self, location : Location) -> Vec<Location> { +        let mut potential_locations = Vec::new(); +        potential_locations.push(location.up()); +        potential_locations.push(location.down()); +        potential_locations.push(location.left()); +        potential_locations.push(location.right()); + +        let mut indexes = Vec::new(); +        for man in self.men.iter() { +            for (index, potential_location) in potential_locations.iter().enumerate() { +                if potential_location == &man.location { +                    indexes.push(index); +                } +            } +        } +         +        for impassable_location in self.impassable_locations.iter() { +            for (index, potential_location) in potential_locations.iter().enumerate() { +                if potential_location == impassable_location { +                    indexes.push(index); +                } +            }          } + +        //for index in indexes.iter() { +        //    potential_locations.remove(index); +        //} + +        potential_locations      }  } | 
