#![allow(dead_code)]
mod runner;
mod scenarios;
pub use runner::{DemoRunner, DemoState};
pub use scenarios::{
archaeology::CodebaseArchaeologyScenario, bug_hunt::BugHuntSafariScenario,
factory::FeatureFactoryScenario, token_challenge::TokenChallengeScenario, DemoScenario,
};
use std::time::Duration;
#[derive(Debug, Clone)]
pub struct DemoConfig {
pub speed_multiplier: f32,
pub auto_advance: bool,
pub step_delay: Duration,
pub particles_enabled: bool,
pub max_particles: usize,
}
impl Default for DemoConfig {
fn default() -> Self {
Self {
speed_multiplier: 1.0,
auto_advance: false,
step_delay: Duration::from_millis(500),
particles_enabled: true,
max_particles: 100,
}
}
}
impl DemoConfig {
pub fn fast() -> Self {
Self {
speed_multiplier: 2.0,
auto_advance: true,
step_delay: Duration::from_millis(200),
..Default::default()
}
}
pub fn presentation() -> Self {
Self {
speed_multiplier: 0.75,
auto_advance: false,
step_delay: Duration::from_secs(1),
max_particles: 200,
..Default::default()
}
}
}
#[derive(Debug, Clone)]
pub enum DemoEvent {
ScenarioStarted { name: String },
StageCompleted { stage: usize, total: usize },
AgentAction { agent: String, action: String },
MessageSent {
from: String,
to: String,
msg_type: String,
},
TokensProcessed { count: u64, rate: f64 },
EffectTriggered { effect_type: String, x: f32, y: f32 },
ScenarioCompleted { duration_secs: f32 },
}
#[cfg(test)]
#[path = "../../../tests/unit/ui/demo/mod_test.rs"]
mod tests;