extern crate gate; extern crate ogg_sys; use gate::{App, Audio}; use gate::app_info::AppInfo; use gate::input::{KeyEvent, KeyCode}; use gate::renderer::{Renderer, Affine}; mod asset_id { include!(concat!(env!("OUT_DIR"), "/asset_id.rs")); } use asset_id::{AssetId, SpriteId, TileId, MusicId, SoundId}; struct BugBasherGame { bug_pos: (f64, f64) } impl App for BugBasherGame { fn start(&mut self, _audio: &mut Audio) { } fn advance(&mut self, seconds: f64, _audio: &mut Audio) -> bool { self.bug_pos.0 = (self.bug_pos.0 + 150. * seconds) % 1000.; self.bug_pos.1 = (self.bug_pos.0 / 150.).sin() * 500.; true } fn input(&mut self, evt: KeyEvent, key: KeyCode, _audio: &mut Audio) -> bool { true } fn render(&mut self, renderer: &mut Renderer) { renderer.clear((255,255,255)); { // drawing sprites let mut renderer = renderer.sprite_mode(); let camera = &Affine::translate(-500., 0.); renderer.draw( &camera.pre_translate(self.bug_pos.0, self.bug_pos.1), SpriteId::Bug ); } } } fn main() { let info = AppInfo::with_app_height(1000.).title("Bug Basher").build(); gate::run(info, BugBasherGame { bug_pos: (400., 0.) }); }