From ddc80767344a1f8eeb9c3f6a4ad56311032b5905 Mon Sep 17 00:00:00 2001 From: dani <> Date: Sat, 5 Aug 2023 14:59:56 +0000 Subject: [PATCH] fixed messed up scaling code --- src/gsa_render_to_screen.rs | 7 ++++--- src/mapedit.rs | 20 ++++++++++++-------- src/run.rs | 4 ++++ 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/gsa_render_to_screen.rs b/src/gsa_render_to_screen.rs index e0d4ecc..36601f7 100644 --- a/src/gsa_render_to_screen.rs +++ b/src/gsa_render_to_screen.rs @@ -85,19 +85,20 @@ pub(crate) fn render_to_window( src: &mut [u8], palette: &[Rgb; 256], window_size: IVec2, + screen_size: IVec2, scale: usize, off_x: usize, off_y: usize, ) { let start = window_size.x as usize * off_y; - let end = start + window_size.x as usize * window_size.y as usize * scale; + let end = start + window_size.x as usize * screen_size.y as usize * scale; for (y, row) in target[start..end] .chunks_exact_mut(window_size.x as usize * scale) .enumerate() { let y = y as i32; - for x in 0..window_size.x as usize { - let p = src[x + y as usize * window_size.x as usize]; + for x in 0..screen_size.x as usize { + let p = src[x + y as usize * screen_size.x as usize]; for scaley in 0..scale { for scalex in 0..scale { diff --git a/src/mapedit.rs b/src/mapedit.rs index 17d99c5..4d4730f 100644 --- a/src/mapedit.rs +++ b/src/mapedit.rs @@ -152,8 +152,8 @@ pub(crate) fn run_mapedit() { }, WindowEvent::CursorMoved { position, .. } => { let new_pos = IVec2 { - x: position.x as i32, - y: position.y as i32, + x: position.x as i32 / 2, + y: position.y as i32 / 2, }; let delta = new_pos - *mouse_pos; if *middle_down { @@ -233,15 +233,15 @@ pub(crate) fn run_mapedit() { ) .unwrap(); let mut screen_buffer = - vec![TRANSPARENT; size.width as usize * size.height as usize]; + vec![TRANSPARENT; size.width as usize * size.height as usize / 4]; let mut window_buffer = surface.buffer_mut().unwrap(); render_to_screen( &mut screen_buffer, &gsa, &tileset, IVec2 { - x: size.width as i32, - y: size.height as i32, + x: size.width as i32 / 2, + y: size.height as i32 / 2, }, ); render_to_screen( @@ -249,8 +249,8 @@ pub(crate) fn run_mapedit() { &gsa2, &tileset, IVec2 { - x: size.width as i32, - y: size.height as i32, + x: size.width as i32 / 2, + y: size.height as i32 / 2, }, ); render_to_window( @@ -261,7 +261,11 @@ pub(crate) fn run_mapedit() { x: size.width as i32, y: size.height as i32, }, - 1, + IVec2 { + x: size.width as i32 / 2, + y: size.height as i32 / 2, + }, + 2, 0, 0, ); diff --git a/src/run.rs b/src/run.rs index f74c09c..33464b1 100644 --- a/src/run.rs +++ b/src/run.rs @@ -212,6 +212,10 @@ pub fn run( x: size.width as i32, y: size.height as i32, }, + IVec2 { + x: SCREEN_WIDTH as i32, + y: SCREEN_HEIGHT as i32, + }, *scale, *off_x, *off_y,