pub const TICKS_PER_CHAR: u64 = 2;
pub const HOLD_TICKS: u64 = 50;
const VERB_STEP: usize = 37;
pub const THINKING_VERBS: &[&str] = &[
"Thinking",
"Pondering",
"Reasoning",
"Contemplating",
"Analyzing",
"Deliberating",
"Considering",
"Evaluating",
"Processing",
"Reflecting",
"Musing",
"Mulling",
"Weighing",
"Computing",
"Calculating",
"Formulating",
"Synthesizing",
"Deducing",
"Inferring",
"Hypothesizing",
"Investigating",
"Exploring",
"Examining",
"Studying",
"Reviewing",
"Assessing",
"Appraising",
"Scrutinizing",
"Parsing",
"Deciphering",
"Decoding",
"Interpreting",
"Comprehending",
"Absorbing",
"Digesting",
"Distilling",
"Crystallizing",
"Brainstorming",
"Ideating",
"Conceiving",
"Imagining",
"Envisioning",
"Visualizing",
"Mapping",
"Charting",
"Planning",
"Strategizing",
"Architecting",
"Designing",
"Structuring",
"Organizing",
"Prioritizing",
"Optimizing",
"Refining",
"Polishing",
"Iterating",
"Converging",
"Connecting",
"Linking",
"Bridging",
"Harmonizing",
"Balancing",
"Calibrating",
"Tuning",
"Aligning",
"Orchestrating",
"Assembling",
"Composing",
"Crafting",
"Building",
"Constructing",
"Modeling",
"Simulating",
"Prototyping",
"Experimenting",
"Validating",
"Verifying",
"Researching",
"Probing",
"Querying",
"Searching",
"Surveying",
"Cataloging",
"Sorting",
"Filtering",
"Curating",
"Selecting",
"Extrapolating",
"Interpolating",
"Correlating",
"Aggregating",
"Abstracting",
"Generalizing",
"Speculating",
"Ruminating",
"Cogitating",
"Meditating",
"Introspecting",
"Rationalizing",
"Theorizing",
"Philosophizing",
"Conceptualizing",
"Untangling",
"Unraveling",
"Deciphering",
"Navigating",
"Traversing",
"Excavating",
"Unearthing",
"Discovering",
"Uncovering",
"Illuminating",
"Elucidating",
"Clarifying",
"Demystifying",
"Simplifying",
"Consolidating",
"Integrating",
"Reconciling",
"Resolving",
"Debugging",
"Diagnosing",
"Dissecting",
"Deconstructing",
];
pub fn cycle_ticks_for(verb: &str) -> u64 {
verb.len() as u64 * TICKS_PER_CHAR + HOLD_TICKS
}
pub fn compute_fade_intensity(verb: &str, verb_tick: u64) -> f32 {
let fade_ticks = verb.len() as u64 * TICKS_PER_CHAR;
if fade_ticks == 0 {
return 1.0;
}
(verb_tick as f32 / fade_ticks as f32).min(1.0)
}
pub fn next_verb_index(current: usize) -> usize {
(current + VERB_STEP) % THINKING_VERBS.len()
}
#[cfg(test)]
#[path = "thinking_verbs_tests.rs"]
mod tests;