aboutsummaryrefslogtreecommitdiff
path: root/src/game_tab/left_panel/board/BoardCanvas.cpp
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2023-01-11 10:46:14 +0100
committerLoic Guegan <manzerbredes@mailbox.org>2023-01-11 10:46:14 +0100
commit9091232b609de875894379b3903b555c0a53957e (patch)
tree56b5b0f9296153ffe31bb73c7dd948395b0735a8 /src/game_tab/left_panel/board/BoardCanvas.cpp
parent5fac6bf7af2767e9e8ec57a4ceb9c504f5d8d27f (diff)
Add engine evaluation bar
Diffstat (limited to 'src/game_tab/left_panel/board/BoardCanvas.cpp')
-rw-r--r--src/game_tab/left_panel/board/BoardCanvas.cpp62
1 files changed, 31 insertions, 31 deletions
diff --git a/src/game_tab/left_panel/board/BoardCanvas.cpp b/src/game_tab/left_panel/board/BoardCanvas.cpp
index 3b65e91..97ca3ad 100644
--- a/src/game_tab/left_panel/board/BoardCanvas.cpp
+++ b/src/game_tab/left_panel/board/BoardCanvas.cpp
@@ -123,18 +123,7 @@ void BoardCanvas::ApplyPreferences() {
}
void BoardCanvas::SetupBoard(const GameState &new_gs) {
- gs.board = new_gs.board;
- gs.is_black_turn = new_gs.is_black_turn;
- gs.captures = new_gs.captures;
- gs.white=new_gs.white;
- gs.black=new_gs.black;
- gs.mat_white=new_gs.mat_white;
- gs.mat_black=new_gs.mat_black;
- gs.black_time=new_gs.black_time;
- gs.white_time=new_gs.white_time;
- gs.squares_hl=new_gs.squares_hl;
- gs.arrows=new_gs.arrows;
- gs.promotion=new_gs.promotion;
+ gs=new_gs;
Refresh();
}
@@ -286,25 +275,6 @@ void BoardCanvas::DrawBoard(wxDC &dc) {
}
}
- // Draw badge
- dc.SetPen(wxPen(*wxBLACK, 3));
- std::uint32_t badgeY = boardY;
- std::uint32_t badgeWidth = square_width / 2;
- if (gs.is_black_turn) {
- dc.SetBrush(*wxBLACK_BRUSH);
- if (black_side) {
- badgeY = boardY + (8 * square_width) - badgeWidth;
- }
- } else {
- dc.SetBrush(*wxWHITE_BRUSH);
- if (!black_side) {
- badgeY = boardY + (8 * square_width) - badgeWidth;
- }
- }
- wxRect badge(boardX + (8 * square_width) + badgeWidth/2, badgeY, badgeWidth,
- badgeWidth);
- dc.DrawRectangle(badge);
-
// Draw captures (+player names) first for white then for black
std::uint32_t captures_size = t_captures->GetPiecesSizes();
std::uint8_t padding = 10;
@@ -452,6 +422,36 @@ void BoardCanvas::DrawBoard(wxDC &dc) {
offset++;
}
}
+
+ // Draw engine evaluation bar
+ if(gs.show_evalbar){
+ short w=35,p=20,range=20,border=8;
+ short bar_height=8*square_width-2*border;
+ float visible_px=10; // Part of the bar that will always be visible no matter the evaluation
+ float eval=gs.eval;
+ float eval_norm=range/2+std::min(std::max((-(float)range/2),eval),(float)range/2);
+ float evalbar_height=(eval_norm/(float)range)*bar_height;
+ evalbar_height=std::min(std::max(visible_px,evalbar_height),bar_height-visible_px);
+ wxLogDebug("%f",((float)eval_norm/(float)(range/2)));
+ dc.SetPen(wxNullPen);
+ dc.SetBrush(*wxBLACK_BRUSH);
+ dc.DrawRectangle(wxRect(boardX+8*square_width+p,boardY,w,8*square_width));
+ dc.SetBrush(*wxWHITE_BRUSH);
+ if(!black_side){
+ dc.DrawRectangle(wxRect(boardX+8*square_width+p+border,boardY+border+bar_height-evalbar_height,w-2*border,evalbar_height));
+ }else {
+ dc.DrawRectangle(wxRect(boardX+8*square_width+p+border,boardY+border,w-2*border,evalbar_height));
+ }
+ // Convert eval to string:
+ char buffer[20]; // maximum expected length of the float
+ std::snprintf(buffer, 20, "%.1f", eval);
+ wxString evalstr(buffer);
+ if(eval>0)
+ evalstr="+"+evalstr;
+
+ wxSize evalstr_size=dc.GetTextExtent(evalstr);
+ dc.DrawText(evalstr,boardX+8*square_width+p+(w/2-evalstr_size.x/2),boardY-evalstr_size.y);
+ }
}
void BoardCanvas::MouseEvent(wxMouseEvent &event) {