add out of bounds black bars

This commit is contained in:
Alula 2022-01-05 04:16:50 +01:00
parent 4134d4754e
commit ac58602ed0
No known key found for this signature in database
GPG Key ID: 3E00485503A1D8BA
1 changed files with 42 additions and 1 deletions

View File

@ -477,7 +477,48 @@ impl GameScene {
Ok(())
}
fn draw_black_bars(&self, _state: &mut SharedGameState, _ctx: &mut Context) -> GameResult {
fn draw_black_bars(&self, state: &mut SharedGameState, ctx: &mut Context) -> GameResult {
let (x, y) = self.frame.xy_interpolated(state.frame_time);
let (x, y) = (x * state.scale, y * state.scale);
let canvas_w_scaled = state.canvas_size.0 as f32 * state.scale;
let canvas_h_scaled = state.canvas_size.1 as f32 * state.scale;
let level_width = (self.stage.map.width as f32 - 1.0) * self.stage.map.tile_size.as_float();
let level_height = (self.stage.map.height as f32 - 1.0) * self.stage.map.tile_size.as_float();
let left_side = -x;
let right_side = -x + level_width * state.scale;
let upper_side = -y;
let lower_side = -y + level_height * state.scale;
if left_side > 0.0 {
let rect = Rect::new(0, 0, left_side as isize, canvas_h_scaled as isize);
graphics::draw_rect(ctx, rect, Color::from_rgb(0, 0, 0))?;
}
if right_side < canvas_w_scaled {
let rect = Rect::new(
right_side as isize,
0,
(state.canvas_size.0 * state.scale) as isize,
(state.canvas_size.1 * state.scale) as isize,
);
graphics::draw_rect(ctx, rect, Color::from_rgb(0, 0, 0))?;
}
if upper_side > 0.0 {
let rect = Rect::new(0, 0, canvas_w_scaled as isize, upper_side as isize);
graphics::draw_rect(ctx, rect, Color::from_rgb(0, 0, 0))?;
}
if lower_side < canvas_h_scaled {
let rect = Rect::new(
0,
lower_side as isize,
canvas_w_scaled as isize,
canvas_h_scaled as isize,
);
graphics::draw_rect(ctx, rect, Color::from_rgb(0, 0, 0))?;
}
Ok(())
}