diff options
Diffstat (limited to 'src/game_tab/left_panel/board/BoardCanvas.cpp')
| -rw-r--r-- | src/game_tab/left_panel/board/BoardCanvas.cpp | 62 |
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) { |
