From 2ecb86d2830895a5849df95493b0f81967fc556d Mon Sep 17 00:00:00 2001 From: CrispyPin Date: Mon, 23 Dec 2024 23:58:09 +0100 Subject: [PATCH] add text button ui helper --- src/editor.rs | 5 ++--- src/main.rs | 19 +++++-------------- src/ui.rs | 16 ++++++++++++++++ 3 files changed, 23 insertions(+), 17 deletions(-) diff --git a/src/editor.rs b/src/editor.rs index fe94c67..20e0b05 100644 --- a/src/editor.rs +++ b/src/editor.rs @@ -623,7 +623,7 @@ impl Editor { d.draw_rectangle_rec(bounds, BG_DARK); let x = bounds.x as i32; let y = bounds.y as i32; - d.draw_text("Menu", x + 5, y+5, 30, Color::LIGHTBLUE); + d.draw_text("Menu", x + 5, y + 5, 30, Color::LIGHTBLUE); } Popup::None => (), } @@ -777,10 +777,9 @@ impl Editor { self.tooltip.add(40, 4, 32, 32, "save"); } - if simple_button(d, &self.mouse, 76, 5, 60, 30) { + if text_button(d, &self.mouse, 76, 5, 50, "info") { self.popup = Popup::LevelInfo; } - d.draw_text("info", 80, 10, 20, Color::WHITE); if self.sim_state == SimState::Editing { self.tooltip.add(150, 4, 32, 32, "Undo"); diff --git a/src/main.rs b/src/main.rs index 0cf3a8a..6344959 100644 --- a/src/main.rs +++ b/src/main.rs @@ -18,7 +18,7 @@ use editor::{Editor, ExitState}; use level::{Chapter, Level}; use solution::Solution; use theme::*; -use ui::{simple_button, simple_option_button, text_input, ShapedText}; +use ui::{simple_option_button, text_button, text_input, ShapedText}; use util::*; const TITLE_TEXT: &str = concat!("Marble Machinations v", env!("CARGO_PKG_VERSION")); @@ -240,24 +240,17 @@ impl Game { } let next_id = get_free_id(solutions, Solution::id); - if simple_button( + if text_button( d, &mouse, level_list_width + 10, solution_y, entry_width, - 30, + "new solution", ) { self.selected_solution = solutions.len(); solutions.push(Solution::new(level, next_id)); } - d.draw_text( - "new solution", - level_list_width + 15, - solution_y + 5, - 20, - Color::WHITE, - ); if let Some(solution) = solutions.get_mut(self.selected_solution) { let column_x = level_list_width + entry_width + 20; @@ -276,20 +269,18 @@ impl Game { let id_text = format!("{}", solution.id()); d.draw_text(&id_text, column_x, y + 35, 10, Color::GRAY); - if simple_button(d, &mouse, column_x, y + 50, 220, 30) { + if text_button(d, &mouse, column_x, y + 50, 220, "clone") { let cloned = solution.new_copy(next_id); self.selected_solution = solutions.len(); solutions.push(cloned); return; } - d.draw_text("clone", column_x + 5, y + 55, 20, Color::WHITE); - if simple_button(d, &mouse, column_x, y + 85, 220, 30) { + if text_button(d, &mouse, column_x, y + 85, 220, "edit") { let mut editor = Editor::new(solution.clone(), level.clone()); editor.center_view(d); self.open_editor = Some(editor); } - d.draw_text("edit", column_x + 5, y + 90, 20, Color::WHITE); } } else { self.solutions.insert(level.id().to_owned(), Vec::new()); diff --git a/src/ui.rs b/src/ui.rs index 7ef9660..8c36a9c 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -178,6 +178,22 @@ pub fn simple_button( pressed } +pub fn text_button( + d: &mut RaylibDrawHandle, + mouse: &MouseInput, + x: i32, + y: i32, + width: i32, + text: &str, +) -> bool { + let font_size = 20; + let margin = font_size / 4; + let height = font_size + margin * 2; + let clicked = simple_button(d, mouse, x, y, width, height); + d.draw_text(text, x + margin, y + margin, font_size, Color::WHITE); + clicked +} + pub fn simple_option_button( d: &mut RaylibDrawHandle, mouse: &MouseInput,