diff --git a/src/actor.rs b/src/actor.rs index e0d2b63..21d0d56 100644 --- a/src/actor.rs +++ b/src/actor.rs @@ -1,4 +1,5 @@ use ggez::graphics; +use ggez::Context; pub enum ActorPosn { BoardPosn { @@ -20,3 +21,13 @@ pub struct Actor { pub posn: ActorPosn, pub behaviour: u8, //index into the behaviours array } + +impl Actor { + pub fn new(ctx: &mut Context, img_path: &str, _x: u8, _y: u8, b: u8) -> Actor { + Actor { + image: graphics::Image::new(ctx, img_path).unwrap(), + posn: ActorPosn::BoardPosn { x: _x, y: _y }, + behaviour: b, + } + } +} diff --git a/src/apr.rs b/src/apr.rs index a583b79..b5ab8f7 100644 --- a/src/apr.rs +++ b/src/apr.rs @@ -49,11 +49,11 @@ impl Apr { let mut actors: Vec = Vec::new(); for i in 0..r { // white side - actors.push(Apr::make_actor(_ctx, "/pawn.png", i, 0, 0)); + actors.push(actor::Actor::new(_ctx, "/pawn.png", i, 0, 0)); } for i in 0..r { // black side - actors.push(Apr::make_actor(_ctx, "/pawn2.png", i, c - 1, 0)); + actors.push(actor::Actor::new(_ctx, "/pawn2.png", i, c - 1, 0)); } Ok(Apr { grid: make_grid(_ctx, r, c, board.board.as_slice())?, @@ -67,17 +67,9 @@ impl Apr { }) } - pub fn make_actor(ctx: &mut Context, img_path: &str, _x: u8, _y: u8, b: u8) -> actor::Actor { - actor::Actor { - image: graphics::Image::new(ctx, img_path).unwrap(), - posn: actor::ActorPosn::BoardPosn { x: _x, y: _y }, - behaviour: b, - } - } - - pub fn set_colour(&mut self, r: usize, c: usize, col: u8) { + pub fn set_colour(&mut self, r: usize, c: usize, clr: u8) { //You should only modify self.board through this method. - self.board.board[r][c] = col; //Making a getter for self.board would sadly break borrowing in the same way that closest_square_coords does. + self.board.board[r][c] = clr; //Making a getter for self.board would sadly break borrowing in the same way that closest_square_coords does. self.should_update_grid = true; //Similar solutions apply. } }