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
use std::collections::VecDeque; use tui::{ style::{Color, Style}, widgets::Text, }; #[derive(Clone, Default, Debug)] pub struct GameEvents<'a> { events: VecDeque<Text<'a>>, } impl<'a> GameEvents<'a> { pub fn new() -> Self { let mut events = VecDeque::with_capacity(5); for _ in 0..5 { events.push_back(Text::styled("\n", Style::default())); } Self { events } } pub fn post_event(&mut self, content: String, color: Color) { self.events.pop_front(); self.events .push_back(Text::styled(content, Style::default().fg(color))); } pub fn events(&self) -> &VecDeque<Text<'a>> { &self.events } }