From a70b7befc08646ea92282fa30b12bae811f22203 Mon Sep 17 00:00:00 2001 From: Justin Worthe Date: Sun, 15 Apr 2018 12:58:16 +0200 Subject: Added game over popup --- src/main.rs | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index 939c414..5547479 100644 --- a/src/main.rs +++ b/src/main.rs @@ -96,8 +96,8 @@ impl App for BugBasherGame { { let points_str = format!("{}", self.points); let lives_str = format!("{}", self.lives); - BugBasherGame::print_string(renderer, &points_str, - app_width / 2. + 50., app_height / 2. - 50.); - BugBasherGame::print_string(renderer, &lives_str, app_width / 2. - 50. - lives_str.len() as f64 * 25., app_height / 2. - 50.); + BugBasherGame::print_string(renderer, &points_str, Alignment::Left, - app_width / 2. + 50., app_height / 2. - 50.); + BugBasherGame::print_string(renderer, &lives_str, Alignment::Right, app_width / 2. - 50., app_height / 2. - 50.); } { let mut renderer = renderer.sprite_mode(); @@ -112,9 +112,29 @@ impl App for BugBasherGame { ); } } + + if self.game_over { + { + let mut renderer = renderer.sprite_mode(); + renderer.draw( + &Affine::translate(0.,0.), + SpriteId::Gameover + ); + } + { + let points_str = format!("{}", self.points); + BugBasherGame::print_string(renderer, &points_str, Alignment::Center, 0., -25.); + } + } } } +enum Alignment { + Left, + Right, + Center +} + impl BugBasherGame { fn new() -> BugBasherGame { let mut game = BugBasherGame { @@ -137,11 +157,18 @@ impl BugBasherGame { self.game_over = false; } - fn print_string(renderer: &mut Renderer, string: &str, x: f64, y: f64) { - let mut renderer = renderer.tiled_mode(-x, -y); - let spacing = 25.; + fn print_string(renderer: &mut Renderer, string: &str, alignment: Alignment, x: f64, y: f64) { + let letter_spacing = 25.; + let left = match alignment { + Alignment::Left => x, + Alignment::Right => x - string.len() as f64 * letter_spacing, + Alignment::Center => x - string.len() as f64 * letter_spacing / 2. + }; + + let mut renderer = renderer.tiled_mode(-left, -y); + for (i, c) in string.chars().enumerate() { - let affine = Affine::translate(i as f64 * spacing, 0.); + let affine = Affine::translate(i as f64 * letter_spacing, 0.); let tile = match c { '-' => TileId::NumberFontR0C0, '0' => TileId::NumberFontR0C1, -- cgit v1.2.3