From f35ca28c02945743257654b838293f24a67d4a1c Mon Sep 17 00:00:00 2001 From: CrispyPin Date: Tue, 24 Dec 2024 23:30:02 +0100 Subject: [PATCH 1/2] cleanup --- src/editor.rs | 8 ++------ src/ui.rs | 17 ++++++++--------- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/src/editor.rs b/src/editor.rs index cf42bdb..b87a036 100644 --- a/src/editor.rs +++ b/src/editor.rs @@ -884,15 +884,11 @@ impl Editor { self.tooltip.add(368, 4, 48, 32, "Speed"); draw_usize(d, textures, 1 << self.sim_speed, (368, 4), SPEED_DIGITS, 1); slider( - d, - &self.mouse, + (d, &self.mouse), + rect(368, 24, 48, 12), &mut self.sim_speed, 0, MAX_SPEED_POWER, - 368, - 24, - 48, - 12, ); self.tooltip.add(420, 4, 180, 32, "Steps"); diff --git a/src/ui.rs b/src/ui.rs index 0fbd9c4..cbf4645 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -388,21 +388,20 @@ pub fn draw_usize_small( } pub fn slider( - d: &mut RaylibDrawHandle, - mouse: &MouseInput, + (d, mouse): (&mut RaylibDrawHandle, &MouseInput), + bounds: Rectangle, value: &mut u8, min: u8, max: u8, - x: i32, - y: i32, - width: i32, - height: i32, ) -> bool { + // draw state // the +1 makes the lowest state look slightly filled and the max state fully filled let percent = (*value - min + 1) as f32 / (max - min + 1) as f32; - d.draw_rectangle(x, y, width, height, BG_WIDGET); - d.draw_rectangle(x, y, (width as f32 * percent) as i32, height, Color::CYAN); - let bounds = Rectangle::new(x as f32, y as f32, width as f32, height as f32); + d.draw_rectangle_rec(bounds, BG_WIDGET); + let mut filled_bounds = bounds; + filled_bounds.width *= percent; + d.draw_rectangle_rec(filled_bounds, Color::CYAN); + // interaction if mouse.is_over(bounds) { if mouse.left_hold() { let percent = (mouse.pos().x - bounds.x) / bounds.width; From 74d142191cd140d683743ec00c75e59da1a11afe Mon Sep 17 00:00:00 2001 From: CrispyPin Date: Tue, 24 Dec 2024 23:32:25 +0100 Subject: [PATCH 2/2] cleanup --- src/editor.rs | 7 ++----- src/ui.rs | 10 ++++------ 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/src/editor.rs b/src/editor.rs index b87a036..c941a3f 100644 --- a/src/editor.rs +++ b/src/editor.rs @@ -1024,8 +1024,7 @@ impl Editor { |(row, col): (i32, i32), texture: &str, tooltip: &'static str, tool_option: Tool| { let border = 4.; let gap = 2.; - let tex_size = 32.; - let button_size = tex_size + border * 2.; + let button_size = 32. + border * 2.; let grid_size = button_size + gap * 2.; let pos = Vector2 { x: 100. + col as f32 * grid_size - if col < 0 { 10. } else { 0. }, @@ -1036,13 +1035,11 @@ impl Editor { tooltip, ); scrollable_texture_option_button( - d, - &self.mouse, + (d, &self.mouse), pos, textures.get(texture), tool_option, &mut self.active_tool, - tex_size, border, ) }; diff --git a/src/ui.rs b/src/ui.rs index cbf4645..1a94a7f 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -299,13 +299,11 @@ pub fn text_input( } pub fn scrollable_texture_option_button( - d: &mut RaylibDrawHandle, - mouse: &MouseInput, + (d, mouse): (&mut RaylibDrawHandle, &MouseInput), pos: Vector2, texture: &Texture2D, option: T, current: &mut T, - tex_size: f32, border: f32, ) -> Option where @@ -314,8 +312,8 @@ where let bounds = Rectangle { x: pos.x, y: pos.y, - width: tex_size + border * 2., - height: tex_size + border * 2., + width: 32. + border * 2., + height: 32. + border * 2., }; d.draw_rectangle_rec( bounds, @@ -329,7 +327,7 @@ where texture, pos + Vector2::new(border, border), 0., - tex_size / texture.width as f32, + 32. / texture.width as f32, Color::WHITE, ); if mouse.is_over(bounds) {