Files
vrtue/src/arena.rs

48 lines
1009 B
Rust

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
}
}