use crate::glyph_bank::TileSize; use crate::tilemap::TileMap; #[derive(Clone, Copy, Debug)] pub struct ParallaxFactor { pub x: f32, pub y: f32, } #[derive(Clone, Debug)] pub struct SceneLayer { pub active: bool, pub glyph_bank_id: u8, pub tile_size: TileSize, pub parallax_factor: ParallaxFactor, pub tilemap: TileMap, } #[cfg(test)] mod tests { use super::*; use crate::glyph::Glyph; use crate::tile::Tile; #[test] fn scene_layer_preserves_parallax_factor_and_tilemap_ownership() { let layer = SceneLayer { active: true, glyph_bank_id: 7, tile_size: TileSize::Size16, parallax_factor: ParallaxFactor { x: 0.5, y: 0.75 }, tilemap: TileMap { width: 2, height: 1, tiles: vec![ Tile { active: true, glyph: Glyph { glyph_id: 21, palette_id: 3 }, flip_x: false, flip_y: false, }, Tile { active: false, glyph: Glyph { glyph_id: 22, palette_id: 4 }, flip_x: true, flip_y: false, }, ], }, }; assert_eq!(layer.glyph_bank_id, 7); assert_eq!(layer.parallax_factor.x, 0.5); assert_eq!(layer.parallax_factor.y, 0.75); assert_eq!(layer.tilemap.width, 2); assert_eq!(layer.tilemap.tiles[1].glyph.glyph_id, 22); assert!(layer.tilemap.tiles[1].flip_x); } }