57 lines
1.4 KiB
Rust
57 lines
1.4 KiB
Rust
use crate::scene_layer::SceneLayer;
|
|
|
|
#[derive(Clone, Debug)]
|
|
pub struct SceneBank {
|
|
pub layers: [SceneLayer; 4],
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::*;
|
|
use crate::asset::AssetId;
|
|
use crate::glyph::Glyph;
|
|
use crate::glyph_bank::TileSize;
|
|
use crate::scene_layer::ParallaxFactor;
|
|
use crate::tile::Tile;
|
|
use crate::tilemap::TileMap;
|
|
|
|
fn layer(
|
|
glyph_asset_id: AssetId,
|
|
parallax_x: f32,
|
|
parallax_y: f32,
|
|
glyph_id: u16,
|
|
) -> SceneLayer {
|
|
SceneLayer {
|
|
active: true,
|
|
glyph_asset_id,
|
|
tile_size: TileSize::Size16,
|
|
parallax_factor: ParallaxFactor { x: parallax_x, y: parallax_y },
|
|
tilemap: TileMap {
|
|
width: 1,
|
|
height: 1,
|
|
tiles: vec![Tile {
|
|
active: true,
|
|
glyph: Glyph { glyph_id, palette_id: 1 },
|
|
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);
|
|
}
|
|
}
|