use ggez::{
graphics::{Color, DrawMode, Mesh, MeshBuilder, Rect},
GameResult,
};
use crate::{env, palette::Palette};
pub type Rule = u8;
pub type Kind = ();
#[derive(Debug)]
pub struct Context {
pub palette: Palette,
pub cell_mesh: Mesh,
pub rule: Rule,
}
impl Context {
pub fn new(rule: Rule, ctx: &mut ggez::Context) -> GameResult<Self> {
Ok(Self {
palette: Palette::default(),
cell_mesh: make_cell_mesh(ctx)?,
rule,
})
}
}
fn make_cell_mesh(ctx: &mut ggez::Context) -> GameResult<Mesh> {
let mut mesh = MeshBuilder::new();
let bounds = Rect::new(0.0, 0.0, env::SIDE, env::SIDE);
mesh.rectangle(DrawMode::fill(), bounds, Color::WHITE)?;
mesh.build(ctx)
}