extern crate gg; extern crate glium; use glium::DisplayBuild; use gg::event::step::fixed_60; use gg::scene::Scene; struct GameState { title: String } struct MainMenu { quit: bool, } impl MainMenu { fn quit(&mut self) { self.quit = true; } } impl Scene for MainMenu { type State = GameState; fn enter(&mut self, state: &mut GameState) { println!("Enter State"); } fn leave(&mut self, state: &mut GameState) { println!("Enter State"); } fn keypress(&mut self, state: &mut GameState, keys: &gg::event::Keys) { use gg::event::KeyCode::*; if keys.pressed(Escape) { state.quit(); } } fn display(&mut self, state: &mut GameState, display: &glium::backend::glutin_backend::GlutinFacade) { use glium::Surface; let mut target = display.draw(); target.clear_color(0., 0., 1., 1.); target.finish().unwrap(); } fn tick(&mut self, _state: &mut Self::State) -> gg::scene::SceneTransition { gg::scene::SceneTransition::Nothing } fn get_id(&self) -> usize { 0 } } fn main() { let display = glium::glutin::WindowBuilder::new().build().unwrap(); let game = gg::Game::new( GameState { title: "Example!".into() }, display ); // Internally calls the draw/tick loop game.kickoff(); }