decorations
This commit is contained in:
parent
654469bb4a
commit
ff13e49720
17
src/game.rs
17
src/game.rs
@ -3,7 +3,7 @@ use std::{
|
|||||||
fmt::{self, Display, Formatter},
|
fmt::{self, Display, Formatter},
|
||||||
};
|
};
|
||||||
|
|
||||||
use button::Button;
|
use button::{Button, ButtonColor};
|
||||||
use macroquad::{math, prelude::*, rand};
|
use macroquad::{math, prelude::*, rand};
|
||||||
use sol_chess::{
|
use sol_chess::{
|
||||||
board::{Board, BoardState},
|
board::{Board, BoardState},
|
||||||
@ -189,9 +189,9 @@ impl Game {
|
|||||||
let mut selected_square = None;
|
let mut selected_square = None;
|
||||||
self.squares.iter().for_each(|square| {
|
self.squares.iter().for_each(|square| {
|
||||||
let color = if square.is_source {
|
let color = if square.is_source {
|
||||||
Color::from_rgba(152, 152, 152, 255)
|
Color::from_rgba(112, 105, 141, 255)
|
||||||
} else if square.is_target {
|
} else if square.is_target {
|
||||||
Color::from_rgba(152, 129, 123, 255)
|
Color::from_rgba(112, 150, 141, 255)
|
||||||
} else {
|
} else {
|
||||||
square.color
|
square.color
|
||||||
};
|
};
|
||||||
@ -279,7 +279,7 @@ impl Game {
|
|||||||
let dims = measure_text(self.heading_text.as_str(), None, f, 1.0);
|
let dims = measure_text(self.heading_text.as_str(), None, f, 1.0);
|
||||||
self.heading_rect = Rect::new(
|
self.heading_rect = Rect::new(
|
||||||
board_x + (board_width - dims.width) / 2.0,
|
board_x + (board_width - dims.width) / 2.0,
|
||||||
board_y / 2.0,
|
0.85 * board_y,
|
||||||
dims.width,
|
dims.width,
|
||||||
dims.height,
|
dims.height,
|
||||||
);
|
);
|
||||||
@ -316,13 +316,20 @@ impl Game {
|
|||||||
|
|
||||||
let btn_y = board_width + board_y + 0.3 * self.square_width;
|
let btn_y = board_width + board_y + 0.3 * self.square_width;
|
||||||
let btn_x_offset = 0.5 * (board_width / 2. - btn_w);
|
let btn_x_offset = 0.5 * (board_width / 2. - btn_w);
|
||||||
let reset_btn = Button::new("Reset", board_x + btn_x_offset, btn_y, btn_w, btn_h);
|
let reset_btn = Button::new(
|
||||||
|
"Reset",
|
||||||
|
Rect::new(board_x + btn_x_offset, btn_y, btn_w, btn_h),
|
||||||
|
ButtonColor::Yellow,
|
||||||
|
);
|
||||||
let mut next_btn = Button::new(
|
let mut next_btn = Button::new(
|
||||||
"Next",
|
"Next",
|
||||||
|
Rect::new(
|
||||||
board_x + (0.5 * board_width) + btn_x_offset,
|
board_x + (0.5 * board_width) + btn_x_offset,
|
||||||
btn_y,
|
btn_y,
|
||||||
btn_w,
|
btn_w,
|
||||||
btn_h,
|
btn_h,
|
||||||
|
),
|
||||||
|
ButtonColor::Green,
|
||||||
);
|
);
|
||||||
|
|
||||||
next_btn.is_active = false;
|
next_btn.is_active = false;
|
||||||
|
@ -1,17 +1,43 @@
|
|||||||
use macroquad::prelude::*;
|
use macroquad::prelude::*;
|
||||||
|
|
||||||
pub struct Button {
|
pub struct Button {
|
||||||
pub text: String,
|
|
||||||
pub is_active: bool,
|
pub is_active: bool,
|
||||||
|
text: String,
|
||||||
is_down: bool,
|
is_down: bool,
|
||||||
is_clicked: bool,
|
is_clicked: bool,
|
||||||
rect: Rect,
|
rect: Rect,
|
||||||
shadow_width: f32,
|
shadow_width: f32,
|
||||||
|
color: ButtonColor,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub enum ButtonColor {
|
||||||
|
Grey,
|
||||||
|
Green,
|
||||||
|
Yellow,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ButtonColor {
|
||||||
|
fn to_bg_color(&self) -> Color {
|
||||||
|
match self {
|
||||||
|
ButtonColor::Grey => Color::from_rgba(140, 140, 140, 200),
|
||||||
|
ButtonColor::Green => Color::from_rgba(112, 140, 141, 200),
|
||||||
|
ButtonColor::Yellow => Color::from_rgba(123, 70, 85, 200),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn to_shadow_color(&self) -> Color {
|
||||||
|
let bg_color = self.to_bg_color();
|
||||||
|
Color::from_rgba(
|
||||||
|
(bg_color.r * 255.) as u8,
|
||||||
|
(bg_color.g * 255.) as u8,
|
||||||
|
(bg_color.b * 255.) as u8,
|
||||||
|
100,
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Button {
|
impl Button {
|
||||||
pub fn new(text: &str, x: f32, y: f32, width: f32, height: f32) -> Self {
|
pub fn new(text: &str, rect: Rect, color: ButtonColor) -> Self {
|
||||||
let rect = Rect::new(x, y, width, height);
|
|
||||||
Self {
|
Self {
|
||||||
text: text.to_string(),
|
text: text.to_string(),
|
||||||
is_down: false,
|
is_down: false,
|
||||||
@ -19,6 +45,7 @@ impl Button {
|
|||||||
is_active: true,
|
is_active: true,
|
||||||
rect,
|
rect,
|
||||||
shadow_width: 5.0,
|
shadow_width: 5.0,
|
||||||
|
color,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -37,7 +64,11 @@ impl Button {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn draw_button(&self) {
|
fn draw_button(&self) {
|
||||||
let bg_color = Color::from_rgba(190, 190, 190, 255);
|
let bg_color = match self.is_active {
|
||||||
|
true => self.color.to_bg_color(),
|
||||||
|
false => ButtonColor::Grey.to_bg_color(),
|
||||||
|
};
|
||||||
|
|
||||||
let button_draw_offset = self.get_button_draw_offset();
|
let button_draw_offset = self.get_button_draw_offset();
|
||||||
draw_rectangle(
|
draw_rectangle(
|
||||||
self.rect.x + button_draw_offset,
|
self.rect.x + button_draw_offset,
|
||||||
@ -59,7 +90,7 @@ impl Button {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let color = Color::from_rgba(0, 0, 0, 100);
|
let color = self.color.to_shadow_color();
|
||||||
draw_rectangle(
|
draw_rectangle(
|
||||||
self.rect.x + self.rect.w,
|
self.rect.x + self.rect.w,
|
||||||
self.rect.y + self.shadow_width,
|
self.rect.y + self.shadow_width,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user