arcdps\extras\message/
mod.rsmod npc;
mod squad;
pub use self::{npc::*, squad::*};
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
#[cfg(feature = "strum")]
use strum::{Display, EnumCount, EnumIter, IntoStaticStr, VariantNames};
#[derive(Clone, Copy)]
#[repr(C)]
pub union RawMessage {
squad: *const SquadMessage,
npc: *const NpcMessage,
}
#[derive(Debug, Clone)]
pub enum Message<'a> {
Squad(&'a SquadMessage),
Npc(&'a NpcMessage),
}
impl Message<'_> {
#[inline]
pub unsafe fn new(message_type: MessageType, message: RawMessage) -> Self {
match message_type {
MessageType::Squad => Self::Squad(
message
.squad
.as_ref()
.expect("invalid unofficial extras squad message info"),
),
MessageType::Npc => Self::Npc(
message
.npc
.as_ref()
.expect("invalid unofficial extras npc message info"),
),
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(
feature = "strum",
derive(Display, EnumCount, EnumIter, IntoStaticStr, VariantNames)
)]
#[repr(C)]
pub enum MessageType {
Squad = 0,
Npc = 1,
}