diff --git a/src/apr.rs b/src/apr.rs index 1b320c9..f6640c8 100644 --- a/src/apr.rs +++ b/src/apr.rs @@ -55,7 +55,7 @@ impl Apr { actors.push(actor::Actor::new(_ctx, "/pawn.png", i, 1, 0)); behaviours.push(behaviour::Behaviour::new( vec![(-1, -1), (1, -1)], - [0, 0, 1, 0], + vec![(1, -1)], )); } for i in 0..r { @@ -63,7 +63,7 @@ impl Apr { actors.push(actor::Actor::new(_ctx, "/pawn2.png", i, c - 2, 0)); behaviours.push(behaviour::Behaviour::new( vec![(1, 1), (-1, 1)], - [1, 0, 0, 0], + vec![(1, 1)], )); } Ok(Apr { diff --git a/src/behaviour.rs b/src/behaviour.rs index cf8490c..7ae8e8a 100644 --- a/src/behaviour.rs +++ b/src/behaviour.rs @@ -1,22 +1,23 @@ pub struct Behaviour { pub moves: Vec<(i8, i8)>, //this is a placeholder - pub dirs: [u8; 4], // up right down left + pub dirs: Vec<(i8, i8)>, // up right down left } impl Behaviour { - pub fn new(m: Vec<(i8, i8)>, d: [u8; 4]) -> Behaviour { + pub fn new(m: Vec<(i8, i8)>, d: Vec<(i8, i8)>) -> Behaviour { Behaviour { moves: m, dirs: d } } pub fn validate_dest(&self, origin: (u8, u8), destination: (u8, u8)) -> bool { // original plan was to use match but i felt for loops would work better since we dont yet know the extent of moves vector - //println!("origin: ({}, {}), destination: ({}, {})", origin.0, origin.1, destination.0, destination.1); + // println!("origin: ({}, {}), destination: ({}, {})", origin.0, origin.1, destination.0, destination.1); for moveset in self.moves.iter() { for dir in self.dirs.iter() { // mind blanking need to add something to confirm which direction we are iterating through + // println!("Permissible: ({}, {})", (origin.0 as i8) + dir.0 * moveset.0,(origin.1 as i8) - dir.1 * moveset.1); if ( - ((origin.0 as i8) + (*dir as i8) * moveset.0) as u8, - ((origin.1 as i8) - (*dir as i8) * moveset.1) as u8, + ((origin.0 as i8) + dir.0 * moveset.0) as u8, + ((origin.1 as i8) - dir.1 * moveset.1) as u8, ) == destination { return true;