3 unstable releases
0.2.0 | Jul 10, 2024 |
---|---|
0.1.1 | Jun 24, 2024 |
0.1.0 | Jun 1, 2024 |
#135 in Simulation
21KB
423 lines
lifers-raylib
Raylib frontend for lifers
.
Usage
To use this frontend, simply create a cell type:
// Simple Game of Life-like cell
struct Cell {
is_alive: bool
}
Your cells don't have to be this simple, they can have many attributes (type, group, etc.).
Now just implement RenderCell<Color>
for it:
use raylib::color::Color;
use lifers::frontend::RenderCell;
impl RenderCell<Color> for Cell {
fn render_cell(&self) -> Color {
if cell.is_alive {
Color::WHITE
} else {
Color::BLACK
}
}
}
Then you can use it to create an Automaton
and pass it to RaylibFrontend
(or use FrontendBuilder
).
lib.rs
:
Raylib frontend for [lifers].
Provides RaylibFrontend
implementations that do all the
displaying and rendering work. It's recommended to use
FrontendBuilder
for convenience.
NOTE: See corresponding modules for different kinds of automata.
The frontend can be used in an event loop, similar to a typical Raylib application:
# use lifers::prelude::*;
# use lifers_raylib::generic::FrontendBuilder;
let game = /* Automaton */
# todo!();
let mut frontend = FrontendBuilder::new((480, 480))
.finish(game);
while !frontend.window_should_close() {
frontend.display_grid();
frontend.tick();
}
Dependencies
~7–14MB
~197K SLoC