diff --git a/Cargo.toml b/Cargo.toml index 81c737c..a481fb8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,8 @@ exclude = ["src/tests.rs", "tests/*"] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -thiserror = "1.0" -image = { version = "0.24.7", default-features = false, features = ["png"] } +bitflags = "2.4.1" deflate = "1.0" +image = { version = "0.24.7", default-features = false, features = ["png"] } inflate = "0.4.5" +thiserror = "1.0" diff --git a/src/dirs.rs b/src/dirs.rs new file mode 100644 index 0000000..9146b9d --- /dev/null +++ b/src/dirs.rs @@ -0,0 +1,38 @@ +use bitflags::bitflags; + +bitflags! { + /// The possible values for a direction in DM. + pub struct Dirs: u8 { + const NORTH = 1 << 0; + const SOUTH = 1 << 1; + const EAST = 1 << 2; + const WEST = 1 << 3; + const SOUTHEAST = Self::SOUTH.bits() | Self::EAST.bits(); + const SOUTHWEST = Self::SOUTH.bits() | Self::WEST.bits(); + const NORTHEAST = Self::NORTH.bits() | Self::EAST.bits(); + const NORTHWEST = Self::NORTH.bits() | Self::WEST.bits(); + } +} + +/// A list of every cardinal direction. +pub const CARDINAL_DIRS: [Dirs; 4] = [Dirs::NORTH, Dirs::SOUTH, Dirs::EAST, Dirs::WEST]; + +/// A list of every ordinal direction. +pub const ORDINAL_DIRS: [Dirs; 4] = [ + Dirs::NORTHEAST, + Dirs::NORTHWEST, + Dirs::SOUTHEAST, + Dirs::SOUTHWEST, +]; + +/// A list of every direction, cardinals and ordinals. +pub const ALL_DIRS: [Dirs; 8] = [ + Dirs::NORTH, + Dirs::SOUTH, + Dirs::EAST, + Dirs::WEST, + Dirs::NORTHEAST, + Dirs::NORTHWEST, + Dirs::SOUTHEAST, + Dirs::SOUTHWEST, +]; diff --git a/src/lib.rs b/src/lib.rs index 22c4842..68f5ed0 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,5 +1,6 @@ pub mod chunk; pub(crate) mod crc; +pub mod dirs; pub mod error; pub mod icon; pub mod iend;