use std::ops::{Deref, DerefMut};
use crate::datatypes::Mask;
use super::Entity;
mod arrow;
pub use arrow::*;
mod spectral_arrow;
pub use spectral_arrow::*;
mod thrown_trident;
pub use thrown_trident::*;
#[derive(Clone, Copy, PartialEq, Eq)]
#[repr(u8)]
pub enum ArrowInfo {
IsCritical = 0x01,
IsNoclip = 0x02,
}
impl Into<u8> for ArrowInfo {
fn into(self) -> u8 {
self as u8
}
}
#[derive(PartialEq, Default)]
pub struct AbstractArrow {
entity: Entity,
pub info: Mask<ArrowInfo>,
}
impl Deref for AbstractArrow {
type Target = Entity;
fn deref(&self) -> &Self::Target {
&self.entity
}
}
impl DerefMut for AbstractArrow {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.entity
}
}