mirror of
https://gitlab.com/manzerbredes/ochess.git
synced 2025-07-03 02:37:39 +00:00
Improve UI
This commit is contained in:
parent
2fd237a78f
commit
98e31a2c11
7 changed files with 116 additions and 16 deletions
|
@ -75,7 +75,7 @@ void BoardCanvas::OnPaint(wxPaintEvent &event) {
|
|||
adata.frame++;
|
||||
if(adata.frame>=adata.frames){
|
||||
adata.reuseBuffer=false;
|
||||
SetupBoard(adata.final_board, adata.final_is_black_turn, adata.final_captures);
|
||||
SetupBoard(adata.final_board, adata.final_is_black_turn, adata.final_captures,white_player,black_player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -103,10 +103,13 @@ void BoardCanvas::ApplyPreferences() {
|
|||
}
|
||||
|
||||
void BoardCanvas::SetupBoard(std::string board, bool is_black_turn,
|
||||
std::map<char, std::uint8_t> captures) {
|
||||
std::map<char, std::uint8_t> captures,
|
||||
std::string white_player, std::string black_player) {
|
||||
this->board = board;
|
||||
this->is_black_turn = is_black_turn;
|
||||
this->captures = captures;
|
||||
this->white_player=white_player;
|
||||
this->black_player=black_player;
|
||||
Refresh();
|
||||
}
|
||||
|
||||
|
@ -208,8 +211,9 @@ void BoardCanvas::DrawBoard(wxDC &dc) {
|
|||
if(rank==7){ // Bottom numbers
|
||||
dc.DrawText(wxString((char)('a'+7-file)),
|
||||
x+square_width/2-numbers_size.x/2,y+square_width);
|
||||
}
|
||||
}
|
||||
|
||||
// Draw pieces
|
||||
std::uint8_t prank = rank;
|
||||
std::uint8_t pfile = file;
|
||||
if (black_side) {
|
||||
|
@ -252,13 +256,16 @@ void BoardCanvas::DrawBoard(wxDC &dc) {
|
|||
badgeWidth);
|
||||
dc.DrawRectangle(badge);
|
||||
|
||||
// Draw captures first for white then for black
|
||||
// Draw captures (+player names) first for white then for black
|
||||
std::uint32_t captures_size = t_captures->GetPiecesSizes();
|
||||
std::uint8_t padding = numbers_size.y+10;
|
||||
std::uint32_t offsetX = 0;
|
||||
std::uint32_t offsetY = -(captures_size + padding);
|
||||
std::uint32_t offsetYPlayerName=offsetY-captures_size;
|
||||
// White
|
||||
if (black_side) {
|
||||
offsetY = 8 * square_width + padding;
|
||||
offsetYPlayerName = offsetY+captures_size;
|
||||
}
|
||||
for (char p : {'P', 'N', 'B', 'R', 'Q'}) {
|
||||
if (captures.find(p) != captures.end()) {
|
||||
|
@ -269,11 +276,15 @@ void BoardCanvas::DrawBoard(wxDC &dc) {
|
|||
offsetX += captures_size / 2;
|
||||
}
|
||||
}
|
||||
dc.DrawText(wxString(black_player),boardX,boardY + offsetYPlayerName);
|
||||
// Black
|
||||
offsetX = 0;
|
||||
if (black_side) {
|
||||
offsetY = -(captures_size + padding);
|
||||
offsetYPlayerName = offsetY-captures_size;
|
||||
} else {
|
||||
offsetY = 8 * square_width + padding;
|
||||
offsetYPlayerName = offsetY+captures_size;
|
||||
}
|
||||
for (char p : {'p', 'n', 'b', 'r', 'q'}) {
|
||||
if (captures.find(p) != captures.end()) {
|
||||
|
@ -284,6 +295,7 @@ void BoardCanvas::DrawBoard(wxDC &dc) {
|
|||
offsetX += captures_size / 2;
|
||||
}
|
||||
}
|
||||
dc.DrawText(wxString(white_player),boardX,boardY + offsetYPlayerName);
|
||||
|
||||
// Draw dragging piece
|
||||
if (DrawDraggingPiece) {
|
||||
|
|
|
@ -74,6 +74,7 @@ class BoardCanvas : public wxPanel {
|
|||
Theme *t, *t_captures;
|
||||
// Board to draw (char version)
|
||||
std::string board;
|
||||
std::string white_player,black_player;
|
||||
|
||||
// Various canvas state variables
|
||||
bool black_side, is_dragging, valid_drag, is_black_turn;
|
||||
|
@ -99,7 +100,8 @@ public:
|
|||
void Zoom(std::int32_t zoom);
|
||||
void Swap();
|
||||
void SetupBoard(std::string board, bool is_black_turn,
|
||||
std::map<char, std::uint8_t> captures);
|
||||
std::map<char, std::uint8_t> captures,
|
||||
std::string white_player, std::string black_player);
|
||||
void Animate(const std::string &board, bool is_black_turn, std::map<char, std::uint8_t> captures, std::string src, std::string dst,bool faster);
|
||||
void SetClockTime(short hours, short min, short sec, bool IsBlack);
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue