use serde::{Deserialize, Serialize};
use crate::types::*;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ArgumentRecord {
pub id: String,
pub chapter: String,
pub player_stance: String,
pub reactions: Vec<PartyReaction>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PartyReaction {
pub character: CharacterId,
pub response: ReactionType,
pub position: String,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum ReactionType {
Approved,
Complied,
Objected,
Silent,
Advocated,
}
pub fn water_claim_argument(stance: &str) -> ArgumentRecord {
let reactions = match stance {
"force" => vec![
PartyReaction {
character: CharacterId::new("rosa"),
response: ReactionType::Advocated,
position: "Her family is dying slowly. Cut the diversion.".to_string(),
},
PartyReaction {
character: CharacterId::new("ada"),
response: ReactionType::Objected,
position: "Violence brings marshals. The legal position gets worse.".to_string(),
},
PartyReaction {
character: CharacterId::new("eli"),
response: ReactionType::Complied,
position: "Direct, but it closes doors I'd rather leave open.".to_string(),
},
PartyReaction {
character: CharacterId::new("miriam"),
response: ReactionType::Silent,
position: String::new(), },
],
"con" => vec![
PartyReaction {
character: CharacterId::new("rosa"),
response: ReactionType::Objected,
position: "My people don't need tricks. They need someone to stand.".to_string(),
},
PartyReaction {
character: CharacterId::new("ada"),
response: ReactionType::Complied,
position: "Cleaner than force. But if the con fails, an innocent family pays.".to_string(),
},
PartyReaction {
character: CharacterId::new("eli"),
response: ReactionType::Advocated,
position: "Faster, quieter, and nobody gets shot. Probably.".to_string(),
},
],
"negotiate" => vec![
PartyReaction {
character: CharacterId::new("rosa"),
response: ReactionType::Complied,
position: "Talk hasn't worked for years. But I'll let you try.".to_string(),
},
PartyReaction {
character: CharacterId::new("ada"),
response: ReactionType::Advocated,
position: "Use the medical evidence. If the water is poisoning both sides, there's common ground.".to_string(),
},
PartyReaction {
character: CharacterId::new("eli"),
response: ReactionType::Complied,
position: "Slow, but principled. I can work with principled.".to_string(),
},
],
_ => vec![],
};
ArgumentRecord {
id: "water_claim".to_string(),
chapter: "ch4".to_string(),
player_stance: stance.to_string(),
reactions,
}
}