use world; use tile::Tile; #[derive(Clone, Copy)] // offset len notes // 0x0 16 start_x for monsters 0-15 // 0x10 16 start_y for monsters 0-15 // 0x20 8 start_x for party members 0-7 // 0x28 8 start_y for party members 0-7 // 0x30 16 ??? // 0x40 121 11x11 map matrix // 0xB9 7 ??? pub struct Arena { _monster_x: [u8; 16], _monster_y: [u8; 16], _party_x: [u8; 8], _party_y: [u8; 8], _unknown1: [u8; 16], map: Field, _unknown2: [u8; 7], } #[derive(Clone, Copy)] pub struct Shrine { map: Field, _unknown1: [[u8; 8]; 8], // Arbitrary grouping for Clone impl _unknown2: [u8; 7], } type Field = [[Tile; 11]; 11]; impl world::Map for Field { fn rows<'a>(&'a self) -> world::BoxedMapIterator { Box::new(self.iter().map(|row| Box::new(row.into_iter()) as world::RowIterator<'a>)) } } impl world::HasMap for Arena { fn map(&self) -> &world::Map { &self.map } } impl world::HasMap for Shrine { fn map(&self) -> &world::Map { &self.map } }