const TASK_MGR_HEADER: usize = 3;
const MAX_NUM_PROCESSES: usize = BUFFER_HEIGHT - TASK_MGR_HEADER;
#[derive(Copy,Clone,Eq,PartialEq,Debug)]
#[repr(u8)]
enum GameChoice {
GhostHunter, Tracer, Letters, SpaceInvaders, Chicken, Burnett, Hodgins
}
const GAME_CHOICES: [GameChoice; NUM_GAMES] = [GameChoice::Tracer, GameChoice::Letters, GameChoice::GhostHunter, GameChoice::Burnett, GameChoice::Chicken, GameChoice::Hodgins, GameChoice::SpaceInvaders];
const NUM_GAMES: usize = 7;
impl GameChoice {
fn start(&self) -> Process {
match self {
GameChoice::GhostHunter => Process::GhostHunter(GhostHunterGame::new()),
GameChoice::Tracer => Process::Tracer(TracerGame::new()),
GameChoice::Letters => Process::Letters(LetterMover::new()),
GameChoice::SpaceInvaders => Process::SpaceInvaders(SpaceInvadersGame::new()),
GameChoice::Chicken => Process::Chicken(Game::new()),
GameChoice::Burnett => Process::Burnett(nom_noms::LetterMover::new()),
GameChoice::Hodgins => Process::Hodgins(MainGame::new())
}
}
fn name(&self) -> &'static str {
match self {
GameChoice::GhostHunter => "Ghost Hunter",
GameChoice::Tracer => "Tracer",
GameChoice::Letters => "Letter Mover",
GameChoice::SpaceInvaders => "Space Invaders",
GameChoice::Chicken => "Chicken Invaders",
GameChoice::Burnett => "Daniel's Game",
GameChoice::Hodgins => "Snake"
}
}
}
#[derive(Copy,Clone,Debug,Eq,PartialEq)]
enum Process {
GhostHunter(ghost_hunter::MainGame),
Tracer(TracerGame),
Letters(LetterMover),
SpaceInvaders(SpaceInvadersGame),
Chicken(Game),
Burnett(nom_noms::LetterMover),
Hodgins(baremetal_snake::MainGame)
}
impl Process {
fn tick(&mut self) {
match self {
Process::GhostHunter(game) => ghost_hunter::tick(game),
Process::Tracer(game) => game.tick(),
Process::Letters(game) => game.tick(),
Process::SpaceInvaders(game) => baremetal_game::tick(game),
Process::Chicken(game) => game.tick(),
Process::Burnett(game) => game.tick(),
Process::Hodgins(game) => baremetal_snake::tick(game)
}
}
fn key(&mut self, key: DecodedKey) {
match self {
Process::GhostHunter(game) => game.key(key),
Process::Tracer(game) => game.key(key),
Process::Letters(game) => game.key(key),
Process::SpaceInvaders(game) => game.key(key),
Process::Chicken(game) => game.key(key),
Process::Burnett(game) => game.key(key),
Process::Hodgins(game) => game.key(key)
}
}
}