summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs
new file mode 100644
index 0000000..eedf9f4
--- /dev/null
+++ b/src/main.rs
@@ -0,0 +1,50 @@
+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<AssetId> for BugBasherGame {
+ fn start(&mut self, _audio: &mut Audio<AssetId>) {
+ }
+
+ fn advance(&mut self, seconds: f64, _audio: &mut Audio<AssetId>) -> 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<AssetId>) -> bool {
+ true
+ }
+
+ fn render(&mut self, renderer: &mut Renderer<AssetId>) {
+ 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.)
+ });
+}