From: Benjamin Auder <benjamin.auder@somewhere> Date: Tue, 24 Mar 2020 00:37:00 +0000 (+0100) Subject: Better Ball rules. Buggish but almost OK Synchrone variant X-Git-Url: https://git.auder.net/%7B%7B%20asset%28%27mixstore/css/img/pieces/current/mini-custom.min.css?a=commitdiff_plain;h=d54f6261c9e30f4eabb402ad301dd5c5e40fb656;p=vchess.git Better Ball rules. Buggish but almost OK Synchrone variant --- diff --git a/TODO b/TODO index 819ebc87..8d3eabcf 100644 --- a/TODO +++ b/TODO @@ -1,4 +1,6 @@ # New variants +Doublearmy: 2 kings remaining get mated. + Landing pieces from empty board: https://www.chessvariants.com/diffsetup.dir/unachess.html Parachute v1 & 2 @@ -12,10 +14,6 @@ Goal is still checkmate. Take(a)n(d)make : if capture a piece, take its power for the last of the turn and make a move like it. If a pawn taken: direction of the capturer. -Maxima, Interweave, Roccoco - -Synchrone Chess: allow to anticipate en-passant capture as well :) - Dynamo chess -Omega chess (ask first) +Maxima, Interweave, Roccoco diff --git a/client/README.md b/client/README.md index 25bf68eb..1aa3c003 100644 --- a/client/README.md +++ b/client/README.md @@ -32,8 +32,9 @@ See [Configuration Reference](https://cli.vuejs.org/config/). ## Resources - - Vue.js + Vue router + Webpack, - - mini.css, - - Google font 'Open Sans' +- Vue.js + Vue router, +- Webpack, +- mini.css Sounds and pieces images where found at various locations. +Fonts were found on Google Fonts. diff --git a/client/public/images/pieces/Ball/bd.svg b/client/public/images/pieces/Ball/bd.svg new file mode 100644 index 00000000..8c5339cc --- /dev/null +++ b/client/public/images/pieces/Ball/bd.svg @@ -0,0 +1,103 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + height="100%" + width="100%" + version="1.1" + viewBox="0 0 2048 2048" + id="svg18" + sodipodi:docname="bd.svg" + inkscape:version="0.92.4 5da689c313, 2019-01-14"> + <metadata + id="metadata24"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs22" /> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="960" + inkscape:window-height="1060" + id="namedview20" + showgrid="false" + inkscape:zoom="0.11523438" + inkscape:cx="1058.7119" + inkscape:cy="1024" + inkscape:window-x="0" + inkscape:window-y="20" + inkscape:window-maximized="0" + inkscape:current-layer="svg18" /> + <path + style="color:#000000;display:block;fill:#000000;fill-rule:nonzero" + d="m 490,643 q 4,9 13,27 17,42 17,50 -2,28 -29,28 -20,0 -47,-57 -4,-8 -12,-14 -27,-28 8,-47 32,-19 50,13 z m 590,371 q 70,92 69,205 -4,33 -38,33 -46,0 -36,-34 3,-55 -11,-91 -23,-57 -51,-85 -15,-30 18,-44 32,-15 49,16 z m -261,488 q -5,36 2,78 -60,-12 -113,-56 -32,-17 -15,-47 17,-31 47,-10 21,11 38,20 17,9 41,15 z M 1756,234 q -1,0 2,54 3,54 3,118 1,125 0,258 -1,133 -36,267 -34,128 -75,218 -41,90 -89,157 -72,108 -196,183 -124,75 -259,98 4,-23 3,-47 -1,-24 0,-46 97,-33 183,-82 86,-49 126,-106 48,-66 89,-156 41,-90 75,-219 34,-133 35,-266 1,-133 1,-259 0,-63 -3,-117 -3,-54 0,-55 z m -677,1423 q 157,-10 291,-81 134,-71 228,-182 66,-78 124,-188 58,-110 94,-233 40,-143 50,-300 10,-157 11,-292 V 163 q 0,0 -155,0 -155,0 -404,0 H 647 q -9,0 -9,49 0,49 7,79 4,24 19,68 15,44 50,107 16,32 76,93 60,61 138,143 45,46 70,116 25,70 22,127 -37,-30 -81,-49 -212,-76 -307,-220 -7,-9 -45,-81 -20,-38 -34,-52 -19,-19 -55,-21 -56,-3 -87,54 -42,-12 -75,-10 -56,21 -81,45 -51,51 -66,102 -15,51 -16,110 0,84 104,222 122,159 130,242 0,36 7,81 6,31 25,60 13,20 17,27 4,7 17,23 9,12 15,18 6,6 15,18 11,13 28,30 -53,146 -43,301 199,-71 334,-223 33,113 130,183 80,-56 127,-148 z M 404,821 q 29,20 6,48 -24,23 -53,4 -61,-40 -65,-105 1,-33 39,-31 36,3 35,37 8,32 38,47 z m 252,498 q 22,11 22,11 30,12 19,44 -12,30 -46,20 -118,-43 -163,-158 -7,-33 24,-45 31,-10 42,22 8,17 12,22 11,-9 29,-12 61,-10 71,54 3,22 -10,42 z" + display="block" + id="path2" + inkscape:connector-curvature="0" /> + <g + id="g16" + transform="matrix(1,0,0,-1,0,2008)" + style="fill:#ffffff;fill-rule:nonzero"> + <path + style="color:#000000;display:block" + d="m 490,1365 q 4,-9 13,-27 17,-42 17,-50 -2,-28 -29,-28 -20,0 -47,57 -4,8 -12,14 -27,28 8,47 32,19 50,-13 z" + display="block" + id="path4" + inkscape:connector-curvature="0" /> + <path + style="color:#000000;display:block" + d="m 1080,994 q 70,-92 69,-205 -4,-33 -38,-33 -46,0 -36,34 3,55 -11,91 -23,57 -51,85 -15,30 18,44 32,15 49,-16 z" + display="block" + id="path6" + inkscape:connector-curvature="0" /> + <path + style="color:#000000;display:block" + d="m 819,506 q -5,-36 2,-78 -60,12 -113,56 -32,17 -15,47 17,31 47,10 21,-11 38,-20 17,-9 41,-15 z" + display="block" + id="path8" + inkscape:connector-curvature="0" /> + <path + style="color:#000000;display:block" + d="m 1756,1774 q -1,0 2,-54 3,-54 3,-118 1,-125 0,-258 -1,-133 -36,-267 -34,-128 -75,-218 -41,-90 -89,-157 -72,-108 -196,-183 -124,-75 -259,-98 4,23 3,47 -1,24 0,46 97,33 183,82 86,49 126,106 48,66 89,156 41,90 75,219 34,133 35,266 1,133 1,259 0,63 -3,117 -3,54 0,55 z" + display="block" + id="path10" + inkscape:connector-curvature="0" /> + <path + style="color:#000000;display:block" + d="m 404,1187 q 29,-20 6,-48 -24,-23 -53,-4 -61,40 -65,105 1,33 39,31 36,-3 35,-37 8,-32 38,-47 z" + display="block" + id="path12" + inkscape:connector-curvature="0" /> + <path + style="color:#000000;display:block" + d="m 656,689 q 22,-11 22,-11 30,-12 19,-44 -12,-30 -46,-20 -118,43 -163,158 -7,33 24,45 31,10 42,-22 8,-17 12,-22 11,9 29,12 61,10 71,-54 3,-22 -10,-42 z" + display="block" + id="path14" + inkscape:connector-curvature="0" /> + </g> + <path + style="fill:#aa0000;fill-opacity:1;stroke-width:8.67796612" + d="m 646.21921,175.7921 c -10.00828,10.0082 -6.30707,75.2883 7.31789,129.0694 27.57329,108.8385 73.24924,181.1348 197.493,312.5933 128.44638,135.9053 160.6095,189.813 169.0975,283.4197 l 4.725,52.1083 -33.83647,-22.2525 C 972.40607,918.4914 927.89153,896.0671 892.09492,880.8984 814.15749,847.8727 749.05703,807.3133 697.06758,759.3912 660.11356,725.3281 641.81606,699.5021 579.76729,593.8278 536.34666,519.8789 489.79786,506.2067 437.57098,552.0626 c -26.00964,22.8367 -34.35014,25.5487 -63.99469,20.8083 -67.1276,-10.7341 -154.55105,60.6648 -180.25316,147.2132 -33.0723,111.3665 -11.69934,184.2653 99.51191,339.4142 86.82291,121.1252 111.75745,175.1201 121.88812,263.9448 8.87757,77.8376 21.35225,103.8007 88.01133,183.175 l 32.96696,39.2554 -17.81128,56.2023 c -10.64395,33.5862 -19.77595,92.3966 -22.69362,146.1478 l -4.88234,89.9456 20.82256,-6.4593 c 69.74805,-21.6364 181.04741,-92.4125 256.8937,-163.3607 l 54.17301,-50.6745 20.73439,46.3355 c 24.62032,55.0195 87.52909,128.7762 109.83614,128.7762 16.95035,0 88.96959,-74.9661 108.73049,-113.1795 10.4458,-20.1998 20.4378,-24.5143 78.4435,-33.8717 281.7725,-45.4547 487.1035,-222.2127 620.3091,-533.9895 78.1472,-182.9086 102.0903,-333.0787 109.6803,-687.9084 l 5.4296,-253.8305 h -611.6812 c -336.42473,0 -614.28467,2.6034 -617.46659,5.7853 z M 1762.8767,315.3627 c 13.654,206.1902 2.6158,460.2011 -25.2131,580.1967 -34.5017,148.7685 -87.7838,281.2056 -154.8356,384.8571 -76.2582,117.8831 -159.8738,189.6003 -292.9046,251.2247 -65.0716,30.1433 -179.5274,65.7966 -187.0557,58.2683 -1.6178,-1.6178 -0.2907,-25.4936 2.9486,-53.0572 4.6832,-39.8466 9.4128,-51.037 23.0817,-54.6114 34.386,-8.9922 175.7428,-81.9213 215.8462,-111.3599 97.5639,-71.6185 192.5346,-263.6222 246.305,-497.959 11.9645,-52.1423 15.7265,-122.4629 18.9182,-353.6271 l 3.984,-288.5424 h 71.6612 71.6612 z M 507.37237,673.0288 c 20.55826,51.706 15.68732,78.4017 -14.30534,78.4017 -16.11508,0 -78.26025,-81.3404 -78.26025,-102.4331 0,-14.353 27.61574,-27.8896 52.04043,-25.5092 17.46106,1.7019 25.32851,11.3195 40.52516,49.5406 z M 360.47983,744.922 c 4.69917,5.9661 10.98909,21.1073 13.97759,33.647 2.98851,12.5399 15.24222,29.2265 27.23049,37.0815 37.59148,24.6308 23.39389,65.9495 -22.66105,65.9495 -48.06383,0 -106.80373,-90.7585 -85.04876,-131.408 9.9471,-18.5863 53.30676,-22.0223 66.50173,-5.27 z m 719.12927,262.6575 c 49.0435,49.0436 91.0188,201.7774 64.301,233.9703 -12.9227,15.5709 -57.148,17.6161 -66.1449,3.0588 -3.4481,-5.5791 -7.1601,-30.2561 -8.2488,-54.8377 -1.8989,-42.87 -35.3883,-126.2551 -55.7649,-138.8486 -15.31299,-9.4639 -9.6222,-37.6229 10.4438,-51.6777 25.5672,-17.9079 29.8089,-17.2699 55.4138,8.3349 z m -525.28107,197.4576 c 7.59653,16.6725 14.31795,19.1991 43.63712,16.4031 47.48399,-4.5284 68.50265,15.2454 68.50265,64.4454 0,29.4996 3.56342,38.2521 17.35593,42.6297 21.36617,6.7813 23.78917,48.9425 3.76768,65.5589 -11.14905,9.2528 -19.32737,9.24 -45.55933,-0.071 -94.58155,-33.5733 -185.04038,-152.38 -149.04466,-195.7522 16.50526,-19.8876 50.92201,-16.0799 61.34061,6.7864 z m 220.42209,272.8114 47.92107,23.5027 v 42.1668 c 0,39.7279 -1.12936,41.8185 -19.52543,36.1437 -51.63915,-15.9295 -119.32203,-61.1884 -119.32203,-79.7896 0,-19.8835 17.17128,-45.5263 30.48595,-45.5263 6.88566,0 34.08385,10.5762 60.44044,23.5027 z" + id="path26" + inkscape:connector-curvature="0" /> +</svg> diff --git a/client/public/images/pieces/Ball/bh.svg b/client/public/images/pieces/Ball/bh.svg new file mode 100644 index 00000000..6dbea895 --- /dev/null +++ b/client/public/images/pieces/Ball/bh.svg @@ -0,0 +1,98 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + height="100%" + width="100%" + version="1.1" + viewBox="0 0 2048 2048" + id="svg112" + sodipodi:docname="bh.svg" + inkscape:version="0.92.4 5da689c313, 2019-01-14"> + <metadata + id="metadata118"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs116" /> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="960" + inkscape:window-height="1060" + id="namedview114" + showgrid="false" + inkscape:zoom="0.11523438" + inkscape:cx="1024" + inkscape:cy="1024" + inkscape:window-x="0" + inkscape:window-y="20" + inkscape:window-maximized="0" + inkscape:current-layer="svg112" /> + <path + style="color:#000000;display:block;fill:#000000;fill-rule:nonzero" + d="m 490,643 q 4,9 13,27 17,42 17,50 -2,28 -29,28 -20,0 -47,-57 -4,-8 -12,-14 -27,-28 8,-47 32,-19 50,13 z m 590,371 q 70,92 69,205 -4,33 -38,33 -46,0 -36,-34 3,-55 -11,-91 -23,-57 -51,-85 -15,-30 18,-44 32,-15 49,16 z m -261,488 q -5,36 2,78 -60,-12 -113,-56 -32,-17 -15,-47 17,-31 47,-10 21,11 38,20 17,9 41,15 z M 1756,234 q -1,0 2,54 3,54 3,118 1,125 0,258 -1,133 -36,267 -34,128 -75,218 -41,90 -89,157 -72,108 -196,183 -124,75 -259,98 4,-23 3,-47 -1,-24 0,-46 97,-33 183,-82 86,-49 126,-106 48,-66 89,-156 41,-90 75,-219 34,-133 35,-266 1,-133 1,-259 0,-63 -3,-117 -3,-54 0,-55 z m -677,1423 q 157,-10 291,-81 134,-71 228,-182 66,-78 124,-188 58,-110 94,-233 40,-143 50,-300 10,-157 11,-292 V 163 q 0,0 -155,0 -155,0 -404,0 H 647 q -9,0 -9,49 0,49 7,79 4,24 19,68 15,44 50,107 16,32 76,93 60,61 138,143 45,46 70,116 25,70 22,127 -37,-30 -81,-49 -212,-76 -307,-220 -7,-9 -45,-81 -20,-38 -34,-52 -19,-19 -55,-21 -56,-3 -87,54 -42,-12 -75,-10 -56,21 -81,45 -51,51 -66,102 -15,51 -16,110 0,84 104,222 122,159 130,242 0,36 7,81 6,31 25,60 13,20 17,27 4,7 17,23 9,12 15,18 6,6 15,18 11,13 28,30 -53,146 -43,301 199,-71 334,-223 33,113 130,183 80,-56 127,-148 z M 404,821 q 29,20 6,48 -24,23 -53,4 -61,-40 -65,-105 1,-33 39,-31 36,3 35,37 8,32 38,47 z m 252,498 q 22,11 22,11 30,12 19,44 -12,30 -46,20 -118,-43 -163,-158 -7,-33 24,-45 31,-10 42,22 8,17 12,22 11,-9 29,-12 61,-10 71,54 3,22 -10,42 z" + display="block" + id="path96" + inkscape:connector-curvature="0" /> + <g + id="g110" + transform="matrix(1,0,0,-1,0,2008)" + style="fill:#ffffff;fill-rule:nonzero"> + <path + style="color:#000000;display:block" + d="m 490,1365 q 4,-9 13,-27 17,-42 17,-50 -2,-28 -29,-28 -20,0 -47,57 -4,8 -12,14 -27,28 8,47 32,19 50,-13 z" + display="block" + id="path98" + inkscape:connector-curvature="0" /> + <path + style="color:#000000;display:block" + d="m 1080,994 q 70,-92 69,-205 -4,-33 -38,-33 -46,0 -36,34 3,55 -11,91 -23,57 -51,85 -15,30 18,44 32,15 49,-16 z" + display="block" + id="path100" + inkscape:connector-curvature="0" /> + <path + style="color:#000000;display:block" + d="m 819,506 q -5,-36 2,-78 -60,12 -113,56 -32,17 -15,47 17,31 47,10 21,-11 38,-20 17,-9 41,-15 z" + display="block" + id="path102" + inkscape:connector-curvature="0" /> + <path + style="color:#000000;display:block" + d="m 1756,1774 q -1,0 2,-54 3,-54 3,-118 1,-125 0,-258 -1,-133 -36,-267 -34,-128 -75,-218 -41,-90 -89,-157 -72,-108 -196,-183 -124,-75 -259,-98 4,23 3,47 -1,24 0,46 97,33 183,82 86,49 126,106 48,66 89,156 41,90 75,219 34,133 35,266 1,133 1,259 0,63 -3,117 -3,54 0,55 z" + display="block" + id="path104" + inkscape:connector-curvature="0" /> + <path + style="color:#000000;display:block" + d="m 404,1187 q 29,-20 6,-48 -24,-23 -53,-4 -61,40 -65,105 1,33 39,31 36,-3 35,-37 8,-32 38,-47 z" + display="block" + id="path106" + inkscape:connector-curvature="0" /> + <path + style="color:#000000;display:block" + d="m 656,689 q 22,-11 22,-11 30,-12 19,-44 -12,-30 -46,-20 -118,43 -163,158 -7,33 24,45 31,10 42,-22 8,-17 12,-22 11,9 29,12 61,10 71,-54 3,-22 -10,-42 z" + display="block" + id="path108" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/client/public/images/pieces/Ball/bw.svg b/client/public/images/pieces/Ball/bw.svg deleted file mode 100644 index 6d4f9604..00000000 --- a/client/public/images/pieces/Ball/bw.svg +++ /dev/null @@ -1,135 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - id="Layer_1" - x="0px" - y="0px" - viewBox="0 0 62 64" - xml:space="preserve" - sodipodi:docname="bw.svg" - inkscape:version="0.92.4 5da689c313, 2019-01-14"><defs - id="defs28" /><sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1920" - inkscape:window-height="1060" - id="namedview26" - showgrid="false" - inkscape:zoom="14.75" - inkscape:cx="32.220339" - inkscape:cy="32" - inkscape:window-x="0" - inkscape:window-y="20" - inkscape:window-maximized="0" - inkscape:current-layer="Layer_1" /><g - id="wildebeest__x5F_glyphs" - transform="matrix(0.8425369,0,0,0.89830508,4.8813559,3.5254237)"><path - d="m 25,49 c -0.6,0 -1,0.4 -1,1 0,0.6 0.4,1 1,1 h 3 c 0.6,0 1,-0.4 1,-1 0,-0.6 -0.4,-1 -1,-1 z" - id="path2" - inkscape:connector-curvature="0" /><path - d="m 34,49 c -0.6,0 -1,0.4 -1,1 0,0.6 0.4,1 1,1 h 3 c 0.6,0 1,-0.4 1,-1 0,-0.6 -0.4,-1 -1,-1 z" - id="path4" - inkscape:connector-curvature="0" /><path - d="M 11,36 V 24.7 c -0.1,0.2 -0.2,0.3 -0.4,0.5 -1.3,1.4 -3.1,2.3 -5,2.4 H 5 V 42.5 C 5,43.8 3.9,45 2.5,45 1.1,45 0,43.4 0,42 v 2.5 c 0,3.6 3,6.9 9,6.5 6.9,-0.5 7,-4.4 7,-6.4 C 12.9,43.2 11,39 11,36 Z" - id="path6" - inkscape:connector-curvature="0" /><path - d="M 11,12 C 11,8.1 14.1,5 18,5 H 28.8 C 26.6,2 22.9,0 17.5,0 10.6,0 5,5.6 5,12.5 V 19 h 6 z" - id="path8" - inkscape:connector-curvature="0" /><path - d="M 5.5,25.6 C 6.9,25.5 8.2,24.9 9.1,23.9 9.8,23 10.3,22 10.4,21 H 0.2 c 0.3,1.1 0.8,2.1 1.6,3 1.1,1.1 2.4,1.6 3.7,1.6 z" - id="path10" - inkscape:connector-curvature="0" /><path - d="m 51,12 v 7 h 6 V 12.5 C 57,5.6 51.4,0 44.5,0 39.1,0 35.5,2 33.2,5 H 44 c 3.9,0 7,3.1 7,7 z" - id="path12" - inkscape:connector-curvature="0" /><path - d="m 61.8,43 c -0.5,1.6 -2.3,2.9 -4,1.2 C 57.3,43.6 57,42.8 57,42 V 27.6 h -0.6 c -1.9,-0.1 -3.7,-1 -5,-2.4 C 51.3,25 51.1,24.9 51,24.7 V 36 c 0,3 -1.9,7.2 -5,8.6 0,2 0.1,5.9 7,6.4 6,0.4 9,-2.9 9,-6.5 V 43 Z" - id="path14" - inkscape:connector-curvature="0" /><path - d="m 52.9,23.8 c 0.9,1 2.2,1.7 3.6,1.7 1.3,0.1 2.6,-0.5 3.7,-1.6 0.8,-0.8 1.4,-1.9 1.6,-3 H 51.6 c 0.1,1.1 0.6,2.1 1.3,2.9 z" - id="path16" - inkscape:connector-curvature="0" /><path - d="M 49,36 V 21 h -6 c -2.2,0 -4,1.8 -4,4 V 52.6 L 37.4,57 h -13 L 23,53.6 V 25 c 0,-2.2 -1.8,-4 -4,-4 h -6 v 15 c 0,2.2 1.5,5.4 3.5,6.6 l 6.4,16.1 c 0.1,3 2.7,5.3 6.1,5.3 h 4 c 3.3,0 5.8,-2.2 5.9,-5.3 L 44.8,42.9 C 47.1,42.2 49,38.5 49,36 Z M 18,29 c -1.1,0 -2,-0.9 -2,-2 0,-1.1 0.9,-2 2,-2 1.1,0 2,0.9 2,2 0,1.1 -0.9,2 -2,2 z m 15,33 h -4 c -1.9,0 -3.8,-1 -4.1,-3 h 11.9 c -0.2,1.8 -1.7,3 -3.8,3 z M 44,29 c -1.1,0 -2,-0.9 -2,-2 0,-1.1 0.9,-2 2,-2 1.1,0 2,0.9 2,2 0,1.1 -0.9,2 -2,2 z" - id="path18" - inkscape:connector-curvature="0" /><path - d="m 43,19 h 6 V 12 C 49,9.2 46.8,7 44,7 H 18 c -2.8,0 -5,2.2 -5,5 v 7 h 6 c 3.3,0 6,2.7 6,6 v 20 h 1 c 2.1,0 3.9,1.1 5,2.7 1.1,-1.6 2.9,-2.7 5,-2.7 h 1 V 25 c 0,-3.3 2.7,-6 6,-6 z m -7,-1 h -9 c -0.6,0 -1,-0.4 -1,-1 0,-0.6 0.4,-1 1,-1 h 9 c 0.6,0 1,0.4 1,1 0,0.6 -0.4,1 -1,1 z m 0,-4 h -9 c -0.6,0 -1,-0.4 -1,-1 0,-0.6 0.4,-1 1,-1 h 9 c 0.6,0 1,0.4 1,1 0,0.6 -0.4,1 -1,1 z" - id="path20" - inkscape:connector-curvature="0" /></g><metadata - id="metadata23"><rdf:RDF><rdf:Description - about="https://iconscout.com/legal#licenses" - dc:title="wildebeest" - dc:description="wildebeest" - dc:publisher="Iconscout" - dc:date="2017-09-07" - dc:format="image/svg+xml" - dc:language="en"><dc:creator><rdf:Bag><rdf:li>Madeby Grids</rdf:li></rdf:Bag></dc:creator></rdf:Description><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><path - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - d="m 13.491525,20.338983 0.0678,6.847458" - id="path19" - inkscape:connector-curvature="0" /><path - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - d="m 48.187753,26.162712 0.01564,-5.688136" - id="path25" - inkscape:connector-curvature="0" /><path - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - d="m 18.361946,43.58983 1.027885,-0.945762" - id="path27" - inkscape:connector-curvature="0" /><path - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - d="M 43.638053,43.58983 42.101695,42.644068" - id="path29" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - d="m 29.146419,8.0169491 4.141717,-0.016949" - id="path31" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;fill-opacity:1;stroke-width:0.06779661" - d="m 24.867298,53.155092 -0.592722,-1.543213 -0.001,-13.050007 C 24.272475,24.222465 24.2981,25.110056 23.860117,24.242416 23.588471,23.704287 22.95384,23.043279 22.45206,22.775833 21.704131,22.377189 21.535948,22.359322 18.531519,22.359322 H 15.8 v 6.937205 c 0,7.710287 -0.0076,7.562258 0.454296,8.889152 0.501435,1.440583 1.344891,2.753735 2.167872,3.375092 0.240157,0.181321 0.38019,0.346543 0.435341,0.513651 l 0.0813,0.246348 -0.480734,0.45032 c -0.360366,0.337566 -0.461348,0.469707 -0.403304,0.527751 0.172807,0.172807 -0.05907,0.05965 -0.451264,-0.220206 -1.534243,-1.094813 -2.792258,-3.308081 -3.308513,-5.820778 -0.04595,-0.223652 -0.09525,-2.500176 -0.132515,-6.118874 -0.03264,-3.169491 -0.07528,-6.838136 -0.09477,-8.152542 -0.02413,-1.627526 -0.013,-2.389831 0.03487,-2.389831 0.04759,0 0.07039,-1.08961 0.07057,-3.372881 3.01e-4,-3.725439 0.03389,-4.152349 0.408062,-5.186423 0.334943,-0.925661 0.748533,-1.563658 1.483325,-2.2881535 0.845975,-0.8341211 1.458229,-1.1934301 2.620984,-1.5381585 0.365354,-0.1083183 0.865304,-0.1213238 5.402611,-0.1405417 l 5,-0.021178 v 0.2397694 0.2397694 h 2.101695 2.101695 V 8.2889663 8.0491191 l 4.830508,0.021441 c 4.807637,0.021339 4.832904,0.022174 5.336362,0.1762589 2.003853,0.6132865 3.455555,2.111906 4.115101,4.248096 l 0.188389,0.61017 0.0228,3.677966 c 0.0158,2.549403 8.47e-4,3.677966 -0.04874,3.677966 -0.04906,0 -0.07154,0.905201 -0.07154,2.881356 0,1.948169 0.02282,2.881356 0.07045,2.881356 0.04835,0 0.06309,1.70686 0.04696,5.440678 -0.02274,5.267391 -0.02806,5.459225 -0.166815,6.023003 -0.60213,2.446463 -1.832709,4.461596 -3.356453,5.496351 -0.388655,0.26393 -0.569269,0.305906 -0.390759,0.09082 0.04791,-0.05773 0.07514,-0.115541 0.06051,-0.128458 -0.01463,-0.01292 -0.31644,-0.200153 -0.670678,-0.416077 -0.354237,-0.215925 -0.652413,-0.398557 -0.662613,-0.40585 -0.08478,-0.06062 0.130034,-0.257541 0.447446,-0.410175 0.515893,-0.248079 1.433235,-1.186602 1.862796,-1.905809 0.426687,-0.714393 0.832807,-1.662729 1.054531,-2.462444 l 0.178568,-0.644068 0.01903,-7.271187 0.01902,-7.271186 h -2.676391 c -1.691994,0 -2.808534,0.02756 -3.035661,0.07492 -1.299614,0.271018 -2.376616,1.387144 -2.668856,2.76581 -0.07928,0.374007 -0.09503,2.510552 -0.09598,13.023676 L 37.698367,50.8 l -0.661048,1.948359 -0.661046,1.948358 -5.458126,7.94e-4 -5.458126,7.93e-4 -0.592722,-1.543213 z m 4.188372,-4.03788 c 0.425642,-0.425642 0.376391,-1.133108 -0.10122,-1.453975 -0.232209,-0.156002 -0.256625,-0.157859 -1.812385,-0.137803 l -1.577007,0.02033 -0.213909,0.21404 c -0.39611,0.396352 -0.33955,1.183981 0.104465,1.454741 0.188499,0.114947 0.362661,0.127347 1.791844,0.127575 l 1.583051,2.72e-4 0.225161,-0.225162 z m 7.551407,0.05072 c 0.483075,-0.40648 0.385213,-1.32968 -0.165335,-1.559714 -0.174614,-0.07296 -0.57845,-0.09635 -1.663216,-0.09635 -1.578472,0 -1.766953,0.03818 -1.981505,0.401387 -0.142924,0.241951 -0.15019,0.758923 -0.01436,1.021594 0.205792,0.397959 0.252995,0.407528 2.01027,0.407528 h 1.606832 z m -5.317156,-3.145408 c 0.338848,-0.461603 1.016621,-1.069251 1.535689,-1.376801 0.72215,-0.427878 1.381867,-0.606219 2.379354,-0.643212 l 0.862591,-0.03199 0.01939,-9.432718 0.01939,-9.432718 0.152471,-0.53844 c 0.526973,-1.860974 1.854887,-3.248954 3.610094,-3.773392 0.483102,-0.144346 0.646116,-0.152945 3.408428,-0.179785 l 2.901061,-0.02819 -0.01971,-3.638403 -0.0197,-3.638402 -0.209172,-0.584255 C 45.421746,11.305103 44.369254,10.297888 42.986441,9.9074701 42.566804,9.7889915 41.995452,9.7830508 31.020339,9.7830508 c -10.806814,0 -11.5529,0.00747 -11.966102,0.1197817 -1.216023,0.3305305 -2.199539,1.1369585 -2.747866,2.2530995 -0.470031,0.956765 -0.464601,0.902856 -0.490054,4.864407 l -0.02298,3.576271 h 2.530533 c 1.391793,0 2.784059,0.03179 3.093925,0.07064 2.004124,0.251296 3.646929,1.704191 4.292613,3.796384 l 0.156114,0.505854 0.01896,9.508474 0.01896,9.508475 0.693544,0.0012 c 1.413937,0.0024 2.470363,0.417126 3.467954,1.361429 0.317271,0.300323 0.641412,0.650495 0.720312,0.778159 0.0789,0.127665 0.168878,0.232117 0.199949,0.232117 0.03107,0 0.167748,-0.15156 0.303725,-0.336798 z" - id="path33" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;fill-opacity:1;stroke-width:0.06779661" - d="m 19.543394,29.460558 c -0.314382,-0.100737 -0.792209,-0.542603 -0.953415,-0.881661 -0.351674,-0.739659 -0.224415,-1.483645 0.352369,-2.060046 0.394395,-0.394132 0.758086,-0.531845 1.273725,-0.482299 0.876608,0.08423 1.557822,0.984879 1.460853,1.931427 -0.111582,1.089196 -1.142234,1.810221 -2.133532,1.492579 z" - id="path35" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;fill-opacity:1;stroke-width:0.06779661" - d="m 41.32493,29.390654 c -0.641139,-0.306689 -0.997845,-0.877086 -1.00572,-1.608212 -0.0059,-0.551804 0.183568,-0.9751 0.6011,-1.342626 0.513583,-0.452074 1.122318,-0.538687 1.713943,-0.243868 1.546485,0.770646 1.124603,3.189951 -0.579989,3.325983 -0.314523,0.0251 -0.455456,-2.64e-4 -0.729334,-0.131277 z" - id="path37" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;fill-opacity:1;stroke-width:0.06779661" - d="M 24.865072,53.155932 24.27143,51.613559 24.271769,38.833898 C 24.271972,31.285773 24.245921,25.804967 24.208096,25.445317 24.15764,24.965571 24.092359,24.731798 23.900368,24.34333 23.445834,23.423642 22.617144,22.72204 21.70378,22.483612 21.319075,22.383186 20.881212,22.3666 18.525904,22.36323 l -2.731663,-0.0039 0.02137,7.20339 0.02137,7.20339 0.180495,0.659032 c 0.4734,1.728506 1.403635,3.34181 2.360242,4.093364 0.268196,0.210707 0.425819,0.392362 0.478217,0.551131 0.07785,0.23589 0.07635,0.238652 -0.378512,0.697028 -0.256442,0.258422 -0.436428,0.492955 -0.4105,0.534906 0.09592,0.1552 -0.09785,0.06428 -0.48789,-0.228911 -1.470737,-1.105572 -2.685996,-3.175369 -3.216212,-5.477769 -0.137754,-0.598177 -0.146403,-0.86584 -0.198762,-6.150815 -0.03011,-3.038983 -0.07392,-6.722882 -0.09737,-8.186441 -0.03064,-1.912456 -0.02169,-2.661017 0.03179,-2.661017 0.05302,0 0.07441,-0.96355 0.07441,-3.351026 0,-1.980065 0.02938,-3.567994 0.07182,-3.881356 0.0948,-0.700089 0.444206,-1.713942 0.81527,-2.365648 0.562489,-0.987908 1.615981,-1.9547486 2.649167,-2.4312685 1.071624,-0.4942481 0.757103,-0.4696861 6.345103,-0.4955089 l 5.033899,-0.023262 V 8.288677 8.5288135 h 2.101695 2.101695 V 8.2915254 8.0542373 h 4.604205 c 4.976342,0 5.115067,0.00845 6.072929,0.3697394 1.133115,0.4273964 2.273128,1.40118 2.923735,2.4974153 0.190649,0.321231 0.465198,0.92872 0.610109,1.349976 l 0.263475,0.76592 0.02119,3.711865 c 0.01477,2.586496 -6.1e-4,3.711864 -0.05079,3.711864 -0.09927,0 -0.100739,5.639038 -0.0015,5.738283 0.048,0.048 0.063,1.798617 0.04702,5.488135 -0.02114,4.880629 -0.03526,5.467044 -0.142497,5.915959 -0.601974,2.520035 -1.83244,4.525859 -3.454352,5.631058 -0.324497,0.221118 -0.484248,0.241322 -0.317269,0.04012 0.04792,-0.05773 0.07514,-0.114004 0.06051,-0.125045 -0.01463,-0.01104 -0.31644,-0.198838 -0.670678,-0.417328 -0.354237,-0.218489 -0.652413,-0.402657 -0.662613,-0.409262 -0.08706,-0.05637 0.131355,-0.257471 0.447446,-0.411982 0.463813,-0.226721 1.281552,-1.024025 1.695704,-1.653332 0.371493,-0.564485 0.829086,-1.515759 1.051677,-2.186293 0.390243,-1.175579 0.383038,-1.012531 0.383038,-8.668654 v -7.043358 h -2.674629 c -1.70137,0 -2.805362,0.02742 -3.033898,0.07536 -1.182093,0.247955 -2.169605,1.195355 -2.606797,2.500911 -0.119037,0.355474 -0.12646,0.97106 -0.159008,13.186441 l -0.03414,12.813559 -0.644068,1.880804 -0.644068,1.880805 -5.458779,5.42e-4 -5.458779,5.43e-4 -0.593641,-1.542373 z m 4.14554,-3.98527 c 0.508146,-0.427576 0.410097,-1.323368 -0.171444,-1.566352 -0.301108,-0.125811 -3.027675,-0.130568 -3.274421,-0.0057 -0.424218,0.214657 -0.59548,0.828718 -0.366002,1.312305 0.192217,0.40507 0.2904,0.425739 2.036731,0.428756 l 1.57107,0.0027 z m 7.605477,-0.01473 c 0.534716,-0.479157 0.313205,-1.485457 -0.354561,-1.610731 -0.127374,-0.02389 -0.877715,-0.03354 -1.667425,-0.02144 l -1.435836,0.022 -0.213904,0.21404 c -0.396103,0.396356 -0.33954,1.183984 0.104472,1.454741 0.188419,0.114899 0.36249,0.127347 1.783994,0.127575 l 1.575202,2.72e-4 0.208058,-0.186441 z m -5.335064,-3.121289 c 0.131086,-0.178573 0.400633,-0.477482 0.598995,-0.664241 1.011678,-0.9525 2.10527,-1.383961 3.50782,-1.383961 h 0.679717 l 0.01988,-9.474577 0.01988,-9.474576 0.155657,-0.508474 c 0.480117,-1.568373 1.435989,-2.744737 2.757368,-3.393414 0.99295,-0.487448 1.019577,-0.490715 4.254237,-0.522028 l 2.898305,-0.02806 v -3.475033 c 0,-3.95017 -0.0077,-4.020371 -0.554797,-5.072002 C 45.07089,10.986504 43.94992,10.112105 42.86446,9.8903472 42.614961,9.8393752 38.978724,9.8169491 30.96345,9.8169491 c -12.726879,0 -11.855989,-0.028943 -12.788228,0.4249989 -0.64266,0.312935 -1.517726,1.202643 -1.849146,1.880086 -0.488407,0.998334 -0.480471,0.922037 -0.509517,4.898305 l -0.02612,3.576271 h 2.576148 c 1.473783,0 2.801315,0.03132 3.102349,0.07319 1.969563,0.273941 3.535747,1.662003 4.239475,3.757321 l 0.15939,0.474576 0.01853,9.542373 0.01853,9.542373 0.69333,0.0012 c 1.413712,0.0024 2.470202,0.417177 3.467739,1.361429 0.317271,0.300323 0.641412,0.650495 0.720312,0.778159 0.0789,0.127665 0.168878,0.232117 0.199949,0.232117 0.03107,0 0.163744,-0.146106 0.294829,-0.32468 z" - id="path39" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;fill-opacity:1;stroke-width:0.06779661" - d="m 28.327569,59.067597 c -0.951612,-0.230702 -1.739236,-0.830785 -2.115652,-1.611894 -0.128868,-0.267417 -0.25381,-0.585364 -0.27765,-0.70655 l -0.04335,-0.220339 h 4.986743 4.986743 l -0.04269,0.220339 c -0.232307,1.199152 -1.116189,2.096397 -2.313193,2.348163 -0.545438,0.114722 -4.683061,0.09099 -5.180959,-0.02972 z" - id="path41" - inkscape:connector-curvature="0" /><path - style="fill:#f9f9f9;fill-opacity:1;stroke-width:0.06779661" - d="m 19.529332,29.456525 c -0.388514,-0.123715 -0.918287,-0.694794 -1.044982,-1.126457 -0.135012,-0.460004 -0.135309,-0.634102 -0.0018,-1.083523 0.126794,-0.426962 0.549453,-0.918859 0.944614,-1.099358 1.10635,-0.50535 2.382318,0.527304 2.249807,1.820792 -0.112351,1.096702 -1.140404,1.809268 -2.147594,1.488546 z" - id="path28" - inkscape:connector-curvature="0" /><path - style="fill:#f9f9f9;fill-opacity:1;stroke-width:0.06779661" - d="m 41.4417,29.464608 c -0.12249,-0.04148 -0.356375,-0.193071 -0.519746,-0.336875 -0.830178,-0.730752 -0.825155,-1.963033 0.011,-2.699048 0.510112,-0.449018 1.104191,-0.530288 1.701298,-0.232737 1.551687,0.773238 1.125605,3.211848 -0.579989,3.319471 -0.214421,0.01353 -0.490075,-0.0093 -0.612564,-0.05081 z" - id="path30" - inkscape:connector-curvature="0" /><path - style="fill:#f9f9f9;fill-opacity:1;stroke-width:0.06779661" - d="m 24.880657,53.223729 -0.572182,-1.474576 -0.03411,-13.254238 -0.03411,-13.254237 -0.152962,-0.450843 c -0.414948,-1.223022 -1.479741,-2.166476 -2.661495,-2.358206 -0.251982,-0.04088 -1.546671,-0.0715 -3.035728,-0.0718 l -2.596365,-5.12e-4 0.02193,7.20339 0.02193,7.20339 0.178371,0.651832 c 0.477104,1.743505 1.383217,3.297466 2.409402,4.132064 0.220639,0.179446 0.383294,0.376331 0.431451,0.522247 0.07674,0.232533 0.07402,0.237514 -0.379375,0.694412 -0.256443,0.258422 -0.436428,0.492955 -0.410501,0.534906 0.09408,0.152219 -0.09365,0.06647 -0.479796,-0.21917 -1.505019,-1.11328 -2.738185,-3.245706 -3.259448,-5.636334 -0.08511,-0.390334 -0.113685,-1.396637 -0.157914,-5.561313 -0.0297,-2.79661 -0.07614,-6.475935 -0.103205,-8.176278 -0.03659,-2.298664 -0.02926,-3.103858 0.02856,-3.139594 0.05678,-0.03509 0.07777,-0.942388 0.07777,-3.36119 0,-3.518015 0.03141,-4.002372 0.318627,-4.913363 0.314677,-0.998089 0.716849,-1.677929 1.439925,-2.4340838 0.747044,-0.7812176 1.597603,-1.3113598 2.592049,-1.6155893 0.492613,-0.1507043 0.53985,-0.1521909 5.530755,-0.174055 l 5.033898,-0.022052 V 8.288677 8.5288136 h 2.101695 2.101695 V 8.2915254 8.0542373 h 4.604205 c 3.679858,0 4.704083,0.019178 5.101695,0.095524 2.239222,0.42996 3.981671,2.1383567 4.639205,4.5485437 0.12095,0.443341 0.128468,0.715531 0.114231,4.135593 -0.0084,2.01356 -0.03212,4.911865 -0.05275,6.440678 -0.02588,1.917763 -0.01495,2.822092 0.03524,2.916501 0.05058,0.09514 0.06619,1.789196 0.05122,5.559322 l -0.02153,5.422482 -0.209872,0.779661 c -0.625275,2.322853 -1.865617,4.293463 -3.300667,5.243975 -0.383614,0.254088 -0.560602,0.29 -0.384706,0.07806 0.04791,-0.05773 0.07514,-0.11383 0.06051,-0.124658 -0.01463,-0.01083 -0.31644,-0.196852 -0.670678,-0.413386 -0.354237,-0.216535 -0.652413,-0.400876 -0.662613,-0.409649 -0.06627,-0.05699 0.103367,-0.258403 0.281006,-0.333649 0.333065,-0.141082 0.995308,-0.671236 1.341954,-1.074291 0.948687,-1.103065 1.726992,-2.851277 1.885567,-4.235315 0.04136,-0.361024 0.06845,-3.298276 0.06878,-7.459899 l 5.56e-4,-6.864407 -2.593221,4.07e-4 c -1.426271,2.03e-4 -2.776271,0.03013 -3,0.06649 -0.5378,0.08738 -1.278339,0.459631 -1.679913,0.844448 -0.426032,0.408254 -0.828536,1.039993 -1.014485,1.592257 l -0.150023,0.445568 -0.01878,12.745763 -0.01878,12.745762 -0.659678,1.949153 -0.659678,1.949152 H 30.915582 25.45284 l -0.572183,-1.474576 z m 4.176258,-4.116827 c 0.28316,-0.300238 0.351448,-0.65617 0.198991,-1.037198 -0.199828,-0.499417 -0.276696,-0.52105 -1.93848,-0.54554 -1.606414,-0.02367 -1.840748,0.01675 -2.062963,0.355897 -0.176371,0.269174 -0.203228,0.719991 -0.06078,1.020182 0.193533,0.40784 0.329655,0.436465 2.089834,0.439476 l 1.551318,0.0027 0.222077,-0.235471 z m 7.47415,0.129661 c 0.346182,-0.242476 0.469962,-0.930659 0.238016,-1.323312 -0.223761,-0.378797 -0.406688,-0.412951 -2.08381,-0.389068 -1.402798,0.01998 -1.526507,0.03164 -1.664903,0.157013 -0.484449,0.438854 -0.4373,1.333331 0.08218,1.559034 0.340491,0.147937 3.216465,0.14486 3.428518,-0.0037 z m -5.386246,-3.039286 c 0.219147,-0.334461 0.89766,-1.011539 1.304892,-1.302135 0.872855,-0.622856 1.797089,-0.908701 2.938135,-0.908701 h 0.679724 l 0.01876,-9.508475 0.01876,-9.508474 0.224384,-0.644068 c 0.529212,-1.519035 1.40638,-2.558859 2.69087,-3.189847 0.992616,-0.487608 1.019351,-0.49089 4.254238,-0.522205 l 2.898305,-0.02806 -0.0013,-3.333336 c -7.46e-4,-1.845913 -0.03146,-3.541656 -0.06883,-3.800185 -0.216906,-1.500548 -1.355859,-2.902935 -2.796082,-3.442803 L 42.884746,9.8508475 31.427119,9.8317889 c -7.412733,-0.01233 -11.661069,0.00512 -12.033898,0.04943 -1.570077,0.1866001 -2.997951,1.5191011 -3.431966,3.2027331 -0.09267,0.359487 -0.115489,0.994354 -0.142707,3.970285 l -0.0324,3.542373 h 2.578291 c 2.668712,0 3.336394,0.04642 4.045729,0.281271 0.842199,0.27884 1.872893,1.045963 2.43329,1.811045 0.289587,0.395359 0.604922,1.014402 0.841303,1.651589 l 0.183034,0.493383 0.01853,9.576271 0.01853,9.576272 0.693335,0.0012 c 1.492866,0.0025 2.556358,0.443295 3.625403,1.502535 0.232977,0.230839 0.492299,0.520628 0.576271,0.643975 0.182471,0.268031 0.207686,0.272647 0.344954,0.06315 z" - id="path32" - inkscape:connector-curvature="0" /><path - style="fill:#f9f9f9;fill-opacity:1;stroke-width:0.06779661" - d="m 28.327569,59.067597 c -0.951612,-0.230702 -1.739236,-0.830785 -2.115652,-1.611894 -0.128868,-0.267417 -0.25381,-0.585364 -0.27765,-0.70655 l -0.04334,-0.220339 h 4.986742 4.986743 l -0.04268,0.220339 c -0.232308,1.199152 -1.11619,2.096397 -2.313194,2.348163 -0.545438,0.114722 -4.683061,0.09099 -5.180959,-0.02972 z" - id="path34" - inkscape:connector-curvature="0" /></svg> \ No newline at end of file diff --git a/client/public/images/pieces/Ball/by.svg b/client/public/images/pieces/Ball/by.svg deleted file mode 100644 index 06324791..00000000 --- a/client/public/images/pieces/Ball/by.svg +++ /dev/null @@ -1,159 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - id="Layer_1" - x="0px" - y="0px" - viewBox="0 0 62 64" - xml:space="preserve" - sodipodi:docname="by.svg" - inkscape:version="0.92.4 5da689c313, 2019-01-14"><defs - id="defs28" /><sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="960" - inkscape:window-height="1060" - id="namedview26" - showgrid="false" - inkscape:zoom="14.75" - inkscape:cx="32.355932" - inkscape:cy="32" - inkscape:window-x="0" - inkscape:window-y="20" - inkscape:window-maximized="0" - inkscape:current-layer="Layer_1" /><g - id="wildebeest__x5F_glyphs" - transform="matrix(0.8425369,0,0,0.89830508,4.8813559,3.5254237)"><path - d="m 25,49 c -0.6,0 -1,0.4 -1,1 0,0.6 0.4,1 1,1 h 3 c 0.6,0 1,-0.4 1,-1 0,-0.6 -0.4,-1 -1,-1 z" - id="path2" - inkscape:connector-curvature="0" /><path - d="m 34,49 c -0.6,0 -1,0.4 -1,1 0,0.6 0.4,1 1,1 h 3 c 0.6,0 1,-0.4 1,-1 0,-0.6 -0.4,-1 -1,-1 z" - id="path4" - inkscape:connector-curvature="0" /><path - d="M 11,36 V 24.7 c -0.1,0.2 -0.2,0.3 -0.4,0.5 -1.3,1.4 -3.1,2.3 -5,2.4 H 5 V 42.5 C 5,43.8 3.9,45 2.5,45 1.1,45 0,43.4 0,42 v 2.5 c 0,3.6 3,6.9 9,6.5 6.9,-0.5 7,-4.4 7,-6.4 C 12.9,43.2 11,39 11,36 Z" - id="path6" - inkscape:connector-curvature="0" /><path - d="M 11,12 C 11,8.1 14.1,5 18,5 H 28.8 C 26.6,2 22.9,0 17.5,0 10.6,0 5,5.6 5,12.5 V 19 h 6 z" - id="path8" - inkscape:connector-curvature="0" /><path - d="M 5.5,25.6 C 6.9,25.5 8.2,24.9 9.1,23.9 9.8,23 10.3,22 10.4,21 H 0.2 c 0.3,1.1 0.8,2.1 1.6,3 1.1,1.1 2.4,1.6 3.7,1.6 z" - id="path10" - inkscape:connector-curvature="0" /><path - d="m 51,12 v 7 h 6 V 12.5 C 57,5.6 51.4,0 44.5,0 39.1,0 35.5,2 33.2,5 H 44 c 3.9,0 7,3.1 7,7 z" - id="path12" - inkscape:connector-curvature="0" /><path - d="m 61.8,43 c -0.5,1.6 -2.3,2.9 -4,1.2 C 57.3,43.6 57,42.8 57,42 V 27.6 h -0.6 c -1.9,-0.1 -3.7,-1 -5,-2.4 C 51.3,25 51.1,24.9 51,24.7 V 36 c 0,3 -1.9,7.2 -5,8.6 0,2 0.1,5.9 7,6.4 6,0.4 9,-2.9 9,-6.5 V 43 Z" - id="path14" - inkscape:connector-curvature="0" /><path - d="m 52.9,23.8 c 0.9,1 2.2,1.7 3.6,1.7 1.3,0.1 2.6,-0.5 3.7,-1.6 0.8,-0.8 1.4,-1.9 1.6,-3 H 51.6 c 0.1,1.1 0.6,2.1 1.3,2.9 z" - id="path16" - inkscape:connector-curvature="0" /><path - d="M 49,36 V 21 h -6 c -2.2,0 -4,1.8 -4,4 V 52.6 L 37.4,57 h -13 L 23,53.6 V 25 c 0,-2.2 -1.8,-4 -4,-4 h -6 v 15 c 0,2.2 1.5,5.4 3.5,6.6 l 6.4,16.1 c 0.1,3 2.7,5.3 6.1,5.3 h 4 c 3.3,0 5.8,-2.2 5.9,-5.3 L 44.8,42.9 C 47.1,42.2 49,38.5 49,36 Z M 18,29 c -1.1,0 -2,-0.9 -2,-2 0,-1.1 0.9,-2 2,-2 1.1,0 2,0.9 2,2 0,1.1 -0.9,2 -2,2 z m 15,33 h -4 c -1.9,0 -3.8,-1 -4.1,-3 h 11.9 c -0.2,1.8 -1.7,3 -3.8,3 z M 44,29 c -1.1,0 -2,-0.9 -2,-2 0,-1.1 0.9,-2 2,-2 1.1,0 2,0.9 2,2 0,1.1 -0.9,2 -2,2 z" - id="path18" - inkscape:connector-curvature="0" /><path - d="m 43,19 h 6 V 12 C 49,9.2 46.8,7 44,7 H 18 c -2.8,0 -5,2.2 -5,5 v 7 h 6 c 3.3,0 6,2.7 6,6 v 20 h 1 c 2.1,0 3.9,1.1 5,2.7 1.1,-1.6 2.9,-2.7 5,-2.7 h 1 V 25 c 0,-3.3 2.7,-6 6,-6 z m -7,-1 h -9 c -0.6,0 -1,-0.4 -1,-1 0,-0.6 0.4,-1 1,-1 h 9 c 0.6,0 1,0.4 1,1 0,0.6 -0.4,1 -1,1 z m 0,-4 h -9 c -0.6,0 -1,-0.4 -1,-1 0,-0.6 0.4,-1 1,-1 h 9 c 0.6,0 1,0.4 1,1 0,0.6 -0.4,1 -1,1 z" - id="path20" - inkscape:connector-curvature="0" /></g><metadata - id="metadata23"><rdf:RDF><rdf:Description - about="https://iconscout.com/legal#licenses" - dc:title="wildebeest" - dc:description="wildebeest" - dc:publisher="Iconscout" - dc:date="2017-09-07" - dc:format="image/svg+xml" - dc:language="en"><dc:creator><rdf:Bag><rdf:li>Madeby Grids</rdf:li></rdf:Bag></dc:creator></rdf:Description><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><path - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - d="m 13.491525,20.338983 0.0678,6.847458" - id="path19" - inkscape:connector-curvature="0" /><path - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - d="m 48.187753,26.162712 0.01564,-5.688136" - id="path25" - inkscape:connector-curvature="0" /><path - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - d="m 18.361946,43.58983 1.027885,-0.945762" - id="path27" - inkscape:connector-curvature="0" /><path - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - d="M 43.638053,43.58983 42.101695,42.644068" - id="path29" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - d="m 29.146419,8.0169491 4.141717,-0.016949" - id="path31" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;fill-opacity:1;stroke-width:0.06779661" - d="m 24.867298,53.155092 -0.592722,-1.543213 -0.001,-13.050007 C 24.272475,24.222465 24.2981,25.110056 23.860117,24.242416 23.588471,23.704287 22.95384,23.043279 22.45206,22.775833 21.704131,22.377189 21.535948,22.359322 18.531519,22.359322 H 15.8 v 6.937205 c 0,7.710287 -0.0076,7.562258 0.454296,8.889152 0.501435,1.440583 1.344891,2.753735 2.167872,3.375092 0.240157,0.181321 0.38019,0.346543 0.435341,0.513651 l 0.0813,0.246348 -0.480734,0.45032 c -0.360366,0.337566 -0.461348,0.469707 -0.403304,0.527751 0.172807,0.172807 -0.05907,0.05965 -0.451264,-0.220206 -1.534243,-1.094813 -2.792258,-3.308081 -3.308513,-5.820778 -0.04595,-0.223652 -0.09525,-2.500176 -0.132515,-6.118874 -0.03264,-3.169491 -0.07528,-6.838136 -0.09477,-8.152542 -0.02413,-1.627526 -0.013,-2.389831 0.03487,-2.389831 0.04759,0 0.07039,-1.08961 0.07057,-3.372881 3.01e-4,-3.725439 0.03389,-4.152349 0.408062,-5.186423 0.334943,-0.925661 0.748533,-1.563658 1.483325,-2.2881535 0.845975,-0.8341211 1.458229,-1.1934301 2.620984,-1.5381585 0.365354,-0.1083183 0.865304,-0.1213238 5.402611,-0.1405417 l 5,-0.021178 v 0.2397694 0.2397694 h 2.101695 2.101695 V 8.2889663 8.0491191 l 4.830508,0.021441 c 4.807637,0.021339 4.832904,0.022174 5.336362,0.1762589 2.003853,0.6132865 3.455555,2.111906 4.115101,4.248096 l 0.188389,0.61017 0.0228,3.677966 c 0.0158,2.549403 8.47e-4,3.677966 -0.04874,3.677966 -0.04906,0 -0.07154,0.905201 -0.07154,2.881356 0,1.948169 0.02282,2.881356 0.07045,2.881356 0.04835,0 0.06309,1.70686 0.04696,5.440678 -0.02274,5.267391 -0.02806,5.459225 -0.166815,6.023003 -0.60213,2.446463 -1.832709,4.461596 -3.356453,5.496351 -0.388655,0.26393 -0.569269,0.305906 -0.390759,0.09082 0.04791,-0.05773 0.07514,-0.115541 0.06051,-0.128458 -0.01463,-0.01292 -0.31644,-0.200153 -0.670678,-0.416077 -0.354237,-0.215925 -0.652413,-0.398557 -0.662613,-0.40585 -0.08478,-0.06062 0.130034,-0.257541 0.447446,-0.410175 0.515893,-0.248079 1.433235,-1.186602 1.862796,-1.905809 0.426687,-0.714393 0.832807,-1.662729 1.054531,-2.462444 l 0.178568,-0.644068 0.01903,-7.271187 0.01902,-7.271186 h -2.676391 c -1.691994,0 -2.808534,0.02756 -3.035661,0.07492 -1.299614,0.271018 -2.376616,1.387144 -2.668856,2.76581 -0.07928,0.374007 -0.09503,2.510552 -0.09598,13.023676 L 37.698367,50.8 l -0.661048,1.948359 -0.661046,1.948358 -5.458126,7.94e-4 -5.458126,7.93e-4 -0.592722,-1.543213 z m 4.188372,-4.03788 c 0.425642,-0.425642 0.376391,-1.133108 -0.10122,-1.453975 -0.232209,-0.156002 -0.256625,-0.157859 -1.812385,-0.137803 l -1.577007,0.02033 -0.213909,0.21404 c -0.39611,0.396352 -0.33955,1.183981 0.104465,1.454741 0.188499,0.114947 0.362661,0.127347 1.791844,0.127575 l 1.583051,2.72e-4 0.225161,-0.225162 z m 7.551407,0.05072 c 0.483075,-0.40648 0.385213,-1.32968 -0.165335,-1.559714 -0.174614,-0.07296 -0.57845,-0.09635 -1.663216,-0.09635 -1.578472,0 -1.766953,0.03818 -1.981505,0.401387 -0.142924,0.241951 -0.15019,0.758923 -0.01436,1.021594 0.205792,0.397959 0.252995,0.407528 2.01027,0.407528 h 1.606832 z m -5.317156,-3.145408 c 0.338848,-0.461603 1.016621,-1.069251 1.535689,-1.376801 0.72215,-0.427878 1.381867,-0.606219 2.379354,-0.643212 l 0.862591,-0.03199 0.01939,-9.432718 0.01939,-9.432718 0.152471,-0.53844 c 0.526973,-1.860974 1.854887,-3.248954 3.610094,-3.773392 0.483102,-0.144346 0.646116,-0.152945 3.408428,-0.179785 l 2.901061,-0.02819 -0.01971,-3.638403 -0.0197,-3.638402 -0.209172,-0.584255 C 45.421746,11.305103 44.369254,10.297888 42.986441,9.9074701 42.566804,9.7889915 41.995452,9.7830508 31.020339,9.7830508 c -10.806814,0 -11.5529,0.00747 -11.966102,0.1197817 -1.216023,0.3305305 -2.199539,1.1369585 -2.747866,2.2530995 -0.470031,0.956765 -0.464601,0.902856 -0.490054,4.864407 l -0.02298,3.576271 h 2.530533 c 1.391793,0 2.784059,0.03179 3.093925,0.07064 2.004124,0.251296 3.646929,1.704191 4.292613,3.796384 l 0.156114,0.505854 0.01896,9.508474 0.01896,9.508475 0.693544,0.0012 c 1.413937,0.0024 2.470363,0.417126 3.467954,1.361429 0.317271,0.300323 0.641412,0.650495 0.720312,0.778159 0.0789,0.127665 0.168878,0.232117 0.199949,0.232117 0.03107,0 0.167748,-0.15156 0.303725,-0.336798 z" - id="path33" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;fill-opacity:1;stroke-width:0.06779661" - d="m 19.543394,29.460558 c -0.314382,-0.100737 -0.792209,-0.542603 -0.953415,-0.881661 -0.351674,-0.739659 -0.224415,-1.483645 0.352369,-2.060046 0.394395,-0.394132 0.758086,-0.531845 1.273725,-0.482299 0.876608,0.08423 1.557822,0.984879 1.460853,1.931427 -0.111582,1.089196 -1.142234,1.810221 -2.133532,1.492579 z" - id="path35" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;fill-opacity:1;stroke-width:0.06779661" - d="m 41.32493,29.390654 c -0.641139,-0.306689 -0.997845,-0.877086 -1.00572,-1.608212 -0.0059,-0.551804 0.183568,-0.9751 0.6011,-1.342626 0.513583,-0.452074 1.122318,-0.538687 1.713943,-0.243868 1.546485,0.770646 1.124603,3.189951 -0.579989,3.325983 -0.314523,0.0251 -0.455456,-2.64e-4 -0.729334,-0.131277 z" - id="path37" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;fill-opacity:1;stroke-width:0.06779661" - d="M 24.865072,53.155932 24.27143,51.613559 24.271769,38.833898 C 24.271972,31.285773 24.245921,25.804967 24.208096,25.445317 24.15764,24.965571 24.092359,24.731798 23.900368,24.34333 23.445834,23.423642 22.617144,22.72204 21.70378,22.483612 21.319075,22.383186 20.881212,22.3666 18.525904,22.36323 l -2.731663,-0.0039 0.02137,7.20339 0.02137,7.20339 0.180495,0.659032 c 0.4734,1.728506 1.403635,3.34181 2.360242,4.093364 0.268196,0.210707 0.425819,0.392362 0.478217,0.551131 0.07785,0.23589 0.07635,0.238652 -0.378512,0.697028 -0.256442,0.258422 -0.436428,0.492955 -0.4105,0.534906 0.09592,0.1552 -0.09785,0.06428 -0.48789,-0.228911 -1.470737,-1.105572 -2.685996,-3.175369 -3.216212,-5.477769 -0.137754,-0.598177 -0.146403,-0.86584 -0.198762,-6.150815 -0.03011,-3.038983 -0.07392,-6.722882 -0.09737,-8.186441 -0.03064,-1.912456 -0.02169,-2.661017 0.03179,-2.661017 0.05302,0 0.07441,-0.96355 0.07441,-3.351026 0,-1.980065 0.02938,-3.567994 0.07182,-3.881356 0.0948,-0.700089 0.444206,-1.713942 0.81527,-2.365648 0.562489,-0.987908 1.615981,-1.9547486 2.649167,-2.4312685 1.071624,-0.4942481 0.757103,-0.4696861 6.345103,-0.4955089 l 5.033899,-0.023262 V 8.288677 8.5288135 h 2.101695 2.101695 V 8.2915254 8.0542373 h 4.604205 c 4.976342,0 5.115067,0.00845 6.072929,0.3697394 1.133115,0.4273964 2.273128,1.40118 2.923735,2.4974153 0.190649,0.321231 0.465198,0.92872 0.610109,1.349976 l 0.263475,0.76592 0.02119,3.711865 c 0.01477,2.586496 -6.1e-4,3.711864 -0.05079,3.711864 -0.09927,0 -0.100739,5.639038 -0.0015,5.738283 0.048,0.048 0.063,1.798617 0.04702,5.488135 -0.02114,4.880629 -0.03526,5.467044 -0.142497,5.915959 -0.601974,2.520035 -1.83244,4.525859 -3.454352,5.631058 -0.324497,0.221118 -0.484248,0.241322 -0.317269,0.04012 0.04792,-0.05773 0.07514,-0.114004 0.06051,-0.125045 -0.01463,-0.01104 -0.31644,-0.198838 -0.670678,-0.417328 -0.354237,-0.218489 -0.652413,-0.402657 -0.662613,-0.409262 -0.08706,-0.05637 0.131355,-0.257471 0.447446,-0.411982 0.463813,-0.226721 1.281552,-1.024025 1.695704,-1.653332 0.371493,-0.564485 0.829086,-1.515759 1.051677,-2.186293 0.390243,-1.175579 0.383038,-1.012531 0.383038,-8.668654 v -7.043358 h -2.674629 c -1.70137,0 -2.805362,0.02742 -3.033898,0.07536 -1.182093,0.247955 -2.169605,1.195355 -2.606797,2.500911 -0.119037,0.355474 -0.12646,0.97106 -0.159008,13.186441 l -0.03414,12.813559 -0.644068,1.880804 -0.644068,1.880805 -5.458779,5.42e-4 -5.458779,5.43e-4 -0.593641,-1.542373 z m 4.14554,-3.98527 c 0.508146,-0.427576 0.410097,-1.323368 -0.171444,-1.566352 -0.301108,-0.125811 -3.027675,-0.130568 -3.274421,-0.0057 -0.424218,0.214657 -0.59548,0.828718 -0.366002,1.312305 0.192217,0.40507 0.2904,0.425739 2.036731,0.428756 l 1.57107,0.0027 z m 7.605477,-0.01473 c 0.534716,-0.479157 0.313205,-1.485457 -0.354561,-1.610731 -0.127374,-0.02389 -0.877715,-0.03354 -1.667425,-0.02144 l -1.435836,0.022 -0.213904,0.21404 c -0.396103,0.396356 -0.33954,1.183984 0.104472,1.454741 0.188419,0.114899 0.36249,0.127347 1.783994,0.127575 l 1.575202,2.72e-4 0.208058,-0.186441 z m -5.335064,-3.121289 c 0.131086,-0.178573 0.400633,-0.477482 0.598995,-0.664241 1.011678,-0.9525 2.10527,-1.383961 3.50782,-1.383961 h 0.679717 l 0.01988,-9.474577 0.01988,-9.474576 0.155657,-0.508474 c 0.480117,-1.568373 1.435989,-2.744737 2.757368,-3.393414 0.99295,-0.487448 1.019577,-0.490715 4.254237,-0.522028 l 2.898305,-0.02806 v -3.475033 c 0,-3.95017 -0.0077,-4.020371 -0.554797,-5.072002 C 45.07089,10.986504 43.94992,10.112105 42.86446,9.8903472 42.614961,9.8393752 38.978724,9.8169491 30.96345,9.8169491 c -12.726879,0 -11.855989,-0.028943 -12.788228,0.4249989 -0.64266,0.312935 -1.517726,1.202643 -1.849146,1.880086 -0.488407,0.998334 -0.480471,0.922037 -0.509517,4.898305 l -0.02612,3.576271 h 2.576148 c 1.473783,0 2.801315,0.03132 3.102349,0.07319 1.969563,0.273941 3.535747,1.662003 4.239475,3.757321 l 0.15939,0.474576 0.01853,9.542373 0.01853,9.542373 0.69333,0.0012 c 1.413712,0.0024 2.470202,0.417177 3.467739,1.361429 0.317271,0.300323 0.641412,0.650495 0.720312,0.778159 0.0789,0.127665 0.168878,0.232117 0.199949,0.232117 0.03107,0 0.163744,-0.146106 0.294829,-0.32468 z" - id="path39" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;fill-opacity:1;stroke-width:0.06779661" - d="m 28.327569,59.067597 c -0.951612,-0.230702 -1.739236,-0.830785 -2.115652,-1.611894 -0.128868,-0.267417 -0.25381,-0.585364 -0.27765,-0.70655 l -0.04335,-0.220339 h 4.986743 4.986743 l -0.04269,0.220339 c -0.232307,1.199152 -1.116189,2.096397 -2.313193,2.348163 -0.545438,0.114722 -4.683061,0.09099 -5.180959,-0.02972 z" - id="path41" - inkscape:connector-curvature="0" /><path - style="fill:#f9f9f9;fill-opacity:1;stroke-width:0.06779661" - d="m 19.529332,29.456525 c -0.388514,-0.123715 -0.918287,-0.694794 -1.044982,-1.126457 -0.135012,-0.460004 -0.135309,-0.634102 -0.0018,-1.083523 0.126794,-0.426962 0.549453,-0.918859 0.944614,-1.099358 1.10635,-0.50535 2.382318,0.527304 2.249807,1.820792 -0.112351,1.096702 -1.140404,1.809268 -2.147594,1.488546 z" - id="path28" - inkscape:connector-curvature="0" /><path - style="fill:#f9f9f9;fill-opacity:1;stroke-width:0.06779661" - d="m 41.4417,29.464608 c -0.12249,-0.04148 -0.356375,-0.193071 -0.519746,-0.336875 -0.830178,-0.730752 -0.825155,-1.963033 0.011,-2.699048 0.510112,-0.449018 1.104191,-0.530288 1.701298,-0.232737 1.551687,0.773238 1.125605,3.211848 -0.579989,3.319471 -0.214421,0.01353 -0.490075,-0.0093 -0.612564,-0.05081 z" - id="path30" - inkscape:connector-curvature="0" /><path - style="fill:#f9f9f9;fill-opacity:1;stroke-width:0.06779661" - d="m 24.880657,53.223729 -0.572182,-1.474576 -0.03411,-13.254238 -0.03411,-13.254237 -0.152962,-0.450843 c -0.414948,-1.223022 -1.479741,-2.166476 -2.661495,-2.358206 -0.251982,-0.04088 -1.546671,-0.0715 -3.035728,-0.0718 l -2.596365,-5.12e-4 0.02193,7.20339 0.02193,7.20339 0.178371,0.651832 c 0.477104,1.743505 1.383217,3.297466 2.409402,4.132064 0.220639,0.179446 0.383294,0.376331 0.431451,0.522247 0.07674,0.232533 0.07402,0.237514 -0.379375,0.694412 -0.256443,0.258422 -0.436428,0.492955 -0.410501,0.534906 0.09408,0.152219 -0.09365,0.06647 -0.479796,-0.21917 -1.505019,-1.11328 -2.738185,-3.245706 -3.259448,-5.636334 -0.08511,-0.390334 -0.113685,-1.396637 -0.157914,-5.561313 -0.0297,-2.79661 -0.07614,-6.475935 -0.103205,-8.176278 -0.03659,-2.298664 -0.02926,-3.103858 0.02856,-3.139594 0.05678,-0.03509 0.07777,-0.942388 0.07777,-3.36119 0,-3.518015 0.03141,-4.002372 0.318627,-4.913363 0.314677,-0.998089 0.716849,-1.677929 1.439925,-2.4340838 0.747044,-0.7812176 1.597603,-1.3113598 2.592049,-1.6155893 0.492613,-0.1507043 0.53985,-0.1521909 5.530755,-0.174055 l 5.033898,-0.022052 V 8.288677 8.5288136 h 2.101695 2.101695 V 8.2915254 8.0542373 h 4.604205 c 3.679858,0 4.704083,0.019178 5.101695,0.095524 2.239222,0.42996 3.981671,2.1383567 4.639205,4.5485437 0.12095,0.443341 0.128468,0.715531 0.114231,4.135593 -0.0084,2.01356 -0.03212,4.911865 -0.05275,6.440678 -0.02588,1.917763 -0.01495,2.822092 0.03524,2.916501 0.05058,0.09514 0.06619,1.789196 0.05122,5.559322 l -0.02153,5.422482 -0.209872,0.779661 c -0.625275,2.322853 -1.865617,4.293463 -3.300667,5.243975 -0.383614,0.254088 -0.560602,0.29 -0.384706,0.07806 0.04791,-0.05773 0.07514,-0.11383 0.06051,-0.124658 -0.01463,-0.01083 -0.31644,-0.196852 -0.670678,-0.413386 -0.354237,-0.216535 -0.652413,-0.400876 -0.662613,-0.409649 -0.06627,-0.05699 0.103367,-0.258403 0.281006,-0.333649 0.333065,-0.141082 0.995308,-0.671236 1.341954,-1.074291 0.948687,-1.103065 1.726992,-2.851277 1.885567,-4.235315 0.04136,-0.361024 0.06845,-3.298276 0.06878,-7.459899 l 5.56e-4,-6.864407 -2.593221,4.07e-4 c -1.426271,2.03e-4 -2.776271,0.03013 -3,0.06649 -0.5378,0.08738 -1.278339,0.459631 -1.679913,0.844448 -0.426032,0.408254 -0.828536,1.039993 -1.014485,1.592257 l -0.150023,0.445568 -0.01878,12.745763 -0.01878,12.745762 -0.659678,1.949153 -0.659678,1.949152 H 30.915582 25.45284 l -0.572183,-1.474576 z m 4.176258,-4.116827 c 0.28316,-0.300238 0.351448,-0.65617 0.198991,-1.037198 -0.199828,-0.499417 -0.276696,-0.52105 -1.93848,-0.54554 -1.606414,-0.02367 -1.840748,0.01675 -2.062963,0.355897 -0.176371,0.269174 -0.203228,0.719991 -0.06078,1.020182 0.193533,0.40784 0.329655,0.436465 2.089834,0.439476 l 1.551318,0.0027 0.222077,-0.235471 z m 7.47415,0.129661 c 0.346182,-0.242476 0.469962,-0.930659 0.238016,-1.323312 -0.223761,-0.378797 -0.406688,-0.412951 -2.08381,-0.389068 -1.402798,0.01998 -1.526507,0.03164 -1.664903,0.157013 -0.484449,0.438854 -0.4373,1.333331 0.08218,1.559034 0.340491,0.147937 3.216465,0.14486 3.428518,-0.0037 z m -5.386246,-3.039286 c 0.219147,-0.334461 0.89766,-1.011539 1.304892,-1.302135 0.872855,-0.622856 1.797089,-0.908701 2.938135,-0.908701 h 0.679724 l 0.01876,-9.508475 0.01876,-9.508474 0.224384,-0.644068 c 0.529212,-1.519035 1.40638,-2.558859 2.69087,-3.189847 0.992616,-0.487608 1.019351,-0.49089 4.254238,-0.522205 l 2.898305,-0.02806 -0.0013,-3.333336 c -7.46e-4,-1.845913 -0.03146,-3.541656 -0.06883,-3.800185 -0.216906,-1.500548 -1.355859,-2.902935 -2.796082,-3.442803 L 42.884746,9.8508475 31.427119,9.8317889 c -7.412733,-0.01233 -11.661069,0.00512 -12.033898,0.04943 -1.570077,0.1866001 -2.997951,1.5191011 -3.431966,3.2027331 -0.09267,0.359487 -0.115489,0.994354 -0.142707,3.970285 l -0.0324,3.542373 h 2.578291 c 2.668712,0 3.336394,0.04642 4.045729,0.281271 0.842199,0.27884 1.872893,1.045963 2.43329,1.811045 0.289587,0.395359 0.604922,1.014402 0.841303,1.651589 l 0.183034,0.493383 0.01853,9.576271 0.01853,9.576272 0.693335,0.0012 c 1.492866,0.0025 2.556358,0.443295 3.625403,1.502535 0.232977,0.230839 0.492299,0.520628 0.576271,0.643975 0.182471,0.268031 0.207686,0.272647 0.344954,0.06315 z" - id="path32" - inkscape:connector-curvature="0" /><path - style="fill:#f9f9f9;fill-opacity:1;stroke-width:0.06779661" - d="m 28.327569,59.067597 c -0.951612,-0.230702 -1.739236,-0.830785 -2.115652,-1.611894 -0.128868,-0.267417 -0.25381,-0.585364 -0.27765,-0.70655 l -0.04334,-0.220339 h 4.986742 4.986743 l -0.04268,0.220339 c -0.232308,1.199152 -1.11619,2.096397 -2.313194,2.348163 -0.545438,0.114722 -4.683061,0.09099 -5.180959,-0.02972 z" - id="path34" - inkscape:connector-curvature="0" /><path - style="fill:#aa0000;fill-opacity:1;stroke-width:0.06779661" - d="m 30.624563,45.81302 c -0.644332,-0.788705 -1.520183,-1.386624 -2.48558,-1.696836 -0.307816,-0.09891 -0.700685,-0.152947 -1.303074,-0.179232 l -0.862396,-0.03763 -0.01896,-9.532713 -0.01896,-9.532712 -0.226779,-0.610169 C 25.148159,22.715241 24.218955,21.638383 22.966362,21.045485 22.011301,20.59342 21.902478,20.580608 18.726568,20.546318 l -2.870042,-0.03099 0.02518,-3.569531 0.02518,-3.56953 0.195122,-0.566253 c 0.437945,-1.270938 1.358541,-2.245263 2.579355,-2.729893 l 0.40678,-0.1614809 11.747202,-0.018432 c 12.993681,-0.020388 12.117285,-0.048132 12.99856,0.4114939 0.580598,0.30281 1.430354,1.17155 1.75084,1.789956 0.508037,0.980303 0.520347,1.097952 0.520347,4.973209 v 3.439622 l -2.864407,0.03169 c -2.702603,0.0299 -2.893024,0.04012 -3.371026,0.181072 -1.11397,0.328473 -2.149384,1.064344 -2.810411,1.997364 -0.378701,0.534525 -0.538274,0.85604 -0.804598,1.621138 l -0.217118,0.623738 -0.01951,9.465517 -0.01951,9.465518 -0.828062,0.03573 c -1.485183,0.06409 -2.508397,0.523905 -3.521008,1.582278 -0.176037,0.183991 -0.391825,0.431794 -0.47953,0.550671 l -0.15948,0.216145 z M 35.6698,19.599589 c 0.37757,-0.223036 0.512021,-0.817138 0.29055,-1.283855 -0.210957,-0.444558 -0.06822,-0.430988 -4.533231,-0.430988 -4.433017,0 -4.327142,-0.0094 -4.541225,0.40456 -0.131866,0.255 -0.132015,0.766101 -2.72e-4,1.020817 0.212228,0.410402 0.08885,0.399445 4.531061,0.402417 3.705602,0.0025 4.07431,-0.0073 4.253141,-0.112951 z m 0,-3.59322 c 0.37757,-0.223036 0.512021,-0.817138 0.29055,-1.283855 -0.210957,-0.444559 -0.06822,-0.430989 -4.533231,-0.430989 -4.433017,0 -4.327142,-0.0094 -4.541225,0.404561 -0.131866,0.255 -0.132015,0.766101 -2.72e-4,1.020816 0.212228,0.410403 0.08885,0.399446 4.531061,0.402417 3.705602,0.0025 4.07431,-0.0073 4.253141,-0.11295 z" - id="path3734" - inkscape:connector-curvature="0" /><path - style="fill:#aa0000;fill-opacity:1;stroke-width:0.06779661" - d="m 28.514503,60.930958 c -1.583316,-0.242351 -2.940251,-1.145069 -3.687796,-2.453351 -0.271133,-0.47451 -0.528636,-1.27161 -0.585755,-1.8132 -0.04252,-0.403196 -1.055151,-3.189642 -4.72433,-12.999946 l -0.133103,-0.355877 -0.337086,0.284235 -0.337086,0.284235 -0.318781,-0.318781 -0.318782,-0.318781 0.463424,-0.436859 c 0.435815,-0.410834 0.460538,-0.449998 0.414986,-0.657391 -0.03456,-0.15733 -0.221646,-0.384936 -0.652815,-0.794186 C 17.224399,40.332624 16.53643,39.085517 16.0173,37.21787 15.924,36.882215 15.907586,35.927468 15.886847,29.630508 l -0.02372,-7.203389 h 2.699958 c 2.207,0 2.772807,0.01897 3.098956,0.103926 1.273382,0.331673 2.308975,1.507721 2.475575,2.811328 0.03937,0.308046 0.06581,5.590552 0.06707,13.401378 l 0.0021,12.892903 0.601417,1.547774 0.601419,1.547775 h 5.507878 5.507878 l 0.670365,-1.961042 0.670365,-1.961043 0.0012,-12.344042 c 6.99e-4,-7.167851 0.02777,-12.596582 0.06456,-12.946292 0.148038,-1.407277 1.190737,-2.640355 2.535485,-2.99842 0.266132,-0.07086 0.981873,-0.09282 3.045138,-0.09344 l 2.69723,-8.04e-4 -0.02132,7.271186 -0.02132,7.271187 -0.179001,0.610169 c -0.604379,2.060177 -1.861018,3.862212 -3.037234,4.355428 -0.279671,0.117273 -0.244121,0.08584 -0.298859,0.264219 -0.03876,0.126299 0.04287,0.19908 0.63078,0.562429 l 0.675298,0.417357 -0.246514,0.395671 -0.246515,0.395671 -0.579129,-0.359324 c -0.388235,-0.240884 -0.593529,-0.333221 -0.622816,-0.280133 -0.02403,0.04355 -1.043572,2.931733 -2.265652,6.418174 -1.834529,5.233682 -2.237176,6.447134 -2.309212,6.959237 -0.109377,0.777578 -0.300361,1.357087 -0.633456,1.922118 -0.638071,1.082365 -1.643706,1.838325 -2.907036,2.18529 -0.472906,0.129881 -0.723331,0.144048 -2.824007,0.159769 -1.267797,0.0095 -2.486949,-0.01059 -2.709226,-0.04461 z m 4.994024,-1.765201 c 0.868195,-0.181051 1.697979,-0.781462 2.055751,-1.487492 0.188934,-0.372844 0.388054,-1.067519 0.331992,-1.158229 -0.02017,-0.03263 -2.277631,-0.05902 -5.049424,-0.05902 -4.456645,0 -5.012948,0.01152 -5.012948,0.103834 0,0.183179 0.271099,0.915704 0.433998,1.172689 0.390754,0.616441 1.254516,1.202657 2.059673,1.397854 0.495715,0.120178 4.633973,0.14443 5.180958,0.03036 z M 20.797623,29.420028 c 0.552567,-0.281898 0.968479,-0.984895 0.968479,-1.636977 0,-0.71115 -0.458348,-1.418982 -1.096651,-1.693573 -0.713765,-0.307053 -1.547441,-0.04515 -2.000378,0.628427 -0.84433,1.255632 0.03534,2.966648 1.474818,2.868625 0.207784,-0.01415 0.501964,-0.08907 0.653732,-0.166502 z m 21.901696,-0.0017 c 0.352182,-0.17967 0.726344,-0.619745 0.859713,-1.011162 0.423948,-1.244221 -0.530105,-2.561917 -1.762795,-2.434692 -0.916164,0.09456 -1.533625,0.825865 -1.533625,1.816394 0,0.567213 0.164016,0.963492 0.556381,1.344268 0.494409,0.479809 1.268661,0.59724 1.880326,0.285192 z" - id="path3736" - inkscape:connector-curvature="0" /><path - style="fill:#aa0000;fill-opacity:1;stroke-width:0.06779661" - d="M 10.452241,49.26674 C 9.6527692,49.173991 8.9059843,48.949371 8.1050848,48.560755 6.8656542,47.959353 6.1001422,47.215759 5.5246854,46.054237 5.0606077,45.117527 4.9491477,44.581969 4.9109098,43.105085 l -0.032473,-1.254238 0.1279689,0.338984 c 0.2043449,0.541298 0.3466223,0.778741 0.6805341,1.135719 0.4482888,0.479257 0.754104,0.622558 1.3333995,0.624813 0.8299278,0.0032 1.4795324,-0.447352 1.8880508,-1.3096 l 0.2136441,-0.450932 0.019359,-6.922387 0.019359,-6.922386 0.6247088,-0.0389 c 0.975663,-0.06076 1.987924,-0.437417 2.912844,-1.083853 l 0.389831,-0.272457 v -1.380007 c 0,-0.759004 -0.01167,-1.380007 -0.02594,-1.380007 -0.01426,0 -0.156307,0.200102 -0.31565,0.444671 -0.559097,0.858134 -1.57365,1.542434 -2.607568,1.758762 -0.6351027,0.132882 -0.9310848,0.12673 -1.5528077,-0.03228 C 7.5814134,26.104014 6.7063399,25.493875 6.1143479,24.637529 5.7252719,24.074711 5.3659415,23.345714 5.2002549,22.783051 L 5.0954441,22.427119 H 9.0578915 13.020339 V 21.477966 20.528814 H 11.083952 9.1475661 l 0.027214,-3.711865 c 0.025317,-3.453082 0.037108,-3.757657 0.1691219,-4.368695 0.959961,-4.4432621 4.057484,-7.7158697 8.210025,-8.6740897 0.763101,-0.1760892 2.613485,-0.2429101 3.678332,-0.1328315 1.981719,0.2048603 3.750204,0.8071568 5.208214,1.7737719 0.933643,0.6189766 1.639395,1.2817422 2.431051,2.2829774 l 0.224066,0.2833847 -5.003727,0.021665 c -5.601582,0.024253 -5.301187,-5.424e-4 -6.451811,0.5324806 -1.717118,0.7954443 -2.872613,2.2767766 -3.379265,4.3321846 -0.09072,0.368036 -0.113212,1.035784 -0.136445,4.050847 -0.01933,2.508803 -0.05002,3.61017 -0.100589,3.61017 -0.05141,0 -0.05862,0.771269 -0.02459,2.627118 0.0265,1.444915 0.07166,5.128814 0.100355,8.186441 0.04991,5.318844 0.05841,5.587182 0.196375,6.20339 0.576164,2.573315 1.927827,4.782318 3.531732,5.771853 l 0.479684,0.295943 6.1e-4,0.495488 c 0.0026,2.18039 -1.014758,3.773846 -2.905475,4.550958 -1.35118,0.555355 -3.316591,0.796252 -4.950178,0.606735 z" - id="path3738" - inkscape:connector-curvature="0" /><path - style="fill:#aa0000;fill-opacity:1;stroke-width:0.06779661" - d="m 49.359322,49.301913 c -0.798915,-0.09548 -1.664473,-0.269084 -2.177463,-0.436721 -2.278198,-0.744481 -3.356047,-2.144547 -3.488117,-4.530871 l -0.03989,-0.720762 0.425703,-0.237288 c 0.526989,-0.293746 1.479956,-1.219478 1.954149,-1.898305 0.665696,-0.952971 1.22202,-2.189184 1.577891,-3.50625 l 0.215845,-0.798835 0.02349,-5.508474 c 0.01626,-3.813322 0.0016,-5.508475 -0.04762,-5.508475 -0.04848,0 -0.07111,-0.895571 -0.07111,-2.813559 0,-1.938738 0.02237,-2.813559 0.07195,-2.813559 0.05016,0 0.06453,-1.134299 0.04744,-3.745763 L 47.827079,13.037288 47.6045,12.359322 C 46.952012,10.371873 45.606214,8.9241098 43.849443,8.319763 42.904348,7.9946405 42.665228,7.9820747 37.8,8.0018635 l -4.542373,0.018475 0.02129,0.220339 0.02129,0.2203389 H 31.228066 29.155932 V 8.0302872 7.5995574 l 0.518704,-0.043846 c 0.285287,-0.024116 1.201514,-0.043846 2.03606,-0.043846 h 1.517356 l 0.727876,-0.7288136 c 2.171957,-2.1747557 4.838837,-3.2009367 8.32365,-3.2028335 2.316076,-0.00126 4.213912,0.6238318 6.130592,2.0192408 0.682351,0.4967757 1.760772,1.6070289 2.322789,2.3913531 0.836163,1.1669093 1.554607,2.8065618 1.869585,4.2668158 0.236007,1.094146 0.282202,1.938753 0.282202,5.159726 v 3.111461 h -2.101695 -2.101695 v 0.915254 0.915254 h 4.101695 c 3.359746,0 4.101695,0.01625 4.101695,0.08982 0,0.0494 -0.07612,0.313606 -0.169143,0.587121 -0.502155,1.476395 -1.659845,2.713775 -2.992372,3.198351 -0.526753,0.191553 -1.5705,0.206283 -2.160519,0.03049 -1.115426,-0.332337 -2.034774,-1.122161 -2.691802,-2.312561 l -0.187098,-0.338983 -0.0012,1.271187 -0.0012,1.271186 -0.288136,0.0023 -0.288135,0.0023 0.450397,0.430988 c 1.117695,1.069528 2.597699,1.732198 3.871637,1.73352 l 0.457627,4.69e-4 v 6.663722 c 0,7.335896 -0.01577,7.04171 0.421369,7.861862 0.434298,0.814827 1.318418,1.274622 2.064575,1.073703 0.618854,-0.16664 1.297861,-0.842517 1.518717,-1.511716 0.16922,-0.512741 0.21634,-0.274769 0.180667,0.912429 -0.03642,1.211895 -0.103404,1.591824 -0.417991,2.370663 -0.27869,0.689968 -0.597267,1.153265 -1.224964,1.781427 -0.890029,0.890689 -1.918901,1.419763 -3.30556,1.699809 -0.484364,0.09782 -2.300731,0.179748 -2.762237,0.12459 z" - id="path3740" - inkscape:connector-curvature="0" /><path - style="fill:#aa0000;fill-opacity:1;stroke-width:0.06779661" - d="m 33.116624,49.19698 c -0.517167,-0.250947 -0.462355,-1.345902 0.07765,-1.551212 0.09563,-0.03636 0.820193,-0.06566 1.610139,-0.06511 1.539976,0.0011 1.653506,0.0221 1.898143,0.351652 0.248685,0.335 0.117405,1.091437 -0.220836,1.272458 -0.171397,0.09173 -3.174328,0.08478 -3.365097,-0.0078 z" - id="path3742" - inkscape:connector-curvature="0" /><path - style="fill:#aa0000;fill-opacity:1;stroke-width:0.06779661" - d="m 25.386441,49.044068 c -0.196047,-0.196047 -0.230509,-0.277637 -0.230509,-0.54574 0,-0.173377 0.04628,-0.404725 0.102843,-0.514107 0.189825,-0.367081 0.361343,-0.40456 1.851418,-0.40456 1.545903,0 1.709615,0.02135 1.941435,0.253169 0.327,0.327 0.286747,1.017209 -0.07596,1.302516 -0.167122,0.131458 -0.265807,0.13923 -1.76786,0.13923 h -1.590857 z" - id="path3744" - inkscape:connector-curvature="0" /></svg> \ No newline at end of file diff --git a/client/public/images/pieces/Ball/wd.svg b/client/public/images/pieces/Ball/wd.svg new file mode 100644 index 00000000..d10a14fe --- /dev/null +++ b/client/public/images/pieces/Ball/wd.svg @@ -0,0 +1,68 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + height="100%" + width="100%" + version="1.1" + viewBox="0 0 2048 2048" + id="svg6" + sodipodi:docname="wd.svg" + inkscape:version="0.92.4 5da689c313, 2019-01-14"> + <metadata + id="metadata12"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs10" /> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="960" + inkscape:window-height="1060" + id="namedview8" + showgrid="false" + inkscape:zoom="0.11523438" + inkscape:cx="1058.7119" + inkscape:cy="1024" + inkscape:window-x="0" + inkscape:window-y="20" + inkscape:window-maximized="0" + inkscape:current-layer="svg6" /> + <path + style="color:#000000;display:block;fill:#ffffff;fill-rule:nonzero" + d="m 1756,234 q -1,0 2,54 3,54 3,118 1,125 0,258 -1,133 -36,267 -34,128 -75,218 -41,90 -89,157 -72,108 -196,183 -124,75 -259,98 9,-49 8,-96 -2,-36 -34,-36 -37,0 -33,36 3,132 -94,226 -76,-80 -82,-186 -2,-35 -36,-31 -32,1 -32,37 0,0 2,8 -41,-13 -86,-37 -29,-20 -47,10 -18,30 16,47 43,22 65,33 -86,88 -196,142 12,-139 76,-263 17,-26 -8,-46 -28,-22 -47,7 -7,10 -20,36 -21,-21 -28,-31 -7,-9 -24,-40 -17,-31 -26,-51 -9,-25 -8,-40 1,-15 3,-35 -9,-59 -40,-111 -31,-52 -81,-127 -47,-72 -72,-108 -25,-36 -38,-92 -9,-34 0,-82 9,-48 39,-76 46,-47 89,-43 14,0 37,11 23,11 37,42 26,57 43,57 25,0 27,-28 0,-6 -16,-50 -9,-20 -24,-42 -19,-26 -17,-22 16,-57 53,-20 11,11 25,41 14,30 44,81 35,59 75,96 40,37 71,60 18,13 44,30 26,17 70,35 35,14 77,34 42,20 76,53 46,45 71,111 13,37 10,91 -9,34 34,34 32,0 36,-33 0,-113 -64,-206 21,-64 11,-140 -9,-61 -42,-130 Q 1017,674 914,588 707,416 718,234 q 0,0 170,0 170,0 321,0 z" + display="block" + id="path2" + inkscape:connector-curvature="0" /> + <path + style="color:#000000;display:block;fill:#000000;fill-rule:nonzero" + d="m 697,1319 q 13,-20 10,-42 -10,-64 -71,-54 -18,3 -29,12 -4,-5 -12,-22 -11,-32 -42,-22 -31,12 -24,45 45,115 163,158 34,10 45,-20 12,-32 -18,-44 -6,-3 -11,-5 -5,-2 -11,-6 z M 400,842 q -29,-18 -35,-48 1,-33 -31,-36 -35,-4 -36,30 4,66 59,105 26,21 48,-4 22,-27 -5,-47 z m 679,815 q 157,-10 291,-81 134,-71 228,-182 66,-78 124,-188 58,-110 94,-233 40,-143 50,-300 10,-157 11,-292 V 163 q 0,0 -155,0 -155,0 -404,0 H 647 q -9,0 -9,49 0,49 7,79 4,24 19,68 15,44 50,107 16,32 76,93 60,61 138,143 45,46 70,116 25,70 22,127 -37,-30 -81,-49 -212,-76 -307,-220 -7,-9 -45,-81 -20,-38 -34,-52 -19,-19 -55,-21 -56,-3 -87,54 -42,-12 -75,-10 -56,21 -81,45 -51,51 -66,102 -15,51 -16,110 0,84 104,222 122,159 130,242 0,36 7,81 6,31 25,60 13,20 17,27 4,7 17,23 9,12 15,18 6,6 15,18 11,13 28,30 -53,146 -43,301 199,-71 334,-223 33,113 130,183 80,-56 127,-148 z M 1756,234 q -1,0 2,54 3,54 3,118 1,125 0,258 -1,133 -36,267 -34,128 -75,218 -41,90 -89,157 -72,108 -196,183 -124,75 -259,98 9,-49 8,-96 -2,-36 -34,-36 -37,0 -33,36 3,132 -94,226 -76,-80 -82,-186 -2,-35 -36,-31 -32,1 -32,37 0,0 2,8 -41,-13 -86,-37 -29,-20 -47,10 -18,30 16,47 43,22 65,33 -86,88 -196,142 12,-139 76,-263 17,-26 -8,-46 -28,-22 -47,7 -7,10 -20,36 -21,-21 -28,-31 -7,-9 -24,-40 -17,-31 -26,-51 -9,-25 -8,-40 1,-15 3,-35 -9,-59 -40,-111 -31,-52 -81,-127 -47,-72 -72,-108 -25,-36 -38,-92 -9,-34 0,-82 9,-48 39,-76 46,-47 89,-43 14,0 37,11 23,11 37,42 26,57 43,57 25,0 27,-28 0,-6 -16,-50 -9,-20 -24,-42 -19,-26 -17,-22 16,-57 53,-20 11,11 25,41 14,30 44,81 35,59 75,96 40,37 71,60 18,13 44,30 26,17 70,35 35,14 77,34 42,20 76,53 46,45 71,111 13,37 10,91 -9,34 34,34 32,0 36,-33 0,-113 -64,-206 21,-64 11,-140 -9,-61 -42,-130 Q 1017,674 914,588 707,416 718,234 q 0,0 170,0 170,0 321,0 z" + display="block" + id="path4" + inkscape:connector-curvature="0" /> + <path + style="fill:#ffcc00;fill-opacity:1;stroke-width:8.67796612" + d="m 722.74458,280.6393 c 16.40726,109.4115 63.67577,182.6701 199.96743,309.9175 83.23649,77.713 104.10369,102.5993 129.91119,154.9325 38.7086,78.4943 53.3173,152.8139 42.3597,215.499 -7.3451,42.0189 -5.7974,51.4946 16.2498,99.4901 29.0323,63.2018 43.8935,142.6732 32.3551,173.0216 -6.0672,15.9577 -14.4923,21.2525 -33.8168,21.2525 -32.2052,0 -37.9061,-9.2458 -39.6909,-64.3713 -0.7855,-24.2568 -9.4727,-62.1541 -19.3051,-84.2163 C 1018.2276,1033.1343 978.35888,999.2764 852.82037,938.0551 701.93084,864.4709 624.80219,794.9675 554.20941,668.9661 506.59176,583.973 490.93259,567.6979 473.52368,585.1069 c -6.93497,6.9349 -1.83237,24.7258 18.68537,65.149 31.8715,62.792 32.79204,95.3592 2.8157,99.6156 -14.60744,2.0742 -23.42111,-4.3334 -34.71186,-25.2359 -8.32328,-15.4087 -25.37742,-39.895 -37.8981,-54.4138 -56.20367,-65.1735 -161.78391,-2.1435 -176.57684,105.4139 -8.3618,60.7976 10.55309,105.8294 105.67285,251.5819 102.82608,157.5609 123.8202,201.2119 124.04174,257.9078 0.18267,46.7461 30.82423,124.2095 62.51052,158.0299 l 17.97199,19.1823 16.79537,-21.3518 c 18.20256,-23.1408 40.68698,-27.4413 57.18992,-10.9383 15.47223,15.4722 13.27433,27.9693 -19.34645,110.002 -27.52833,69.2265 -54.37982,180.1677 -45.706,188.8416 5.77615,5.7761 128.94222,-79.1139 155.9892,-107.5128 l 24.11642,-25.3219 -35.49115,-16.0043 c -44.41077,-20.0264 -55.43387,-38.5441 -37.87079,-63.6189 16.49659,-23.5522 27.89964,-23.4312 78.03159,0.8278 l 40.34981,19.5254 13.0086,-19.5254 c 8.43604,-12.6622 21.72941,-19.5254 37.81868,-19.5254 20.06687,0 25.767,4.5624 29.81528,23.8644 17.49782,83.4285 25.29925,106.2769 48.89022,143.1864 14.49044,22.6712 29.64551,41.2204 33.67793,41.2204 13.11696,0 52.47762,-58.6544 69.59962,-103.716 9.1944,-24.1976 16.717,-62.6981 16.717,-85.5568 0,-47.5478 10.6948,-62.3882 44.9601,-62.3882 29.3042,0 37.8281,24.2325 30.4467,86.5564 -5.6719,47.891 -10.5631,47.0403 89.4746,15.561 145.9368,-45.9226 280.8633,-145.6645 363.2466,-268.5231 69.6749,-103.9064 133.4153,-263.4264 166.6274,-417.0104 20.2898,-93.8263 32.0005,-386.0828 21.5662,-538.2111 l -6.3985,-93.2881 H 1233.0542 716.56493 Z m -364.96444,484.428 c 7.50025,7.5002 13.63681,20.4873 13.63681,28.8602 0,8.3729 9.94031,24.5618 22.08958,35.9755 24.88653,23.3797 25.9875,57.3133 2.33977,72.1159 -31.07515,19.4519 -86.83428,-35.2232 -99.25463,-97.3249 -9.16803,-45.8402 29.76275,-71.0525 61.18847,-39.6267 z m 236.46459,439.7869 c 12.64983,15.6164 23.03712,18.9992 51.88393,16.8968 29.40919,-2.1434 38.62092,1.0166 49.8983,17.1173 7.60686,10.8603 13.83067,32.8953 13.83067,48.9665 0,19.4332 6.25147,34.2826 18.66417,44.3338 22.50576,18.2241 16.93304,57.2265 -9.36938,65.5746 -55.67266,17.6698 -191.53208,-102.0486 -191.53208,-168.7768 0,-44.2527 38.9045,-58.3327 66.62439,-24.1122 z" + id="path14" + inkscape:connector-curvature="0" /> +</svg> diff --git a/client/public/images/pieces/Ball/wh.svg b/client/public/images/pieces/Ball/wh.svg new file mode 100644 index 00000000..eac3db53 --- /dev/null +++ b/client/public/images/pieces/Ball/wh.svg @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + height="100%" + width="100%" + version="1.1" + viewBox="0 0 2048 2048" + id="svg6" + sodipodi:docname="wh.svg" + inkscape:version="0.92.4 5da689c313, 2019-01-14"> + <metadata + id="metadata12"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs10" /> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="960" + inkscape:window-height="1060" + id="namedview8" + showgrid="false" + inkscape:zoom="0.11523438" + inkscape:cx="1041.3559" + inkscape:cy="1024" + inkscape:window-x="0" + inkscape:window-y="20" + inkscape:window-maximized="0" + inkscape:current-layer="svg6" /> + <path + style="color:#000000;display:block;fill:#ffffff;fill-rule:nonzero" + d="m 1756,234 q -1,0 2,54 3,54 3,118 1,125 0,258 -1,133 -36,267 -34,128 -75,218 -41,90 -89,157 -72,108 -196,183 -124,75 -259,98 9,-49 8,-96 -2,-36 -34,-36 -37,0 -33,36 3,132 -94,226 -76,-80 -82,-186 -2,-35 -36,-31 -32,1 -32,37 0,0 2,8 -41,-13 -86,-37 -29,-20 -47,10 -18,30 16,47 43,22 65,33 -86,88 -196,142 12,-139 76,-263 17,-26 -8,-46 -28,-22 -47,7 -7,10 -20,36 -21,-21 -28,-31 -7,-9 -24,-40 -17,-31 -26,-51 -9,-25 -8,-40 1,-15 3,-35 -9,-59 -40,-111 -31,-52 -81,-127 -47,-72 -72,-108 -25,-36 -38,-92 -9,-34 0,-82 9,-48 39,-76 46,-47 89,-43 14,0 37,11 23,11 37,42 26,57 43,57 25,0 27,-28 0,-6 -16,-50 -9,-20 -24,-42 -19,-26 -17,-22 16,-57 53,-20 11,11 25,41 14,30 44,81 35,59 75,96 40,37 71,60 18,13 44,30 26,17 70,35 35,14 77,34 42,20 76,53 46,45 71,111 13,37 10,91 -9,34 34,34 32,0 36,-33 0,-113 -64,-206 21,-64 11,-140 -9,-61 -42,-130 Q 1017,674 914,588 707,416 718,234 q 0,0 170,0 170,0 321,0 z" + display="block" + id="path2" + inkscape:connector-curvature="0" /> + <path + style="color:#000000;display:block;fill:#000000;fill-rule:nonzero" + d="m 697,1319 q 13,-20 10,-42 -10,-64 -71,-54 -18,3 -29,12 -4,-5 -12,-22 -11,-32 -42,-22 -31,12 -24,45 45,115 163,158 34,10 45,-20 12,-32 -18,-44 -6,-3 -11,-5 -5,-2 -11,-6 z M 400,842 q -29,-18 -35,-48 1,-33 -31,-36 -35,-4 -36,30 4,66 59,105 26,21 48,-4 22,-27 -5,-47 z m 679,815 q 157,-10 291,-81 134,-71 228,-182 66,-78 124,-188 58,-110 94,-233 40,-143 50,-300 10,-157 11,-292 V 163 q 0,0 -155,0 -155,0 -404,0 H 647 q -9,0 -9,49 0,49 7,79 4,24 19,68 15,44 50,107 16,32 76,93 60,61 138,143 45,46 70,116 25,70 22,127 -37,-30 -81,-49 -212,-76 -307,-220 -7,-9 -45,-81 -20,-38 -34,-52 -19,-19 -55,-21 -56,-3 -87,54 -42,-12 -75,-10 -56,21 -81,45 -51,51 -66,102 -15,51 -16,110 0,84 104,222 122,159 130,242 0,36 7,81 6,31 25,60 13,20 17,27 4,7 17,23 9,12 15,18 6,6 15,18 11,13 28,30 -53,146 -43,301 199,-71 334,-223 33,113 130,183 80,-56 127,-148 z M 1756,234 q -1,0 2,54 3,54 3,118 1,125 0,258 -1,133 -36,267 -34,128 -75,218 -41,90 -89,157 -72,108 -196,183 -124,75 -259,98 9,-49 8,-96 -2,-36 -34,-36 -37,0 -33,36 3,132 -94,226 -76,-80 -82,-186 -2,-35 -36,-31 -32,1 -32,37 0,0 2,8 -41,-13 -86,-37 -29,-20 -47,10 -18,30 16,47 43,22 65,33 -86,88 -196,142 12,-139 76,-263 17,-26 -8,-46 -28,-22 -47,7 -7,10 -20,36 -21,-21 -28,-31 -7,-9 -24,-40 -17,-31 -26,-51 -9,-25 -8,-40 1,-15 3,-35 -9,-59 -40,-111 -31,-52 -81,-127 -47,-72 -72,-108 -25,-36 -38,-92 -9,-34 0,-82 9,-48 39,-76 46,-47 89,-43 14,0 37,11 23,11 37,42 26,57 43,57 25,0 27,-28 0,-6 -16,-50 -9,-20 -24,-42 -19,-26 -17,-22 16,-57 53,-20 11,11 25,41 14,30 44,81 35,59 75,96 40,37 71,60 18,13 44,30 26,17 70,35 35,14 77,34 42,20 76,53 46,45 71,111 13,37 10,91 -9,34 34,34 32,0 36,-33 0,-113 -64,-206 21,-64 11,-140 -9,-61 -42,-130 Q 1017,674 914,588 707,416 718,234 q 0,0 170,0 170,0 321,0 z" + display="block" + id="path4" + inkscape:connector-curvature="0" /> +</svg> diff --git a/client/public/images/pieces/Ball/ww.svg b/client/public/images/pieces/Ball/ww.svg deleted file mode 100644 index 561449c4..00000000 --- a/client/public/images/pieces/Ball/ww.svg +++ /dev/null @@ -1,114 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - id="Layer_1" - x="0px" - y="0px" - viewBox="0 0 64 64" - xml:space="preserve" - sodipodi:docname="ww.svg" - inkscape:version="0.92.2 2405546, 2018-03-11"><defs - id="defs18" /><sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="960" - inkscape:window-height="1200" - id="namedview16" - showgrid="false" - inkscape:zoom="3.6875" - inkscape:cx="33.084746" - inkscape:cy="32" - inkscape:window-x="0" - inkscape:window-y="0" - inkscape:window-maximized="0" - inkscape:current-layer="Layer_1" /><g - id="wildebeest__x5F_line" - transform="matrix(0.86016949,0,0,0.89830508,4.0677966,3.2542373)"><path - d="m 63.2,42 c -0.5,-0.1 -0.9,0.2 -1.1,0.6 -0.4,1.2 -1.2,2.3 -1.6,2.3 -0.8,0 -1.5,-0.7 -1.5,-1.5 V 28.1 c 1,-0.4 1.9,-1 2.7,-1.8 C 63.1,24.9 63.9,22.9 64,21 64,20.7 63.9,20.5 63.7,20.3 63.5,20.1 63.3,20 63,20 H 59 V 13.5 C 59,6.1 52.9,0 45.5,0 37.9,0 34.2,3.7 32.4,7 H 31.6 C 29.8,3.7 26.1,0 18.5,0 11.1,0 5,6.1 5,13.5 V 20 H 1 C 0.7,20 0.5,20.1 0.3,20.3 0.1,20.5 0,20.8 0,21.1 0.1,23 1,24.9 2.3,26.4 3.1,27.2 4,27.8 5,28.1 V 43.4 C 5,44.3 4.3,45 3.5,45 3.2,45 2.4,43.9 1.9,42.7 1.7,42.2 1.3,42 0.8,42.1 0.3,42.1 0,42.5 0,43 v 2.5 c 0,2 0.8,3.9 2.3,5.2 C 3.4,51.8 5.5,53 9,53 h 1.1 C 18,52.4 18,47.6 18,45.5 v -0.6 c 0.1,0 0.2,0.1 0.3,0.1 L 24,59.2 c 0.1,2.9 2.4,4.8 6,4.8 h 4 c 3.6,0 5.9,-1.9 6,-4.8 l 5.7,-14.3 c 0.1,0 0.2,-0.1 0.3,-0.1 v 0.6 c 0,2.1 0,6.9 7.9,7.5 H 55 c 3.4,0 5.5,-1.2 6.7,-2.3 1.5,-1.4 2.3,-3.2 2.3,-5.2 V 43 c 0,-0.5 -0.3,-0.9 -0.8,-1 z m -9.1,9 C 48,50.5 48,47.5 48,45.5 V 44 43.8 c 1.9,-1.6 3,-4.6 3,-6.8 V 25.7 c 0.1,0.2 0.2,0.3 0.4,0.5 1.3,1.4 3.1,2.3 5,2.4 H 57 v 14.9 c 0,1.9 1.6,3.5 3.5,3.5 0.5,0 1,-0.2 1.4,-0.5 -0.2,1.1 -0.7,2 -1.5,2.8 -1.5,1.3 -3.6,1.9 -6.3,1.7 z M 35.2,61.9 C 34.8,62 34.5,62 34.3,62 H 29.7 C 29.4,62 29.1,62 28.8,61.9 28,61.8 27.1,61.4 26.5,60.7 26.2,60.3 26,59.7 26,59 h 12 c 0,0.7 -0.2,1.3 -0.5,1.7 -0.6,0.7 -1.5,1.1 -2.3,1.2 z M 16,44 v 1.5 c 0,2 0,5.1 -6.1,5.5 C 7.2,51.2 5,50.6 3.6,49.3 2.8,48.5 2.3,47.6 2.1,46.5 2.5,46.8 3,47 3.5,47 5.4,47 7,45.4 7,43.5 V 28.6 h 0.6 c 1.9,-0.1 3.7,-1 5,-2.4 0.1,-0.2 0.3,-0.3 0.4,-0.5 V 37 c 0,2.2 1.2,5.1 3,6.8 z M 5,22 h 7.4 c -0.1,1 -0.6,2 -1.3,2.8 -0.9,1 -2.2,1.7 -3.6,1.7 H 7 C 6.7,26.5 6.3,26.4 6,26.3 5.7,26.2 5.3,26 5,25.8 4.6,25.5 4.2,25.2 3.8,24.8 3,24 2.4,22.9 2.2,21.8 H 5 Z M 7,13.5 C 7,7.2 12.2,2 18.5,2 23.4,2 27,3.7 29.3,7 H 19 c -3.3,0 -6,2.7 -6,6 v 7 H 7 Z M 45.5,2 C 51.8,2 57,7.2 57,13.5 V 20 H 51 V 13 C 51,9.7 48.3,7 45,7 H 34.7 C 37,3.7 40.6,2 45.5,2 Z M 59,25.9 c -0.3,0.2 -0.7,0.3 -1,0.5 -0.3,0.1 -0.7,0.2 -1,0.2 H 56.5 C 55.1,26.5 53.8,25.9 52.9,24.9 52.2,24 51.7,23 51.6,22 h 10.2 c -0.3,1.1 -0.8,2.1 -1.6,3 -0.4,0.3 -0.8,0.7 -1.2,0.9 z M 33.4,9 H 45 c 2.2,0 4,1.8 4,4 v 7 h -5 c -2.2,0 -4.1,1.2 -5.2,3 -0.5,0.9 -0.8,1.9 -0.8,3 v 20 h -1 c -2.1,0 -3.9,1.1 -5,2.7 C 30.9,47.1 29.1,46 27,46 H 26 V 26 c 0,-1.1 -0.3,-2.1 -0.8,-3 -1,-1.8 -3,-3 -5.2,-3 h -5 v -7 c 0,-2.2 1.8,-4 4,-4 z M 29,50 H 26.1 C 26,49.7 26,49.3 26,49 v -1 h 1 c 2.2,0 4,1.8 4,4 v 1 h -1 c -1,0 -1.9,-0.4 -2.6,-1 H 29 c 0.6,0 1,-0.4 1,-1 0,-0.6 -0.4,-1 -1,-1 z m 4,2 c 0,-2.2 1.8,-4 4,-4 h 1 v 1 c 0,0.3 -0.1,0.7 -0.1,1 H 35 c -0.6,0 -1,0.4 -1,1 0,0.6 0.4,1 1,1 h 1.6 C 35.9,52.6 35,53 34,53 H 33 Z M 17.6,42.4 C 16.2,41.4 15,38.9 15,37 V 22 h 5 c 2.2,0 4,1.8 4,4 v 23 c 0,1.2 0.4,2.4 1,3.3 1.1,1.6 2.9,2.7 5,2.7 h 1 v 2 H 25.3 L 25,56.3 19.9,43.6 C 19.8,43.2 19.4,43 19,43 18.5,43 18.1,42.8 17.6,42.4 Z M 44.1,43.6 39,56.3 38.7,57 H 33 v -2 h 1 c 2.1,0 3.9,-1.1 5,-2.7 0.6,-1 1,-2.1 1,-3.3 V 26 c 0,-2.2 1.8,-4 4,-4 h 5 v 15 c 0,1.9 -1.2,4.4 -2.6,5.4 -0.5,0.4 -0.9,0.6 -1.4,0.6 -0.4,0 -0.8,0.2 -0.9,0.6 z" - id="path2" - inkscape:connector-curvature="0" /><circle - cx="19" - cy="28" - r="2" - id="circle4" /><circle - cx="45" - cy="28" - r="2" - id="circle6" /><path - d="m 28,13 c -0.6,0 -1,0.4 -1,1 0,0.6 0.4,1 1,1 h 9 c 0.6,0 1,-0.4 1,-1 0,-0.6 -0.4,-1 -1,-1 z" - id="path8" - inkscape:connector-curvature="0" /><path - d="m 37,17 h -9 c -0.2,0 -0.4,0.1 -0.6,0.2 C 27.2,17.4 27,17.7 27,18 v 0.2 c 0.1,0.5 0.5,0.8 1,0.8 h 9 c 0.1,0 0.2,0 0.3,-0.1 0.4,-0.1 0.7,-0.5 0.7,-0.9 0,-0.6 -0.4,-1 -1,-1 z" - id="path10" - inkscape:connector-curvature="0" /></g><metadata - id="metadata13"><rdf:RDF><rdf:Description - about="https://iconscout.com/legal#licenses" - dc:title="wildebeest" - dc:description="wildebeest" - dc:publisher="Iconscout" - dc:date="2017-09-06" - dc:format="image/svg+xml" - dc:language="en"><dc:creator><rdf:Bag><rdf:li>Madeby Grids</rdf:li></rdf:Bag></dc:creator></rdf:Description><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><path - style="fill:#ffffff;stroke-width:0.27118644" - d="m 10.093588,18.454237 c 0.0077,-3.714673 0.376945,-5.860183 1.348243,-7.833169 1.424016,-2.8925858 4.235339,-4.8812246 7.606113,-5.3803177 1.656005,-0.245196 4.701309,0.2872518 6.351287,1.1104732 C 26.686798,6.9936277 28.8,8.766749 28.8,9.2047016 c 0,0.1098421 -2.288136,0.2376181 -5.084746,0.2839463 -5.681624,0.094121 -5.960615,0.1792924 -7.593841,2.3182781 -0.726819,0.951891 -0.747278,1.078129 -0.832028,5.133633 l -0.08689,4.157746 h -2.557182 -2.557181 z" - id="path20" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;stroke-width:0.27118644" - d="M 9.4355826,26.775344 C 8.4616968,26.492285 6.9801261,25.089083 6.5443628,24.037057 6.3651498,23.604399 6.2654554,23.2044 6.3228198,23.148171 c 0.057364,-0.05623 1.9042988,-0.03439 4.1042992,0.04853 2.856587,0.107666 4,0.244191 4,0.477606 0,0.591465 -1.206694,2.131732 -2.03482,2.597316 -1.104972,0.621232 -2.017524,0.776699 -2.9567164,0.503724 z" - id="path22" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;stroke-width:0.27118644" - d="m 23.803073,48.827119 c -2.588428,-6.785887 -2.746436,-7.118644 -3.380245,-7.118644 -0.80888,0 -1.830981,-0.987584 -2.582115,-2.494915 l -0.70173,-1.408188 v -7.268787 -7.268788 h 2.74764 2.74764 l 0.913377,0.968461 0.913377,0.968462 v 10.791134 c 0,6.094542 0.118597,11.416495 0.272495,12.227996 0.472313,2.490496 2.221382,4.174016 4.676657,4.501389 1.197747,0.159702 1.288136,0.226389 1.288136,0.950376 v 0.778622 H 28.323901 25.949497 Z M 21.72947,29.604106 c 0.30913,-0.392996 0.562055,-0.925691 0.562055,-1.183767 0,-0.837595 -1.060709,-1.898305 -1.898305,-1.898305 -0.837595,0 -1.898305,1.06071 -1.898305,1.898305 0,0.258076 0.252925,0.790771 0.562056,1.183767 0.755229,0.960119 1.917269,0.960119 2.672499,0 z" - id="path24" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;stroke-width:0.27118644" - d="m 30.606223,45.782668 c -0.765195,-0.743937 -2.301372,-1.362329 -3.384233,-1.362329 -0.561728,0 -0.56653,-0.072 -0.646503,-9.694915 l -0.08057,-9.694916 -0.743363,-1.264534 C 24.562004,21.742431 23.5116,21.258072 20.054239,21.138841 l -2.915254,-0.100535 v -3.508891 c 0,-3.849925 0.222059,-4.646423 1.545461,-5.543381 0.718027,-0.486655 1.423074,-0.514848 12.875229,-0.514848 11.826939,0 12.133851,0.01338 12.881358,0.561651 1.406088,1.031315 1.714012,2.062852 1.714481,5.743434 l 4.2e-4,3.322034 h -2.654403 c -3.221159,0 -4.612633,0.566538 -5.884343,2.395808 L 36.8,24.669581 l -0.07745,9.875379 -0.07745,9.875379 -0.600513,0.0016 c -1.161882,0.0029 -2.658754,0.578804 -3.558981,1.369212 -0.500359,0.439322 -0.95465,0.785603 -1.009536,0.769514 -0.05489,-0.01608 -0.446315,-0.366148 -0.869841,-0.77791 z m 5.90322,-25.652886 c 0.509563,-0.509563 0.542694,-0.97595 0.100726,-1.417918 -0.455568,-0.455568 -8.656296,-0.455568 -9.111864,0 -0.472022,0.472022 -0.398954,1.231917 0.149153,1.55116 0.261846,0.152511 2.258902,0.280112 4.455205,0.284662 3.264903,0.0068 4.057253,-0.06838 4.40678,-0.417904 z m 0.294687,-3.925847 c 0.378539,-1.19267 -0.171196,-1.342918 -4.913525,-1.342918 h -4.436204 l -0.16629,0.662553 c -0.09146,0.364404 -0.08658,0.791523 0.01084,0.949153 0.113111,0.18302 1.830892,0.286599 4.753017,0.286599 4.373459,0 4.583689,-0.02457 4.752163,-0.555387 z" - id="path26" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;stroke-width:0.27118644" - d="M 48.011313,17.05317 C 47.919797,13.05838 47.908472,12.993571 47.101331,11.845839 45.629876,9.7534731 45.103972,9.5916979 39.271528,9.4372881 L 34.149835,9.3016949 35.339324,8.1069361 c 1.507181,-1.5138575 3.361928,-2.3691566 5.982963,-2.7589871 4.601839,-0.6844383 8.618738,1.4739868 10.638513,5.716458 0.805713,1.692372 0.842876,1.927739 0.931335,5.898305 l 0.09214,4.135593 H 50.54413 48.103986 Z" - id="path28" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;stroke-width:0.27118644" - d="m 51.028069,26.454237 c -1.062276,-0.536169 -2.409652,-2.192245 -2.426998,-2.983051 -0.0025,-0.111864 1.887065,-0.203389 4.198929,-0.203389 2.311864,0 4.20339,0.06904 4.20339,0.153421 0,0.724978 -1.661574,2.683539 -2.766194,3.26062 -1.023364,0.53463 -1.809424,0.47888 -3.209127,-0.227601 z" - id="path30" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;stroke-width:0.27118644" - d="m 49.681356,48.858546 c -1.611294,-0.307665 -2.465437,-0.733788 -3.240682,-1.616743 -0.747978,-0.8519 -0.826643,-1.116269 -0.82218,-2.763104 0.0043,-1.570257 0.116704,-1.986024 0.816451,-3.018728 1.399229,-2.065018 1.619292,-3.334736 1.619292,-9.342979 V 26.691747 L 48.8,27.406064 c 0.871301,0.834562 2.471159,1.556648 3.448917,1.556648 h 0.686676 v 6.942067 c 0,5.863432 0.06889,7.087232 0.443348,7.876352 0.502746,1.059459 1.581008,1.723954 2.797422,1.723954 0.978677,0 0.994576,0.07166 0.274428,1.236885 -0.971252,1.571518 -4.251927,2.597275 -6.769435,2.116576 z" - id="path32" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;stroke-width:0.27118644" - d="m 28.257627,58.601701 c -0.716904,-0.262068 -1.627119,-1.243293 -1.627119,-1.754057 0,-0.461606 0.341385,-0.495102 5.045964,-0.495102 4.489843,0 5.027821,0.04728 4.881356,0.42896 -0.09053,0.235927 -0.164608,0.542806 -0.164608,0.681952 0,0.139146 -0.39661,0.494811 -0.881356,0.790366 -0.744456,0.453904 -1.344708,0.534205 -3.864406,0.516977 -1.640678,-0.01122 -3.166102,-0.08731 -3.389831,-0.169096 z" - id="path34" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;stroke-width:0.27118644" - d="m 28.549335,50.404863 c -0.288636,-0.182676 -0.185827,-0.2673 0.40678,-0.334831 0.646935,-0.07372 0.809528,-0.234833 0.88255,-0.874505 0.112283,-0.983609 -0.283444,-1.240336 -1.920021,-1.245612 -1.192113,-0.0038 -1.288136,-0.05469 -1.288136,-0.682118 0,-0.591134 0.118902,-0.677966 0.928346,-0.677966 1.587164,0 3.129479,1.832733 3.137939,3.728813 0.0018,0.394373 -1.561395,0.457133 -2.147458,0.08622 z" - id="path36" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;stroke-width:0.27118644" - d="m 32.679763,49.505248 c 0.205834,-1.534611 1.641624,-2.915417 3.031509,-2.915417 0.835886,0 0.953135,0.0834 0.953135,0.677966 0,0.62417 -0.09825,0.677966 -1.238167,0.677966 -1.460703,0 -2.287257,0.375846 -2.287257,1.04005 0,0.676849 0.535125,1.128746 1.342373,1.133594 0.546053,0.0033 0.605953,0.05945 0.284746,0.267034 -0.223729,0.144584 -0.819458,0.26475 -1.323843,0.267033 l -0.917063,0.0042 z" - id="path38" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;stroke-width:0.27118644" - d="M 9.9525425,48.793515 C 8.6071711,48.438561 7.4519295,47.728962 6.8552783,46.891042 6.0647597,45.780861 6.1468422,45.505085 7.2677967,45.505085 c 0.7486873,0 1.1912116,-0.214941 1.8983051,-0.922034 l 0.9220342,-0.922034 v -7.349153 -7.349152 h 0.822269 c 1.069545,0 2.348849,-0.546949 3.448917,-1.474537 l 0.881356,-0.743168 v 5.684927 c 0,6.222343 0.132493,6.970583 1.61614,9.12699 0.665318,0.967007 0.824457,1.477007 0.824117,2.64109 -5.97e-4,2.008069 -0.658172,3.196688 -2.189083,3.95688 -1.350714,0.670712 -4.180936,0.997006 -5.5393095,0.638621 z" - id="path23" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;stroke-width:0.27118644" - d="m 32.59661,53.686172 c 0,-0.739533 0.08316,-0.800211 1.321907,-0.964537 1.645288,-0.218253 3.284148,-1.359924 3.988171,-2.778255 0.48172,-0.970477 0.530516,-1.915837 0.656024,-12.709482 0.14434,-12.413236 0.132124,-12.305973 1.526383,-13.402697 0.615878,-0.48445 1.093395,-0.563404 3.407485,-0.563404 h 2.691232 l -0.08374,7.38983 c -0.08,7.059811 -0.110979,7.440805 -0.693741,8.531245 -0.725945,1.358359 -1.911046,2.519603 -2.571368,2.519603 -0.67206,0 -0.80848,0.279561 -3.308333,6.779661 l -2.242337,5.830508 -2.345843,0.07835 -2.345844,0.07836 z M 43.986441,29.776271 c 1.119952,-1.119952 0.319595,-3.254237 -1.220339,-3.254237 -0.372882,0 -0.922034,0.244068 -1.220339,0.542373 -1.119952,1.119952 -0.319596,3.254237 1.220339,3.254237 0.372881,0 0.922034,-0.244068 1.220339,-0.542373 z" - id="path25" - inkscape:connector-curvature="0" /></svg> \ No newline at end of file diff --git a/client/public/images/pieces/Ball/wy.svg b/client/public/images/pieces/Ball/wy.svg deleted file mode 100644 index e86bfe40..00000000 --- a/client/public/images/pieces/Ball/wy.svg +++ /dev/null @@ -1,162 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - id="Layer_1" - x="0px" - y="0px" - viewBox="0 0 64 64" - xml:space="preserve" - sodipodi:docname="wy.svg" - inkscape:version="0.92.4 5da689c313, 2019-01-14"><defs - id="defs18" /><sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="960" - inkscape:window-height="1060" - id="namedview16" - showgrid="false" - inkscape:zoom="10.429825" - inkscape:cx="33.627119" - inkscape:cy="32" - inkscape:window-x="0" - inkscape:window-y="20" - inkscape:window-maximized="0" - inkscape:current-layer="Layer_1" /><g - id="wildebeest__x5F_line" - transform="matrix(0.86016949,0,0,0.89830508,4.0677966,3.2542373)"><path - d="m 63.2,42 c -0.5,-0.1 -0.9,0.2 -1.1,0.6 -0.4,1.2 -1.2,2.3 -1.6,2.3 -0.8,0 -1.5,-0.7 -1.5,-1.5 V 28.1 c 1,-0.4 1.9,-1 2.7,-1.8 C 63.1,24.9 63.9,22.9 64,21 64,20.7 63.9,20.5 63.7,20.3 63.5,20.1 63.3,20 63,20 H 59 V 13.5 C 59,6.1 52.9,0 45.5,0 37.9,0 34.2,3.7 32.4,7 H 31.6 C 29.8,3.7 26.1,0 18.5,0 11.1,0 5,6.1 5,13.5 V 20 H 1 C 0.7,20 0.5,20.1 0.3,20.3 0.1,20.5 0,20.8 0,21.1 0.1,23 1,24.9 2.3,26.4 3.1,27.2 4,27.8 5,28.1 V 43.4 C 5,44.3 4.3,45 3.5,45 3.2,45 2.4,43.9 1.9,42.7 1.7,42.2 1.3,42 0.8,42.1 0.3,42.1 0,42.5 0,43 v 2.5 c 0,2 0.8,3.9 2.3,5.2 C 3.4,51.8 5.5,53 9,53 h 1.1 C 18,52.4 18,47.6 18,45.5 v -0.6 c 0.1,0 0.2,0.1 0.3,0.1 L 24,59.2 c 0.1,2.9 2.4,4.8 6,4.8 h 4 c 3.6,0 5.9,-1.9 6,-4.8 l 5.7,-14.3 c 0.1,0 0.2,-0.1 0.3,-0.1 v 0.6 c 0,2.1 0,6.9 7.9,7.5 H 55 c 3.4,0 5.5,-1.2 6.7,-2.3 1.5,-1.4 2.3,-3.2 2.3,-5.2 V 43 c 0,-0.5 -0.3,-0.9 -0.8,-1 z m -9.1,9 C 48,50.5 48,47.5 48,45.5 V 44 43.8 c 1.9,-1.6 3,-4.6 3,-6.8 V 25.7 c 0.1,0.2 0.2,0.3 0.4,0.5 1.3,1.4 3.1,2.3 5,2.4 H 57 v 14.9 c 0,1.9 1.6,3.5 3.5,3.5 0.5,0 1,-0.2 1.4,-0.5 -0.2,1.1 -0.7,2 -1.5,2.8 -1.5,1.3 -3.6,1.9 -6.3,1.7 z M 35.2,61.9 C 34.8,62 34.5,62 34.3,62 H 29.7 C 29.4,62 29.1,62 28.8,61.9 28,61.8 27.1,61.4 26.5,60.7 26.2,60.3 26,59.7 26,59 h 12 c 0,0.7 -0.2,1.3 -0.5,1.7 -0.6,0.7 -1.5,1.1 -2.3,1.2 z M 16,44 v 1.5 c 0,2 0,5.1 -6.1,5.5 C 7.2,51.2 5,50.6 3.6,49.3 2.8,48.5 2.3,47.6 2.1,46.5 2.5,46.8 3,47 3.5,47 5.4,47 7,45.4 7,43.5 V 28.6 h 0.6 c 1.9,-0.1 3.7,-1 5,-2.4 0.1,-0.2 0.3,-0.3 0.4,-0.5 V 37 c 0,2.2 1.2,5.1 3,6.8 z M 5,22 h 7.4 c -0.1,1 -0.6,2 -1.3,2.8 -0.9,1 -2.2,1.7 -3.6,1.7 H 7 C 6.7,26.5 6.3,26.4 6,26.3 5.7,26.2 5.3,26 5,25.8 4.6,25.5 4.2,25.2 3.8,24.8 3,24 2.4,22.9 2.2,21.8 H 5 Z M 7,13.5 C 7,7.2 12.2,2 18.5,2 23.4,2 27,3.7 29.3,7 H 19 c -3.3,0 -6,2.7 -6,6 v 7 H 7 Z M 45.5,2 C 51.8,2 57,7.2 57,13.5 V 20 H 51 V 13 C 51,9.7 48.3,7 45,7 H 34.7 C 37,3.7 40.6,2 45.5,2 Z M 59,25.9 c -0.3,0.2 -0.7,0.3 -1,0.5 -0.3,0.1 -0.7,0.2 -1,0.2 H 56.5 C 55.1,26.5 53.8,25.9 52.9,24.9 52.2,24 51.7,23 51.6,22 h 10.2 c -0.3,1.1 -0.8,2.1 -1.6,3 -0.4,0.3 -0.8,0.7 -1.2,0.9 z M 33.4,9 H 45 c 2.2,0 4,1.8 4,4 v 7 h -5 c -2.2,0 -4.1,1.2 -5.2,3 -0.5,0.9 -0.8,1.9 -0.8,3 v 20 h -1 c -2.1,0 -3.9,1.1 -5,2.7 C 30.9,47.1 29.1,46 27,46 H 26 V 26 c 0,-1.1 -0.3,-2.1 -0.8,-3 -1,-1.8 -3,-3 -5.2,-3 h -5 v -7 c 0,-2.2 1.8,-4 4,-4 z M 29,50 H 26.1 C 26,49.7 26,49.3 26,49 v -1 h 1 c 2.2,0 4,1.8 4,4 v 1 h -1 c -1,0 -1.9,-0.4 -2.6,-1 H 29 c 0.6,0 1,-0.4 1,-1 0,-0.6 -0.4,-1 -1,-1 z m 4,2 c 0,-2.2 1.8,-4 4,-4 h 1 v 1 c 0,0.3 -0.1,0.7 -0.1,1 H 35 c -0.6,0 -1,0.4 -1,1 0,0.6 0.4,1 1,1 h 1.6 C 35.9,52.6 35,53 34,53 H 33 Z M 17.6,42.4 C 16.2,41.4 15,38.9 15,37 V 22 h 5 c 2.2,0 4,1.8 4,4 v 23 c 0,1.2 0.4,2.4 1,3.3 1.1,1.6 2.9,2.7 5,2.7 h 1 v 2 H 25.3 L 25,56.3 19.9,43.6 C 19.8,43.2 19.4,43 19,43 18.5,43 18.1,42.8 17.6,42.4 Z M 44.1,43.6 39,56.3 38.7,57 H 33 v -2 h 1 c 2.1,0 3.9,-1.1 5,-2.7 0.6,-1 1,-2.1 1,-3.3 V 26 c 0,-2.2 1.8,-4 4,-4 h 5 v 15 c 0,1.9 -1.2,4.4 -2.6,5.4 -0.5,0.4 -0.9,0.6 -1.4,0.6 -0.4,0 -0.8,0.2 -0.9,0.6 z" - id="path2" - inkscape:connector-curvature="0" /><circle - cx="19" - cy="28" - r="2" - id="circle4" /><circle - cx="45" - cy="28" - r="2" - id="circle6" /><path - d="m 28,13 c -0.6,0 -1,0.4 -1,1 0,0.6 0.4,1 1,1 h 9 c 0.6,0 1,-0.4 1,-1 0,-0.6 -0.4,-1 -1,-1 z" - id="path8" - inkscape:connector-curvature="0" /><path - d="m 37,17 h -9 c -0.2,0 -0.4,0.1 -0.6,0.2 C 27.2,17.4 27,17.7 27,18 v 0.2 c 0.1,0.5 0.5,0.8 1,0.8 h 9 c 0.1,0 0.2,0 0.3,-0.1 0.4,-0.1 0.7,-0.5 0.7,-0.9 0,-0.6 -0.4,-1 -1,-1 z" - id="path10" - inkscape:connector-curvature="0" /></g><metadata - id="metadata13"><rdf:RDF><rdf:Description - about="https://iconscout.com/legal#licenses" - dc:title="wildebeest" - dc:description="wildebeest" - dc:publisher="Iconscout" - dc:date="2017-09-06" - dc:format="image/svg+xml" - dc:language="en"><dc:creator><rdf:Bag><rdf:li>Madeby Grids</rdf:li></rdf:Bag></dc:creator></rdf:Description><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><path - style="fill:#ffffff;stroke-width:0.27118644" - d="m 10.093588,18.454237 c 0.0077,-3.714673 0.376945,-5.860183 1.348243,-7.833169 1.424016,-2.8925858 4.235339,-4.8812246 7.606113,-5.3803177 1.656005,-0.245196 4.701309,0.2872518 6.351287,1.1104732 C 26.686798,6.9936277 28.8,8.766749 28.8,9.2047016 c 0,0.1098421 -2.288136,0.2376181 -5.084746,0.2839463 -5.681624,0.094121 -5.960615,0.1792924 -7.593841,2.3182781 -0.726819,0.951891 -0.747278,1.078129 -0.832028,5.133633 l -0.08689,4.157746 h -2.557182 -2.557181 z" - id="path20" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;stroke-width:0.27118644" - d="M 9.4355826,26.775344 C 8.4616968,26.492285 6.9801261,25.089083 6.5443628,24.037057 6.3651498,23.604399 6.2654554,23.2044 6.3228198,23.148171 c 0.057364,-0.05623 1.9042988,-0.03439 4.1042992,0.04853 2.856587,0.107666 4,0.244191 4,0.477606 0,0.591465 -1.206694,2.131732 -2.03482,2.597316 -1.104972,0.621232 -2.017524,0.776699 -2.9567164,0.503724 z" - id="path22" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;stroke-width:0.27118644" - d="m 23.803073,48.827119 c -2.588428,-6.785887 -2.746436,-7.118644 -3.380245,-7.118644 -0.80888,0 -1.830981,-0.987584 -2.582115,-2.494915 l -0.70173,-1.408188 v -7.268787 -7.268788 h 2.74764 2.74764 l 0.913377,0.968461 0.913377,0.968462 v 10.791134 c 0,6.094542 0.118597,11.416495 0.272495,12.227996 0.472313,2.490496 2.221382,4.174016 4.676657,4.501389 1.197747,0.159702 1.288136,0.226389 1.288136,0.950376 v 0.778622 H 28.323901 25.949497 Z M 21.72947,29.604106 c 0.30913,-0.392996 0.562055,-0.925691 0.562055,-1.183767 0,-0.837595 -1.060709,-1.898305 -1.898305,-1.898305 -0.837595,0 -1.898305,1.06071 -1.898305,1.898305 0,0.258076 0.252925,0.790771 0.562056,1.183767 0.755229,0.960119 1.917269,0.960119 2.672499,0 z" - id="path24" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;stroke-width:0.27118644" - d="m 30.606223,45.782668 c -0.765195,-0.743937 -2.301372,-1.362329 -3.384233,-1.362329 -0.561728,0 -0.56653,-0.072 -0.646503,-9.694915 l -0.08057,-9.694916 -0.743363,-1.264534 C 24.562004,21.742431 23.5116,21.258072 20.054239,21.138841 l -2.915254,-0.100535 v -3.508891 c 0,-3.849925 0.222059,-4.646423 1.545461,-5.543381 0.718027,-0.486655 1.423074,-0.514848 12.875229,-0.514848 11.826939,0 12.133851,0.01338 12.881358,0.561651 1.406088,1.031315 1.714012,2.062852 1.714481,5.743434 l 4.2e-4,3.322034 h -2.654403 c -3.221159,0 -4.612633,0.566538 -5.884343,2.395808 L 36.8,24.669581 l -0.07745,9.875379 -0.07745,9.875379 -0.600513,0.0016 c -1.161882,0.0029 -2.658754,0.578804 -3.558981,1.369212 -0.500359,0.439322 -0.95465,0.785603 -1.009536,0.769514 -0.05489,-0.01608 -0.446315,-0.366148 -0.869841,-0.77791 z m 5.90322,-25.652886 c 0.509563,-0.509563 0.542694,-0.97595 0.100726,-1.417918 -0.455568,-0.455568 -8.656296,-0.455568 -9.111864,0 -0.472022,0.472022 -0.398954,1.231917 0.149153,1.55116 0.261846,0.152511 2.258902,0.280112 4.455205,0.284662 3.264903,0.0068 4.057253,-0.06838 4.40678,-0.417904 z m 0.294687,-3.925847 c 0.378539,-1.19267 -0.171196,-1.342918 -4.913525,-1.342918 h -4.436204 l -0.16629,0.662553 c -0.09146,0.364404 -0.08658,0.791523 0.01084,0.949153 0.113111,0.18302 1.830892,0.286599 4.753017,0.286599 4.373459,0 4.583689,-0.02457 4.752163,-0.555387 z" - id="path26" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;stroke-width:0.27118644" - d="M 48.011313,17.05317 C 47.919797,13.05838 47.908472,12.993571 47.101331,11.845839 45.629876,9.7534731 45.103972,9.5916979 39.271528,9.4372881 L 34.149835,9.3016949 35.339324,8.1069361 c 1.507181,-1.5138575 3.361928,-2.3691566 5.982963,-2.7589871 4.601839,-0.6844383 8.618738,1.4739868 10.638513,5.716458 0.805713,1.692372 0.842876,1.927739 0.931335,5.898305 l 0.09214,4.135593 H 50.54413 48.103986 Z" - id="path28" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;stroke-width:0.27118644" - d="m 51.028069,26.454237 c -1.062276,-0.536169 -2.409652,-2.192245 -2.426998,-2.983051 -0.0025,-0.111864 1.887065,-0.203389 4.198929,-0.203389 2.311864,0 4.20339,0.06904 4.20339,0.153421 0,0.724978 -1.661574,2.683539 -2.766194,3.26062 -1.023364,0.53463 -1.809424,0.47888 -3.209127,-0.227601 z" - id="path30" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;stroke-width:0.27118644" - d="m 49.681356,48.858546 c -1.611294,-0.307665 -2.465437,-0.733788 -3.240682,-1.616743 -0.747978,-0.8519 -0.826643,-1.116269 -0.82218,-2.763104 0.0043,-1.570257 0.116704,-1.986024 0.816451,-3.018728 1.399229,-2.065018 1.619292,-3.334736 1.619292,-9.342979 V 26.691747 L 48.8,27.406064 c 0.871301,0.834562 2.471159,1.556648 3.448917,1.556648 h 0.686676 v 6.942067 c 0,5.863432 0.06889,7.087232 0.443348,7.876352 0.502746,1.059459 1.581008,1.723954 2.797422,1.723954 0.978677,0 0.994576,0.07166 0.274428,1.236885 -0.971252,1.571518 -4.251927,2.597275 -6.769435,2.116576 z" - id="path32" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;stroke-width:0.27118644" - d="m 28.257627,58.601701 c -0.716904,-0.262068 -1.627119,-1.243293 -1.627119,-1.754057 0,-0.461606 0.341385,-0.495102 5.045964,-0.495102 4.489843,0 5.027821,0.04728 4.881356,0.42896 -0.09053,0.235927 -0.164608,0.542806 -0.164608,0.681952 0,0.139146 -0.39661,0.494811 -0.881356,0.790366 -0.744456,0.453904 -1.344708,0.534205 -3.864406,0.516977 -1.640678,-0.01122 -3.166102,-0.08731 -3.389831,-0.169096 z" - id="path34" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;stroke-width:0.27118644" - d="m 28.549335,50.404863 c -0.288636,-0.182676 -0.185827,-0.2673 0.40678,-0.334831 0.646935,-0.07372 0.809528,-0.234833 0.88255,-0.874505 0.112283,-0.983609 -0.283444,-1.240336 -1.920021,-1.245612 -1.192113,-0.0038 -1.288136,-0.05469 -1.288136,-0.682118 0,-0.591134 0.118902,-0.677966 0.928346,-0.677966 1.587164,0 3.129479,1.832733 3.137939,3.728813 0.0018,0.394373 -1.561395,0.457133 -2.147458,0.08622 z" - id="path36" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;stroke-width:0.27118644" - d="m 32.679763,49.505248 c 0.205834,-1.534611 1.641624,-2.915417 3.031509,-2.915417 0.835886,0 0.953135,0.0834 0.953135,0.677966 0,0.62417 -0.09825,0.677966 -1.238167,0.677966 -1.460703,0 -2.287257,0.375846 -2.287257,1.04005 0,0.676849 0.535125,1.128746 1.342373,1.133594 0.546053,0.0033 0.605953,0.05945 0.284746,0.267034 -0.223729,0.144584 -0.819458,0.26475 -1.323843,0.267033 l -0.917063,0.0042 z" - id="path38" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;stroke-width:0.27118644" - d="M 9.9525425,48.793515 C 8.6071711,48.438561 7.4519295,47.728962 6.8552783,46.891042 6.0647597,45.780861 6.1468422,45.505085 7.2677967,45.505085 c 0.7486873,0 1.1912116,-0.214941 1.8983051,-0.922034 l 0.9220342,-0.922034 v -7.349153 -7.349152 h 0.822269 c 1.069545,0 2.348849,-0.546949 3.448917,-1.474537 l 0.881356,-0.743168 v 5.684927 c 0,6.222343 0.132493,6.970583 1.61614,9.12699 0.665318,0.967007 0.824457,1.477007 0.824117,2.64109 -5.97e-4,2.008069 -0.658172,3.196688 -2.189083,3.95688 -1.350714,0.670712 -4.180936,0.997006 -5.5393095,0.638621 z" - id="path23" - inkscape:connector-curvature="0" /><path - style="fill:#ffffff;stroke-width:0.27118644" - d="m 32.59661,53.686172 c 0,-0.739533 0.08316,-0.800211 1.321907,-0.964537 1.645288,-0.218253 3.284148,-1.359924 3.988171,-2.778255 0.48172,-0.970477 0.530516,-1.915837 0.656024,-12.709482 0.14434,-12.413236 0.132124,-12.305973 1.526383,-13.402697 0.615878,-0.48445 1.093395,-0.563404 3.407485,-0.563404 h 2.691232 l -0.08374,7.38983 c -0.08,7.059811 -0.110979,7.440805 -0.693741,8.531245 -0.725945,1.358359 -1.911046,2.519603 -2.571368,2.519603 -0.67206,0 -0.80848,0.279561 -3.308333,6.779661 l -2.242337,5.830508 -2.345843,0.07835 -2.345844,0.07836 z M 43.986441,29.776271 c 1.119952,-1.119952 0.319595,-3.254237 -1.220339,-3.254237 -0.372882,0 -0.922034,0.244068 -1.220339,0.542373 -1.119952,1.119952 -0.319596,3.254237 1.220339,3.254237 0.372881,0 0.922034,-0.244068 1.220339,-0.542373 z" - id="path25" - inkscape:connector-curvature="0" /><path - style="fill:#ffcc00;fill-opacity:1;stroke-width:0.09587888" - d="m 30.874717,46.123997 c -1.03374,-1.067627 -2.226309,-1.583039 -3.662864,-1.583039 h -0.698947 l -0.0033,-9.084524 c -0.0038,-10.198247 0.0048,-10.050539 -0.658097,-11.388282 -0.643108,-1.297846 -1.75778,-2.240984 -3.173713,-2.68532 -0.424738,-0.133288 -1.027353,-0.17455 -3.097391,-0.212085 l -2.570057,-0.0466 0.02927,-3.560306 0.02927,-3.560306 0.250471,-0.527334 c 0.371809,-0.782795 0.952146,-1.380999 1.694108,-1.746266 l 0.640119,-0.31513 H 31.59247 43.531408 l 0.531709,0.249392 c 0.66235,0.310668 1.141054,0.725571 1.51293,1.311289 0.557568,0.878192 0.59203,1.158964 0.59203,4.823471 v 3.329163 l -2.56476,0.04074 c -2.301214,0.03655 -2.62951,0.06198 -3.194889,0.247478 -1.654155,0.542708 -3.041626,2.018701 -3.494033,3.716956 -0.130707,0.490651 -0.159122,1.842601 -0.209915,9.987565 l -0.05875,9.4201 h -0.68378 c -1.414165,0 -2.602016,0.514514 -3.68317,1.595353 -0.388271,0.388157 -0.711863,0.700296 -0.719092,0.693641 -0.0072,-0.0067 -0.315468,-0.324335 -0.684975,-0.705955 z m 5.352229,-25.851618 c 0.572639,-0.292851 0.724479,-1.015775 0.313693,-1.493525 l -0.231306,-0.269013 -3.867516,-0.0297 c -2.127133,-0.01634 -4.056122,-0.0021 -4.286641,0.03159 -0.567647,0.08301 -0.875239,0.418352 -0.875239,0.95419 0,0.399932 0.213275,0.713519 0.575273,0.84585 0.295596,0.108056 8.155735,0.07108 8.371736,-0.03939 z m 0.361779,-3.810586 c 0.22682,-0.280211 0.24817,-0.98937 0.03617,-1.201372 -0.306003,-0.306003 -0.854892,-0.344968 -4.866976,-0.345504 l -4.007302,-5.34e-4 -0.235339,0.235339 c -0.177281,0.17728 -0.235339,0.337592 -0.235339,0.649818 0,0.524923 0.202131,0.817348 0.60049,0.868733 0.170697,0.02202 2.15867,0.0355 4.417718,0.02995 l 4.107358,-0.01008 z" - id="path27" - inkscape:connector-curvature="0" /><path - style="fill:#ffcc00;fill-opacity:1;stroke-width:0.09587888" - d="m 25.548757,53.625483 c -0.168814,-0.435051 -1.228183,-3.185576 -2.354154,-6.112279 -1.366829,-3.552759 -2.115095,-5.377043 -2.251447,-5.489067 -0.112325,-0.09228 -0.318098,-0.168735 -0.457272,-0.169893 -0.966158,-0.008 -2.228745,-1.285847 -2.939799,-2.975236 -0.517484,-1.229488 -0.521725,-1.301144 -0.523524,-8.845536 l -0.0017,-6.980993 2.516821,0.03581 c 1.584223,0.02254 2.641167,0.07771 2.852396,0.148875 0.785418,0.264627 1.778765,1.30454 2.120152,2.219538 0.101443,0.271894 0.137043,2.604464 0.177855,11.653643 l 0.05103,11.313708 0.249126,0.680936 c 0.803333,2.195753 2.740104,3.585675 4.996418,3.585675 h 0.746887 v 0.862909 0.86291 H 28.293634 25.855691 Z M 21.113803,30.068477 c 1.110697,-0.504266 1.387664,-1.949768 0.551025,-2.875828 -0.430831,-0.476878 -0.781455,-0.615004 -1.425557,-0.561591 -1.550745,0.1286 -2.125867,2.063118 -0.943339,3.173078 0.497095,0.46659 1.160058,0.562993 1.817871,0.264341 z" - id="path29" - inkscape:connector-curvature="0" /><path - style="fill:#ffcc00;fill-opacity:1;stroke-width:0.09587888" - d="M 10.453192,48.978756 C 9.4055713,48.833876 8.1413031,48.303327 7.4128628,47.702885 6.9600178,47.329612 6.3418112,46.399068 6.1369846,45.782393 6.0480509,45.514638 5.994631,45.276223 6.0182737,45.25258 c 0.023643,-0.02364 0.1992347,0.0223 0.3902046,0.10209 0.4501725,0.188094 1.0669967,0.184306 1.6374185,-0.01006 0.6209049,-0.211563 1.5028134,-1.041278 1.7958139,-1.689533 l 0.2279663,-0.504367 0.02634,-7.051991 0.02634,-7.051992 0.840692,-0.106114 c 1.412841,-0.178334 2.774032,-0.867431 3.748275,-1.897549 l 0.48788,-0.515862 0.0016,4.668357 c 0.0021,6.410897 0.07673,7.143077 0.907116,8.904114 0.445307,0.944386 0.851255,1.590057 1.360828,2.164434 l 0.319226,0.359822 v 1.22854 c 0,1.979651 -0.232265,2.822847 -1.005188,3.649165 -0.934671,0.999238 -2.795499,1.559107 -5.083121,1.529363 -0.527334,-0.0069 -1.088226,-0.03037 -1.246426,-0.05225 z" - id="path31" - inkscape:connector-curvature="0" /><path - style="fill:#ffcc00;fill-opacity:1;stroke-width:0.09587888" - d="m 10.117886,18.054416 c 1.49e-4,-1.700652 0.04786,-3.480403 0.106017,-3.955004 0.512906,-4.1853877 3.499503,-7.6568744 7.516085,-8.7363594 0.954164,-0.2564385 3.949677,-0.2564407 5.12952,-3.7e-6 2.100303,0.4564979 3.716478,1.3083121 5.056048,2.6648179 0.381458,0.3862802 0.827432,0.885696 0.991053,1.1098129 l 0.297494,0.4074853 -4.586511,7.287e-4 c -2.745578,4.314e-4 -4.835909,0.041187 -5.207864,0.1015333 -1.644274,0.2667646 -3.190652,1.597688 -3.83589,3.301438 -0.189667,0.500816 -0.227813,0.842082 -0.294717,2.63667 -0.04227,1.133768 -0.07979,2.848801 -0.08339,3.811185 l -0.0065,1.74979 h -2.54079 -2.540791 z" - id="path33" - inkscape:connector-curvature="0" /><path - style="fill:#ffcc00;fill-opacity:1;stroke-width:0.09587888" - d="M 9.4464639,26.910823 C 8.6578182,26.652423 7.6407032,25.870717 7.0162931,25.043112 6.5609519,24.439593 6.3471959,24.026068 6.1543867,23.375694 L 6.0051598,22.87233 h 1.1453787 c 0.6996666,0 1.1453788,0.03731 1.1453788,0.09588 0,0.062 1.1311696,0.09588 3.2017507,0.09588 h 3.201751 l -0.08824,0.407485 c -0.272793,1.259692 -1.355771,2.605387 -2.544794,3.16213 -0.561154,0.262752 -0.777359,0.309922 -1.517311,0.331036 -0.4746,0.01354 -0.9707736,-0.01072 -1.1026071,-0.05392 z" - id="path35" - inkscape:connector-curvature="0" /><path - style="fill:#ffcc00;fill-opacity:1;stroke-width:0.09587888" - d="m 47.988111,17.814719 c -0.0019,-3.736295 -0.05328,-4.181005 -0.62177,-5.378082 C 46.921491,11.49991 45.905916,10.467423 45.01753,10.048711 44.046963,9.5912669 43.450017,9.545165 38.497413,9.545165 h -4.517869 l 0.315477,-0.4392939 c 1.364129,-1.8995169 3.624924,-3.2674577 6.264141,-3.7902496 1.05758,-0.2094917 4.04021,-0.180432 4.889823,0.047641 3.673351,0.9860881 6.43584,3.8887035 7.356276,7.7294215 0.173444,0.72373 0.200254,1.220182 0.239475,4.434398 l 0.04417,3.619428 H 50.539342 47.98978 l -0.0017,-3.331791 z" - id="path37" - inkscape:connector-curvature="0" /><path - style="fill:#ffcc00;fill-opacity:1;stroke-width:0.09587888" - d="m 51.824931,26.960603 c -1.228558,-0.334454 -2.23299,-1.178996 -2.809713,-2.362453 -0.192736,-0.3955 -0.389857,-0.90246 -0.438047,-1.126577 l -0.08762,-0.407485 h 4.351474 4.351473 l -0.242733,0.647182 c -0.546417,1.456871 -1.363807,2.377035 -2.674853,3.011178 -0.65506,0.316846 -0.850106,0.367645 -1.390244,0.362082 -0.345557,-0.0036 -0.822439,-0.05933 -1.05974,-0.123927 z" - id="path39" - inkscape:connector-curvature="0" /><path - style="fill:#ffcc00;fill-opacity:1;stroke-width:0.09587888" - d="m 32.457396,53.553573 v -0.862909 h 0.746888 c 1.449484,0 2.649797,-0.500482 3.686387,-1.537071 0.736256,-0.736256 1.269197,-1.72265 1.432117,-2.65063 0.06026,-0.343216 0.123028,-4.824589 0.162938,-11.632316 0.06264,-10.684273 0.07151,-11.09016 0.252192,-11.53287 0.265127,-0.649622 0.790928,-1.311244 1.329998,-1.673552 0.805419,-0.541322 1.174748,-0.600137 3.76853,-0.600137 h 2.331631 l -0.0014,6.975189 c -0.0015,7.541531 0.002,7.483337 -0.529444,8.825529 -0.652396,1.647793 -1.961273,2.981342 -2.934127,2.989438 -0.139174,0.0012 -0.342167,0.07761 -0.451094,0.169893 -0.224971,0.190596 -0.122739,-0.06098 -2.815032,6.92725 -1.107229,2.87397 -2.034995,5.279331 -2.061701,5.345248 -0.03705,0.09146 -0.625306,0.119848 -2.483212,0.119848 H 32.457396 Z M 43.30624,30.156691 c 0.421703,-0.117131 0.970487,-0.69449 1.13557,-1.194698 0.226103,-0.685096 -0.06147,-1.593193 -0.645633,-2.038752 -0.462276,-0.352596 -1.274888,-0.411629 -1.822258,-0.132382 -1.31678,0.671771 -1.246766,2.665207 0.115339,3.283925 0.442978,0.201217 0.720248,0.219878 1.216982,0.08191 z" - id="path41" - inkscape:connector-curvature="0" /><path - style="fill:#ffcc00;fill-opacity:1;stroke-width:0.09587888" - d="m 49.874704,48.947941 c -1.62438,-0.254414 -2.847813,-0.78581 -3.528712,-1.532692 -0.714994,-0.784279 -0.944946,-1.641793 -0.944946,-3.523791 v -1.189555 l 0.419697,-0.494686 c 0.900468,-1.061359 1.50766,-2.258013 1.905099,-3.754568 0.194192,-0.73123 0.20537,-1.025763 0.239494,-6.310295 l 0.03579,-5.543264 0.648216,0.605501 c 1.120372,1.046545 2.359393,1.633234 3.71809,1.760554 l 0.69917,0.06552 0.02634,7.060026 0.02634,7.060025 0.25421,0.542232 c 0.628507,1.340615 2.252246,2.144207 3.380252,1.672896 0.205675,-0.08594 0.393299,-0.136905 0.416941,-0.113262 0.09571,0.09571 -0.304478,1.052683 -0.66763,1.596507 -0.612681,0.917499 -1.641424,1.59072 -3.000257,1.963406 -0.67861,0.186121 -2.799119,0.265286 -3.628108,0.135448 z" - id="path45" - inkscape:connector-curvature="0" /><path - style="fill:#ffcc00;fill-opacity:1;stroke-width:0.09587888" - d="m 32.458121,50.41354 c 0.0012,-0.619314 0.189433,-1.556535 0.405963,-2.021822 0.114426,-0.245882 0.447574,-0.688129 0.740327,-0.98277 0.680059,-0.684444 1.33942,-0.950412 2.356162,-0.950412 h 0.715494 v 0.806177 0.806177 l -1.436162,0.03276 c -1.396149,0.03185 -1.443059,0.03966 -1.68367,0.280429 -0.180954,0.18107 -0.248935,0.351207 -0.252821,0.632739 -0.01071,0.776092 0.284708,0.989234 1.371097,0.989234 0.800802,0 0.791899,0.09178 -0.04742,0.488853 -0.500532,0.236793 -0.705004,0.278038 -1.378693,0.278102 l -0.791001,7.6e-5 7.24e-4,-0.359546 z" - id="path47" - inkscape:connector-curvature="0" /><path - style="fill:#ffcc00;fill-opacity:1;stroke-width:0.09587888" - d="m 28.561883,50.494908 c -0.323231,-0.152915 -0.614278,-0.321043 -0.646771,-0.373619 -0.03692,-0.05974 0.245157,-0.108264 0.752095,-0.129382 0.964144,-0.04016 1.112043,-0.143674 1.177417,-0.824037 0.03845,-0.40014 0.0096,-0.510273 -0.196712,-0.750221 l -0.241776,-0.281233 -1.446615,-0.03276 -1.446615,-0.03276 v -0.806177 -0.806177 h 0.715495 c 0.914379,0 1.613046,0.254434 2.235556,0.814123 0.793654,0.713563 1.264356,1.880527 1.266895,3.140881 l 7.25e-4,0.359546 -0.791001,-7.6e-5 c -0.673689,-6.4e-5 -0.878161,-0.04131 -1.378693,-0.278102 z" - id="path49" - inkscape:connector-curvature="0" /><path - style="fill:#ffcc00;fill-opacity:1;stroke-width:0.09587888" - d="m 28.646275,58.778603 c -1.290571,-0.357671 -2.133369,-1.208551 -2.133369,-2.153826 v -0.290716 h 5.081581 5.08158 l -0.0021,0.311607 c -0.0053,0.779664 -0.705879,1.609265 -1.687197,1.997823 -0.53528,0.211947 -0.697434,0.224559 -3.200517,0.248928 -2.07511,0.0202 -2.743862,-0.004 -3.139969,-0.113816 z" - id="path51" - inkscape:connector-curvature="0" /></svg> \ No newline at end of file diff --git a/client/public/index.html b/client/public/index.html index f93aa0e3..2219fe01 100644 --- a/client/public/index.html +++ b/client/public/index.html @@ -14,6 +14,8 @@ <link rel="stylesheet" href="mini-custom.min.css"> <link rel="stylesheet" href="//fonts.googleapis.com/css?family=Open+Sans:400,700"> + <link rel="stylesheet" + href="https://fonts.googleapis.com/css?family=Fira+Code&display=swap"> </head> <body> <div id="app"></div> diff --git a/client/src/base_rules.js b/client/src/base_rules.js index 52ec2c54..448604a4 100644 --- a/client/src/base_rules.js +++ b/client/src/base_rules.js @@ -85,6 +85,15 @@ export const ChessRules = class ChessRules { return V.CanFlip; } + // Some variants require turn indicator + // (generally when analysis or flip is diabled) + static get ShowTurn() { + return !V.CanAnalyze || V.ShowMoves != "all" || !V.CanFlip; + } + get showTurn() { + return V.ShowTurn; + } + static get IMAGE_EXTENSION() { // All pieces should be in the SVG format return ".svg"; @@ -1284,8 +1293,8 @@ export const ChessRules = class ChessRules { } let candidates = [0]; - for (let j = 1; j < moves1.length && moves1[j].eval == moves1[0].eval; j++) - candidates.push(j); + for (let i = 1; i < moves1.length && moves1[i].eval == moves1[0].eval; i++) + candidates.push(i); return moves1[candidates[randInt(candidates.length)]]; } diff --git a/client/src/components/BaseGame.vue b/client/src/components/BaseGame.vue index a49c31b1..2517c78a 100644 --- a/client/src/components/BaseGame.vue +++ b/client/src/components/BaseGame.vue @@ -103,15 +103,13 @@ export default { showTurn: function() { return ( this.game.score == '*' && - this.vr && - (this.vr.showMoves != "all" || !this.vr.canFlip) + !!this.vr && this.vr.showTurn ); }, turn: function() { - if (!this.vr) - return ""; + if (!this.vr) return ""; if (this.vr.showMoves != "all") - return this.st.tr[(this.vr.turn == 'w' ? "White" : "Black") + " to move"] + return this.st.tr[(this.vr.turn == 'w' ? "White" : "Black") + " to move"]; // Cannot flip: racing king or circular chess return this.vr.movesCount == 0 && this.game.mycolor == "w" ? this.st.tr["It's your turn!"] diff --git a/client/src/components/Board.vue b/client/src/components/Board.vue index 921a5998..d89ee404 100644 --- a/client/src/components/Board.vue +++ b/client/src/components/Board.vue @@ -55,6 +55,10 @@ export default { this.settings.highlight && ["all","highlight"].includes(V.ShowMoves) ); + const showCheck = ( + this.settings.highlight && + ["all","highlight","byrow"].includes(V.ShowMoves) + ); const orientation = !V.CanFlip ? "w" : this.orientation; // Ensure that squares colors do not change when board is flipped const lightSquareMod = (sizeX + sizeY) % 2; @@ -149,8 +153,8 @@ export default { "in-shadow": inShadow(ci, cj), "highlight-light": inHighlight(ci, cj) && lightSquare, "highlight-dark": inHighlight(ci, cj) && !lightSquare, - "incheck-light": showLight && lightSquare && incheckSq[ci][cj], - "incheck-dark": showLight && !lightSquare && incheckSq[ci][cj] + "incheck-light": showCheck && lightSquare && incheckSq[ci][cj], + "incheck-dark": showCheck && !lightSquare && incheckSq[ci][cj] }, attrs: { id: getSquareId({ x: ci, y: cj }) diff --git a/client/src/translations/about/en.pug b/client/src/translations/about/en.pug index c6b32fba..6d551949 100644 --- a/client/src/translations/about/en.pug +++ b/client/src/translations/about/en.pug @@ -42,9 +42,10 @@ p. h3 Related links #links - a(href="https://greenchess.net/") greenchess.net a(href="https://www.chessvariants.com/") chessvariants.com - a(href="http://pychess-variants.herokuapp.com/") pychess-variants + a(href="https://greenchess.net/") greenchess.net + a(href="http://pychess-variants.herokuapp.com/") pychess-variants.com + a(href="https://musketeerchess.net/home/index.html") musketeerchess.net a(href="https://schemingmind.com/") schemingmind.com div a(href="https://echekk.fr/spip.php?page=rubrique&id_rubrique=1") echekk.fr diff --git a/client/src/translations/about/es.pug b/client/src/translations/about/es.pug index eb53940c..66aa4298 100644 --- a/client/src/translations/about/es.pug +++ b/client/src/translations/about/es.pug @@ -39,9 +39,10 @@ p h3 Enlaces relacionados #links - a(href="https://greenchess.net/") greenchess.net a(href="https://www.chessvariants.com/") chessvariants.com - a(href="http://pychess-variants.herokuapp.com/") pychess-variants + a(href="https://greenchess.net/") greenchess.net + a(href="http://pychess-variants.herokuapp.com/") pychess-variants.com + a(href="https://musketeerchess.net/home/index.html") musketeerchess.net a(href="https://schemingmind.com/") schemingmind.com div a(href="https://echekk.fr/spip.php?page=rubrique&id_rubrique=1") echekk.fr diff --git a/client/src/translations/about/fr.pug b/client/src/translations/about/fr.pug index 3197837c..b4236030 100644 --- a/client/src/translations/about/fr.pug +++ b/client/src/translations/about/fr.pug @@ -40,9 +40,10 @@ p. h3 Liens connexes #links - a(href="https://greenchess.net/") greenchess.net a(href="https://www.chessvariants.com/") chessvariants.com - a(href="http://pychess-variants.herokuapp.com/") pychess-variants + a(href="https://greenchess.net/") greenchess.net + a(href="http://pychess-variants.herokuapp.com/") pychess-variants.com + a(href="https://musketeerchess.net/home/index.html") musketeerchess.net a(href="https://schemingmind.com/") schemingmind.com a(href="https://echekk.fr/spip.php?page=rubrique&id_rubrique=1") echekk.fr a(href="https://brainking.com/") brainking.com diff --git a/client/src/translations/rules/Ball/en.pug b/client/src/translations/rules/Ball/en.pug index 49005d8a..3525359f 100644 --- a/client/src/translations/rules/Ball/en.pug +++ b/client/src/translations/rules/Ball/en.pug @@ -12,17 +12,21 @@ ul disappear and grab the ball. li "Capturing" a friendly unit pass the ball to it. +p. + All pieces represent players on a field of some ball game, + so they can move up to two squares only for a better realism. + figure.diagram-container .diagram.diag12 - | fen:rnbqkwnbr/ppppp1ppp/9/5p3/4a4/9/2N4N1/PPPPPPPPP/R1BQKW1BR: + | fen:rnbhq1nbr/ppppppppp/5h3/9/4a4/5P3/9/PPPPP1PPP/RNBHQHNBR: .diagram.diag22 - | fen:rnbqkwnbr/ppppp1ppp/9/9/4s4/9/2N4N1/PPPPPPPPP/R1BQKW1BR: - figcaption Left: before ...fxe5 (taking ball). Right: after ...fxe5. + | fen:rnbhq1nbr/ppppppppp/5h3/9/4S4/9/9/PPPPP1PPP/RNBHQHNBR: + figcaption Left: before fxe5 (taking ball). Right: after fxe5. p. - The piece sitting to the right of the king is a wildebeest (W). - It moves by jumping in L like a knight, or a little bit further: - three squares in one direction then one aside. + The piece sitting next to the queen is a champion (H). + It moves by jumping two squares in any direction (potentially over pieces), + or one square orthogonally. h3 End of the game @@ -32,16 +36,16 @@ p. figure.diagram-container .diagram.diag12 - | fen:rqnkb1nb1/pp1pppp1r/2p5p/4wW1p1/4S4/1P5B1/9/P1PPP1PPP/RQNK2NBR: + | fen:3rn1r2/1pp3pbp/2hp2n2/p1b1pp1p1/P6P1/2N3P1P/1PP2N3/1RB1qPd2/1R2BH1HQ: .diagram.diag22 - | fen:rqnkb1nb1/pp1pppp1r/2p5p/4wY1p1/4P4/1P5B1/9/P1PPP1PPP/RQNK2NBR: + | fen:3rn1r2/1pp3pbp/2hp2n2/p1b1pp1p1/P6P1/2N3P1P/1PP2N3/1RB1tPh2/1R2BH1HQ: figcaption. - Left: before e5Pf6 (passing the ball). - Right: after the move. Then Wxe9# cannot be prevented. + Left: before g2Pe2 (passing the ball). + Right: after the move. Then ...Q(x)d1# cannot be prevented. p. - White pass the ball from the pawn at e5 to the wildebeest at f6. - Then, since the black bishop on e8 cannot move white will win by taking it: Wxe9#. + The black champion on g2 passes the ball to the black queen on e2. + Victory is then garanteed by playing a queen move on the first rank. h3 Source diff --git a/client/src/translations/rules/Ball/es.pug b/client/src/translations/rules/Ball/es.pug index 42922c47..cef6fa62 100644 --- a/client/src/translations/rules/Ball/es.pug +++ b/client/src/translations/rules/Ball/es.pug @@ -12,19 +12,23 @@ ul mientras lo hace desaparecer. li "Capturar" una pieza amiga le pasa la pelota. +p. + Todas las piezas representan jugadores en un área de juego de pelota, + entonces solo se mueven dos casillas como máximo para un mejor realismo. + figure.diagram-container .diagram.diag12 - | fen:rnbqkwnbr/ppppp1ppp/9/5p3/4a4/9/2N4N1/PPPPPPPPPP/R1BQKW1BR: + | fen:rnbhq1nbr/ppppppppp/5h3/9/4a4/5P3/9/PPPPP1PPP/RNBHQHNBR: .diagram.diag22 - | fen:rnbqkwnbr/ppppp1ppp/9/9/4s4/9/2N4N1/PPPPPPPPPP/R1BQKW1BR: + | fen:rnbhq1nbr/ppppppppp/5h3/9/4S4/9/9/PPPPP1PPP/RNBHQHNBR: figcaption. - Izquierda: antes de ...fxe5 (tomando la pelota). - Derecha: después de ...fxe5. + Izquierda: antes de fxe5 (tomando la pelota). + Derecha: después de fxe5. p. - La pieza a la derecha del rey es un ñu (W). - Se mueve realizando saltos en forma de L como el caballo, - o un poco más alargado: tres casillas y luego una en el lateral. + La pieza al lado de la dama es un campeón (H). + Se mueve saltando dos casillas en cualquier dirección + (potencialmente sobre piezas), o una casilla ortogonalmente. h3 Fin de la partida @@ -34,17 +38,16 @@ p. figure.diagram-container .diagram.diag12 - | fen:rqnkb1nb1/pp1pppp1r/2p5p/4wW1p1/4S4/1P5B1/9/P1PPP1PPP/RQNK2NBR: + | fen:3rn1r2/1pp3pbp/2hp2n2/p1b1pp1p1/P6P1/2N3P1P/1PP2N3/1RB1qPd2/1R2BH1HQ: .diagram.diag22 - | fen:rqnkb1nb1/pp1pppp1r/2p5p/4wY1p1/4P4/1P5B1/9/P1PPP1PPP/RQNK2NBR: + | fen:3rn1r2/1pp3pbp/2hp2n2/p1b1pp1p1/P6P1/2N3P1P/1PP2N3/1RB1tPh2/1R2BH1HQ: figcaption. - Izquierda: antes de e5Pf6 (pasando el globo). - Derecha: después del movimiento. Entonces Wxe9# no se puede prevenir. + Izquierda: antes de g2Pe2 (pasando el globo). + Derecha: después del movimiento. Entonces Q(x)d1# no se puede prevenir. p. - Las blancas pasan la pelota del peón e5 al ñu en f6. - Entonces, como el alfil negro no puede moverse, - la victoria está asegurada capturándolo con Wxe9#. + Las negras pasan el balón del campeón g2 a la dama en e2. + La victoria se asegura al jugar un movimiento de dama en la primera fila. h3 Fuente diff --git a/client/src/translations/rules/Ball/fr.pug b/client/src/translations/rules/Ball/fr.pug index 070021d2..314bc5f1 100644 --- a/client/src/translations/rules/Ball/fr.pug +++ b/client/src/translations/rules/Ball/fr.pug @@ -12,17 +12,23 @@ ul tout en la faisant disparaître. li "Capturer" une pièce amie lui passe le ballon. +p. + Toutes les pièces représentent des joueurs sur un terrain d'un certain + jeu de ballon, donc elles ne se déplacent que de deux cases au maximum + pour un meilleur réalisme. + figure.diagram-container .diagram.diag12 - | fen:rnbqkwnbr/ppppp1ppp/9/5p3/4a4/9/2N4N1/PPPPPPPPP/R1BQKW1BR: + | fen:rnbhq1nbr/ppppppppp/5h3/9/4a4/5P3/9/PPPPP1PPP/RNBHQHNBR: .diagram.diag22 - | fen:rnbqkwnbr/ppppp1ppp/9/9/4s4/9/2N4N1/PPPPPPPPP/R1BQKW1BR: - figcaption Gauche : avant ...fxe5 (prenant le ballon). Droite : après ...fxe5. + | fen:rnbhq1nbr/ppppppppp/5h3/9/4S4/9/9/PPPPP1PPP/RNBHQHNBR: + figcaption Gauche : avant fxe5 (prenant le ballon). Droite : après fxe5. p. - La pièce située à droite du roi est un gnou (W). - Il se déplace en effectuant des sauts en L comme le cavalier, - ou bien un peu plus allongés : trois cases puis une sur le côté. + La pièce située à côté de la dame est un champion (H). + Il se déplace en effectuant des sauts de deux cases dans n'importe + quelle direction (potentiellement par dessus des pièces), + ou d'une case orthogonalement. h3 Fin de la partie @@ -32,17 +38,17 @@ p. figure.diagram-container .diagram.diag12 - | fen:rqnkb1nb1/pp1pppp1r/2p5p/4wW1p1/4S4/1P5B1/9/P1PPP1PPP/RQNK2NBR: + | fen:3rn1r2/1pp3pbp/2hp2n2/p1b1pp1p1/P6P1/2N3P1P/1PP2N3/1RB1qPd2/1R2BH1HQ: .diagram.diag22 - | fen:rqnkb1nb1/pp1pppp1r/2p5p/4wY1p1/4P4/1P5B1/9/P1PPP1PPP/RQNK2NBR: + | fen:3rn1r2/1pp3pbp/2hp2n2/p1b1pp1p1/P6P1/2N3P1P/1PP2N3/1RB1tPh2/1R2BH1HQ: figcaption. - Gauche : avant e5Pf6 (passant le ballon). - Droite : après le coup. Ensuite Wxe9# ne peut être empêché. + Gauche : avant g2Pe2 (passant le ballon). + Droite : après le coup. Ensuite ...Q(x)d1# ne peut être empêché. p. - Les blancs passent la balle du pion e5 vers le gnou en f6. - Ensuite, puisque le fou noir ne peut pas bouger la victoire est assurée - en le capturant par Wxe9#. + Les noirs passent la balle du champion g2 vers la dame en e2. + La victoire est alors assurée en jouant ensuite un coup de dame sur la + première rangée. h3 Source diff --git a/client/src/translations/rules/Synchrone/en.pug b/client/src/translations/rules/Synchrone/en.pug new file mode 100644 index 00000000..74322081 --- /dev/null +++ b/client/src/translations/rules/Synchrone/en.pug @@ -0,0 +1,52 @@ +p.boxed + | Both players play a move "at the same time". + | Conflicts are resolved following a few simple rules. + +p. + In order to not rethink a big part of the code, the white move has to be + played before the black one. However, the black player doesn't see it. + +p So both players play "at the same time". Resolving rules: +ul + li. + If both moves arrive on the same square, both pieces disappear except + if one is a king. In this case only the king remains. + li. + If a capture was intended but the target moved, the move is still played + but doesn't capture anything. +p. + Such captures can be anticipated by capturing our own pieces. + If the enemy captures as predicted, his piece disappears. + If he doesn't, the self-capture isn't undone. + +figure.diagram-container + .diagram + | fen:rnb1kbnr/ppp1pppp/8/3qP3/8/8/PPPP1PPP/RNBQKBNR: + figcaption After 1.e4 d5 2.e5 Qxd5 (anticipating 2.exd5 which isn't played) + +h3 End of the game + +p. + Due to the simultaneity, it is possible that a king is captured for example + after escaping a check in a wrong way, as the following diagram shows. + So, capturing the king counts as a win, of highest priority. + A checkmate wins too, but if your king is captured and the other still on + the board (even if it is mated), you lose. + +figure.diagram-container + .diagram.diag12 + | fen:r3r1bb/ppqRkppp/8/2p1n3/7n/8/PPPPP1P1/RNBQNBK1: + .diagram.diag22 + | fen:r3r1bb/pp1qRppp/8/2p1n3/7n/8/PPPPP1P1/RNBQNBK1: + figcaption. + Left: before Rxe7 (white) and Qxd7 (black) + Right: after the move (1-0) + +h3 Source + +p + a(href="http://www.hexenspiel.de/engl/synchronous-chess/") Synchronous chess + | , modified to allow en-passant captures + | and disable the "exchange of captures" stage. + a(href="http://www.pion.ch/echecs/variante.php?jeu=synchro") Another description + | (in French). diff --git a/client/src/translations/rules/Synchrone/es.pug b/client/src/translations/rules/Synchrone/es.pug new file mode 100644 index 00000000..1a98c95d --- /dev/null +++ b/client/src/translations/rules/Synchrone/es.pug @@ -0,0 +1,53 @@ +p.boxed + | Ambos jugadores hacen un movimiento "al mismo tiempo". + | Los conflictos se resuelven mediante unas pocas reglas simples. + +p. + Para no repensar una gran parte del código, el movimiento blanco debe ser + jugado antes del movimiento negro. Sin embargo, el jugador negro no lo ve. + +p Entonces los dos jugadores juegan "al mismo tiempo". Reglas de resolución: +ul + li. + Si las dos jugadas alcanzan la mismo casilla, entonces las dos piezas + desaparecerá a menos que uno de ellos sea un rey. + En este caso solo queda el rey. + li. + Si se intenta una captura pero el objetivo se mueve, el movimiento + todavÃa se juega pero no capturó nada. +p. + Tales capturas se pueden anticipar capturando nuestras propias piezas. + Si el oponente captura como se esperaba, entonces su pieza desaparece. + De lo contrario, la auto-captura no se deshace. + +figure.diagram-container + .diagram + | fen:rnb1kbnr/ppp1pppp/8/3qP3/8/8/PPPP1PPP/RNBQKBNR: + figcaption Después de 1.e4 d5 2.e5 Qxd5 (anticipando 2.exd5 que no se juega) + +h3 Fin de la partida + +p. + Debido a la simultaneidad, es posible que un rey sea capturado por + ejemplo cubriendo un jaque torpemente, como se muestra + el siguiente diagrama. + Jaque mate también gana, pero si tu rey es capturado mientras + que el otro todavÃa está en el tablero (incluso si es jaque mate), pierdes. + +figure.diagram-container + .diagram.diag12 + | fen:r3r1bb/ppqRkppp/8/2p1n3/7n/8/PPPPP1P1/RNBQNBK1: + .diagram.diag22 + | fen:r3r1bb/pp1qRppp/8/2p1n3/7n/8/PPPPP1P1/RNBQNBK1: + figcaption. + Izquierda: antes de Rxe7 (blanco) y Qxd7 (negro) + Derecha: después del movimiento (1-0) + +h3 Fuente + +p + a(href="http://www.hexenspiel.de/engl/synchronous-chess/") Ajedrez sincrónico + | , modificado para autorizar la captura en passant y cancelar la fase de + | "cambio de captura". + a(href="http://www.pion.ch/echecs/variante.php?jeu=synchro") Otra descripción + | (en francés). diff --git a/client/src/translations/rules/Synchrone/fr.pug b/client/src/translations/rules/Synchrone/fr.pug new file mode 100644 index 00000000..1d7fe61d --- /dev/null +++ b/client/src/translations/rules/Synchrone/fr.pug @@ -0,0 +1,53 @@ +p.boxed + | Les deux joueurs jouent un coup "en même temps". + | Les conflits sont résolus par quelques règles simples. + +p. + Afin de ne pas repenser une grosse partie du code, le coup blanc doit être + joué avant le coup noir. Cependant, le joueur des noirs ne le voit pas. + +p Ainsi les deux joueurs jouent "en même temps". Règles de résolution : +ul + li. + Si les deux coups arrivent sur la même case, alors les deux pièces + disparaissent sauf si l'une des deux est un roi. + Dans ce cas seul le roi reste. + li. + Si une capture est tentée mais que la cible bouge, le coup est tout + de même joué mais ne capture rien. +p. + De telles captures peuvent être anticipées en capturant nos propres pièces. + Si l'adversaire capture comme prévu, alors sa pièce disparaît. + Sinon, l'auto-capture n'est pas défaite. + +figure.diagram-container + .diagram + | fen:rnb1kbnr/ppp1pppp/8/3qP3/8/8/PPPP1PPP/RNBQKBNR: + figcaption Après 1.e4 d5 2.e5 Qxd5 (anticipant 2.exd5 qui n'est pas joué) + +h3 Fin de la partie + +p. + à cause de la simultanéité, il est possible qu'un roi soit capturé par + exemple en couvrant un échec maladroitement, comme le montre + le diagramme suivant. + Un échec et mat gagne également, mais si votre roi est capturé tandis + que l'autre est encore sur l'échquier (même s'il est maté), vous perdez. + +figure.diagram-container + .diagram.diag12 + | fen:r3r1bb/ppqRkppp/8/2p1n3/7n/8/PPPPP1P1/RNBQNBK1: + .diagram.diag22 + | fen:r3r1bb/pp1qRppp/8/2p1n3/7n/8/PPPPP1P1/RNBQNBK1: + figcaption. + Gauche : avant Rxe7 (blancs) et Qxd7 (noirs) + Droite : après le coup (1-0) + +h3 Source + +p + a(href="http://www.hexenspiel.de/engl/synchronous-chess/") Ãchecs synchronisés + | , modifés pour autoriser la prise en passant et annuler la phase + | "d'échange de captures". + a(href="http://www.pion.ch/echecs/variante.php?jeu=synchro") Autre description + | . diff --git a/client/src/variants/Ball.js b/client/src/variants/Ball.js index 5a23e9f8..1bb7731c 100644 --- a/client/src/variants/Ball.js +++ b/client/src/variants/Ball.js @@ -1,5 +1,4 @@ import { ChessRules, Move, PiPo } from "@/base_rules"; -import { WildebeestRules } from "@/variants/Wildebeest"; import { ArrayFun } from "@/utils/array"; import { shuffle } from "@/utils/alea"; @@ -8,7 +7,7 @@ export class BallRules extends ChessRules { return Object.assign( {}, ChessRules.PawnSpecs, - { promotions: ChessRules.PawnSpecs.promotions.concat([V.WILDEBEEST]) } + { promotions: ChessRules.PawnSpecs.promotions.concat([V.CHAMPION]) } ); } @@ -19,8 +18,8 @@ export class BallRules extends ChessRules { return false; } - static get WILDEBEEST() { - return 'w'; + static get CHAMPION() { + return 'h'; } static get BALL() { @@ -42,7 +41,7 @@ export class BallRules extends ChessRules { 'b': 'c', 'q': 't', 'k': 'l', - 'w': 'y' + 'h': 'd' }; } @@ -54,13 +53,13 @@ export class BallRules extends ChessRules { 'c': 'b', 't': 'q', 'l': 'k', - 'y': 'w' + 'd': 'h' }; } static get PIECES() { return ChessRules.PIECES - .concat([V.WILDEBEEST]) + .concat([V.CHAMPION]) .concat(Object.keys(V.HAS_BALL_DECODE)) .concat(['a']); } @@ -109,7 +108,7 @@ export class BallRules extends ChessRules { let prefix = ""; const withPrefix = Object.keys(V.HAS_BALL_DECODE) - .concat([V.WILDEBEEST]) + .concat([V.CHAMPION]) .concat(['a']); if (withPrefix.includes(b[1])) prefix = "Ball/"; return prefix + b; @@ -129,7 +128,7 @@ export class BallRules extends ChessRules { static GenRandInitFen(randomness) { if (randomness == 0) - return "rnbqkwnbr/ppppppppp/9/9/4a4/9/9/PPPPPPPPP/RNBQKWNBR w 0 -"; + return "rnbhqhnbr/ppppppppp/9/9/4a4/9/9/PPPPPPPPP/RNBHQHNBR w 0 -"; let pieces = { w: new Array(9), b: new Array(9) }; for (let c of ["w", "b"]) { @@ -140,7 +139,7 @@ export class BallRules extends ChessRules { // Get random squares for every piece, totally freely let positions = shuffle(ArrayFun.range(9)); - const composition = ['b', 'b', 'r', 'r', 'n', 'n', 'k', 'q', 'w']; + const composition = ['b', 'b', 'r', 'r', 'n', 'n', 'h', 'h', 'q']; const rem2 = positions[0] % 2; if (rem2 == positions[1] % 2) { // Fix bishops (on different colors) @@ -160,7 +159,7 @@ export class BallRules extends ChessRules { ); } - scanKings(fen) {} + scanKings() {} static get size() { return { x: 9, y: 9 }; @@ -174,7 +173,27 @@ export class BallRules extends ChessRules { } static get steps() { - return WildebeestRules.steps; + return Object.assign( + {}, + ChessRules.steps, + // Add champion moves + { + h: [ + [-2, -2], + [-2, 0], + [-2, 2], + [0, -2], + [0, 2], + [2, -2], + [2, 0], + [2, 2], + [-1, 0], + [1, 0], + [0, -1], + [0, 1] + ] + } + ); } // Because of the ball, getPiece() could be wrong: @@ -242,17 +261,33 @@ export class BallRules extends ChessRules { // So base implementation is fine. getPotentialMovesFrom([x, y]) { - if (this.getPiece(x, y) == V.WILDEBEEST) - return this.getPotentialWildebeestMoves([x, y]); + if (this.getPiece(x, y) == V.CHAMPION) + return this.getPotentialChampionMoves([x, y]); return super.getPotentialMovesFrom([x, y]); } - getPotentialWildebeestMoves(sq) { - return this.getSlideNJumpMoves( - sq, - V.steps[V.KNIGHT].concat(V.steps[WildebeestRules.CAMEL]), - "oneStep" - ); + // "Sliders": at most 2 steps + getSlideNJumpMoves([x, y], steps, oneStep) { + let moves = []; + outerLoop: for (let step of steps) { + let i = x + step[0]; + let j = y + step[1]; + let stepCount = 1; + while (V.OnBoard(i, j) && this.board[i][j] == V.EMPTY) { + moves.push(this.getBasicMove([x, y], [i, j])); + if (oneStep || stepCount == 2) continue outerLoop; + i += step[0]; + j += step[1]; + stepCount++; + } + if (V.OnBoard(i, j) && this.canTake([x, y], [i, j])) + moves.push(this.getBasicMove([x, y], [i, j])); + } + return moves; + } + + getPotentialChampionMoves(sq) { + return this.getSlideNJumpMoves(sq, V.steps[V.CHAMPION], "oneStep"); } filterValid(moves) { @@ -292,8 +327,7 @@ export class BallRules extends ChessRules { n: 3, b: 3, q: 9, - w: 7, - k: 5, + h: 4, a: 0 //ball: neutral }; } diff --git a/client/src/variants/Eightpieces.js b/client/src/variants/Eightpieces.js index 42df93e3..fa80824b 100644 --- a/client/src/variants/Eightpieces.js +++ b/client/src/variants/Eightpieces.js @@ -146,7 +146,7 @@ export class EightpiecesRules extends ChessRules { static GenRandInitFen(randomness) { if (randomness == 0) // Deterministic: - return "jsfqkbnr/pppppppp/8/8/8/8/PPPPPPPP/JSDQKBNR w 0 ahah - -"; + return "jfsqkbnr/pppppppp/8/8/8/8/PPPPPPPP/JDSQKBNR w 0 ahah - -"; let pieces = { w: new Array(8), b: new Array(8) }; let flags = ""; @@ -657,106 +657,6 @@ export class EightpiecesRules extends ChessRules { return this.filterValid(this.getPotentialMovesFrom(sentrySq)); } - prePlay(move) { - if (move.appear.length == 0 && move.vanish.length == 1) - // The sentry is about to push a piece: subTurn goes from 1 to 2 - this.sentryPos = { x: move.end.x, y: move.end.y }; - if (this.subTurn == 2 && move.vanish[0].p != V.PAWN) { - // A piece is pushed: forbid array of squares between start and end - // of move, included (except if it's a pawn) - let squares = []; - if ([V.KNIGHT,V.KING].includes(move.vanish[0].p)) - // short-range pieces: just forbid initial square - squares.push({ x: move.start.x, y: move.start.y }); - else { - const deltaX = move.end.x - move.start.x; - const deltaY = move.end.y - move.start.y; - const step = [ - deltaX / Math.abs(deltaX) || 0, - deltaY / Math.abs(deltaY) || 0 - ]; - for ( - let sq = {x: move.start.x, y: move.start.y}; - sq.x != move.end.x || sq.y != move.end.y; - sq.x += step[0], sq.y += step[1] - ) { - squares.push({ x: sq.x, y: sq.y }); - } - } - // Add end square as well, to know if I was pushed (useful for lancers) - squares.push({ x: move.end.x, y: move.end.y }); - this.sentryPush.push(squares); - } else this.sentryPush.push(null); - } - - play(move) { - this.prePlay(move); - move.flags = JSON.stringify(this.aggregateFlags()); - this.epSquares.push(this.getEpSquare(move)); - V.PlayOnBoard(this.board, move); - // Is it a sentry push? (useful for undo) - move.sentryPush = (this.subTurn == 2); - if (this.subTurn == 1) this.movesCount++; - if (move.appear.length == 0 && move.vanish.length == 1) this.subTurn = 2; - else { - // Turn changes only if not a sentry "pre-push" - this.turn = V.GetOppCol(this.turn); - this.subTurn = 1; - } - this.postPlay(move); - } - - postPlay(move) { - if (move.vanish.length == 0 || this.subTurn == 2) - // Special pass move of the king, or sentry pre-push: nothing to update - return; - const c = move.vanish[0].c; - const piece = move.vanish[0].p; - const firstRank = c == "w" ? V.size.x - 1 : 0; - - if (piece == V.KING) { - this.kingPos[c][0] = move.appear[0].x; - this.kingPos[c][1] = move.appear[0].y; - this.castleFlags[c] = [V.size.y, V.size.y]; - return; - } - // Update castling flags if rooks are moved - const oppCol = V.GetOppCol(c); - const oppFirstRank = V.size.x - 1 - firstRank; - if ( - move.start.x == firstRank && //our rook moves? - this.castleFlags[c].includes(move.start.y) - ) { - const flagIdx = (move.start.y == this.castleFlags[c][0] ? 0 : 1); - this.castleFlags[c][flagIdx] = V.size.y; - } else if ( - move.end.x == oppFirstRank && //we took opponent rook? - this.castleFlags[oppCol].includes(move.end.y) - ) { - const flagIdx = (move.end.y == this.castleFlags[oppCol][0] ? 0 : 1); - this.castleFlags[oppCol][flagIdx] = V.size.y; - } - } - - undo(move) { - this.epSquares.pop(); - this.disaggregateFlags(JSON.parse(move.flags)); - V.UndoOnBoard(this.board, move); - // Decrement movesCount except if the move is a sentry push - if (!move.sentryPush) this.movesCount--; - if (this.subTurn == 2) this.subTurn = 1; - else { - this.turn = V.GetOppCol(this.turn); - if (move.sentryPush) this.subTurn = 2; - } - this.postUndo(move); - } - - postUndo(move) { - super.postUndo(move); - this.sentryPush.pop(); - } - isAttacked(sq, color) { return ( super.isAttacked(sq, color) || @@ -937,6 +837,106 @@ export class EightpiecesRules extends ChessRules { // Jailer doesn't capture or give check + prePlay(move) { + if (move.appear.length == 0 && move.vanish.length == 1) + // The sentry is about to push a piece: subTurn goes from 1 to 2 + this.sentryPos = { x: move.end.x, y: move.end.y }; + if (this.subTurn == 2 && move.vanish[0].p != V.PAWN) { + // A piece is pushed: forbid array of squares between start and end + // of move, included (except if it's a pawn) + let squares = []; + if ([V.KNIGHT,V.KING].includes(move.vanish[0].p)) + // short-range pieces: just forbid initial square + squares.push({ x: move.start.x, y: move.start.y }); + else { + const deltaX = move.end.x - move.start.x; + const deltaY = move.end.y - move.start.y; + const step = [ + deltaX / Math.abs(deltaX) || 0, + deltaY / Math.abs(deltaY) || 0 + ]; + for ( + let sq = {x: move.start.x, y: move.start.y}; + sq.x != move.end.x || sq.y != move.end.y; + sq.x += step[0], sq.y += step[1] + ) { + squares.push({ x: sq.x, y: sq.y }); + } + } + // Add end square as well, to know if I was pushed (useful for lancers) + squares.push({ x: move.end.x, y: move.end.y }); + this.sentryPush.push(squares); + } else this.sentryPush.push(null); + } + + play(move) { + this.prePlay(move); + move.flags = JSON.stringify(this.aggregateFlags()); + this.epSquares.push(this.getEpSquare(move)); + V.PlayOnBoard(this.board, move); + // Is it a sentry push? (useful for undo) + move.sentryPush = (this.subTurn == 2); + if (this.subTurn == 1) this.movesCount++; + if (move.appear.length == 0 && move.vanish.length == 1) this.subTurn = 2; + else { + // Turn changes only if not a sentry "pre-push" + this.turn = V.GetOppCol(this.turn); + this.subTurn = 1; + } + this.postPlay(move); + } + + postPlay(move) { + if (move.vanish.length == 0 || this.subTurn == 2) + // Special pass move of the king, or sentry pre-push: nothing to update + return; + const c = move.vanish[0].c; + const piece = move.vanish[0].p; + const firstRank = c == "w" ? V.size.x - 1 : 0; + + if (piece == V.KING) { + this.kingPos[c][0] = move.appear[0].x; + this.kingPos[c][1] = move.appear[0].y; + this.castleFlags[c] = [V.size.y, V.size.y]; + return; + } + // Update castling flags if rooks are moved + const oppCol = V.GetOppCol(c); + const oppFirstRank = V.size.x - 1 - firstRank; + if ( + move.start.x == firstRank && //our rook moves? + this.castleFlags[c].includes(move.start.y) + ) { + const flagIdx = (move.start.y == this.castleFlags[c][0] ? 0 : 1); + this.castleFlags[c][flagIdx] = V.size.y; + } else if ( + move.end.x == oppFirstRank && //we took opponent rook? + this.castleFlags[oppCol].includes(move.end.y) + ) { + const flagIdx = (move.end.y == this.castleFlags[oppCol][0] ? 0 : 1); + this.castleFlags[oppCol][flagIdx] = V.size.y; + } + } + + undo(move) { + this.epSquares.pop(); + this.disaggregateFlags(JSON.parse(move.flags)); + V.UndoOnBoard(this.board, move); + // Decrement movesCount except if the move is a sentry push + if (!move.sentryPush) this.movesCount--; + if (this.subTurn == 2) this.subTurn = 1; + else { + this.turn = V.GetOppCol(this.turn); + if (move.sentryPush) this.subTurn = 2; + } + this.postUndo(move); + } + + postUndo(move) { + super.postUndo(move); + this.sentryPush.pop(); + } + static get VALUES() { return Object.assign( { l: 4.8, s: 2.8, j: 3.8 }, //Jeff K. estimations diff --git a/client/src/variants/Synchrone.js b/client/src/variants/Synchrone.js index e47941bf..372bc1ee 100644 --- a/client/src/variants/Synchrone.js +++ b/client/src/variants/Synchrone.js @@ -1,11 +1,468 @@ +// TODO: debug, and forbid self-capture of king. + import { ChessRules } from "@/base_rules"; +import { randInt } from "@/utils/alea"; export class SynchroneRules extends ChessRules { - // TODO: getNotation retourne "?" si turn == "w" - // ==> byrows disparait, juste "showAll" et "None". - // - // play: si turn == "w", enregistrer le coup (whiteMove), - // mais ne rien faire ==> résolution après le coup noir. - // - // ==> un coup sur deux (coups blancs) est "vide" du point de vue de l'exécution. + static get CanAnalyze() { + return true; //false; + } + + static get ShowMoves() { + return "byrow"; + } + + static IsGoodFen(fen) { + if (!ChessRules.IsGoodFen(fen)) return false; + const fenParsed = V.ParseFen(fen); + // 5) Check whiteMove + if ( + ( + fenParsed.turn == "w" && + // NOTE: do not check really JSON stringified move... + (!fenParsed.whiteMove || fenParsed.whiteMove == "-") + ) + || + (fenParsed.turn == "b" && fenParsed.whiteMove != "-") + ) { + return false; + } + return true; + } + + static IsGoodEnpassant(enpassant) { + const epArray = enpassant.split(","); + if (![2, 3].includes(epArray.length)) return false; + epArray.forEach(epsq => { + if (epsq != "-") { + const ep = V.SquareToCoords(epsq); + if (isNaN(ep.x) || !V.OnBoard(ep)) return false; + } + }); + return true; + } + + static ParseFen(fen) { + const fenParts = fen.split(" "); + return Object.assign( + ChessRules.ParseFen(fen), + { whiteMove: fenParts[5] } + ); + } + + static GenRandInitFen(randomness) { + return ChessRules.GenRandInitFen(randomness).slice(0, -1) + "-,- -"; + } + + getFen() { + return super.getFen() + " " + this.getWhitemoveFen(); + } + + getFenForRepeat() { + return super.getFenForRepeat() + "_" + this.getWhitemoveFen(); + } + + setOtherVariables(fen) { + const parsedFen = V.ParseFen(fen); + this.setFlags(parsedFen.flags); + const epArray = parsedFen.enpassant.split(","); + this.epSquares = []; + epArray.forEach(epsq => this.epSquares.push(this.getEpSquare(epsq))); + super.scanKings(fen); + // Also init whiteMove + this.whiteMove = + parsedFen.whiteMove != "-" + ? JSON.parse(parsedFen.whiteMove) + : null; + } + + // After undo(): no need to re-set INIT_COL_KING + scanKings() { + this.kingPos = { w: [-1, -1], b: [-1, -1] }; + for (let i = 0; i < V.size.x; i++) { + for (let j = 0; j < V.size.y; j++) { + if (this.getPiece(i, j) == V.KING) + this.kingPos[this.getColor(i, j)] = [i, j]; + } + } + } + + getEnpassantFen() { + const L = this.epSquares.length; + let res = ""; + const start = L - 2 - (this.turn == 'b' ? 1 : 0); + for (let i=start; i < L; i++) { + if (!this.epSquares[i]) res += "-,"; + else res += V.CoordsToSquare(this.epSquares[i]) + ","; + } + return res.slice(0, -1); + } + + getWhitemoveFen() { + if (!this.whiteMove) return "-"; + return JSON.stringify({ + start: this.whiteMove.start, + end: this.whiteMove.end, + appear: this.whiteMove.appear, + vanish: this.whiteMove.vanish + }); + } + + // NOTE: lazy unefficient implementation (for now. TODO?) + getPossibleMovesFrom([x, y]) { + const moves = this.getAllValidMoves(); + return moves.filter(m => { + return m.start.x == x && m.start.y == y; + }); + } + + getCaptures(x, y) { + const color = this.turn; + const sliderAttack = (xx, yy, allowedSteps) => { + const deltaX = xx - x, + absDeltaX = Math.abs(deltaX); + const deltaY = yy - y, + absDeltaY = Math.abs(deltaY); + const step = [ deltaX / absDeltaX || 0, deltaY / absDeltaY || 0 ]; + if ( + // Check that the step is a priori valid: + (absDeltaX != absDeltaY && deltaX != 0 && deltaY != 0) || + allowedSteps.every(st => st[0] != step[0] || st[1] != step[1]) + ) { + return null; + } + let sq = [ x + step[0], y + step[1] ]; + while (sq[0] != xx || sq[1] != yy) { + // NOTE: no need to check OnBoard in this special case + if (this.board[sq[0]][sq[1]] != V.EMPTY) return null; + sq[0] += step[0]; + sq[1] += step[1]; + } + return this.getBasicMove([xx, yy], [x, y]); + }; + // Can I take on the square [x, y] ? + // If yes, return the (list of) capturing move(s) + let moves = []; + for (let i=0; i<8; i++) { + for (let j=0; j<8; j++) { + if (this.getColor(i, j) == color) { + switch (this.getPiece(i, j)) { + case V.PAWN: { + // Pushed pawns move as enemy pawns + const shift = (color == 'w' ? 1 : -1); + if (x + shift == i && Math.abs(y - j) == 1) + moves.push(this.getBasicMove([i, j], [x, y])); + break; + } + case V.KNIGHT: { + const deltaX = Math.abs(i - x); + const deltaY = Math.abs(j - y); + if ( + deltaX + deltaY == 3 && + [1, 2].includes(deltaX) && + [1, 2].includes(deltaY) + ) { + moves.push(this.getBasicMove([i, j], [x, y])); + } + break; + } + case V.KING: + if (Math.abs(i - x) <= 1 && Math.abs(j - y) <= 1) + moves.push(this.getBasicMove([i, j], [x, y])); + break; + case V.ROOK: { + const mv = sliderAttack(i, j, V.steps[V.ROOK]); + if (!!mv) moves.push(mv); + break; + } + case V.BISHOP: { + const mv = sliderAttack(i, j, V.steps[V.BISHOP]); + if (!!mv) moves.push(mv); + break; + } + case V.QUEEN: { + const mv = sliderAttack( + i, j, V.steps[V.ROOK].concat(V.steps[V.BISHOP])); + if (!!mv) moves.push(mv); + break; + } + } + } + } + } + return this.filterValid(moves); + } + + getAllValidMoves() { + const color = this.turn; + // 0) Generate our possible moves + let myMoves = super.getAllValidMoves(); + // Lookup table to quickly decide if a move is already in list: + let moveSet = {}; + const getMoveHash = (move) => { + return ( + "m" + move.start.x + move.start.y + + move.end.x + move.end.y + + // Also use m.appear[0].p for pawn promotions + move.appear[0].p + ); + }; + myMoves.forEach(m => moveSet[getMoveHash(m)] = true); + // 1) Generate all opponent's moves + this.turn = V.GetOppCol(color); + const oppMoves = super.getAllValidMoves(); + this.turn = color; + // 2) Play each opponent's move, and see if captures are possible: + // --> capturing moving unit only (otherwise some issues) + oppMoves.forEach(m => { + V.PlayOnBoard(this.board, m); + // Can I take on [m.end.x, m.end.y] ? + // If yes and not already in list, add it (without the capturing part) + let capturingMoves = this.getCaptures(m.end.x, m.end.y); + capturingMoves.forEach(cm => { + const cmHash = getMoveHash(cm); + if (!moveSet[cmHash]) { + // The captured unit hasn't moved yet, so temporarily cancel capture + cm.vanish.pop(); + // If m is itself a capturing move: then replace by self-capture + if (m.vanish.length == 2) cm.vanish.push(m.vanish[1]); + myMoves.push(cm); + moveSet[cmHash] = true; + } + }); + V.UndoOnBoard(this.board, m); + }); + return myMoves; + } + + filterValid(moves) { + if (moves.length == 0) return []; + // filterValid can be called when it's "not our turn": + const color = moves[0].vanish[0].c; + return moves.filter(m => { + const piece = m.vanish[0].p; + if (piece == V.KING) { + this.kingPos[color][0] = m.appear[0].x; + this.kingPos[color][1] = m.appear[0].y; + } + V.PlayOnBoard(this.board, m); + let res = !this.underCheck(color); + V.UndoOnBoard(this.board, m); + if (piece == V.KING) this.kingPos[color] = [m.start.x, m.start.y]; + return res; + }); + } + + atLeastOneMove(color) { + const curTurn = this.turn; + this.turn = color; + const res = super.atLeastOneMove(); + this.turn = curTurn; + return res; + } + + // White and black (partial) moves were played: merge + resolveSynchroneMove(move) { + const m1 = this.whiteMove; + const m2 = move; + // For PlayOnBoard (no need for start / end, irrelevant) + let smove = { + appear: [], + vanish: [ + m1.vanish[0], + m2.vanish[0] + ] + }; + if ((m1.end.x != m2.end.x) || (m1.end.y != m2.end.y)) { + // Easy case: two independant moves (which may (self-)capture) + smove.appear.push(m1.appear[0]); + smove.appear.push(m2.appear[0]); + // "Captured" pieces may have moved: + if ( + m1.vanish.length == 2 && + ( + m2.end.x != m1.vanish[1].x || + m2.end.y != m1.vanish[1].y + ) + ) { + smove.vanish.push(m1.vanish[1]); + } + if ( + m2.vanish.length == 2 && + ( + m1.end.x != m2.vanish[1].x || + m1.end.y != m2.vanish[1].y + ) + ) { + smove.vanish.push(m2.vanish[1]); + } + } else { + // Collision: + if (m1.vanish.length == 1 && m2.vanish.length == 1) { + // Easy case: both disappear except if one is a king + const p1 = m1.vanish[0].p; + const p2 = m2.vanish[0].p; + if ([p1, p2].includes(V.KING)) { + smove.appear.push({ + x: m1.end.x, + y: m1.end.y, + p: V.KING, + c: (p1 == V.KING ? 'w' : 'b') + }); + } + } else { + // One move is a self-capture and the other a normal capture: + // only the self-capture appears + console.log(m1); + console.log(m2); + const selfCaptureMove = + m1.vanish[1].c == m1.vanish[0].c + ? m1 + : m2; + smove.appear.push({ + x: m1.end.x, + y: m1.end.y, + p: selfCaptureMove.appear[0].p, + c: selfCaptureMove.vanish[0].c + }); + } + } + return smove; + } + + play(move) { + move.flags = JSON.stringify(this.aggregateFlags()); //save flags (for undo) + this.epSquares.push(this.getEpSquare(move)); + // Do not play on board (would reveal the move...) + this.turn = V.GetOppCol(this.turn); + this.movesCount++; + this.postPlay(move); + } + + updateCastleFlags(move) { + const firstRank = { 'w': V.size.x - 1, 'b': 0 }; + move.appear.concat(move.vanish).forEach(av => { + for (let c of ['w', 'b']) { + if (av.x == firstRank[c] && this.castleFlags[c].includes(av.y)) { + const flagIdx = (av.y == this.castleFlags[c][0] ? 0 : 1); + this.castleFlags[c][flagIdx] = 8; + } + } + }); + } + + postPlay(move) { + if (this.turn == 'b') { + // NOTE: whiteMove is used read-only, so no need to copy + this.whiteMove = move; + return; + } + + // A full turn just ended: + const smove = this.resolveSynchroneMove(move); + V.PlayOnBoard(this.board, smove); + this.whiteMove = null; + + // Update king position + flags + let kingAppear = { 'w': false, 'b': false }; + for (let i=0; i<smove.appear.length; i++) { + if (smove.appear[i].p == V.KING) { + const c = smove.appear[i].c; + kingAppear[c] = true; + this.kingPos[c][0] = smove.appear[i].x; + this.kingPos[c][1] = smove.appear[i].y; + } + } + for (let i=0; i<smove.vanish.length; i++) { + if (smove.vanish[i].p == V.KING) { + const c = smove.vanish[i].c; + if (!kingAppear[c]) { + this.kingPos[c][0] = -1; + this.kingPos[c][1] = -1; + } + break; + } + } + this.updateCastleFlags(smove); + move.smove = smove; + } + + undo(move) { + this.epSquares.pop(); + this.disaggregateFlags(JSON.parse(move.flags)); + if (this.turn == 'w') + // Back to the middle of the move + V.UndoOnBoard(this.board, move.smove); + this.turn = V.GetOppCol(this.turn); + this.movesCount--; + this.postUndo(move); + } + + postUndo(move) { + if (this.turn == 'w') + // Reset king positions: scan board + this.scanKings(); + } + + getCheckSquares(color) { + if (color == 'b') return []; + let res = []; + if (this.underCheck('w')) + res.push(JSON.parse(JSON.stringify(this.kingPos['w']))); + if (this.underCheck('b')) + res.push(JSON.parse(JSON.stringify(this.kingPos['b']))); + return res; + } + + getCurrentScore() { + if (this.turn == 'b') + // Turn (white + black) not over yet + return "*"; + // Was a king captured? + if (this.kingPos['w'][0] < 0) return "0-1"; + if (this.kingPos['b'][0] < 0) return "1-0"; + const whiteCanMove = this.atLeastOneMove('w'); + const blackCanMove = this.atLeastOneMove('b'); + if (whiteCanMove && blackCanMove) return "*"; + // Game over + const whiteInCheck = this.underCheck('w'); + const blackInCheck = this.underCheck('b'); + if ( + (whiteCanMove && !this.underCheck('b')) || + (blackCanMove && !this.underCheck('w')) + ) { + return "1/2"; + } + // Checkmate: could be mutual + if (!whiteCanMove && !blackCanMove) return "1/2"; + return (whiteCanMove ? "1-0" : "0-1"); + } + + getComputerMove() { + const maxeval = V.INFINITY; + const color = this.turn; + let moves = this.getAllValidMoves(); + if (moves.length == 0) + // TODO: this situation should not happen + return null; + + if (Math.random() < 0.5) + // Return a random move + return moves[randInt(moves.length)]; + + // Rank moves at depth 1: + // try to capture something (not re-capturing) + moves.forEach(m => { + V.PlayOnBoard(this.board, m); + m.eval = this.evalPosition(); + V.UndoOnBoard(this.board, m); + }); + moves.sort((a, b) => { + return (color == "w" ? 1 : -1) * (b.eval - a.eval); + }); + let candidates = [0]; + for (let i = 1; i < moves.length && moves[i].eval == moves[0].eval; i++) + candidates.push(i); + return moves[candidates[randInt(candidates.length)]]; + } }; diff --git a/client/src/variants/Twokings.js b/client/src/variants/Twokings.js index ce30d653..68910e74 100644 --- a/client/src/variants/Twokings.js +++ b/client/src/variants/Twokings.js @@ -34,7 +34,7 @@ export class TwokingsRules extends CoregalRules { } // Not scanning king positions. In this variant, scan the board everytime. - scanKings(fen) {} + scanKings() {} getCheckSquares(color) { let squares = []; diff --git a/client/src/views/Analyse.vue b/client/src/views/Analyse.vue index 484b8046..557a2df7 100644 --- a/client/src/views/Analyse.vue +++ b/client/src/views/Analyse.vue @@ -96,7 +96,7 @@ export default { }, adjustFenSize: function() { let fenInput = document.getElementById("fen"); - fenInput.style.width = (this.curFen.length+1) + "ch"; + fenInput.style.width = (this.curFen.length+3) + "ch"; }, tryGotoFen: function() { if (V.IsGoodFen(this.curFen)) { @@ -107,3 +107,9 @@ export default { } }; </script> + +<style lang="sass" scoped=true> +input#fen + // Use a Monospace font for input FEN width adjustment + font-family: "Fira Code" +</style>