ae_renderable/
lib.rs

1use serde::{Deserialize, Serialize};
2
3mod colour;
4pub use colour::*;
5
6#[derive(Serialize, Deserialize, Clone, Debug)]
7pub struct Render {
8    glyph: char,
9    fg: String,
10    bg: Option<String>,
11    x: i32,
12    y: i32,
13}
14
15pub type RenderVec = Vec<Render>;
16
17pub trait Renderable {
18    fn fg(&self) -> Colour;
19
20    fn bg(&self) -> Option<Colour>;
21
22    fn char(&self) -> char;
23
24    fn make_render(&self, x: i32, y: i32) -> Render {
25        Render {
26            x,
27            y,
28            fg: self.fg().to_string(),
29            bg: self.bg().map(|bg| bg.to_string()),
30            glyph: self.char(),
31        }
32    }
33}