use bracket_terminal::prelude::*;
bracket_terminal::add_wasm_support!();
struct State {
y: i32,
going_down: bool,
}
impl GameState for State {
fn tick(&mut self, ctx: &mut BTerm) {
let col1 = RGB::named(CYAN);
let col2 = RGB::named(YELLOW);
let percent: f32 = self.y as f32 / 50.0;
let fg = col1.lerp(col2, percent);
ctx.cls();
ctx.printer(
40,
49,
"#[blue]Hello #[pink]Bracket#[] world.",
TextAlign::Center,
Some(RGBA::from_u8(200, 200, 200, 255)),
);
ctx.print_color(
1,
self.y,
fg,
RGB::named(BLACK),
"♫ ♪ Hello Bracket World ☺",
);
if self.going_down {
self.y += 1;
if self.y > 48 {
self.going_down = false;
}
} else {
self.y -= 1;
if self.y < 2 {
self.going_down = true;
}
}
ctx.draw_box(39, 0, 20, 3, RGB::named(WHITE), RGB::named(BLACK));
ctx.printer(
58,
1,
&format!("#[pink]FPS: #[]{}", ctx.fps),
TextAlign::Right,
None,
);
ctx.printer(
58,
2,
&format!("#[pink]Frame Time: #[]{} ms", ctx.frame_time_ms),
TextAlign::Right,
None,
);
}
}
fn main() -> BError {
let context = BTermBuilder::simple80x50()
.with_title("Hello Bracket World")
.with_fps_cap(30.0)
.build()?;
let gs: State = State {
y: 1,
going_down: true,
};
register_palette_color("blue", RGB::named(BLUE));
register_palette_color("pink", RGB::named(MAGENTA));
main_loop(context, gs)
}