From 5c495b75f25c324b5e468d0aa80d0699bb5f3fd2 Mon Sep 17 00:00:00 2001 From: Tom Barrett Date: Wed, 25 Oct 2017 09:56:36 -0500 Subject: -moved drawing to the map and out of character -now will just compute free spaces at list level and pass to characters --- src/list.rs | 51 +++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 39 insertions(+), 12 deletions(-) (limited to 'src/list.rs') 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, - impassable : Vec, + pub men : Vec, + impassable_locations : Vec, } -impl List{ - pub fn new(impassable : Vec) -> List { +impl List { + pub fn new(impassable_locations : Vec) -> 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 { + 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 } } -- cgit v1.2.3