1
0
Fork 0
roguelike-game/src/gamelog/logstore.rs

54 lines
1.2 KiB
Rust

use std::sync::Mutex;
use ::bracket_lib::prelude::*;
use ::lazy_static::lazy_static;
use super::LogFragment;
use crate::colors;
lazy_static! {
static ref LOG: Mutex<Vec<Vec<LogFragment>>> = 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<LogFragment>) {
LOG.lock().unwrap().push(fragments);
}
pub fn clear_log() {
LOG.lock().unwrap().clear();
}
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| {
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<Vec<LogFragment>> {
LOG.lock().unwrap().clone()
}
pub fn restore_log(log: &mut Vec<Vec<LogFragment>>) {
clear_log();
LOG.lock().unwrap().append(log);
}