summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs64
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());
}