use std::sync::Mutex; use ::bracket_lib::prelude::*; use super::LogFragment; use crate::colors; lazy_static! { static ref LOG: Mutex>> = Mutex::new(Vec::new()); } #[allow(dead_code)] pub fn append_fragment(fragment: LogFragment) { LOG.lock().unwrap().push(vec![fragment]); } pub fn append_entry(fragments: Vec) { LOG.lock().unwrap().push(fragments); } pub fn clear_log() { LOG.lock().unwrap().clear(); } pub fn print_log(console: &mut Box, pos: Point) { let mut y = pos.y; let mut x = pos.x; LOG.lock().unwrap().iter().rev().take(6).for_each(|log| { log.iter().for_each(|frag| { console.print_color( x, y, frag.color.to_rgba(1.0), colors::BLACK.to_rgba(1.0), &frag.text, ); x += frag.text.len() as i32; x += 1; }); y += 1; x = pos.x; }); } pub fn clone_log() -> Vec> { LOG.lock().unwrap().clone() } pub fn restore_log(log: &mut Vec>) { clear_log(); LOG.lock().unwrap().append(log); }