34 lines
847 B
Rust
34 lines
847 B
Rust
use crate::tile::Tile;
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
|
pub struct TileMap {
|
|
pub width: usize,
|
|
pub height: usize,
|
|
pub tiles: Vec<Tile>,
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::*;
|
|
use crate::glyph::Glyph;
|
|
|
|
#[test]
|
|
fn tilemap_tile_write_and_read_remain_canonical() {
|
|
let mut map = TileMap { width: 2, height: 2, tiles: vec![Tile::default(); 4] };
|
|
|
|
let index = 3;
|
|
map.tiles[index] = Tile {
|
|
active: true,
|
|
glyph: Glyph { glyph_id: 99, palette_id: 5 },
|
|
flip_x: true,
|
|
flip_y: false,
|
|
};
|
|
|
|
assert_eq!(map.tiles[index].glyph.glyph_id, 99);
|
|
assert_eq!(map.tiles[index].glyph.palette_id, 5);
|
|
assert!(map.tiles[index].flip_x);
|
|
assert!(map.tiles[index].active);
|
|
}
|
|
}
|