evtc\agent/
affinity.rs

1use num_enum::{FromPrimitive, IntoPrimitive};
2
3#[cfg(feature = "serde")]
4use serde::{Deserialize, Serialize};
5
6#[cfg(feature = "strum")]
7use strum::{Display, EnumCount, EnumIter, IntoStaticStr, VariantNames};
8
9/// Whether the agent is an ally or enemy.
10///
11/// *Arc calls this "iff" for if friend/foe.*
12#[derive(
13    Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, IntoPrimitive, FromPrimitive,
14)]
15#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
16#[cfg_attr(
17    feature = "strum",
18    derive(Display, EnumCount, EnumIter, IntoStaticStr, VariantNames)
19)]
20#[repr(u8)]
21pub enum Affinity {
22    /// Allied agent.
23    Friend = 0,
24
25    /// Enemy agent.
26    Foe = 1,
27
28    /// Unknown affinity between agents.
29    Unknown,
30
31    /// Invalid.
32    #[num_enum(catch_all)]
33    Invalid(u8),
34}