From 73f7be6c0366fd4334e70d68f0376c64357edd80 Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Mon, 2 Jan 2023 10:56:27 +0100 Subject: [PATCH] Add mat icon --- src/binres/binres.cpp | 2 + src/binres/binres.hpp | 1 + src/binres/mat.png | Bin 0 -> 1833 bytes src/binres/mat_png.hpp | 155 ++++++++++++++++++ src/game_tab/left_panel/board/BoardCanvas.cpp | 8 + src/game_tab/left_panel/board/BoardCanvas.hpp | 10 ++ src/game_tab/left_panel/board/Theme.cpp | 10 +- src/game_tab/left_panel/board/Theme.hpp | 1 + 8 files changed, 186 insertions(+), 1 deletion(-) create mode 100644 src/binres/mat.png create mode 100644 src/binres/mat_png.hpp diff --git a/src/binres/binres.cpp b/src/binres/binres.cpp index 963a714..14a2077 100644 --- a/src/binres/binres.cpp +++ b/src/binres/binres.cpp @@ -19,6 +19,8 @@ wxBitmap LoadPNG(std::string icon) { return (wxBITMAP_PNG(chesscom_8bits)); } else if (icon == "hide") { return (wxBITMAP_PNG(hide)); + } else if (icon == "mat") { + return (wxBITMAP_PNG(mat)); } return (wxNullBitmap); } \ No newline at end of file diff --git a/src/binres/binres.hpp b/src/binres/binres.hpp index 6db39fd..8551932 100644 --- a/src/binres/binres.hpp +++ b/src/binres/binres.hpp @@ -7,6 +7,7 @@ #include "cburnett_png.hpp" #include "chesscom_8bits_png.hpp" #include "hide_png.hpp" +#include "mat_png.hpp" wxBitmap LoadPNG(std::string icon, wxSize size); wxBitmap LoadPNG(std::string icon); \ No newline at end of file diff --git a/src/binres/mat.png b/src/binres/mat.png new file mode 100644 index 0000000000000000000000000000000000000000..54b4b9c1eb59149800a966478dfd821013706c50 GIT binary patch literal 1833 zcmV+^2iEwBP)pD@WndA-Kib4cthUBSEgD}j8jZhv zTVsD1V|_%8iP$EFXp9=8&|Q|TP1VYytzxM3MU7M_wzUOax--Wgt;jHUc4u}L8^3@1 z&DnF$cjw%>_nv!+nUM`dqtOx}PzUg(1XKWA3eX$?d8bT{13U`QUIumvV4ITUj+%ys z!ECfoUWCNsZSz=HRzl!bFv>G@(+|Q1W~D{bw0)Vzl97KO~r9ll{GS81AdT=q~Zq_4Hr zf2jDZPcwZJhek&+F=5Vxvx|$Ns;Y@&W(*xXXySaTisIs8xnn|fe0<{CrlzLE^hc`9 zexzv5YXE1QPR(oX!=cg9$=`mzAD@5riN$X3-hH_9F7wd4^2!=K_w3Vh$Bg>G8NOEl z+&le|m`=nyHr?c9U=I!+Fo^(wg$ozJ@Aq45dwP2nkv~4i3e)Hz9&YjAcgs2ME!Q(v9yM2d+s|;CtnVGR; z$4(PBJ3k-uO6NIgra;%#7pD@FLN-UEivd_(nOp3bCdB9SAsD>SVz+0{9vnS-)WlU* zh9HEq1p@)AIyyQgduUP!3w{zFmmLQV$j3)cPL9R4r$;tE(x=rFkT@ALfKx)^@wR!) zSnkG)3_X&Zm!*}Rt&{O#g26XLqtO!JpEqKtt3cK-m|JX@jStCJ$S@c?cm81FX3w6D zl9Cd44HASZa2s%HLhS5}^gG#43=HhX2OBopKHs+OdyI{ZnYblOuCRQ16Nv=2ZvDo@ z6&4mqQ|p{_=AwDcJ*mR_sa6Xwps(B8&rhnfKb;5w`1afH@c0u?rZ>zY%F5>BowrlZ z2x^i`MA9e1|4~dc23>(BnE8^^9f()3pi9KbLc#wV#HgTHY}0NqF7V>$=bs0#`krPJ zcX@R+)~QTWN%Z~LXW|MA3s73>a{jO)-}5A>>$+uqm6w-?va&LZZQqZ5_$y)F6NN${ z5P2`i2msQpqf_kKwF_h8<0dW?S_C1ieI!q-)cX&II3@rb@#3Mo+gVxx&Qs7m_z1;1 zHnjt2NM&~S>NOY`*qwz2o#UmoFQB^mGDo%qd?gs@pW&Eh98BmJMAUV<1MvznxJ#%f zjL7K@#48L^qiRh8FM3klZL)V%9 z6{2a{J`g^379Us=TvMZswz+oXKo|sCQge+-n90t*vbY5iR!!E641KsQTikRBUvxo)pw`Yf&+m7%I42^7_t=%tY22wV5vz-4|=+~x_rlv z9r+Z%H8N*T4{{8Haqu^D3i^FM6crV@761SQiWH5EUMo9Kv^{!@#bS8`y&b^i8MT^y zY-K2oc1LfvpAJpajwdGc1^{2qSZEGGpor?5b+w%cAcYVBXl!g8D<1j%x^!b^Cc(h^ zKz>0}O-;?QRCbOp48&uRn;Ccmz?svbSeVK@KQ}YzUgAt@z_jUsxeqRRaaN%db8*0n$yWUTE captures, std::string white_player, std::string black_player) { + gs.board = board; + gs.is_black_turn = is_black_turn; + gs.captures = captures; + gs.white=white_player; + gs.black=black_player; + this->board = board; this->is_black_turn = is_black_turn; this->captures = captures; @@ -241,6 +247,8 @@ void BoardCanvas::DrawBoard(wxDC &dc) { } if (piece != ' ') { dc.DrawBitmap(*t->Get(piece), px, py, false); + if(piece == 'k' || piece == 'K') + dc.DrawBitmap(*t->Get('#'), x+square_width/2+centrer_offset, y+centrer_offset, false); } } } diff --git a/src/game_tab/left_panel/board/BoardCanvas.hpp b/src/game_tab/left_panel/board/BoardCanvas.hpp index 9a00262..5d7c76d 100644 --- a/src/game_tab/left_panel/board/BoardCanvas.hpp +++ b/src/game_tab/left_panel/board/BoardCanvas.hpp @@ -58,6 +58,15 @@ typedef struct AnimState { wxPoint transVect; } AnimState; +typedef struct GameState { + std::string white, black; + std::string board; + std::map captures; + bool is_black_turn; + bool mat_black; + bool mat_white; +} GameState; + class BoardCanvas : public wxPanel { // *t is theme for board+pieces and // *t_captures is theme for captured pieces (scale down version of t) @@ -78,6 +87,7 @@ class BoardCanvas : public wxPanel { // Current animation state AnimState adata; + GameState gs; public: BoardCanvas(wxFrame *parent); diff --git a/src/game_tab/left_panel/board/Theme.cpp b/src/game_tab/left_panel/board/Theme.cpp index 6c662dc..f72dfab 100644 --- a/src/game_tab/left_panel/board/Theme.cpp +++ b/src/game_tab/left_panel/board/Theme.cpp @@ -11,6 +11,8 @@ Theme::Theme() : square_radius(10) { config->Read("board/theme/squares/path", "default").ToStdString(); wxFileName square_file(square); CONFIG_CLOSE(config); + // Mat + skin['#']=LoadPNG("mat").ConvertToImage(); // Piece if (piece == "default" || !piece_file.FileExists()) { wxLogDebug("Loading piece skin from binres"); @@ -95,12 +97,18 @@ wxBitmap *Theme::Get(char c) { return (skin_scaled[c]); } void Theme::ResizePieces(std::uint32_t width) { for (std::pair c : skin) { - if (c.first != 's' && c.first != 'S') { + if (c.first != 's' && c.first != 'S' && c.first != '#') { if (skin_scaled.count(c.first)) delete skin_scaled[c.first]; skin_scaled[c.first] = new wxBitmap(c.second.Scale(width, width, wxIMAGE_QUALITY_HIGH)); } + else if(c.first == '#'){ + if (skin_scaled.count(c.first)) + delete skin_scaled[c.first]; + skin_scaled[c.first] = + new wxBitmap(c.second.Scale(width*MAT_SIZE_FACTOR, width*MAT_SIZE_FACTOR, wxIMAGE_QUALITY_HIGH)); + } } } diff --git a/src/game_tab/left_panel/board/Theme.hpp b/src/game_tab/left_panel/board/Theme.hpp index b896d09..c3acf10 100644 --- a/src/game_tab/left_panel/board/Theme.hpp +++ b/src/game_tab/left_panel/board/Theme.hpp @@ -8,6 +8,7 @@ #define ELT_DIM 200 #define DEFAULT_SIZE 80 #define PIECE_SIZE_FACTOR 0.8 // Should be between 0 and 1 +#define MAT_SIZE_FACTOR 0.4 #define DEFAULT_PIECE_THEME "assets/pieces/cburnett.png" #define DEFAULT_SQUARE_THEME "assets/boards/chesscom_8bits.png"