use crate::scene_layer::SceneLayer; #[derive(Clone, Debug)] pub struct SceneBank { pub layers: [SceneLayer; 4], } #[cfg(test)] mod tests { use super::*; use crate::glyph::Glyph; use crate::glyph_bank::TileSize; use crate::scene_layer::MotionFactor; use crate::tile::Tile; use crate::tilemap::TileMap; fn layer(glyph_bank_id: u8, motion_x: f32, motion_y: f32, glyph_id: u16) -> SceneLayer { SceneLayer { active: true, glyph_bank_id, tile_size: TileSize::Size16, motion_factor: MotionFactor { x: motion_x, y: motion_y }, tilemap: TileMap { width: 1, height: 1, tiles: vec![Tile { active: true, glyph: Glyph { glyph_id, palette_id: glyph_bank_id }, flip_x: false, flip_y: false, }], }, } } #[test] fn scene_bank_owns_exactly_four_layers() { let scene = SceneBank { layers: [ layer(0, 1.0, 1.0, 10), layer(1, 0.5, 1.0, 11), layer(2, 1.0, 0.5, 12), layer(3, 0.25, 0.25, 13), ], }; assert_eq!(scene.layers.len(), 4); assert_eq!(scene.layers[3].tilemap.tiles[0].glyph.glyph_id, 13); } }