use serde::{Deserialize, Serialize};
macro_rules! id_type {
($name:ident) => {
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct $name(pub String);
impl $name {
pub fn new(s: impl Into<String>) -> Self {
Self(s.into())
}
}
impl std::fmt::Display for $name {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", self.0)
}
}
};
}
id_type!(SceneId);
id_type!(LocationId);
id_type!(BeatId);
id_type!(ChapterId);
id_type!(SpeakerId);
id_type!(FlagId);
id_type!(EncounterId);
id_type!(CharacterId);
id_type!(SkillId);
id_type!(WitnessId);
id_type!(EvidenceId);
id_type!(MemoryObjectId);
id_type!(InjuryId);
id_type!(DuoTechId);
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum FlagValue {
Bool(bool),
Int(i32),
Text(String),
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum CompareOp {
Gt,
Gte,
Lt,
Lte,
Eq,
Neq,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ReputationAxis {
TownLaw,
Railroad,
Rancher,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum RelayBranch {
Tom,
Nella,
Papers,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum PrologueChoice {
TownDirect,
HomesteadFirst,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum ResourceKind {
Water,
Ammo,
HorseStamina,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum AgePhase {
Youth,
YoungMan,
Adult,
Older,
}