From 8693a266c2c9a8448b70d87d487ed211c439cbc4 Mon Sep 17 00:00:00 2001 From: tom barrett Date: Wed, 19 Jun 2019 04:45:46 -0500 Subject: camera now doesnt display unused map --- src/camera.rs | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) (limited to 'src/camera.rs') diff --git a/src/camera.rs b/src/camera.rs index 4ae0153..ed5a20a 100644 --- a/src/camera.rs +++ b/src/camera.rs @@ -1,23 +1,41 @@ use ggez::nalgebra::Point2; use ggez::Context; +use crate::constants; + pub struct Camera { pub draw: Point2, - height: f32, - width: f32, + window_height: f32, + window_width: f32, + map_height: f32, + map_width: f32, } impl Camera { - pub fn new(context: &mut Context) -> Camera { + pub fn new(context: &mut Context, dimensions: (f32, f32)) -> Camera { Camera { draw: Point2::new(0.0, 0.0), - height: context.conf.window_mode.height, - width: context.conf.window_mode.width, + window_height: context.conf.window_mode.height, + window_width: context.conf.window_mode.width, + map_width: dimensions.0, + map_height: dimensions.1, } } pub fn give_center(&mut self, center: Point2) { - self.draw.x = (self.width / 2.0) - center.x; - self.draw.y = (self.height / 2.0) - center.y; + self.draw.x = ((self.window_width / 2.0) - center.x) - (constants::TILE_WIDTH); + self.draw.y = ((self.window_height / 2.0) - center.y) - (constants::TILE_HEIGHT); + + if self.draw.x > 0.0 { + self.draw.x = 0.0; + } else if self.draw.x - self.window_width < -1.0 * self.map_width { + self.draw.x = -1.0 * (self.map_width - self.window_width); + } + + if self.draw.y > 0.0 { + self.draw.y = 0.0; + } else if self.draw.y - self.window_height < -1.0 * self.map_height { + self.draw.y = -1.0 * (self.map_height - self.window_height); + } } } -- cgit v1.2.3