use crate::constants::{SIDEBAR_POS_X, SIDEBAR_POS_Y}; use crate::resources::{Clock, LevelNumber, ShowDebugInfo, Stats}; use crate::vga_color as vga; use bracket_lib::prelude::*; use specs::prelude::*; pub fn draw(ecs: &World, ctx: &mut BTerm) { // Blue background ctx.fill_region( Rect { x1: SIDEBAR_POS_X, x2: SIDEBAR_POS_X + 14, y1: SIDEBAR_POS_Y, y2: SIDEBAR_POS_Y + 19, }, to_cp437(' '), RGB::named(vga::YELLOW_BRIGHT), RGB::named(vga::BLUE), ); // Gray number boxes (1..17).step_by(3).for_each(|y| { ctx.fill_region( Rect { x1: SIDEBAR_POS_X + 3, x2: SIDEBAR_POS_X + 10, y1: SIDEBAR_POS_Y + y, y2: SIDEBAR_POS_Y + y + 1, }, to_cp437(' '), RGB::named(vga::RED), RGB::named(vga::WHITE), ); }); // Stats ctx.print(SIDEBAR_POS_X + 4, SIDEBAR_POS_Y, "Score"); ctx.print(SIDEBAR_POS_X + 4, SIDEBAR_POS_Y + 3, "Level"); ctx.print_centered_at( SIDEBAR_POS_X + 6, SIDEBAR_POS_Y + 4, ecs.read_resource::().0, ); ctx.print(SIDEBAR_POS_X + 4, SIDEBAR_POS_Y + 6, "Gems"); ctx.print(SIDEBAR_POS_X + 4, SIDEBAR_POS_Y + 9, "Whips"); ctx.print(SIDEBAR_POS_X + 2, SIDEBAR_POS_Y + 12, "Teleports"); ctx.print(SIDEBAR_POS_X + 4, SIDEBAR_POS_Y + 15, "Keys"); let stats = ecs.read_resource::(); ctx.print_centered_at(SIDEBAR_POS_X + 6, SIDEBAR_POS_Y + 1, stats.score); ctx.print_centered_at(SIDEBAR_POS_X + 6, SIDEBAR_POS_Y + 7, stats.gems); ctx.print_centered_at(SIDEBAR_POS_X + 6, SIDEBAR_POS_Y + 10, stats.whips); ctx.print_centered_at(SIDEBAR_POS_X + 6, SIDEBAR_POS_Y + 13, stats.teleports); ctx.print_centered_at(SIDEBAR_POS_X + 6, SIDEBAR_POS_Y + 16, stats.keys); // Hotkey list ctx.print_color( SIDEBAR_POS_X + 3, SIDEBAR_POS_Y + 18, RGB::named(vga::CYAN_BRIGHT), RGB::named(vga::RED), "OPTIONS", ); ctx.fill_region( Rect { x1: SIDEBAR_POS_X, x2: SIDEBAR_POS_X + 14, y1: SIDEBAR_POS_Y + 19, y2: SIDEBAR_POS_Y + 25, }, to_cp437(' '), RGB::named(vga::WHITE), RGB::named(vga::BLUE), ); ctx.fill_region( Rect { x1: SIDEBAR_POS_X + 3, x2: SIDEBAR_POS_X + 4, y1: SIDEBAR_POS_Y + 19, y2: SIDEBAR_POS_Y + 25, }, to_cp437(' '), RGB::named(vga::WHITE_BRIGHT), RGB::named(vga::BLUE), ); ctx.print(SIDEBAR_POS_X + 3, SIDEBAR_POS_Y + 19, "Whip"); ctx.print(SIDEBAR_POS_X + 3, SIDEBAR_POS_Y + 20, "Teleport"); ctx.print(SIDEBAR_POS_X + 3, SIDEBAR_POS_Y + 21, "Pause"); ctx.print(SIDEBAR_POS_X + 3, SIDEBAR_POS_Y + 22, "Quit"); ctx.print(SIDEBAR_POS_X + 3, SIDEBAR_POS_Y + 23, "Save"); ctx.print(SIDEBAR_POS_X + 3, SIDEBAR_POS_Y + 24, "Restore"); if ecs.read_resource::().0 { ctx.print_color_right( SIDEBAR_POS_X + 14, SIDEBAR_POS_Y, RGB::named(vga::GREEN_BRIGHT), RGB::named(vga::BLACK), &format!("{}", ctx.fps), ); ctx.print_color( 0, 0, RGB::named(vga::YELLOW_BRIGHT), RGB::named(vga::BLACK), &format!("{}", ecs.read_resource::().ticks), ); } }