|
|
|
@ -20,6 +20,9 @@ pub struct GameboardViewSettings {
|
|
|
|
|
pub selected_cell_background_color: Color,
|
|
|
|
|
pub text_color: Color,
|
|
|
|
|
pub loaded_cell_background_color: Color,
|
|
|
|
|
pub invalid_cell_background_color: Color,
|
|
|
|
|
pub invalid_selected_cell_background_color: Color,
|
|
|
|
|
pub completed_background_color: Color,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl GameboardViewSettings {
|
|
|
|
@ -38,6 +41,9 @@ impl GameboardViewSettings {
|
|
|
|
|
selected_cell_background_color: [0.9, 0.9, 1.0, 1.0],
|
|
|
|
|
text_color: [0.0, 0.0, 0.1, 1.0],
|
|
|
|
|
loaded_cell_background_color: [1.0, 1.0, 1.0, 1.0],
|
|
|
|
|
invalid_cell_background_color: [1.0, 0.0, 0.0, 1.0],
|
|
|
|
|
invalid_selected_cell_background_color: [1.0, 0.0, 0.5, 1.0],
|
|
|
|
|
completed_background_color: [0.0, 1.0, 0.0, 1.0],
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -70,7 +76,20 @@ impl GameboardView {
|
|
|
|
|
settings.size,
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
Rectangle::new(settings.background_color).draw(board_rect, &c.draw_state, c.transform, g);
|
|
|
|
|
if controller.gameboard.completed {
|
|
|
|
|
Rectangle::new(settings.completed_background_color).draw(
|
|
|
|
|
board_rect,
|
|
|
|
|
&c.draw_state,
|
|
|
|
|
c.transform,
|
|
|
|
|
g,
|
|
|
|
|
);
|
|
|
|
|
} else {
|
|
|
|
|
Rectangle::new(settings.background_color).draw(
|
|
|
|
|
board_rect,
|
|
|
|
|
&c.draw_state,
|
|
|
|
|
c.transform,
|
|
|
|
|
g,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
for i in 0..9 {
|
|
|
|
|
for j in 0..9 {
|
|
|
|
@ -82,18 +101,32 @@ impl GameboardView {
|
|
|
|
|
c,
|
|
|
|
|
g,
|
|
|
|
|
);
|
|
|
|
|
} else if controller.gameboard.cells[i][j].invalid {
|
|
|
|
|
color_cell(
|
|
|
|
|
settings,
|
|
|
|
|
[j, i],
|
|
|
|
|
settings.invalid_cell_background_color,
|
|
|
|
|
c,
|
|
|
|
|
g,
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if let Some(ind) = controller.selected_cell {
|
|
|
|
|
let color = if !controller.gameboard.cells[ind[1]][ind[0]].loaded {
|
|
|
|
|
let cell = controller.gameboard.cells[ind[1]][ind[0]];
|
|
|
|
|
let color = if !cell.loaded {
|
|
|
|
|
if !cell.invalid {
|
|
|
|
|
settings.selected_cell_background_color
|
|
|
|
|
} else {
|
|
|
|
|
settings.invalid_selected_cell_background_color
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
settings.loaded_cell_background_color
|
|
|
|
|
};
|
|
|
|
|
color_cell(settings, ind, color, c, g);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let text_image = Image::new_color(settings.text_color);
|
|
|
|
|
let cell_size = settings.size / 9.0;
|
|
|
|
|