Expand description
TermGame is a small crate that extends tui-rs to make it easy to write TUI games.
Mainly used in COMP6991 at the University of New South Wales,
the crate provides the Controller trait, which is accepted
by the run_game function to start a game using a Crossterm
TUI (provided by tui-rs).
It also wraps many tui features, like StyledCharacter,
GameEvent, and Style
use termgame::{Controller, Game, GameEvent, StyledCharacter, run_game};
use std::error::Error;
use std::time::Duration;
struct MyGame {}
impl Controller for MyGame {
fn on_start(&mut self, game: &mut Game) {
}
fn on_event(&mut self, game: &mut Game, event: GameEvent) {
match event {
GameEvent::Char('a') => {
game.set_screen_char(1, 1, Some(StyledCharacter::new('a')))
},
_ => {}
}
}
fn on_tick(&mut self, _game: &mut Game) {}
}
fn main() -> Result<(), Box<dyn Error>> {
let mut controller = MyGame {};
// run_game(&mut controller, Duration::from_millis(500))?;
println!("Game Ended!");
Ok(())
}Structs
A widget that shows a small view into an infinitely sized map.
A ChunkMap is an infinite 2D plane consisting of elements of
type
T. It’s basically a HashMap, but using a HashMap
would have terrible iteration performance; so it stores
values in “chunks”. Each Chunk is stored in a HashMap,
and individual elements are accessed by finding the address
of their chunk, then getting them by offset.Modifier changes the way a piece of text is displayed.
The Game struct is passed to all of the Controller’s event methods,
to allow the implementor to view and modify the state of the game.
This struct models how to show a character in Termgame.
A character with a given style.
The
ViewportLocation describes the top-leftEnums
Constants
The required screen height termgame can play at.
Set to the size of a standard vt100
The required screen width termgame can play at.
Traits
The
Controller trait must be implemented on a struct
in order to control a Termgame Game.Functions
Starts a game with a given
Controller, which refreshes at the given tick_rate (a Duration).Type Definitions
This is a
ChunkMap (an infinite 2D map) of ScreenCharacters