1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//! Contagion Plugin - Graph-based propagation system
//!
//! Models the spread of diseases, information, trends, and influence through
//! contact networks using graph-based propagation mechanics with infection
//! state machine.
//!
//! # Core Concepts
//!
//! - **Graph Topology**: Static network of nodes connected by edges
//! - **Infection State Machine**: Incubating → Active → Recovered → Plain
//! - **State-Based Transmission**: Different infectiousness per stage
//! - **Time Mode Abstraction**: Turn-based, Tick-based, or Time-based
//! - **Mutation**: Content changes during transmission
//! - **Credibility Decay**: Information degrades over time
//! - **Reinfection Control**: Optional re-susceptibility after recovery
//!
//! # Example
//!
//! ```ignore
//! use bevy::prelude::*;
//! use issun_bevy::plugins::contagion::*;
//!
//! fn setup_contagion(mut app: App) {
//! app.add_plugins(ContagionPlugin::default()
//! .with_seed(42));
//!
//! // Setup topology
//! let london = app.world_mut().spawn(
//! ContagionNode::new("london", NodeType::City, 100000)
//! ).id();
//!
//! let paris = app.world_mut().spawn(
//! ContagionNode::new("paris", NodeType::City, 80000)
//! ).id();
//!
//! app.world_mut().spawn(
//! PropagationEdge::new("route1", london, paris, 0.8)
//! );
//!
//! // Spawn contagion
//! app.world_mut().write_message(ContagionSpawnRequested {
//! contagion_id: "disease_1".to_string(),
//! content: ContagionContent::Disease {
//! severity: DiseaseLevel::Moderate,
//! location: "london".to_string(),
//! },
//! origin_node: london,
//! mutation_rate: 0.1,
//! });
//! }
//! ```
pub use *;
pub use *;
pub use ContagionPlugin;
pub use *;