Initial commit, sin-bug
[bug-basher.git] / src / main.rs
1 extern crate gate;
2 extern crate ogg_sys;
3
4
5 use gate::{App, Audio};
6 use gate::app_info::AppInfo;
7 use gate::input::{KeyEvent, KeyCode};
8 use gate::renderer::{Renderer, Affine};
9
10 mod asset_id { include!(concat!(env!("OUT_DIR"), "/asset_id.rs")); }
11 use asset_id::{AssetId, SpriteId, TileId, MusicId, SoundId};
12
13 struct BugBasherGame {
14     bug_pos: (f64, f64)
15 }
16
17 impl App<AssetId> for BugBasherGame {
18     fn start(&mut self, _audio: &mut Audio<AssetId>) {
19     }
20
21     fn advance(&mut self, seconds: f64, _audio: &mut Audio<AssetId>) -> bool {
22         self.bug_pos.0 = (self.bug_pos.0 + 150. * seconds) % 1000.;
23         self.bug_pos.1 = (self.bug_pos.0 / 150.).sin() * 500.;
24         
25         true
26     }
27
28     fn input(&mut self, evt: KeyEvent, key: KeyCode, _audio: &mut Audio<AssetId>) -> bool {
29         true
30     }
31
32     fn render(&mut self, renderer: &mut Renderer<AssetId>) {
33         renderer.clear((255,255,255));
34         { // drawing sprites
35             let mut renderer = renderer.sprite_mode();
36             let camera = &Affine::translate(-500., 0.);
37             renderer.draw(
38                 &camera.pre_translate(self.bug_pos.0, self.bug_pos.1),
39                 SpriteId::Bug
40             );
41         }
42     }
43 }
44
45 fn main() {
46     let info = AppInfo::with_app_height(1000.).title("Bug Basher").build();
47     gate::run(info, BugBasherGame {
48         bug_pos: (400., 0.)
49     });
50 }