Fix overflow handling when calculating the offsets

This commit is contained in:
Franco Colmenarez 2021-05-18 20:55:57 -05:00
parent 97540975c7
commit 2ed903261c

View File

@ -111,8 +111,9 @@ impl Buffer {
// sprite in a box of 7 * 7 tiles // sprite in a box of 7 * 7 tiles
// vertical offset = 7 - height // vertical offset = 7 - height
// horizontal offset = ((7 - width) / 2) + (1/2) -> then round the result down // horizontal offset = ((7 - width) / 2) + (1/2) -> then round the result down
self.vertical_offset = if width > MAX_SPRITE_SIZE {255 - width} else {MAX_SPRITE_SIZE - width}; self.vertical_offset = if width > MAX_SPRITE_SIZE {255 - width + MAX_SPRITE_SIZE} else {MAX_SPRITE_SIZE - width};
let res = (((MAX_SPRITE_SIZE as f32 - height as f32) / 2.0) + (1.0 / 2.0)) as f32; let height_substraction: u8 = if width > MAX_SPRITE_SIZE {255 - height + MAX_SPRITE_SIZE} else {MAX_SPRITE_SIZE - height};
let res = ((height_substraction as f32 / 2.0) + (1.0 / 2.0)) as f32;
self.horizontal_offset = res.floor() as u8; self.horizontal_offset = res.floor() as u8;
// We need 3 bitplanes, the first and second ones are where the // We need 3 bitplanes, the first and second ones are where the
// decompressed bytes will be, which are 7 x 7 each. // decompressed bytes will be, which are 7 x 7 each.