summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs39
1 files changed, 33 insertions, 6 deletions
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<AssetId> 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<AssetId> 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<AssetId>, string: &str, x: f64, y: f64) {
- let mut renderer = renderer.tiled_mode(-x, -y);
- let spacing = 25.;
+ fn print_string(renderer: &mut Renderer<AssetId>, 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,