survivor

graphical action game for the linux terminal
git clone https://git.ce9e.org/survivor.git

commit
fc2f6da45b32fd0fc68e9571662a48f6d169dee7
parent
3473b5223e89342290524d41079d774b7e0806a3
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2023-02-19 17:16
put bars back into functions

Diffstat

M src/main.rs 41 +++++++++++++++++++++++------------------

1 files changed, 23 insertions, 18 deletions


diff --git a/src/main.rs b/src/main.rs

@@ -23,6 +23,27 @@ fn quit(_sig: i32) {
   23    23     RUNNING.fetch_and(false, Ordering::Relaxed);
   24    24 }
   25    25 
   -1    26 fn render_bar(screen: &mut term::Screen, value: f32, y0: usize, color: [u8; 3]) {
   -1    27     let x0 = (screen.width as f32 * value) as usize;
   -1    28     for x in 0..screen.width {
   -1    29         let c = if x <= x0 { color } else { BLACK };
   -1    30         for dy in 0..3 {
   -1    31             screen.set(x, y0 + dy, c);
   -1    32         }
   -1    33     }
   -1    34 }
   -1    35 
   -1    36 fn render_xp_bar(player: &game::Player, screen: &mut term::Screen) {
   -1    37     let value = (player.xp - player.last_level) as f32
   -1    38         / (player.next_level - player.last_level) as f32;
   -1    39     render_bar(screen, value, 0, BLUE);
   -1    40 }
   -1    41 
   -1    42 fn render_health_bar(player: &game::Player, screen: &mut term::Screen) {
   -1    43     let value = player.health / player.health_max;
   -1    44     render_bar(screen, value, screen.height - 3, RED);
   -1    45 }
   -1    46 
   26    47 fn main() {
   27    48     let input = input::Input::new();
   28    49     let mut screen = term::Screen::new();
@@ -59,24 +80,8 @@ fn main() {
   59    80         game.step(dt);
   60    81         game.render(&mut screen);
   61    82 
   62    -1         let xp_bar = (screen.width as f32 * (game.player.xp - game.player.last_level) as f32
   63    -1             / (game.player.next_level - game.player.last_level) as f32)
   64    -1             as usize;
   65    -1         for x in 0..screen.width {
   66    -1             let c = if x <= xp_bar { BLUE } else { BLACK };
   67    -1             for y in 0..3 {
   68    -1                 screen.set(x, y, c);
   69    -1             }
   70    -1         }
   71    -1 
   72    -1         let health_bar =
   73    -1             (screen.width as f32 * game.player.health / game.player.health_max) as usize;
   74    -1         for x in 0..screen.width {
   75    -1             let c = if x <= health_bar { RED } else { BLACK };
   76    -1             for y in (screen.height - 3)..screen.height {
   77    -1                 screen.set(x, y, c);
   78    -1             }
   79    -1         }
   -1    83         render_xp_bar(&game.player, &mut screen);
   -1    84         render_health_bar(&game.player, &mut screen);
   80    85 
   81    86         screen.render();
   82    87         print!("{:?}", 1.0 / dt);