|
|
@ -48,28 +48,28 @@ impl Apr { |
|
|
|
pub fn new(_ctx: &mut Context, r: u8, c: u8) -> GameResult<Apr> { |
|
|
|
// Load/create resources such as images here.
|
|
|
|
let board = board::make_board(r, c); |
|
|
|
let mut actors: Vec<actor::Actor> = Vec::new(); |
|
|
|
for i in 0..r { |
|
|
|
actors.push(Apr::make_actor(_ctx, "/pawn.png", i, 0, 0)); |
|
|
|
} |
|
|
|
let mut actors: Vec<actor::Actor> = Vec::new(); |
|
|
|
for i in 0..r { |
|
|
|
actors.push(Apr::make_actor(_ctx, "/pawn.png", i, 0, 0)); |
|
|
|
} |
|
|
|
Ok(Apr { |
|
|
|
grid: make_grid(_ctx, r, c, board.board.as_slice())?, |
|
|
|
board, |
|
|
|
should_update_grid: false, |
|
|
|
actors, |
|
|
|
actors, |
|
|
|
behaviours: vec![behaviour::Behaviour { |
|
|
|
moves: vec![(0, 1)], |
|
|
|
}], //the pawn can go ONE forwards
|
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
pub fn make_actor(ctx: &mut Context, img_path: &str, _x: u8, _y: u8, b: u8) -> actor::Actor { |
|
|
|
actor::Actor {
|
|
|
|
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) { |
|
|
|
//You should only modify self.board through this method.
|
|
|
@ -104,8 +104,7 @@ impl EventHandler for Apr { |
|
|
|
} |
|
|
|
actor::ActorPosn::BoardPosn { x, y } => { |
|
|
|
if mouse::button_pressed(ctx, MouseButton::Left) { |
|
|
|
let (posx, posy) = |
|
|
|
self.board.closest_square_coords(posn.x, posn.y); |
|
|
|
let (posx, posy) = self.board.closest_square_coords(posn.x, posn.y); |
|
|
|
if posx == x && posy == y { |
|
|
|
let x = board::START_X + board::BOARD_SQUARE_SIZE * (x as f32); |
|
|
|
let y = board::START_Y + board::BOARD_SQUARE_SIZE * (y as f32); |
|
|
@ -128,7 +127,12 @@ impl EventHandler for Apr { |
|
|
|
let drawparams = graphics::DrawParam::new(); |
|
|
|
|
|
|
|
if self.should_update_grid { |
|
|
|
self.grid = make_grid(ctx, self.board.row, self.board.col, self.board.board.as_slice())?; |
|
|
|
self.grid = make_grid( |
|
|
|
ctx, |
|
|
|
self.board.row, |
|
|
|
self.board.col, |
|
|
|
self.board.board.as_slice(), |
|
|
|
)?; |
|
|
|
self.should_update_grid = false; |
|
|
|
} |
|
|
|
graphics::draw(ctx, &self.grid, drawparams)?; |
|
|
@ -141,10 +145,10 @@ impl EventHandler for Apr { |
|
|
|
ctx, |
|
|
|
&actor.image, |
|
|
|
drawparams.dest([ |
|
|
|
board::START_X + board::BOARD_SQUARE_SIZE * (x as f32), |
|
|
|
board::START_Y + board::BOARD_SQUARE_SIZE * (y as f32), |
|
|
|
board::START_X + board::BOARD_SQUARE_SIZE * (x as f32), |
|
|
|
board::START_Y + board::BOARD_SQUARE_SIZE * (y as f32), |
|
|
|
]), |
|
|
|
)?, |
|
|
|
)?, |
|
|
|
} |
|
|
|
} |
|
|
|
// Draw code here...
|
|
|
|