2022-02-01 09:21:06 -05:00
|
|
|
use std::sync::Mutex;
|
|
|
|
|
|
|
|
use ::rltk::prelude::*;
|
|
|
|
|
|
|
|
use super::LogFragment;
|
2022-02-02 09:34:20 -05:00
|
|
|
use crate::colors;
|
2022-02-01 09:21:06 -05:00
|
|
|
|
|
|
|
lazy_static! {
|
|
|
|
static ref LOG: Mutex<Vec<Vec<LogFragment>>> = Mutex::new(Vec::new());
|
|
|
|
}
|
|
|
|
|
2022-02-01 10:39:46 -05:00
|
|
|
#[allow(dead_code)]
|
2022-02-01 09:21:06 -05:00
|
|
|
pub fn append_fragment(fragment: LogFragment) {
|
|
|
|
LOG.lock().unwrap().push(vec![fragment]);
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn append_entry(fragments: Vec<LogFragment>) {
|
|
|
|
LOG.lock().unwrap().push(fragments);
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn clear_log() {
|
|
|
|
LOG.lock().unwrap().clear();
|
|
|
|
}
|
|
|
|
|
2022-02-02 09:34:20 -05:00
|
|
|
pub fn print_log(console: &mut Box<dyn Console>, pos: Point) {
|
|
|
|
let mut y = pos.y;
|
|
|
|
let mut x = pos.x;
|
|
|
|
LOG.lock().unwrap().iter().rev().take(6).for_each(|log| {
|
2022-02-01 09:21:06 -05:00
|
|
|
log.iter().for_each(|frag| {
|
2022-02-02 09:34:20 -05:00
|
|
|
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;
|
2022-02-01 09:21:06 -05:00
|
|
|
});
|
2022-02-02 09:34:20 -05:00
|
|
|
y += 1;
|
|
|
|
x = pos.x;
|
2022-02-01 09:21:06 -05:00
|
|
|
});
|
|
|
|
}
|
2022-02-01 11:20:41 -05:00
|
|
|
|
|
|
|
pub fn clone_log() -> Vec<Vec<LogFragment>> {
|
|
|
|
LOG.lock().unwrap().clone()
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn restore_log(log: &mut Vec<Vec<LogFragment>>) {
|
|
|
|
clear_log();
|
|
|
|
LOG.lock().unwrap().append(log);
|
|
|
|
}
|