From 2ad96b7f882ff962f67a13c7c56a46df86cfe6e3 Mon Sep 17 00:00:00 2001 From: tom barrett Date: Tue, 18 Jun 2019 02:29:24 -0500 Subject: added camera struct, moved map drawing to map struct, now draws a character that moves --- src/map.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src/map.rs') diff --git a/src/map.rs b/src/map.rs index ed90f1a..23833ab 100644 --- a/src/map.rs +++ b/src/map.rs @@ -1,7 +1,12 @@ use ggez::filesystem::File; +use ggez::graphics::{spritebatch::SpriteBatch, DrawParam}; +use ggez::nalgebra::{Point2, Vector2}; use std::io::BufReader; use xml::reader::{EventReader, XmlEvent}; +use crate::constants; +use crate::tileset::Tileset; + pub struct Map { pub width: usize, pub height: usize, @@ -39,6 +44,24 @@ impl Map { height: height.unwrap(), } } + + pub fn draw(&mut self, spritebatch: &mut SpriteBatch, tileset: &Tileset) { + for layer in self.layers.iter() { + for x in 0..self.width { + for y in 0..self.height { + let draw_param = DrawParam::default() + .src(tileset.tiles[layer.data[x + (y * self.height)]]) + .dest(Point2::new( + tileset.tile_width * constants::TILE_SCALE * x as f32, + tileset.tile_height * constants::TILE_SCALE * y as f32, + )) + .scale(Vector2::new(constants::TILE_SCALE, constants::TILE_SCALE)); + + spritebatch.add(draw_param); + } + } + } + } } pub struct Layer { -- cgit v1.2.3