summaryrefslogtreecommitdiff
path: root/src/layer.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/layer.rs')
-rw-r--r--src/layer.rs37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/layer.rs b/src/layer.rs
new file mode 100644
index 0000000..c9f32e8
--- /dev/null
+++ b/src/layer.rs
@@ -0,0 +1,37 @@
+use ggez::graphics::spritebatch::SpriteBatch;
+
+use crate::tile::Tile;
+use crate::tileset::Tileset;
+
+pub struct Layer {
+ pub tiles: Vec<Tile>,
+ pub width: usize,
+ pub height: usize,
+}
+
+impl Layer {
+ pub fn new(text: &str, tileset: &Tileset, width: usize, height: usize) -> Layer {
+ Layer {
+ tiles: text
+ .replace("\n", "")
+ .split(',')
+ .enumerate()
+ .map(|(i, s)| Tile::new(s, i, tileset, width, height))
+ .collect(),
+ width,
+ height,
+ }
+ }
+
+ pub fn update(&mut self) {
+ for tile in self.tiles.iter_mut() {
+ tile.update();
+ }
+ }
+
+ pub fn draw(&self, spritebatch: &mut SpriteBatch) {
+ for tile in self.tiles.iter() {
+ tile.draw(spritebatch);
+ }
+ }
+}