diff options
author | Justin Worthe <justin@worthe-it.co.za> | 2018-08-05 23:31:13 +0200 |
---|---|---|
committer | Justin Worthe <justin@worthe-it.co.za> | 2018-08-05 23:31:13 +0200 |
commit | 080203806aa23b2ae1ec400ac31b05cf1ecf75ad (patch) | |
tree | f8a497e887f19546d1e3a1cf7ada276ccf954d28 /src/main.rs | |
parent | 7d9452a0c3f3d292019d81844ccfbcdcc734d674 (diff) |
Updated Gate version
The position of the origin has changed... now all of my positioning of
things is off.
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 64 |
1 files changed, 31 insertions, 33 deletions
diff --git a/src/main.rs b/src/main.rs index 00b7807..db96656 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,8 +1,6 @@ extern crate gate; -use gate::{App, Audio}; -use gate::app_info::AppInfo; -use gate::input::*; +use gate::{App, AppContext, AppInfo, KeyCode}; use gate::renderer::{Renderer, Affine}; extern crate rand; @@ -38,10 +36,13 @@ struct BugBasherGame { } impl App<AssetId> for BugBasherGame { - fn start(&mut self, _audio: &mut Audio<AssetId>) { + fn start(&mut self, _ctx: &mut AppContext<AssetId>) { } - fn advance(&mut self, seconds: f64, _audio: &mut Audio<AssetId>) -> bool { + fn advance(&mut self, seconds: f64, ctx: &mut AppContext<AssetId>) { + let (x, y) = ctx.cursor(); + self.cursor_pos = Vec2d::new(x, y); + if !self.game_over { self.bugs.retain(|b| b.alive); for bug in self.bugs.iter_mut() { @@ -83,13 +84,12 @@ impl App<AssetId> for BugBasherGame { } } - - true } - fn input(&mut self, evt: InputEvent, _audio: &mut Audio<AssetId>) -> bool { - match evt { - InputEvent::MousePressed(MouseButton::Left, x, y) => { + fn key_down(&mut self, key: KeyCode, ctx: &mut AppContext<AssetId>) { + let (x, y) = ctx.cursor(); + match key { + KeyCode::MouseLeft => { for bug in self.bugs.iter_mut().filter(|bug| bug.touches_point(Vec2d { x, y })) { if !self.game_over && bug.alive == true { self.points += 1; @@ -98,19 +98,15 @@ impl App<AssetId> for BugBasherGame { bug.alive = false; } }, - InputEvent::MouseMotion(x, y) => { - self.cursor_pos = Vec2d::new(x,y); - }, - InputEvent::KeyPressed(KeyCode::Return) => { + KeyCode::Return => { self.reset(); }, _ => {} } - true } - fn render(&mut self, renderer: &mut Renderer<AssetId>) { - let (app_width, app_height) = (renderer.app_width(), renderer.app_height()); + fn render(&mut self, renderer: &mut Renderer<AssetId>, ctx: &AppContext<AssetId>) { + let (app_width, app_height) = ctx.dims(); renderer.clear((255,255,255)); { let points_str = format!("{}", self.points); @@ -202,23 +198,22 @@ impl BugBasherGame { Alignment::Center => x - string.len() as f64 * letter_spacing / 2. }; - let mut renderer = renderer.tiled_mode(-left, -y); - + let mut renderer = renderer.sprite_mode(); for (i, c) in string.chars().enumerate() { - let affine = Affine::translate(i as f64 * letter_spacing, 0.); + let affine = Affine::translate(i as f64 * letter_spacing - left, -y); let tile = match c { - '-' => TileId::NumberFontR0C0, - '0' => TileId::NumberFontR0C1, - '1' => TileId::NumberFontR0C2, - '2' => TileId::NumberFontR0C3, - '3' => TileId::NumberFontR0C4, - '4' => TileId::NumberFontR0C5, - '5' => TileId::NumberFontR0C6, - '6' => TileId::NumberFontR0C7, - '7' => TileId::NumberFontR0C8, - '8' => TileId::NumberFontR0C9, - '9' => TileId::NumberFontR0C10, - _ => TileId::NumberFontR0C0, + '-' => SpriteId::NumberFontR0C0, + '0' => SpriteId::NumberFontR0C1, + '1' => SpriteId::NumberFontR0C2, + '2' => SpriteId::NumberFontR0C3, + '3' => SpriteId::NumberFontR0C4, + '4' => SpriteId::NumberFontR0C5, + '5' => SpriteId::NumberFontR0C6, + '6' => SpriteId::NumberFontR0C7, + '7' => SpriteId::NumberFontR0C8, + '8' => SpriteId::NumberFontR0C9, + '9' => SpriteId::NumberFontR0C10, + _ => SpriteId::NumberFontR0C0, }; renderer.draw(&affine, tile); }; @@ -226,6 +221,9 @@ impl BugBasherGame { } fn main() { - let info = AppInfo::with_app_height(1000.).title("Bug Basher").build(); + let info = AppInfo::with_max_dims(2000., 1000.) + .min_dims(500., 1000.) + .tile_width(16) + .title("Nap Attack"); gate::run(info, BugBasherGame::new()); } |