Merge branch 'experimental' of git://cockatrice.git.sourceforge.net/gitroot/cockatrice/cockatrice

This commit is contained in:
Max-Wilhelm Bruker 2011-07-09 12:14:24 +02:00
commit 07317efd46
116 changed files with 22300 additions and 8904 deletions

View file

@ -28,6 +28,8 @@ HEADERS += src/abstractcounter.h \
src/handcounter.h \ src/handcounter.h \
src/carddatabase.h \ src/carddatabase.h \
src/gameview.h \ src/gameview.h \
src/gameselector.h \
src/gametypemap.h \
src/decklistmodel.h \ src/decklistmodel.h \
src/dlg_load_deck_from_clipboard.h \ src/dlg_load_deck_from_clipboard.h \
src/dlg_load_remote_deck.h \ src/dlg_load_remote_deck.h \
@ -114,6 +116,7 @@ SOURCES += src/abstractcounter.cpp \
src/handcounter.cpp \ src/handcounter.cpp \
src/carddatabase.cpp \ src/carddatabase.cpp \
src/gameview.cpp \ src/gameview.cpp \
src/gameselector.cpp \
src/decklistmodel.cpp \ src/decklistmodel.cpp \
src/dlg_load_deck_from_clipboard.cpp \ src/dlg_load_deck_from_clipboard.cpp \
src/dlg_load_remote_deck.cpp \ src/dlg_load_remote_deck.cpp \
@ -136,6 +139,7 @@ SOURCES += src/abstractcounter.cpp \
src/gamescene.cpp \ src/gamescene.cpp \
src/arrowitem.cpp \ src/arrowitem.cpp \
src/arrowtarget.cpp \ src/arrowtarget.cpp \
src/tab.cpp \
src/tab_server.cpp \ src/tab_server.cpp \
src/tab_room.cpp \ src/tab_room.cpp \
src/tab_message.cpp \ src/tab_message.cpp \

View file

@ -55,6 +55,7 @@
<file>translations/cockatrice_pl.qm</file> <file>translations/cockatrice_pl.qm</file>
<file>translations/cockatrice_sk.qm</file> <file>translations/cockatrice_sk.qm</file>
<file>resources/countries/ar.svg</file>
<file>resources/countries/at.svg</file> <file>resources/countries/at.svg</file>
<file>resources/countries/au.svg</file> <file>resources/countries/au.svg</file>
<file>resources/countries/be.svg</file> <file>resources/countries/be.svg</file>

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 18 KiB

View file

@ -1,749 +1,186 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) --> <!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
xmlns:dc="http://purl.org/dc/elements/1.1/" <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
xmlns:cc="http://creativecommons.org/ns#" width="60px" height="60px" viewBox="0 0 60 60" enable-background="new 0 0 60 60" xml:space="preserve">
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" <radialGradient id="SVGID_1_" cx="542" cy="761" r="30" gradientTransform="matrix(1 0 0 1 -512 -731)" gradientUnits="userSpaceOnUse">
xmlns:svg="http://www.w3.org/2000/svg" <stop offset="0" style="stop-color:#00DC00"/>
xmlns="http://www.w3.org/2000/svg" <stop offset="1" style="stop-color:#191919"/>
xmlns:xlink="http://www.w3.org/1999/xlink" </radialGradient>
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" <path fill="url(#SVGID_1_)" d="M60,51.818C60,56.337,56.337,60,51.818,60H8.182C3.663,60,0,56.337,0,51.818V8.182
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" C0,3.663,3.663,0,8.182,0h43.636C56.337,0,60,3.663,60,8.182V51.818z"/>
width="64px" <g display="none">
height="64px" <g display="inline">
id="svg5603" <path fill="#EBEBEB" d="M3.934,54.5v-1.977c2.34-0.26,2.34-0.521,2.34-2.027v-28.81c0-1.508,0-1.82-2.34-2.028v-1.976h6.292
sodipodi:version="0.32" c1.248,0,3.276,0,5.148-0.78l1.871,3.536l-1.56,0.884c-0.832-0.676-1.248-1.352-2.964-1.352H8.874v4.472h4.889
inkscape:version="0.46" c1.716,0,1.872-0.572,1.924-1.456h1.56v5.2h-1.56c-0.156-0.78-0.364-1.456-1.82-1.456H8.874v25.481h5.356
sodipodi:docname="icon_cleanup.svg" c2.393,0,2.756-1.092,3.641-2.186l1.56,1.041l-1.872,4.057c-0.988-0.26-2.236-0.416-3.536-0.521
inkscape:output_extension="org.inkscape.output.svg.inkscape"> C12.774,54.5,11.526,54.5,10.59,54.5H3.934z"/>
<defs <g opacity="0.35">
id="defs5605"> <path d="M15.375,16.902l1.871,3.536l-1.56,0.884c-0.832-0.676-1.248-1.352-2.964-1.352H8.874v4.472h4.889
<linearGradient c1.716,0,1.872-0.572,1.924-1.456h1.56v5.2h-1.56c-0.156-0.78-0.364-1.456-1.82-1.456H8.874v25.481h5.356
inkscape:collect="always" c2.393,0,2.756-1.092,3.641-2.186l1.56,1.041l-1.872,4.057c-0.988-0.26-2.236-0.416-3.536-0.521
xlink:href="#linearGradient5329" C12.774,54.5,11.526,54.5,10.59,54.5H3.934v-1.977c2.34-0.26,2.34-0.521,2.34-2.027v-28.81c0-1.508,0-1.82-2.34-2.028v-1.976
id="linearGradient5601" h6.292C11.475,17.683,13.502,17.683,15.375,16.902 M16.061,14.992l-1.263,0.526c-1.595,0.665-3.386,0.665-4.571,0.665H3.934h-1.5
gradientUnits="userSpaceOnUse" v1.5v1.976v1.373l1.367,0.122c0.482,0.043,0.783,0.085,0.971,0.12c0.002,0.13,0.002,0.28,0.002,0.414v28.81
x1="395.53043" c0,0.127,0,0.27-0.002,0.395c-0.194,0.039-0.505,0.088-1.003,0.144l-1.334,0.147v1.342V54.5V56h1.5h6.656
y1="611.20276" c0.896,0,2.122,0,3.308,0.1c1.423,0.113,2.494,0.271,3.279,0.478l1.216,0.317l0.527-1.142l1.872-4.056l0.538-1.164l-1.066-0.713
x2="395.53043" l-1.56-1.041l-1.138-0.76l-0.861,1.063c-0.152,0.188-0.291,0.377-0.426,0.563c-0.588,0.799-0.786,1.066-2.048,1.066h-3.856
y2="682.70667" /> v-22.48h3.492c0.136,0,0.233,0.009,0.298,0.019c0.014,0.053,0.031,0.128,0.052,0.232l0.241,1.205h1.229h1.56h1.5v-1.5v-5.2v-1.5
<linearGradient H18.44l0.815-0.462l-0.682-1.288l-1.871-3.536L16.061,14.992L16.061,14.992z M10.374,21.471h2.349
inkscape:collect="always" c0.825,0,1.024,0.148,1.516,0.583l-0.05,0.845c0,0.009-0.001,0.017-0.001,0.025c-0.102,0.011-0.24,0.019-0.425,0.019h-3.389
xlink:href="#linearGradient5329" V21.471L10.374,21.471z"/>
id="linearGradient5599" </g>
gradientUnits="userSpaceOnUse" </g>
x1="406.30539" </g>
y1="611.20276" <g display="none">
x2="406.30539" <g display="inline">
y2="682.70667" /> <path fill="#EBEBEB" d="M27.701,41.652c0.035,0.91,0.07,1.119,0.07,1.295v12.146h-2.766V37.066h3.431l5.74,12.496
<linearGradient c-0.035-0.91-0.035-1.119-0.035-1.262V37.066h2.768v18.025h-2.73L27.701,41.652z"/>
inkscape:collect="always" <g opacity="0.35">
xlink:href="#linearGradient5329" <path d="M36.907,37.066v18.025h-2.73l-6.476-13.439c0.035,0.91,0.07,1.119,0.07,1.295v12.146h-2.766V37.066h3.431l5.74,12.496
id="linearGradient5597" c-0.035-0.91-0.035-1.119-0.035-1.262V37.066H36.907 M38.407,35.566h-1.5h-2.767h-1.5v1.5v5.561L29.8,36.439l-0.402-0.873h-0.961
gradientUnits="userSpaceOnUse" h-3.431h-1.5v1.5v18.025v1.5h1.5h2.766h1.5v-1.5v-6.726l3.554,7.377l0.408,0.849h0.941h2.73h1.5v-1.5V37.066L38.407,35.566
x1="438.18127" L38.407,35.566z"/>
y1="610.75385" </g>
x2="438.18127" </g>
y2="682.25769" /> <g display="inline">
<linearGradient <path fill="#EBEBEB" d="M43.311,55.094V37.102h5.496c4.48,0,6.896,3.291,6.896,9.031c0,6.16-3.186,8.961-7.176,8.961H43.311z
inkscape:collect="always" M46.041,39.271v13.65h2.484c3.047,0,4.41-2.591,4.41-6.756c0-4.307-1.261-6.896-4.234-6.896h-2.66V39.271z"/>
xlink:href="#linearGradient5329" <g opacity="0.35">
id="linearGradient5595" <path d="M48.807,37.102c4.48,0,6.896,3.291,6.896,9.031c0,6.16-3.186,8.961-7.176,8.961h-5.217V37.102H48.807 M46.041,52.924
gradientUnits="userSpaceOnUse" h2.484c3.047,0,4.41-2.591,4.41-6.756c0-4.307-1.261-6.896-4.234-6.896h-2.66V52.924 M48.807,35.602h-5.496h-1.5v1.5v17.992v1.5
x1="427.40634" h1.5h5.217c4.193,0,8.677-2.748,8.677-10.461C57.202,39.538,54.063,35.602,48.807,35.602L48.807,35.602z M47.541,40.771h1.16
y1="610.75385" c0.748,0,2.734,0,2.734,5.396c0,5.256-2.189,5.256-2.91,5.256h-0.984V40.771L47.541,40.771z"/>
x2="424.43286" </g>
y2="682.25769" /> </g>
<linearGradient </g>
inkscape:collect="always" <polygon points="22.406,36.813 23.031,35.656 19.063,35.344 19.938,33.594 16.083,32.906 17.313,30.844 11.625,27.781
xlink:href="#linearGradient5329" 13.958,26.531 11.5,23.406 20.125,23.865 25.5,21.365 32.25,23.344 29.917,28.365 24.031,36.469 "/>
id="linearGradient5593" <g>
gradientUnits="userSpaceOnUse" <g>
x1="416.63138" <polygon fill="#EBEBEB" points="34.059,13.917 42.991,1.3 44.986,3.601 36.111,14.875 "/>
y1="610.75385" <g opacity="0.35">
x2="416.63138" <path d="M42.991,1.3l1.995,2.3l-8.875,11.274l-2.053-0.957L42.991,1.3 M42.9-0.542l-0.838,1.185l-8.934,12.617l-0.787,1.113
y2="682.25769" /> l1.236,0.576l2.054,0.957l0.818,0.381l0.558-0.709l8.875-11.274l0.584-0.739l-0.618-0.711l-1.996-2.3L42.9-0.542L42.9-0.542z"/>
<linearGradient </g>
inkscape:collect="always" </g>
xlink:href="#linearGradient5329" <g>
id="linearGradient5591" <polygon fill="#EBEBEB" points="31.104,13.639 37.289,17.026 34.803,18.709 30.726,16.322 "/>
gradientUnits="userSpaceOnUse" <g opacity="0.35">
x1="385.20444" <path d="M31.104,13.639l6.188,3.388l-2.488,1.684l-4.077-2.388L31.104,13.639 M30.204,11.85l-0.229,1.631L29.6,16.164
y1="611.65173" l-0.108,0.756l0.658,0.384l4.077,2.388l0.617,0.363l0.595-0.403l2.486-1.684l1.544-1.044l-1.635-0.896l-6.188-3.388L30.204,11.85
x2="385.20444" L30.204,11.85z"/>
y2="683.15558" /> </g>
<linearGradient </g>
inkscape:collect="always" <g>
xlink:href="#linearGradient5329" <polygon fill="#EBEBEB" points="30.624,17.489 29.201,18.674 32.736,20.73 33.714,19.263 "/>
id="linearGradient5589" <g opacity="0.35">
gradientUnits="userSpaceOnUse" <path d="M30.624,17.489l3.092,1.773l-0.977,1.468l-3.536-2.056L30.624,17.489 M30.503,16.108l-0.607,0.507L28.472,17.8
x1="374.4295" l-1.251,1.041l1.405,0.818l3.537,2.057l0.925,0.539l0.594-0.892l0.976-1.468l0.676-1.012l-1.056-0.606l-3.092-1.773
y1="611.65173" L30.503,16.108L30.503,16.108z"/>
x2="374.4295" </g>
y2="683.15558" /> </g>
<linearGradient <g>
inkscape:collect="always" <path fill="#EBEBEB" d="M28.954,22.551c0,0-4.399,3.818-5.264,4.452c-0.868,0.639-5.392,3.055-6.209,3.167
xlink:href="#linearGradient5329" c-1.04,0.141-3.126,0.304-4.411-0.662c-1.526-1.146-2.39-2.858-2.39-2.858c1.484,0.48,5.009,0.942,8.747-0.177
id="linearGradient5587" c3.74-1.121,7.703-4.421,7.703-4.421s-7.401,4.332-11.064,4.015c-4.831-0.415-6.563-4.722-6.563-4.722s7.217,2.213,10.647,1.822
gradientUnits="userSpaceOnUse" c3.433-0.394,4.019-2.158,5.771-3.318c1.305-0.866,1.916-0.52,1.916-0.52l5.175,2.455c0.614,0.982,0.815,2.737,0.815,2.737
x1="361.40976" c0.259,3.197-5.085,9.414-5.085,9.414c-0.671,0.943-1.349,1.45-2.417,2.121c-1.336,1.247-3.963,1.165-4.692,0.925
y1="611.20276" c0.334-0.16,3.632-2.116,5.199-4.316c0.734-1.033,1.656-2.385,2.341-3.711c0.913-1.766,2.045-4.606,2.045-4.606
x2="361.40976" c-0.283,0.111-1.727,2.982-2.501,4.126c-0.606,0.898-2.138,2.911-2.471,3.402c-0.605,0.9-1.949,2.23-2.301,2.505
y2="682.70667" /> c-3.27,2.58-6.015,1.069-6.015,1.069c1.009-0.289,4.569-2.568,7.424-5.449c2.808-2.836,5.084-6.895,5.084-6.895
<linearGradient s-5.506,7.041-8.6,8.917c-3.91,2.377-6.384,1.24-7.33,0.746c1.18-0.222,6.504-2.905,9.776-5.394
inkscape:collect="always" C25.346,26.58,28.954,22.551,28.954,22.551z"/>
xlink:href="#linearGradient5329" <g opacity="0.4">
id="linearGradient5585" <path d="M27.465,19.262c0.249,0,0.369,0.068,0.369,0.068l5.175,2.455c0.613,0.982,0.813,2.737,0.813,2.737
gradientUnits="userSpaceOnUse" c0.258,3.197-5.083,9.414-5.083,9.414c-0.671,0.943-1.351,1.45-2.419,2.121c-0.881,0.827-2.332,1.069-3.423,1.069
x1="349.73691" c-0.558,0-1.02-0.066-1.267-0.146c0.333-0.16,3.632-2.119,5.197-4.316c0.735-1.033,1.656-2.386,2.343-3.711
y1="611.20276" c0.911-1.766,2.044-4.606,2.044-4.606c-0.283,0.11-1.726,2.982-2.502,4.125c-0.604,0.898-2.137,2.912-2.471,3.403
x2="349.73691" c-0.605,0.899-1.949,2.229-2.3,2.505c-1.507,1.188-2.901,1.509-3.967,1.509c-1.25,0-2.049-0.44-2.049-0.44
y2="682.70667" /> c1.008-0.289,4.568-2.567,7.424-5.449c2.807-2.836,5.083-6.895,5.083-6.895s-5.505,7.04-8.599,8.917
<linearGradient c-1.828,1.11-3.343,1.455-4.533,1.455c-1.356,0-2.293-0.446-2.797-0.709c1.18-0.222,6.504-2.905,9.776-5.395
inkscape:collect="always" c1.066-0.795,4.671-4.825,4.671-4.825s-4.398,3.818-5.264,4.453c-0.868,0.639-5.391,3.055-6.209,3.166
xlink:href="#linearGradient5329" c-0.384,0.053-0.912,0.107-1.489,0.107c-0.983,0-2.112-0.161-2.922-0.768c-1.526-1.146-2.39-2.858-2.39-2.858
id="linearGradient5583" c0.806,0.261,2.211,0.517,3.927,0.517c1.445,0,3.11-0.183,4.82-0.694c3.74-1.12,7.704-4.421,7.704-4.421
gradientUnits="userSpaceOnUse" s-6.89,4.032-10.667,4.032c-0.137,0-0.271-0.005-0.4-0.017c-4.831-0.415-6.563-4.722-6.563-4.722s6.093,1.868,9.744,1.868
x1="332.0408" c0.322,0,0.625-0.015,0.903-0.047c3.433-0.394,4.019-2.158,5.771-3.318C26.645,19.368,27.155,19.262,27.465,19.262
y1="611.71985" M27.465,18.124c-0.667,0-1.399,0.26-2.175,0.777c-0.601,0.398-1.062,0.837-1.507,1.261c-0.926,0.88-1.727,1.64-3.764,1.875
x2="332.0408" c-0.225,0.026-0.486,0.039-0.773,0.039c-3.439,0-9.352-1.799-9.411-1.817l-2.278-0.699l0.889,2.211
y2="683.22369" /> c0.056,0.139,1.003,2.424,3.356,3.996c-0.306-0.063-0.567-0.131-0.772-0.197l-2.595-0.841l1.229,2.436
<linearGradient c0.041,0.08,1.003,1.966,2.724,3.255c0.698,0.524,1.605,0.843,2.706,0.952c-0.369,0.154-0.646,0.251-0.799,0.28l-3.229,0.606
inkscape:collect="always" l2.913,1.521c0.605,0.314,1.525,0.724,2.787,0.817l-1.807,0.515l2.419,1.334c0.086,0.047,0.728,0.385,1.737,0.522l-0.431,0.218
xlink:href="#linearGradient5329" l2.587,0.874c0.389,0.129,0.982,0.204,1.627,0.204c0.805,0,2.785-0.127,4.114-1.296c1.127-0.716,1.89-1.312,2.624-2.329
id="linearGradient5581" c0.714-0.836,5.604-6.702,5.322-10.209c-0.025-0.242-0.253-2.081-0.981-3.248L33.8,20.896l-0.302-0.142l-5.16-2.448
gradientUnits="userSpaceOnUse" C28.176,18.229,27.885,18.124,27.465,18.124L27.465,18.124z"/>
x1="322.83875" </g>
y1="611.71985" </g>
x2="322.83875" <g>
y2="683.22369" /> <path fill="#EBEBEB" d="M28.267,37.468c0,0,7.661,1.668,10.493,1.299c0,0,2.188-0.111,2.968-0.42c0,0,1.516-0.372,2-0.609
<linearGradient c0.487-0.24,0.268-0.153,0.268-0.153s-0.624,0.007-1.685-0.098c-1.062-0.109-1.22-0.476-1.22-0.476
inkscape:collect="always" c2.239,0.286,5.465-0.676,6.621-1.299c1.153-0.622,3.2-1.662,3.485-4.08c0.28-2.399,0.041-3.644-0.594-4.445
xlink:href="#linearGradient5329" c-0.259-0.329-0.829-0.499-0.829-0.499s-0.058-1.017-0.87-2.775c0,0-0.297-0.461-0.826-1.039c-0.541-0.587-1.331-1.214-2.78-1.45
id="linearGradient5579" c0,0-3.297-0.703-4.721,0.28c-1.044,0.723-1.546,1.545-1.984,2.979c-0.634,2.067,1.096,4.791,1.712,5.326
gradientUnits="userSpaceOnUse" c0.575,0.498,2.396,0.994,3.177,0.066c0,0,1.18-1.276-0.218-2.247c1.281-0.082,1.825,1.352,1.507,2.191
x1="300.60043" c-0.638,1.525-2.992,1.923-3.924,1.468c-1.442-0.541-2.403-2.019-3.182-3.953c-1.441-0.283-2.522,0.754-2.906,1.399
y1="611.71985" c-0.834,1.1-0.89,1.771-0.826,2.416c0.067,0.644,0.437,1.321,1.114,1.921c0.681,0.599,1.552,0.23,1.752-0.086
x2="300.60043" c0.261-0.42,0.222-1.064-0.114-1.421c-0.072-0.075-0.995,0.371-0.995,0.371s0.338-0.83,0.707-1.041
y2="683.22369" /> c0.37-0.209,1.123,0.087,1.514,0.569c0.212,0.486-0.075,2.08-0.517,2.412c-0.414,0.313-1.73,0.612-2.085,0.477
<linearGradient c-0.63-0.24-2.097-1.759-2.483-2.402c0,0-2.206,3.042-2.866,3.745C29.286,36.612,28.267,37.468,28.267,37.468z"/>
inkscape:collect="always" <g opacity="0.4">
xlink:href="#linearGradient5329" <path d="M42.928,21.178c1.229,0,2.372,0.244,2.372,0.244c1.449,0.235,2.241,0.864,2.78,1.45c0.529,0.578,0.826,1.04,0.826,1.04
id="linearGradient5577" c0.813,1.758,0.87,2.775,0.87,2.775s0.571,0.17,0.829,0.498c0.636,0.801,0.875,2.046,0.594,4.446
gradientUnits="userSpaceOnUse" c-0.284,2.418-2.332,3.458-3.485,4.08c-1.012,0.545-3.61,1.35-5.744,1.35c-0.306,0-0.598-0.016-0.878-0.052
x1="289.86472" c0,0,0.16,0.367,1.22,0.476c0.94,0.092,1.536,0.099,1.66,0.099c0.016,0,0.023,0,0.023,0s0.038-0.016,0.049-0.016
y1="611.71985" s-0.031,0.028-0.313,0.166c-0.486,0.24-2.002,0.609-2.002,0.609c-0.782,0.309-2.968,0.42-2.968,0.42
x2="289.86472" c-0.282,0.036-0.611,0.054-0.976,0.054c-3.304,0-9.514-1.352-9.514-1.352s1.018-0.855,1.698-1.581
y2="683.22369" /> c0.658-0.697,2.864-3.742,2.864-3.742c0.387,0.644,1.854,2.163,2.484,2.402c0.061,0.022,0.146,0.034,0.254,0.034
<linearGradient c0.52,0,1.487-0.252,1.831-0.511c0.44-0.332,0.728-1.924,0.516-2.412c-0.304-0.375-0.826-0.639-1.218-0.639
inkscape:collect="always" c-0.112,0-0.213,0.022-0.296,0.068c-0.369,0.211-0.707,1.041-0.707,1.041s0.785-0.38,0.965-0.38c0.016,0,0.024,0.002,0.031,0.009
xlink:href="#linearGradient5329" c0.336,0.355,0.372,1.002,0.111,1.421c-0.119,0.192-0.493,0.406-0.92,0.406c-0.271,0-0.565-0.087-0.829-0.32
id="linearGradient5575" c-0.681-0.598-1.05-1.277-1.116-1.921c-0.065-0.645-0.01-1.316,0.824-2.416c0.344-0.57,1.226-1.447,2.422-1.447
gradientUnits="userSpaceOnUse" c0.157,0,0.317,0.015,0.486,0.048c0.78,1.934,1.74,3.412,3.182,3.953c0.239,0.117,0.571,0.178,0.945,0.178
x1="269.1601" c1.082,0,2.506-0.511,2.979-1.646c0.31-0.815-0.197-2.195-1.403-2.195c-0.032,0-0.069,0.001-0.104,0.003
y1="610.953" c1.399,0.972,0.219,2.247,0.219,2.247c-0.319,0.38-0.816,0.521-1.327,0.521c-0.734,0-1.509-0.293-1.85-0.587
x2="269.1601" c-0.618-0.535-2.347-3.258-1.712-5.325c0.439-1.435,0.94-2.256,1.983-2.979C41.165,21.297,42.067,21.178,42.928,21.178
y2="682.45685" /> M42.928,20.04v1.138V20.04c-1.31,0-2.29,0.237-2.996,0.727c-1.401,0.971-1.982,2.134-2.426,3.582
<linearGradient c-0.198,0.646-0.224,1.33-0.138,2.002c-0.065-0.003-0.126-0.004-0.189-0.004c-1.59,0-2.794,1.034-3.36,1.943
inkscape:collect="always" c-0.54,0.718-0.816,1.324-0.944,1.855l-0.966,1.333c-0.871,1.199-2.325,3.157-2.774,3.633c-0.627,0.665-1.589,1.479-1.601,1.487
xlink:href="#linearGradient5329" l-1.771,1.492l2.261,0.493c0.26,0.058,6.371,1.376,9.756,1.376c0.41,0,0.765-0.018,1.077-0.056
id="linearGradient5573" c0.468-0.024,2.291-0.143,3.202-0.467c0.448-0.109,1.641-0.416,2.165-0.676c0.296-0.146,0.84-0.416,0.941-0.972
gradientUnits="userSpaceOnUse" c1.309-0.309,2.455-0.735,3.08-1.071l0.09-0.049c1.271-0.685,3.638-1.956,3.987-4.9c0.304-2.586,0.053-4.167-0.829-5.285
x1="259.95804" c-0.199-0.253-0.455-0.444-0.698-0.583c-0.119-0.549-0.362-1.388-0.86-2.464l-0.032-0.072l-0.044-0.067
y1="610.953" c-0.035-0.056-0.364-0.56-0.942-1.19c-0.579-0.631-1.563-1.501-3.438-1.807C45.484,20.298,44.263,20.041,42.928,20.04
x2="259.95804" L42.928,20.04z"/>
y2="682.45685" /> </g>
<linearGradient </g>
inkscape:collect="always" </g>
xlink:href="#linearGradient5329" <g>
id="linearGradient5571" <g>
gradientUnits="userSpaceOnUse" <path fill="#EBEBEB" d="M22.585,42.177h-5.61v4.599h4.3v1.587h-4.3v5.175h5.84v1.586h-7.68V40.637h7.45V42.177z"/>
x1="339.70917" <g opacity="0.35">
y1="611.71985" <path d="M22.585,40.637v1.54h-5.61v4.599h4.3v1.587h-4.3v5.175h5.84v1.586h-7.68V40.637H22.585 M23.585,39.637h-1h-7.45h-1v1
x2="339.70917" v14.486v1h1h7.68h1v-1v-1.586v-1h-1h-4.84v-3.175h3.3h1v-1v-1.587v-1h-1h-3.3v-2.599h4.61h1v-1v-1.54V39.637L23.585,39.637z"/>
y2="683.22369" /> </g>
<linearGradient </g>
inkscape:collect="always" <g>
xlink:href="#linearGradient5329" <path fill="#EBEBEB" d="M27.616,46.293c0.022,0.598,0.046,0.736,0.046,0.851v7.979h-1.817V43.281h2.254l3.771,8.209
id="linearGradient5569" c-0.023-0.598-0.023-0.736-0.023-0.828v-7.381h1.816v11.842H31.87L27.616,46.293z"/>
gradientUnits="userSpaceOnUse" <g opacity="0.35">
x1="311.33618" <path d="M33.663,43.281v11.842H31.87l-4.254-8.83c0.022,0.598,0.046,0.736,0.046,0.851v7.979h-1.817V43.281h2.254l3.771,8.209
y1="611.71985" c-0.023-0.598-0.023-0.736-0.023-0.828v-7.381H33.663 M34.663,42.281h-1h-1.816h-1v1v3.586l-1.839-4.003l-0.268-0.583h-0.641
x2="311.33618" h-2.254h-1v1v11.842v1h1h1.817h1v-1v-4.354l2.307,4.788l0.272,0.566h0.629h1.793h1v-1V43.281V42.281L34.663,42.281z"/>
y2="683.22369" /> </g>
<linearGradient </g>
inkscape:collect="always" <g>
xlink:href="#linearGradient5329" <path fill="#EBEBEB" d="M36.724,55.123V43.304h3.611c2.943,0,4.529,2.161,4.529,5.933c0,4.047-2.092,5.887-4.713,5.887H36.724z
id="linearGradient5567" M38.519,44.729v8.968h1.633c2,0,2.896-1.701,2.896-4.438c0-2.828-0.828-4.53-2.783-4.53H38.519z"/>
gradientUnits="userSpaceOnUse" <g opacity="0.35">
x1="277.59531" <path d="M40.335,43.304c2.943,0,4.529,2.161,4.529,5.933c0,4.047-2.092,5.887-4.713,5.887h-3.428V43.304H40.335 M38.519,53.697
y1="610.953" h1.633c2,0,2.896-1.701,2.896-4.438c0-2.828-0.828-4.53-2.783-4.53h-1.746V53.697 M40.335,42.304h-3.611h-1v1v11.819v1h1h3.428
x2="277.59531" c2.762,0,5.713-1.81,5.713-6.887C45.864,44.896,43.796,42.304,40.335,42.304L40.335,42.304z M39.519,45.729h0.746
y2="682.45685" /> c0.486,0,1.783,0,1.783,3.53c0,3.438-1.428,3.438-1.896,3.438h-0.633V45.729L39.519,45.729z"/>
<linearGradient </g>
inkscape:collect="always" </g>
xlink:href="#linearGradient5329" </g>
id="linearGradient5565" </svg>
gradientUnits="userSpaceOnUse"
x1="251.52283"
y1="611.71985"
x2="251.52283"
y2="683.22369" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5563"
gradientUnits="userSpaceOnUse"
x1="240.02026"
y1="611.71985"
x2="240.02026"
y2="683.22369" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5561"
gradientUnits="userSpaceOnUse"
x1="229.28452"
y1="611.71985"
x2="229.28452"
y2="683.22369" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5559"
gradientUnits="userSpaceOnUse"
x1="220.08247"
y1="610.953"
x2="220.08247"
y2="682.45691" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5557"
gradientUnits="userSpaceOnUse"
x1="208.5799"
y1="610.953"
x2="208.5799"
y2="682.45691" />
<linearGradient
id="linearGradient5329">
<stop
style="stop-color:#ffe680;stop-opacity:1;"
offset="0"
id="stop5331" />
<stop
style="stop-color:#ffc341;stop-opacity:1;"
offset="1"
id="stop5333" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5555"
gradientUnits="userSpaceOnUse"
x1="196.17035"
y1="611.30573"
x2="196.17035"
y2="679.24634" />
<linearGradient
id="linearGradient3197">
<stop
style="stop-color:#803300;stop-opacity:1;"
offset="0"
id="stop3199" />
<stop
id="stop3205"
offset="0.39693579"
style="stop-color:#bf7d51;stop-opacity:1;" />
<stop
style="stop-color:#dfa27a;stop-opacity:1;"
offset="0.63405275"
id="stop3207" />
<stop
style="stop-color:#973c00;stop-opacity:1;"
offset="1"
id="stop3201" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3197"
id="linearGradient5553"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.6458849,0,0,0.9865768,-211.71948,8.0732737)"
x1="321.41293"
y1="612.16199"
x2="321.41293"
y2="590.72852" />
<linearGradient
id="linearGradient5272">
<stop
style="stop-color:#c87137;stop-opacity:1;"
offset="0"
id="stop5274" />
<stop
style="stop-color:#faf1eb;stop-opacity:1;"
offset="1"
id="stop5276" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5272"
id="linearGradient5551"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.9977113,0,0,1.1799457,0.7341533,-111.29357)"
x1="339.84283"
y1="423.96219"
x2="266.61029"
y2="423.96219" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 32 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="64 : 32 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective5611" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5840"
gradientUnits="userSpaceOnUse"
x1="395.53043"
y1="611.20276"
x2="395.53043"
y2="682.70667"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5843"
gradientUnits="userSpaceOnUse"
x1="406.30539"
y1="611.20276"
x2="406.30539"
y2="682.70667"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5846"
gradientUnits="userSpaceOnUse"
x1="438.18127"
y1="610.75385"
x2="438.18127"
y2="682.25769"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5849"
gradientUnits="userSpaceOnUse"
x1="427.40634"
y1="610.75385"
x2="424.43286"
y2="682.25769"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5852"
gradientUnits="userSpaceOnUse"
x1="416.63138"
y1="610.75385"
x2="416.63138"
y2="682.25769"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5855"
gradientUnits="userSpaceOnUse"
x1="385.20444"
y1="611.65173"
x2="385.20444"
y2="683.15558"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5858"
gradientUnits="userSpaceOnUse"
x1="374.4295"
y1="611.65173"
x2="374.4295"
y2="683.15558"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5861"
gradientUnits="userSpaceOnUse"
x1="361.40976"
y1="611.20276"
x2="361.40976"
y2="682.70667"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5864"
gradientUnits="userSpaceOnUse"
x1="349.73691"
y1="611.20276"
x2="349.73691"
y2="682.70667"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5867"
gradientUnits="userSpaceOnUse"
x1="332.0408"
y1="611.71985"
x2="332.0408"
y2="683.22369"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5870"
gradientUnits="userSpaceOnUse"
x1="322.83875"
y1="611.71985"
x2="322.83875"
y2="683.22369"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5873"
gradientUnits="userSpaceOnUse"
x1="300.60043"
y1="611.71985"
x2="300.60043"
y2="683.22369"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5876"
gradientUnits="userSpaceOnUse"
x1="289.86472"
y1="611.71985"
x2="289.86472"
y2="683.22369"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5879"
gradientUnits="userSpaceOnUse"
x1="269.1601"
y1="610.953"
x2="269.1601"
y2="682.45685"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5882"
gradientUnits="userSpaceOnUse"
x1="259.95804"
y1="610.953"
x2="259.95804"
y2="682.45685"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5885"
gradientUnits="userSpaceOnUse"
x1="339.70917"
y1="611.71985"
x2="339.70917"
y2="683.22369"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5888"
gradientUnits="userSpaceOnUse"
x1="311.33618"
y1="611.71985"
x2="311.33618"
y2="683.22369"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5891"
gradientUnits="userSpaceOnUse"
x1="277.59531"
y1="610.953"
x2="277.59531"
y2="682.45685"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5894"
gradientUnits="userSpaceOnUse"
x1="251.52283"
y1="611.71985"
x2="251.52283"
y2="683.22369"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5897"
gradientUnits="userSpaceOnUse"
x1="240.02026"
y1="611.71985"
x2="240.02026"
y2="683.22369"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5900"
gradientUnits="userSpaceOnUse"
x1="229.28452"
y1="611.71985"
x2="229.28452"
y2="683.22369"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5903"
gradientUnits="userSpaceOnUse"
x1="220.08247"
y1="610.953"
x2="220.08247"
y2="682.45691"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5906"
gradientUnits="userSpaceOnUse"
x1="208.5799"
y1="610.953"
x2="208.5799"
y2="682.45691"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5909"
gradientUnits="userSpaceOnUse"
x1="196.17035"
y1="611.30573"
x2="196.17035"
y2="679.24634"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3197"
id="linearGradient5912"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.2213048,0,0,0.1326546,-71.37835,-18.694896)"
x1="321.41293"
y1="612.16199"
x2="321.41293"
y2="590.72852" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5272"
id="linearGradient5917"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.1341517,0,0,0.1586549,-42.811951,-34.744896)"
x1="339.84283"
y1="423.96219"
x2="266.61029"
y2="423.96219" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.1172201"
inkscape:cx="-22.786837"
inkscape:cy="27.255752"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1280"
inkscape:window-height="725"
inkscape:window-x="0"
inkscape:window-y="25" />
<metadata
id="metadata5608">
<rdf:RDF>
<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>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<rect
style="fill:url(#linearGradient5917);fill-opacity:1.0;fill-rule:nonzero;stroke:#000000;stroke-width:0.14588976000000001;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2383"
width="4.9827776"
height="61.648746"
x="-2.2713048"
y="1.6943892"
ry="2.9464471"
transform="matrix(0.7071068,-0.7071068,0.7071068,0.7071068,0,0)" />
<path
style="fill:#ebcab5;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 44.904132,41.323651 L 4.8565979,1.129034 C 4.8565979,1.129034 3.2946309,0.33074409 2.991018,0.73427166 C 2.4571168,1.4438736 45.452675,43.122386 45.452675,43.122386 C 45.452675,43.122386 45.67752,42.53682 44.904132,41.323651 z"
id="path3157"
sodipodi:nodetypes="ccscc" />
<path
style="fill:#ffe680;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="M 32.990203,51.516739 L 51.190377,33.316565 C 52.794548,31.712394 54.360316,30.695278 54.701069,31.036031 L 57.18543,33.520392 L 59.669792,36.004754 C 60.010545,36.345507 58.993429,37.911276 57.389258,39.515446 L 39.189084,57.71562 C 37.584914,59.319791 36.019144,60.336908 35.678391,59.996155 L 33.194029,57.511793 L 30.709668,55.027432 C 30.368915,54.686679 31.386032,53.12091 32.990203,51.516739 z"
id="rect3159"
sodipodi:nodetypes="ccccccccccc" />
<rect
style="fill:url(#linearGradient5912);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.17133911;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3175"
width="34.587376"
height="2.7105932"
x="-17.541821"
y="59.73428"
ry="1.3552966"
rx="0.3055422"
transform="matrix(0.7071068,-0.7071068,0.7071068,0.7071068,0,0)" />
<path
style="fill:url(#linearGradient5909);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 31.986721,56.353875 L 33.04455,55.296047 C 33.04455,55.296047 37.94372,59.481767 39.509347,61.724389 C 39.768454,62.095537 39.363163,62.10712 39.24489,61.988847 L 39.016887,62.289758 L 38.916474,62.681805 C 39.094748,62.97744 38.34756,63.177813 38.378609,63.21967 C 38.378609,63.21967 37.318113,61.756505 36.807978,61.175132 C 36.358275,60.662631 35.683018,60.050172 35.200893,59.568047 C 34.718767,59.085921 34.075933,58.443087 33.593807,57.960961 C 33.111681,57.478835 31.986721,56.353875 31.986721,56.353875 z"
id="rect5280"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5906);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 33.133051,55.140476 L 34.19088,54.082647 C 34.19088,54.082647 39.09005,58.268367 40.655678,60.51099 C 40.914785,60.882138 40.509494,60.89372 40.39122,60.775447 L 40.163218,61.076358 L 40.062805,61.468405 C 40.241078,61.76404 39.49389,61.964413 39.52494,62.00627 C 39.52494,62.00627 38.464443,60.543105 37.954308,59.961732 C 37.504606,59.449231 36.829348,58.836772 36.347223,58.354647 C 35.865097,57.872521 35.222263,57.229687 34.740137,56.747562 C 34.258011,56.265436 33.133051,55.140476 33.133051,55.140476 z"
id="path5283"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5903);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 34.226684,54.046844 L 35.284512,52.989015 C 35.284512,52.989015 40.183682,57.174735 41.74931,59.417358 C 42.008417,59.788506 41.603126,59.800088 41.484852,59.681815 L 41.25685,59.982726 L 41.156437,60.374773 C 41.33471,60.670408 40.587522,60.870781 40.618572,60.912638 C 40.618572,60.912638 39.558075,59.449473 39.04794,58.8681 C 38.598238,58.355599 37.92298,57.74314 37.440855,57.261015 C 36.958729,56.778889 36.315895,56.136055 35.833769,55.653929 C 35.351643,55.171804 34.226684,54.046844 34.226684,54.046844 z"
id="path5285"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5900);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 35.174496,53.244846 L 36.232324,52.187017 C 36.232324,52.187017 41.131494,56.372737 42.697122,58.61536 C 42.956229,58.986508 42.550938,58.99809 42.432665,58.879817 L 42.204662,59.180728 L 42.104249,59.572775 C 42.282522,59.86841 41.535335,60.068783 41.566384,60.11064 C 41.566384,60.11064 40.505887,58.647475 39.995753,58.066102 C 39.54605,57.553601 38.870793,56.941142 38.388668,56.459017 C 37.906542,55.976891 37.263708,55.334058 36.781582,54.851932 C 36.299456,54.369806 35.174496,53.244846 35.174496,53.244846 z"
id="path5287"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5897);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 36.195221,52.224123 L 37.253049,51.166294 C 37.253049,51.166294 42.152219,55.352014 43.717847,57.594637 C 43.976954,57.965785 43.571663,57.977367 43.45339,57.859094 L 43.225387,58.160005 L 43.124974,58.552052 C 43.303247,58.847687 42.55606,59.04806 42.587109,59.089917 C 42.587109,59.089917 41.526612,57.626752 41.016477,57.045379 C 40.566775,56.532878 39.891518,55.920419 39.409392,55.438294 C 38.927267,54.956168 38.284433,54.313334 37.802307,53.831208 C 37.320181,53.349083 36.195221,52.224123 36.195221,52.224123 z"
id="path5289"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5894);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 37.288853,51.130491 L 38.346681,50.072662 C 38.346681,50.072662 43.245851,54.258382 44.811479,56.501005 C 45.070586,56.872153 44.665295,56.883735 44.547022,56.765462 L 44.319019,57.066373 L 44.218606,57.45842 C 44.396879,57.754055 43.649692,57.954428 43.680741,57.996285 C 43.680741,57.996285 42.620244,56.53312 42.11011,55.951747 C 41.660407,55.439246 40.98515,54.826787 40.503025,54.344662 C 40.020899,53.862536 39.378065,53.219702 38.895939,52.737576 C 38.413813,52.25545 37.288853,51.130491 37.288853,51.130491 z"
id="path5291"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5891);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 39.694842,48.578683 L 40.752671,47.520855 C 40.752671,47.520855 45.65184,51.706575 47.217468,53.949197 C 47.476575,54.320345 47.071284,54.331928 46.953011,54.213655 L 46.725008,54.514566 L 46.624595,54.906613 C 46.802869,55.202248 46.055681,55.402621 46.08673,55.444478 C 46.08673,55.444478 45.026233,53.981313 44.516099,53.39994 C 44.066396,52.887439 43.391139,52.27498 42.909014,51.792855 C 42.426888,51.310729 41.784054,50.667895 41.301928,50.185769 C 40.819802,49.703643 39.694842,48.578683 39.694842,48.578683 z"
id="path5293"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5888);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 42.975738,45.443605 L 44.033567,44.385776 C 44.033567,44.385776 48.932736,48.571497 50.498364,50.814119 C 50.757471,51.185267 50.35218,51.19685 50.233907,51.078576 L 50.005904,51.379488 L 49.905491,51.771535 C 50.083765,52.06717 49.336577,52.267542 49.367626,52.3094 C 49.367626,52.3094 48.30713,50.846234 47.796995,50.264862 C 47.347292,49.752361 46.672035,49.139902 46.18991,48.657777 C 45.707784,48.175651 45.06495,47.532817 44.582824,47.050691 C 44.100698,46.568565 42.975738,45.443605 42.975738,45.443605 z"
id="path5295"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5885);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 45.673363,42.74598 L 46.731192,41.688151 C 46.731192,41.688151 51.630362,45.873871 53.195989,48.116494 C 53.455096,48.487642 53.049805,48.499225 52.931532,48.380951 L 52.703529,48.681863 L 52.603116,49.07391 C 52.78139,49.369545 52.034202,49.569917 52.065251,49.611775 C 52.065251,49.611775 51.004755,48.148609 50.49462,47.567237 C 50.044917,47.054736 49.36966,46.442277 48.887535,45.960152 C 48.405409,45.478026 47.762575,44.835192 47.280449,44.353066 C 46.798323,43.87094 45.673363,42.74598 45.673363,42.74598 z"
id="path5297"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5882);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 38.01794,50.255585 L 39.075769,49.197757 C 39.075769,49.197757 43.974938,53.383477 45.540566,55.626099 C 45.799673,55.997248 45.394382,56.00883 45.276109,55.890557 L 45.048106,56.191468 L 44.947693,56.583515 C 45.125967,56.87915 44.378779,57.079523 44.409828,57.12138 C 44.409828,57.12138 43.349331,55.658215 42.839197,55.076842 C 42.389494,54.564341 41.714237,53.951882 41.232112,53.469757 C 40.749986,52.987631 40.107152,52.344797 39.625026,51.862671 C 39.1429,51.380545 38.01794,50.255585 38.01794,50.255585 z"
id="path5299"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5879);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 38.892845,49.38068 L 39.950674,48.322852 C 39.950674,48.322852 44.849843,52.508572 46.415471,54.751194 C 46.674578,55.122342 46.269287,55.133925 46.151014,55.015652 L 45.923011,55.316563 L 45.822598,55.70861 C 46.000872,56.004245 45.253684,56.204618 45.284733,56.246475 C 45.284733,56.246475 44.224236,54.78331 43.714102,54.201937 C 43.264399,53.689436 42.589142,53.076977 42.107017,52.594852 C 41.624891,52.112726 40.982057,51.469892 40.499931,50.987766 C 40.017805,50.50564 38.892845,49.38068 38.892845,49.38068 z"
id="path5301"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5876);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 40.934292,47.485051 L 41.992121,46.427223 C 41.992121,46.427223 46.89129,50.612943 48.456918,52.855565 C 48.716025,53.226713 48.310734,53.238296 48.192461,53.120023 L 47.964458,53.420934 L 47.864045,53.812981 C 48.042319,54.108616 47.295131,54.308988 47.32618,54.350846 C 47.32618,54.350846 46.265683,52.887681 45.755549,52.306308 C 45.305846,51.793807 44.630589,51.181348 44.148464,50.699223 C 43.666338,50.217097 43.023504,49.574263 42.541378,49.092137 C 42.059252,48.610011 40.934292,47.485051 40.934292,47.485051 z"
id="path5303"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5873);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 41.955014,46.464329 L 43.012843,45.4065 C 43.012843,45.4065 47.912012,49.59222 49.47764,51.834843 C 49.736747,52.205991 49.331456,52.217574 49.213183,52.0993 L 48.98518,52.400212 L 48.884767,52.792259 C 49.063041,53.087894 48.315853,53.288266 48.346902,53.330124 C 48.346902,53.330124 47.286406,51.866958 46.776271,51.285586 C 46.326568,50.773085 45.651311,50.160626 45.169186,49.678501 C 44.68706,49.196375 44.044226,48.553541 43.5621,48.071415 C 43.079974,47.589289 41.955014,46.464329 41.955014,46.464329 z"
id="path5305"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5870);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 44.069369,44.349974 L 45.127198,43.292145 C 45.127198,43.292145 50.026368,47.477865 51.591995,49.720488 C 51.851102,50.091636 51.445811,50.103219 51.327538,49.984945 L 51.099535,50.285857 L 50.999122,50.677904 C 51.177396,50.973539 50.430208,51.173911 50.461257,51.215769 C 50.461257,51.215769 49.400761,49.752603 48.890626,49.171231 C 48.440923,48.65873 47.765666,48.046271 47.283541,47.564146 C 46.801415,47.08202 46.158581,46.439186 45.676455,45.95706 C 45.194329,45.474934 44.069369,44.349974 44.069369,44.349974 z"
id="path5307"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5867);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 44.944275,43.475068 L 46.002104,42.417239 C 46.002104,42.417239 50.901274,46.602959 52.466901,48.845582 C 52.726008,49.21673 52.320717,49.228313 52.202444,49.110039 L 51.974441,49.410951 L 51.874028,49.802998 C 52.052302,50.098633 51.305114,50.299005 51.336163,50.340863 C 51.336163,50.340863 50.275667,48.877697 49.765532,48.296325 C 49.315829,47.783824 48.640572,47.171365 48.158447,46.68924 C 47.676321,46.207114 47.033487,45.56428 46.551361,45.082154 C 46.069235,44.600028 44.944275,43.475068 44.944275,43.475068 z"
id="path5309"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5864);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 46.577609,41.743411 L 47.635438,40.685582 C 47.635438,40.685582 52.534607,44.871302 54.100235,47.113925 C 54.359342,47.485073 53.954051,47.496656 53.835778,47.378382 L 53.607775,47.679294 L 53.507362,48.071341 C 53.685636,48.366976 52.938448,48.567348 52.969497,48.609206 C 52.969497,48.609206 51.909001,47.14604 51.398866,46.564668 C 50.949163,46.052167 50.273906,45.439708 49.791781,44.957583 C 49.309655,44.475457 48.666821,43.832623 48.184695,43.350497 C 47.702569,42.868371 46.577609,41.743411 46.577609,41.743411 z"
id="path5311"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5861);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 47.687432,40.633588 L 48.74526,39.57576 C 48.74526,39.57576 53.64443,43.76148 55.210058,46.004102 C 55.469165,46.37525 55.063874,46.386833 54.945601,46.26856 L 54.717598,46.569471 L 54.617185,46.961518 C 54.795458,47.257153 54.048271,47.457526 54.07932,47.499383 C 54.07932,47.499383 53.018823,46.036218 52.508688,45.454845 C 52.058986,44.942344 51.383729,44.329885 50.901603,43.84776 C 50.419478,43.365634 49.776644,42.7228 49.294518,42.240674 C 48.812392,41.758548 47.687432,40.633588 47.687432,40.633588 z"
id="path5313"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5858);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 48.967997,39.438395 L 50.025826,38.380566 C 50.025826,38.380566 54.924995,42.566286 56.490623,44.808909 C 56.74973,45.180057 56.344439,45.191639 56.226166,45.073366 L 55.998163,45.374278 L 55.89775,45.766325 C 56.076024,46.06196 55.328836,46.262332 55.359885,46.30419 C 55.359885,46.30419 54.299388,44.841024 53.789254,44.259652 C 53.339551,43.747151 52.664294,43.134692 52.182169,42.652567 C 51.700043,42.170441 51.057209,41.527607 50.575083,41.045481 C 50.092957,40.563355 48.967997,39.438395 48.967997,39.438395 z"
id="path5315"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5855);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 49.992449,38.413941 L 51.050278,37.356112 C 51.050278,37.356112 55.949447,41.541832 57.515075,43.784455 C 57.774182,44.155603 57.368891,44.167185 57.250618,44.048912 L 57.022615,44.349824 L 56.922202,44.741871 C 57.100476,45.037506 56.353288,45.237878 56.384337,45.279736 C 56.384337,45.279736 55.32384,43.81657 54.813706,43.235198 C 54.364003,42.722697 53.688746,42.110238 53.206621,41.628113 C 52.724495,41.145987 52.081661,40.503153 51.599535,40.021027 C 51.117409,39.538901 49.992449,38.413941 49.992449,38.413941 z"
id="path5317"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5852);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 52.895063,35.340587 L 53.952892,34.282758 C 53.952892,34.282758 58.852062,38.468478 60.417689,40.711101 C 60.676796,41.082249 60.271505,41.093831 60.153232,40.975558 L 59.925229,41.27647 L 59.824816,41.668517 C 60.00309,41.964152 59.255902,42.164524 59.286951,42.206382 C 59.286951,42.206382 58.226455,40.743216 57.71632,40.161844 C 57.266617,39.649343 56.59136,39.036884 56.109235,38.554759 C 55.627109,38.072633 54.984275,37.429799 54.502149,36.947673 C 54.020023,36.465547 52.895063,35.340587 52.895063,35.340587 z"
id="path5319"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5849);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 53.919514,34.316134 L 54.977343,33.258305 C 54.977343,33.258305 59.876513,37.444025 61.44214,39.686648 C 61.701248,40.057796 61.295956,40.069379 61.177683,39.951105 L 60.94968,40.252017 L 60.849267,40.644064 C 61.027541,40.939699 60.280353,41.140071 60.311402,41.181929 C 60.311402,41.181929 59.250906,39.718763 58.740771,39.137391 C 58.291068,38.62489 57.615811,38.012431 57.133686,37.530306 C 56.65156,37.04818 56.008726,36.405346 55.5266,35.92322 C 55.044474,35.441094 53.919514,34.316134 53.919514,34.316134 z"
id="path5321"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5846);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 54.943965,33.291683 L 56.001794,32.233854 C 56.001794,32.233854 60.900964,36.419574 62.466591,38.662197 C 62.725699,39.033345 62.320407,39.044927 62.202134,38.926654 L 61.974131,39.227566 L 61.873718,39.619613 C 62.051992,39.915248 61.304804,40.11562 61.335854,40.157478 C 61.335854,40.157478 60.275357,38.694312 59.765222,38.11294 C 59.315519,37.600439 58.640262,36.98798 58.158137,36.505855 C 57.676011,36.023729 57.033177,35.380895 56.551051,34.898769 C 56.068925,34.416643 54.943965,33.291683 54.943965,33.291683 z"
id="path5323"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5843);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 51.955981,36.365039 L 53.01381,35.30721 C 53.01381,35.30721 57.91298,39.49293 59.478607,41.735553 C 59.737714,42.106701 59.332423,42.118283 59.21415,42.00001 L 58.986147,42.300922 L 58.885734,42.692969 C 59.064008,42.988604 58.31682,43.188976 58.347869,43.230834 C 58.347869,43.230834 57.287373,41.767668 56.777238,41.186296 C 56.327535,40.673795 55.652278,40.061336 55.170153,39.579211 C 54.688027,39.097085 54.045193,38.454251 53.563067,37.972125 C 53.080941,37.489999 51.955981,36.365039 51.955981,36.365039 z"
id="path5325"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5840);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 50.931529,37.389491 L 51.989358,36.331662 C 51.989358,36.331662 56.888528,40.517382 58.454155,42.760005 C 58.713262,43.131153 58.307971,43.142735 58.189698,43.024462 L 57.961695,43.325374 L 57.861282,43.717421 C 58.039556,44.013056 57.292368,44.213428 57.323417,44.255286 C 57.323417,44.255286 56.262921,42.79212 55.752786,42.210748 C 55.303083,41.698247 54.627826,41.085788 54.145701,40.603663 C 53.663575,40.121537 53.020741,39.478703 52.538615,38.996577 C 52.056489,38.514451 50.931529,37.389491 50.931529,37.389491 z"
id="path5327"
sodipodi:nodetypes="ccsccccsssc" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View file

@ -1,162 +1,103 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) --> <!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
xmlns:dc="http://purl.org/dc/elements/1.1/" <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
xmlns:cc="http://creativecommons.org/ns#" width="60px" height="60px" viewBox="0 0 60 60" enable-background="new 0 0 60 60" xml:space="preserve">
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" <radialGradient id="SVGID_1_" cx="286" cy="-315" r="30" gradientTransform="matrix(1 0 0 -1 -256 -285)" gradientUnits="userSpaceOnUse">
xmlns:svg="http://www.w3.org/2000/svg" <stop offset="0" style="stop-color:#D20000"/>
xmlns="http://www.w3.org/2000/svg" <stop offset="1" style="stop-color:#3C0000"/>
xmlns:xlink="http://www.w3.org/1999/xlink" </radialGradient>
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" <path fill="url(#SVGID_1_)" d="M60,51.818C60,56.337,56.337,60,51.818,60H8.182C3.663,60,0,56.337,0,51.818V8.182
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" C0,3.663,3.663,0,8.182,0h43.636C56.337,0,60,3.663,60,8.182V51.818z"/>
width="64px" <g>
height="64px" <g>
id="svg2508" <path fill="#DCDCDC" d="M13.013,55.917l-1.273-3.856H8.169l-1.273,3.856H5.338l3.799-11.968h1.634l3.799,11.968H13.013z
sodipodi:version="0.32" M8.53,50.807h2.85l-1.425-5.281L8.53,50.807z"/>
inkscape:version="0.46" <g opacity="0.35">
sodipodi:docname="icon_phase_attacker.svg" <path d="M10.771,43.949l3.799,11.968h-1.558l-1.273-3.856h-3.57l-1.273,3.856H5.338l3.799-11.968H10.771 M8.53,50.807h2.85
inkscape:output_extension="org.inkscape.output.svg.inkscape"> l-1.425-5.281L8.53,50.807 M11.503,42.949h-0.732H9.138H8.406l-0.221,0.697l-3.8,11.968l-0.414,1.303h1.367h1.558h0.723
<defs l0.227-0.687l1.046-3.17h2.125l1.046,3.17l0.227,0.687h0.723h1.558h1.367l-0.414-1.304l-3.799-11.967L11.503,42.949
id="defs2510"> L11.503,42.949z"/>
<linearGradient </g>
id="linearGradient5717"> </g>
<stop <g>
style="stop-color:#003580;stop-opacity:1;" <path fill="#DCDCDC" d="M19.208,55.917h-1.463v-8.491h-2.413v-1.273h6.307v1.273h-2.432L19.208,55.917L19.208,55.917z"/>
offset="0" <g opacity="0.35">
id="stop5719" /> <path d="M21.639,46.152v1.272h-2.432v8.491h-1.463v-8.491h-2.413v-1.272H21.639 M22.639,45.152h-1h-6.307h-1v1v1.272v1h1h1.413
<stop v7.491v1h1h1.463h1v-1v-7.491h1.432h1v-1v-1.272L22.639,45.152L22.639,45.152z"/>
id="stop5727" </g>
offset="0.25297618" </g>
style="stop-color:#055897;stop-opacity:1;" /> <g>
<stop <path fill="#DCDCDC" d="M26.579,55.917h-1.463v-8.491h-2.413v-1.273h6.307v1.273h-2.432L26.579,55.917L26.579,55.917z"/>
id="stop5725" <g opacity="0.35">
offset="0.5" <path d="M29.011,46.152v1.272h-2.432v8.491h-1.463v-8.491h-2.413v-1.272H29.011 M30.011,45.152h-1h-6.307h-1v1v1.272v1h1h1.413
style="stop-color:#00a4ff;stop-opacity:1;" /> v7.491v1h1h1.463h1v-1v-7.491h1.432h1v-1v-1.272L30.011,45.152L30.011,45.152z"/>
<stop </g>
id="stop5733" </g>
offset="0.75" <g>
style="stop-color:#055897;stop-opacity:1;" /> <path fill="#DCDCDC" d="M34.577,52.84h-2.792l-1.008,3.077h-1.576l3.21-9.765h1.539l3.229,9.765h-1.578L34.577,52.84z
<stop M32.07,51.623h2.223l-1.104-3.666L32.07,51.623z"/>
style="stop-color:#003580;stop-opacity:1;" <g opacity="0.35">
offset="1" <path d="M33.951,46.152l3.229,9.765h-1.576l-1.026-3.077h-2.792l-1.008,3.077h-1.576l3.21-9.765H33.951 M32.07,51.623h2.223
id="stop5721" /> l-1.104-3.666L32.07,51.623 M34.674,45.152h-0.723h-1.539h-0.725l-0.227,0.688l-3.21,9.766l-0.431,1.313h1.381h1.576h0.726
</linearGradient> l0.226-0.689l0.781-2.388h1.348l0.799,2.394l0.228,0.685h0.722h1.576h1.385l-0.436-1.313l-3.23-9.768L34.674,45.152
<linearGradient L34.674,45.152z"/>
inkscape:collect="always" </g>
xlink:href="#linearGradient5717" </g>
id="linearGradient5723" <g>
x1="339.93985" <path fill="#DCDCDC" d="M38.854,51.035c0-1.368,0.36-2.66,1.008-3.572c0.684-1.006,1.729-1.613,2.981-1.613
y1="482.58844" c1.235,0,2.185,0.398,2.697,0.721l-0.552,0.988c-0.739-0.381-1.348-0.551-2.146-0.551c-0.684,0-1.52,0.569-1.956,1.463
x2="459.27341" c-0.343,0.684-0.531,1.652-0.531,2.621c0,0.893,0.112,1.824,0.455,2.488c0.438,0.874,1.082,1.443,2.053,1.443
y2="355.50766" c1.025,0,1.918-0.551,2.164-0.722l0.666,0.97c-0.285,0.209-1.35,0.949-2.889,0.949C39.859,56.221,38.854,53.428,38.854,51.035z"/>
gradientUnits="userSpaceOnUse" <g opacity="0.35">
gradientTransform="matrix(0,0.1263349,-0.1263349,0,74.367722,-7.5042832)" /> <path d="M42.843,45.85c1.235,0,2.185,0.398,2.697,0.721l-0.552,0.988c-0.739-0.381-1.348-0.551-2.146-0.551
<linearGradient c-0.684,0-1.52,0.569-1.956,1.463c-0.343,0.684-0.531,1.652-0.531,2.621c0,0.893,0.112,1.824,0.455,2.488
id="linearGradient3234"> c0.438,0.874,1.082,1.443,2.053,1.443c1.025,0,1.918-0.551,2.164-0.722l0.666,0.97c-0.285,0.209-1.35,0.949-2.889,0.949
<stop c-2.943,0-3.951-2.794-3.951-5.187c0-1.368,0.36-2.66,1.008-3.572C40.544,46.457,41.589,45.85,42.843,45.85 M42.843,44.85
style="stop-color:#6f6f6f;stop-opacity:1;" c-1.558,0-2.909,0.729-3.81,2.051c-0.758,1.067-1.18,2.543-1.18,4.136c0,2.854,1.297,6.187,4.951,6.187
offset="0" c1.67,0,2.896-0.717,3.479-1.144l0.781-0.573l-0.549-0.8l-0.664-0.97l-0.566-0.823l-0.824,0.565
id="stop3236" /> c-0.081,0.057-0.814,0.545-1.6,0.545c-0.353,0-0.766-0.104-1.156-0.891c-0.229-0.441-0.352-1.162-0.352-2.041
<stop c0-0.828,0.16-1.641,0.426-2.174c0.293-0.598,0.805-0.91,1.063-0.91c0.607,0,1.065,0.119,1.689,0.44l0.858,0.442l0.471-0.847
id="stop3242" l0.552-0.987l0.462-0.828l-0.803-0.506C45.652,45.461,44.501,44.85,42.843,44.85L42.843,44.85z"/>
offset="0.47999999" </g>
style="stop-color:#e6e6e6;stop-opacity:1;" /> </g>
<stop <g>
style="stop-color:#ffffff;stop-opacity:1;" <path fill="#DCDCDC" d="M49.665,52.1v3.817h-1.501v-9.765h1.501v4.142l3.286-4.142h1.634l-3.896,5.016l3.972,4.16v0.589h-1.425
offset="0.5" L49.665,52.1z"/>
id="stop3244" /> <g opacity="0.35">
<stop <path d="M54.585,46.152l-3.896,5.016l3.972,4.16v0.589h-1.425L49.665,52.1v3.817h-1.501v-9.765h1.501v4.142l3.286-4.142H54.585
id="stop3286" M56.628,45.152h-2.043h-1.634h-0.483l-0.3,0.379l-1.503,1.894v-1.272v-1h-1h-1.501h-1v1v9.766v1h1h1.501h1v-1v-1.285
offset="0.75" l1.841,1.969l0.297,0.316h0.434h1.426h1v-1v-0.589V54.93l-0.275-0.291l-3.377-3.537l3.366-4.334L56.628,45.152L56.628,45.152z"/>
style="stop-color:#bebebe;stop-opacity:1;" /> </g>
<stop </g>
style="stop-color:#494949;stop-opacity:1;" </g>
offset="1" <path opacity="0.52" fill="none" stroke="#000000" stroke-width="1.5" stroke-miterlimit="10" d="M13.514,41.477l-0.892-2.5
id="stop3238" /> l5.899-5.408l-1.333-5.443l0.28-2.118l1.47,1.743l0.825,3.064l2.172-0.075l3.287-3.102l4.891-1.708l-1.844,4.936l-3.287,3.102
</linearGradient> l-0.316,2.042l1.71,0.679l1.158-0.016l1.684,1.783c0,0-2.263,0.975-7.49-1.49l-5.658,5.658L13.514,41.477z"/>
<linearGradient <polygon opacity="0.44" fill="none" stroke="#000000" stroke-width="1.5" stroke-miterlimit="10" points="21.714,30.163
inkscape:collect="always" 20.221,30.09 45.4,6.502 53.719,3.672 50.75,11.875 25.443,35.623 25.188,34.25 28.5,31.313 30.887,26.302 45.938,11.125
xlink:href="#linearGradient3234" 29.841,25.196 25.157,27.089 "/>
id="linearGradient5120" <g>
gradientUnits="userSpaceOnUse" <g>
gradientTransform="matrix(8.9332267e-2,8.9332267e-2,8.9332267e-2,-8.9332267e-2,-16.525693,40.126552)" <g>
x1="202.99225" <path fill="#E1E1E1" d="M13.542,41.506l-0.92-2.529l5.899-5.408c0,0-2.058-5.334-1.053-7.562l1.682,1.782
y1="395.23221" c0,0-0.424,1.563,0.612,3.025l2.172-0.075l3.287-3.102l4.891-1.709L13.542,41.506z"/>
x2="251.27765" </g>
y2="395.23221" /> <g>
<inkscape:perspective <path fill="#E1E1E1" d="M13.514,41.477l2.473,1.064l5.74-5.576c0,0,5.208,2.364,7.49,1.49l-1.684-1.783
sodipodi:type="inkscape:persp3d" c0,0-1.468,0.457-2.868-0.663l0.316-2.042l3.287-3.102l1.845-4.937L13.514,41.477z"/>
inkscape:vp_x="0 : 32 : 1" </g>
inkscape:vp_y="0 : 1000 : 0" <polygon fill="#E1E1E1" points="14.417,41.813 13.514,41.477 13.333,40.896 28.604,26.438 30.112,25.929 29.688,26.958 "/>
inkscape:vp_z="64 : 32 : 1" </g>
inkscape:persp3d-origin="32 : 21.333333 : 1" <g>
id="perspective2516" /> <g>
<linearGradient <polygon fill="#E1E1E1" points="20.221,30.09 21.714,30.163 25.157,27.089 29.841,25.196 53.416,3.818 45.4,6.502 "/>
inkscape:collect="always" </g>
xlink:href="#linearGradient3234" <g>
id="linearGradient2540" <polygon fill="#E1E1E1" points="25.443,35.623 25.457,34.128 28.724,30.87 30.887,26.302 53.591,4.002 50.448,11.85 "/>
gradientUnits="userSpaceOnUse" </g>
gradientTransform="matrix(8.9332267e-2,8.9332267e-2,8.9332267e-2,-8.9332267e-2,-16.525693,40.126552)" <polygon fill="#E1E1E1" points="52.719,6.172 53.719,3.672 50.875,4.672 48.938,6.672 44.891,9.656 46.75,11.922 50.953,7.563
x1="202.99225" "/>
y1="395.23221" </g>
x2="251.27765" </g>
y2="395.23221" /> </svg>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5717"
id="linearGradient2542"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,0.1263349,-0.1263349,0,74.367722,-7.5042832)"
x1="339.93985"
y1="482.58844"
x2="459.27341"
y2="355.50766" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.5"
inkscape:cx="-40.818182"
inkscape:cy="32"
inkscape:current-layer="g2536"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1280"
inkscape:window-height="725"
inkscape:window-x="0"
inkscape:window-y="25" />
<metadata
id="metadata2513">
<rdf:RDF>
<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>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
id="g2536"
transform="translate(-0.1818183,-3.0952293e-8)">
<path
id="path5116"
d="M 19.171407,40.786299 C 30.234301,31.241571 40.052824,21.097727 49.109567,10.848139 L 56.860088,7.3217298 L 53.333679,15.072251 C 41.728583,25.484502 32.940246,34.272839 23.395519,45.010411 L 19.171407,40.786299 z M 24.645705,39.536112 L 27.026109,38.450092 L 33.586428,30.59539 L 25.731726,37.155709 L 24.645705,39.536112 z"
style="fill:url(#linearGradient2540);fill-opacity:1;stroke:#000000;stroke-width:0.12633491;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:60.01653385;stroke-opacity:1" />
<path
sodipodi:nodetypes="ccsccccccss"
id="path5118"
d="M 7.8194102,52.395498 C 12.873471,51.041266 17.927915,42.286993 17.927915,42.286993 C 17.927915,42.286993 16.799748,40.510421 15.777733,39.790457 C 14.755718,39.070494 11.11448,37.487234 11.11448,37.487234 L 15.622027,32.979687 C 19.276736,39.30983 24.814608,44.871954 31.202132,48.559792 L 26.694585,53.067339 C 26.694585,53.067339 25.207982,49.329444 24.488018,48.307428 C 23.768054,47.285413 21.894826,46.253904 21.894826,46.253904 C 21.894826,46.253904 13.138788,51.314932 11.786321,56.362409 C 11.350723,57.988079 6.1937392,52.831094 7.8194102,52.395498 z"
style="opacity:1;fill:url(#linearGradient2542);fill-opacity:1;stroke:#000000;stroke-width:0.12633491;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:60.01653385;stroke-opacity:1" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 6 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

File diff suppressed because it is too large Load diff

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 145 KiB

View file

@ -1,169 +1,108 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) --> <!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
xmlns:dc="http://purl.org/dc/elements/1.1/" <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
xmlns:cc="http://creativecommons.org/ns#" width="60px" height="60px" viewBox="0 0 60 60" enable-background="new 0 0 60 60" xml:space="preserve">
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" <radialGradient id="SVGID_1_" cx="30" cy="30" r="30" gradientUnits="userSpaceOnUse">
xmlns:svg="http://www.w3.org/2000/svg" <stop offset="0" style="stop-color:#D20000"/>
xmlns="http://www.w3.org/2000/svg" <stop offset="1" style="stop-color:#3C0000"/>
xmlns:xlink="http://www.w3.org/1999/xlink" </radialGradient>
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" <path fill="url(#SVGID_1_)" d="M60,51.818C60,56.337,56.337,60,51.818,60H8.182C3.663,60,0,56.337,0,51.818V8.182
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" C0,3.663,3.663,0,8.182,0h43.637C56.337,0,60,3.663,60,8.182V51.818z"/>
width="64px" <g>
height="64px" <g>
id="svg5128" <path fill="#FFFFFF" d="M11.725,50.506c0,2.618-1.054,5.338-4.08,5.338H4.721V45.135h3.094
sodipodi:version="0.32" C10.875,45.135,11.725,47.922,11.725,50.506z M6.065,46.223v8.533h1.58c2.278,0,2.703-2.414,2.703-4.216
inkscape:version="0.46" c0-1.751-0.323-4.317-2.601-4.317H6.065z"/>
sodipodi:docname="icon_phase_combat.svg" <g opacity="0.35">
inkscape:output_extension="org.inkscape.output.svg.inkscape"> <path d="M7.815,45.135c3.061,0,3.91,2.787,3.91,5.371c0,2.618-1.054,5.338-4.08,5.338H4.721V45.135H7.815 M6.065,54.756h1.58
<defs c2.278,0,2.703-2.414,2.703-4.216c0-1.751-0.323-4.317-2.601-4.317H6.065V54.756 M7.815,44.135H4.721h-1v1v10.709v1h1h2.924
id="defs5130"> c3.133,0,5.08-2.429,5.08-6.338C12.725,46.517,10.89,44.135,7.815,44.135L7.815,44.135z M7.065,47.223h0.683
<linearGradient c0.396,0,1.601,0,1.601,3.317c0,2.134-0.573,3.216-1.703,3.216h-0.58V47.223L7.065,47.223z"/>
id="linearGradient5717"> </g>
<stop </g>
style="stop-color:#003580;stop-opacity:1;" <g>
offset="0" <path fill="#FFFFFF" d="M17.845,53.09h-2.499l-0.9,2.754h-1.411l2.873-8.737h1.376l2.891,8.737h-1.411L17.845,53.09z
id="stop5719" /> M15.601,52.002h1.989l-0.986-3.28L15.601,52.002z"/>
<stop <g opacity="0.35">
id="stop5727" <path d="M17.284,47.106l2.891,8.737h-1.411l-0.918-2.754h-2.499l-0.9,2.754h-1.411l2.873-8.737H17.284 M15.601,52.002h1.989
offset="0.25297618" l-0.986-3.28L15.601,52.002 M18.006,46.106h-0.723h-1.376h-0.724l-0.227,0.688l-2.873,8.737l-0.431,1.313h1.381h1.411h0.725
style="stop-color:#055897;stop-opacity:1;" /> l0.226-0.689l0.675-2.064h1.053l0.69,2.07l0.228,0.684h0.721h1.411h1.384l-0.435-1.314l-2.891-8.737L18.006,46.106L18.006,46.106
<stop z"/>
id="stop5725" </g>
offset="0.5" </g>
style="stop-color:#00a4ff;stop-opacity:1;" /> <g>
<stop <path fill="#FFFFFF" d="M29.15,49.571l-2.158,6.272H25.87l-2.448-6.375v0.442v5.933h-1.325v-8.737h1.665l2.278,5.882
id="stop5733" c0.017,0.051,0.152,0.357,0.356,1.037c0.204-0.715,0.307-1.021,0.307-1.021l2.107-5.898h1.666v8.737H29.15V49.571z"/>
offset="0.75" <g opacity="0.35">
style="stop-color:#055897;stop-opacity:1;" /> <path d="M30.476,47.106v8.737H29.15v-6.272l-2.158,6.272H25.87l-2.448-6.375v0.442v5.933h-1.325v-8.737h1.665l2.278,5.882
<stop c0.017,0.051,0.152,0.357,0.356,1.037c0.204-0.715,0.307-1.021,0.307-1.021l2.107-5.898H30.476 M31.476,46.106h-1H28.81h-0.705
style="stop-color:#003580;stop-opacity:1;" l-0.237,0.663l-1.519,4.251l-1.656-4.275l-0.248-0.639h-0.685h-1.665h-1v1v8.737v1h1h1.325h1v-1v-0.981l0.515,1.34l0.247,0.642
offset="1" h0.687h1.122h0.713l0.232-0.675l0.212-0.618v0.293v1h1h1.326h1v-1v-8.737V46.106L31.476,46.106z"/>
id="stop5721" /> </g>
</linearGradient> </g>
<linearGradient <g>
inkscape:collect="always" <path fill="#FFFFFF" d="M37.191,53.09h-2.5l-0.9,2.754h-1.41l2.873-8.737h1.375l2.891,8.737h-1.41L37.191,53.09z M34.947,52.002
xlink:href="#linearGradient3234" h1.988l-0.986-3.28L34.947,52.002z"/>
id="linearGradient5120" <g opacity="0.35">
gradientUnits="userSpaceOnUse" <path d="M36.629,47.106l2.891,8.737h-1.41l-0.918-2.754h-2.5l-0.9,2.754h-1.41l2.873-8.737H36.629 M34.947,52.002h1.988
gradientTransform="matrix(0.7071068,-0.7071068,-0.7071068,-0.7071068,377.0204,719.46402)" l-0.986-3.28L34.947,52.002 M37.352,46.106h-0.723h-1.375H34.53l-0.227,0.688l-2.873,8.737L31,56.844h1.381h1.41h0.726
x1="202.99225" l0.225-0.689l0.676-2.064h1.054l0.69,2.07l0.228,0.684h0.721h1.41h1.384l-0.435-1.314l-2.891-8.737L37.352,46.106L37.352,46.106z
y1="395.23221" "/>
x2="251.27765" </g>
y2="395.23221" /> </g>
<linearGradient <g>
id="linearGradient3234"> <path fill="#FFFFFF" d="M44.586,47.871c-0.611,0-1.342,0.51-1.75,1.31c-0.307,0.612-0.477,1.479-0.477,2.346
<stop c0,0.799,0.102,1.632,0.408,2.227c0.391,0.782,0.969,1.292,1.836,1.292c0.527,0,0.918-0.102,1.139-0.17v-2.873H47v3.706
style="stop-color:#6f6f6f;stop-opacity:1;" c-0.221,0.085-1.088,0.391-2.414,0.391c-2.668,0-3.57-2.465-3.57-4.624c0-1.223,0.324-2.379,0.902-3.195
offset="0" c0.611-0.884,1.547-1.445,2.668-1.445c1.02,0,1.564,0.222,2.432,0.646l-0.545,0.884C46.473,48.364,45.691,47.871,44.586,47.871z"
id="stop3236" /> />
<stop <g opacity="0.35">
id="stop3242" <path d="M44.586,46.834c1.02,0,1.564,0.222,2.432,0.646l-0.545,0.884c0,0-0.781-0.493-1.887-0.493c-0.611,0-1.342,0.51-1.75,1.31
offset="0.47999999" c-0.307,0.612-0.477,1.479-0.477,2.346c0,0.799,0.102,1.632,0.408,2.227c0.391,0.782,0.969,1.292,1.836,1.292
style="stop-color:#e6e6e6;stop-opacity:1;" /> c0.527,0,0.918-0.102,1.139-0.17v-2.873H47v3.706c-0.221,0.085-1.088,0.391-2.414,0.391c-2.668,0-3.57-2.465-3.57-4.624
<stop c0-1.223,0.324-2.379,0.902-3.195C42.529,47.396,43.465,46.834,44.586,46.834 M44.586,45.834c-1.394,0-2.665,0.684-3.49,1.876
style="stop-color:#ffffff;stop-opacity:1;" c-0.694,0.98-1.08,2.32-1.08,3.765c0,3.416,1.794,5.624,4.57,5.624c1.431,0,2.416-0.32,2.773-0.457L48,56.395v-0.687v-3.706v-1
offset="0.5" h-1h-1.258h-1v1v2.04c-0.046,0.002-0.092,0.003-0.139,0.003c-0.186,0-0.572,0-0.941-0.738c-0.197-0.384-0.303-1.012-0.303-1.78
id="stop3244" /> c0-0.725,0.139-1.435,0.371-1.897c0.269-0.527,0.697-0.758,0.855-0.758c0.781,0,1.348,0.335,1.353,0.339l0.854,0.539l0.531-0.86
<stop l0.545-0.884l0.578-0.938l-0.99-0.485C46.534,46.13,45.836,45.834,44.586,45.834L44.586,45.834z"/>
id="stop3286" </g>
offset="0.75" </g>
style="stop-color:#bebebe;stop-opacity:1;" /> <g>
<stop <path fill="#FFFFFF" d="M49.908,47.106h4.793v1.088H51.25v2.532h2.652v1.123H51.25v2.872h3.604v1.122h-4.945V47.106z"/>
style="stop-color:#494949;stop-opacity:1;" <g opacity="0.35">
offset="1" <path d="M54.701,47.106v1.088H51.25v2.532h2.652v1.123H51.25v2.872h3.604v1.122h-4.945v-8.737H54.701 M55.701,46.106h-1h-4.793
id="stop3238" /> h-1v1v8.737v1h1h4.945h1v-1v-1.122v-1h-1H52.25V52.85h1.652h1v-1v-1.123v-1h-1H52.25v-0.532h2.451h1v-1v-1.088V46.106
</linearGradient> L55.701,46.106z"/>
<linearGradient </g>
inkscape:collect="always" </g>
xlink:href="#linearGradient3234" </g>
id="linearGradient5114" <rect x="22" y="16" width="16" height="15"/>
gradientUnits="userSpaceOnUse" <polygon points="40.095,38.651 40.453,39.292 41.292,39.292 41.709,11.083 34.25,7.25 28.958,7.75 30.511,13.657 "/>
x1="202.99225" <g>
y1="395.23221" <path fill-opacity="0.4" d="M30.781,6.75c0,0,5.708-0.25,6.703-0.031s1.808,0.698,1.808,0.698l1.735,1.419l1.049,1.051L43,11.333
x2="251.27765" l0.896,1.542l1.021,1.917l-0.063,23.146l-3.417,2.313l-0.146-24.719l-1.063-3.927l-4.104-3.729l-0.75-0.396L30.781,6.75z"/>
y2="395.23221" <g>
gradientTransform="matrix(-0.7071068,-0.7071068,0.7071068,-0.7071068,156.76864,718.23161)" /> <path fill="#E1E1E1" d="M29.843,7.706c1.172-0.013,2.508,0.197,3.067,0.316s1.996,0.665,2.48,0.947s1.355,1.026,1.803,1.443
<inkscape:perspective s1.265,1.26,1.572,1.792c0.636,0.97,1.677,2.318,1.677,4.928c0,1.587,0,22.15,0,22.15H20.509v-4.844c0,0,0-14.53,0-16.179
sodipodi:type="inkscape:persp3d" s0.188-2.294,0.316-2.886s0.605-1.737,0.992-2.391s1.026-1.52,1.355-1.888s1.477-1.379,1.813-1.594s1.698-1.007,2.172-1.172
inkscape:vp_x="0 : 32 : 1" S28.625,7.719,29.843,7.706z M27.25,26.42l-0.021,1.31h6.208v-1.31H27.25z M24.297,17.357v1.353h1.58h11.137l0.09-1.398
inkscape:vp_y="0 : 1000 : 0" l-1.668,0.046H24.297z M27.229,22.136v1.444h6.176v-1.444H27.229z"/>
inkscape:vp_z="64 : 32 : 1" <g opacity="0.4">
inkscape:persp3d-origin="32 : 21.333333 : 1" <path d="M29.946,7.705c1.146,0,2.422,0.201,2.964,0.316c0.559,0.119,1.996,0.665,2.48,0.947s1.355,1.026,1.803,1.443
id="perspective5136" /> s1.265,1.26,1.572,1.792c0.636,0.97,1.677,2.318,1.677,4.928c0,1.587,0,22.15,0,22.15H20.509v-4.844c0,0,0-14.53,0-16.179
<linearGradient s0.188-2.294,0.316-2.886s0.605-1.737,0.992-2.391s1.026-1.52,1.355-1.888s1.477-1.379,1.813-1.594s1.698-1.007,2.172-1.172
inkscape:collect="always" s1.469-0.609,2.687-0.623C29.877,7.705,29.912,7.705,29.946,7.705 M37.104,17.311l-1.668,0.046H24.297v1.353h1.58h11.137
xlink:href="#linearGradient5717" L37.104,17.311 M27.229,23.58h6.176v-1.444h-6.176V23.58 M27.229,27.729h6.208v-1.31H27.25L27.229,27.729 M29.946,6.705l-0.114,0
id="linearGradient5723" c-1.221,0.013-2.244,0.396-2.794,0.601c-0.08,0.03-0.15,0.056-0.211,0.078c-0.623,0.217-2.123,1.108-2.382,1.274
x1="339.93985" c-0.444,0.284-1.652,1.357-2.021,1.771c-0.374,0.42-1.054,1.342-1.469,2.045c-0.451,0.763-0.958,1.994-1.108,2.688l-0.04,0.18
y1="482.58844" c-0.133,0.592-0.299,1.33-0.299,2.917v16.179v4.844v1h1h19.934h1v-1v-22.15c0-2.718-1.021-4.247-1.695-5.258l-0.133-0.2
x2="459.27341" c-0.489-0.824-1.688-1.946-1.739-1.994c-0.335-0.313-1.346-1.206-1.981-1.576c-0.57-0.332-2.101-0.917-2.774-1.061
y2="355.50766" C32.57,6.926,31.2,6.705,29.946,6.705L29.946,6.705z"/>
gradientUnits="userSpaceOnUse" /> </g>
<linearGradient </g>
inkscape:collect="always" </g>
xlink:href="#linearGradient5717" <path fill="#E1E1E1" d="M41.292,15.531c-0.186-0.5-0.591-1.607-1.245-2.815c-0.465-0.857-1.734-2.669-2.609-3.372
id="linearGradient5741" c-1.999-1.606-3.563-2.078-3.563-2.078s2.423-0.097,3.844,0.359c1.594,0.594,2.673,1.254,3.823,2.792C42.656,11.906,44,15,44,15
x1="70.945976" v22.417l-2.719,1.864L41.292,15.531z"/>
y1="357.84494" </svg>
x2="196.70493"
y2="480.64206"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="11.087072"
inkscape:cx="12.956872"
inkscape:cy="29.617085"
inkscape:current-layer="g5122"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1280"
inkscape:window-height="725"
inkscape:window-x="0"
inkscape:window-y="25" />
<metadata
id="metadata5133">
<rdf:RDF>
<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>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
id="g5122"
transform="matrix(0.1263349,0,0,0.1263349,-1.139644,-10.328942)">
<path
style="fill:url(#linearGradient5114);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:60.01653385;stroke-opacity:1"
d="M 151.54643,435.67232 C 227.09743,348.10432 307.39071,270.38611 388.52101,198.69774 L 416.43419,137.34873 L 355.08518,165.26191 C 272.66733,257.12169 203.10352,326.6855 118.1106,402.23649 L 151.54643,435.67232 z M 161.44224,392.34068 L 170.0386,373.49867 L 232.21225,321.57067 L 180.28425,383.74432 L 161.44224,392.34068 z"
id="rect2383" />
<path
style="opacity:1;fill:url(#linearGradient5741);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:60.01653384999999474;stroke-opacity:1"
d="M 59.65417,525.5287 C 70.373545,485.52344 139.66773,445.51514 139.66773,445.51514 C 139.66773,445.51514 153.73013,454.44511 159.42898,462.53484 C 165.12783,470.62457 177.66007,499.44668 177.66007,499.44668 L 213.33942,463.76733 C 163.23337,434.83859 119.20655,391.00374 90.015578,340.44349 L 54.336228,376.12284 C 54.336228,376.12284 83.923422,387.89 92.013155,393.58885 C 100.10289,399.2877 108.26777,414.11518 108.26777,414.11518 C 108.26777,414.11518 68.207351,483.42333 28.254209,494.12874 C 15.386263,497.5767 56.206215,538.39665 59.65417,525.5287 z"
id="rect2407"
sodipodi:nodetypes="ccsccccccss" />
<path
style="fill:url(#linearGradient5120);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:60.01653385;stroke-opacity:1"
d="M 382.24261,436.90473 C 306.69161,349.33673 226.39833,271.61852 145.26803,199.93015 L 117.35485,138.58114 L 178.70386,166.49432 C 261.12171,258.3541 330.68552,327.91791 415.67844,403.4689 L 382.24261,436.90473 z M 372.3468,393.57309 L 363.75044,374.73108 L 301.57679,322.80308 L 353.50479,384.97673 L 372.3468,393.57309 z"
id="path5116" />
<path
style="opacity:1;fill:url(#linearGradient5723);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:60.01653384999999474;stroke-opacity:1"
d="M 474.13487,526.76111 C 463.41549,486.75585 394.12131,446.74755 394.12131,446.74755 C 394.12131,446.74755 380.05891,455.67752 374.36006,463.76725 C 368.66121,471.85698 356.12897,500.67909 356.12897,500.67909 L 320.44962,464.99974 C 370.55567,436.071 414.58249,392.23615 443.77346,341.6759 L 479.45281,377.35525 C 479.45281,377.35525 449.86561,389.12241 441.77588,394.82126 C 433.68615,400.52011 425.52127,415.34759 425.52127,415.34759 C 425.52127,415.34759 465.58168,484.65574 505.53483,495.36115 C 518.40277,498.80911 477.58282,539.62906 474.13487,526.76111 z"
id="path5118"
sodipodi:nodetypes="ccsccccccss" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

View file

@ -1,253 +1,319 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) --> <!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
xmlns:dc="http://purl.org/dc/elements/1.1/" width="60px" height="60px" viewBox="0 0 60 60" enable-background="new 0 0 60 60" xml:space="preserve">
xmlns:cc="http://creativecommons.org/ns#" <radialGradient id="SVGID_1_" cx="30" cy="30" r="30" gradientUnits="userSpaceOnUse">
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" <stop offset="0" style="stop-color:#D20000"/>
xmlns:svg="http://www.w3.org/2000/svg" <stop offset="1" style="stop-color:#3C0000"/>
xmlns="http://www.w3.org/2000/svg" </radialGradient>
xmlns:xlink="http://www.w3.org/1999/xlink" <path fill="url(#SVGID_1_)" d="M60,51.818C60,56.337,56.337,60,51.818,60H8.182C3.663,60,0,56.337,0,51.818V8.182
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" C0,3.663,3.663,0,8.182,0h43.637C56.337,0,60,3.663,60,8.182V51.818z"/>
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" <g display="none">
width="64px" <g display="inline">
height="64px" <path fill="#FFFFFF" d="M21.941,45.399c0-4.271,1.96-9.451,6.581-9.451c4.691,0,6.581,5.25,6.581,9.556s-1.89,9.556-6.581,9.556
id="svg2564" C23.796,55.06,21.941,49.704,21.941,45.399z M24.671,45.679c0,3.15,0.77,7.141,3.851,7.141c3.116,0,3.815-4.13,3.815-7.315
sodipodi:version="0.32" c0-3.22-0.805-7.315-3.815-7.315C25.441,38.188,24.671,42.389,24.671,45.679z"/>
inkscape:version="0.47 r22583" <g opacity="0.35">
sodipodi:docname="icon_phase_combat_end.svg" <path d="M28.522,35.948c4.691,0,6.581,5.25,6.581,9.556s-1.89,9.556-6.581,9.556c-4.726,0-6.581-5.355-6.581-9.66
inkscape:output_extension="org.inkscape.output.svg.inkscape" C21.941,41.129,23.901,35.948,28.522,35.948 M28.522,52.819c3.116,0,3.815-4.13,3.815-7.315c0-3.22-0.805-7.315-3.815-7.315
enable-background="new" c-3.081,0-3.851,4.2-3.851,7.49C24.671,48.829,25.441,52.819,28.522,52.819 M28.522,34.448c-5.305,0-8.081,5.509-8.081,10.951
version="1.1"> c0,5.375,2.529,11.16,8.081,11.16c5.552,0,8.081-5.73,8.081-11.056S34.074,34.448,28.522,34.448L28.522,34.448z M28.522,51.319
<defs c-2.237,0-2.351-4.698-2.351-5.641c0-2.764,0.616-5.99,2.351-5.99c1.827,0,2.315,3.655,2.315,5.815
id="defs2566"> C30.837,46.475,30.725,51.319,28.522,51.319L28.522,51.319z"/>
<linearGradient </g>
id="linearGradient3629"> </g>
<stop <g display="inline">
style="stop-color:#803300;stop-opacity:1;" <path fill="#FFFFFF" d="M53.268,41.584L48.822,54.5h-2.311l-5.04-13.126v0.91V54.5h-2.73V36.508h3.431l4.69,12.111
offset="0" c0.035,0.105,0.314,0.735,0.734,2.136c0.421-1.471,0.631-2.101,0.631-2.101l4.34-12.146h3.431V54.5h-2.73V41.584z"/>
id="stop3631" /> <g opacity="0.35">
<stop <path d="M55.998,36.508V54.5h-2.73V41.584L48.822,54.5h-2.311l-5.04-13.126v0.91V54.5h-2.73V36.508h3.431l4.69,12.111
style="stop-color:#000000;stop-opacity:1;" c0.035,0.105,0.314,0.735,0.734,2.136c0.421-1.471,0.631-2.101,0.631-2.101l4.34-12.146H55.998 M57.498,35.008h-1.5h-3.431
offset="1" h-1.057l-0.355,0.995l-3.633,10.168L43.57,35.966l-0.371-0.958h-1.027h-3.431h-1.5v1.5V54.5V56h1.5h2.73h1.5v-1.5v-5.035
id="stop3633" /> l2.14,5.573L45.48,56h1.031h2.311h1.07l0.348-1.012l1.527-4.437V54.5V56h1.5h2.73h1.5v-1.5V36.508V35.008L57.498,35.008z"/>
</linearGradient> </g>
<linearGradient </g>
id="linearGradient5717"> </g>
<stop <g display="none">
style="stop-color:#003580;stop-opacity:1;" <g display="inline">
offset="0" <path fill="#FFFFFF" d="M20.003,50.288c-0.78,1.56-2.601,4.836-6.917,4.836c-7.072,0-9.568-8.372-9.568-19.657
id="stop5719" /> c0-8.84,2.392-18.408,9.776-18.408c1.508,0,1.768-0.104,1.768-0.78l1.508-0.572l2.185,5.2l-1.664,0.676
<stop c-1.092-1.248-2.288-2.028-3.796-2.028c-3.848,0-7.02,5.72-7.02,16.328c0,9.568,1.976,16.745,6.812,16.745
id="stop5217" c2.6,0,4.368-2.185,5.096-3.849L20.003,50.288z"/>
offset="0.25" <g opacity="0.35">
style="stop-color:#055897;stop-opacity:1;" /> <path d="M16.57,15.707l2.185,5.2l-1.664,0.676c-1.092-1.248-2.288-2.028-3.796-2.028c-3.848,0-7.02,5.72-7.02,16.328
<stop c0,9.568,1.976,16.745,6.812,16.745c2.6,0,4.368-2.185,5.096-3.849l1.82,1.509c-0.78,1.56-2.601,4.836-6.917,4.836
id="stop5725" c-7.072,0-9.568-8.372-9.568-19.657c0-8.84,2.392-18.408,9.776-18.408c1.508,0,1.768-0.104,1.768-0.78L16.57,15.707
offset="0.5" M17.393,13.791l-1.354,0.514l-1.508,0.572l-0.968,0.367v0.314c-0.08,0.001-0.169,0.001-0.268,0.001
style="stop-color:#00a4ff;stop-opacity:1;" /> c-7.061,0-11.276,7.442-11.276,19.908c0,17.486,6.019,21.157,11.068,21.157c3.599,0,6.377-1.906,8.258-5.665l0.533-1.065
<stop l-0.917-0.761l-1.82-1.509l-1.533-1.271l-0.798,1.824c-0.132,0.303-1.359,2.95-3.722,2.95c-3.326,0-5.312-5.699-5.312-15.245
style="stop-color:#055897;stop-opacity:1;" c0-9.735,2.777-14.828,5.52-14.828c0.927,0,1.75,0.468,2.667,1.516l0.704,0.804l0.99-0.402l1.664-0.676l1.406-0.571l-0.588-1.399
offset="0.75" l-2.185-5.2L17.393,13.791L17.393,13.791z"/>
id="stop5215" /> </g>
<stop </g>
style="stop-color:#003580;stop-opacity:1;" </g>
offset="1" <g display="none">
id="stop5721" /> <g display="inline">
</linearGradient> <path fill="#FFFFFF" d="M45.334,32.189c-1.919,0-3.208-1.03-3.853-3.069c-0.73,2.039-1.99,3.069-3.765,3.069
<linearGradient c-1.402,0-2.463-0.64-3.153-1.9l-0.295-0.551c-0.337-0.618-0.879-1.018-1.657-1.217l-0.621-0.156
inkscape:collect="always" c-2.588-0.624-3.133-2.275-3.133-3.551c0-1.357,0.685-2.537,2.041-3.523c-1.209,0-2.237-0.349-3.054-1.035
xlink:href="#linearGradient5717" c-0.844-0.708-1.272-1.605-1.272-2.668c0-0.854,0.352-1.676,1.047-2.445l0.466-0.524c0.462-0.506,0.694-0.964,0.694-1.367
id="linearGradient2542" c0-0.111-0.02-0.376-0.057-0.796l-0.057-0.495l-0.003-0.428c0-2.436,1.267-3.723,3.664-3.723c0.887,0,1.807,0.337,2.749,1.006
gradientUnits="userSpaceOnUse" c-0.187-0.616-0.28-1.202-0.28-1.756c0-1.001,0.332-1.856,0.988-2.542c0.662-0.692,1.49-1.043,2.461-1.043
gradientTransform="matrix(0,0.1263349,-0.1263349,0,74.367722,-7.5042832)" c0.535,0,1.05,0.106,1.528,0.315l0.505,0.242c0.784,0.347,1.156,0.4,1.307,0.4c0.118,0,0.409-0.036,1.029-0.278l0.557-0.23
x1="339.93985" c0.708-0.289,1.287-0.429,1.773-0.429c1,0,1.866,0.389,2.574,1.157c0.697,0.756,1.051,1.671,1.051,2.722
y1="482.58844" c0,0.426-0.067,0.872-0.202,1.335c0.885-0.602,1.744-0.898,2.593-0.898c1.013,0,1.858,0.355,2.514,1.057
x2="459.27341" c0.646,0.692,0.975,1.589,0.975,2.666c0,0.226-0.016,0.43-0.046,0.61l-0.078,0.468c-0.021,0.159-0.032,0.338-0.032,0.523
y2="355.50766" /> c0,0.555,0.239,1.091,0.731,1.638l0.377,0.438c0.728,0.814,1.099,1.655,1.099,2.495c0,1.091-0.398,2.015-1.185,2.749
<linearGradient c-0.775,0.724-1.748,1.091-2.89,1.091c-0.037,0-0.074,0-0.112-0.001c1.264,0.961,1.901,2.095,1.901,3.388
id="linearGradient3234"> c0,1.752-0.97,2.913-2.805,3.357l-0.551,0.152c-0.981,0.234-1.632,0.656-2.006,1.294l-0.25,0.443
<stop C47.798,31.517,46.701,32.189,45.334,32.189z M38.897,21.964l0.77-0.884c-0.074-0.049-0.147-0.102-0.218-0.158l-0.576,1.024
style="stop-color:#6f6f6f;stop-opacity:1;" L38.897,21.964z M44.252,21.896l0.053-0.039l-0.632-0.971c-0.063,0.051-0.127,0.1-0.192,0.146L44.252,21.896z M41.506,17.541
offset="0" c-0.173,0-0.404,0.025-0.525,0.146s-0.146,0.363-0.146,0.545c0,0.184,0.026,0.431,0.152,0.561c0.097,0.1,0.271,0.15,0.52,0.15
id="stop3236" /> s0.423-0.05,0.52-0.15c0.126-0.13,0.152-0.376,0.152-0.561c0-0.182-0.025-0.424-0.146-0.545S41.679,17.541,41.506,17.541z
<stop M38.266,17.332c0.02-0.075,0.042-0.148,0.066-0.221l-1.131-0.262l-0.011,0.031L38.266,17.332z M44.806,17.264l1.043-0.465
id="stop3242" l-0.006-0.021l-1.108,0.264C44.761,17.115,44.784,17.189,44.806,17.264z M41.374,14.845c0.057-0.002,0.222-0.003,0.248-0.003
offset="0.47999999" l-0.09-1.13h-0.058L41.374,14.845z"/>
style="stop-color:#e6e6e6;stop-opacity:1;" /> <g>
<stop <path fill="#FF0000" d="M38.244,3.974c0.469,0,0.911,0.091,1.328,0.273l0.488,0.234c0.677,0.3,1.185,0.449,1.523,0.449
style="stop-color:#ffffff;stop-opacity:1;" c0.273,0,0.677-0.104,1.211-0.313l0.566-0.234c0.638-0.26,1.165-0.391,1.582-0.391c0.859,0,1.595,0.332,2.207,0.996
offset="0.5" s0.918,1.458,0.918,2.383c0,1.042-0.449,2.214-1.348,3.516c1.511-1.719,2.923-2.578,4.238-2.578c0.872,0,1.589,0.3,2.148,0.898
id="stop3244" /> c0.56,0.599,0.84,1.374,0.84,2.324c0,0.195-0.013,0.371-0.039,0.527l-0.078,0.469c-0.026,0.195-0.039,0.397-0.039,0.605
<stop c0,0.677,0.286,1.335,0.859,1.973l0.371,0.43c0.651,0.729,0.977,1.452,0.977,2.168c0,0.951-0.342,1.745-1.025,2.383
id="stop3286" c-0.684,0.638-1.533,0.957-2.549,0.957c-0.651,0-1.511-0.104-2.578-0.313c2.578,1.094,3.867,2.494,3.867,4.199
offset="0.75" c0,1.523-0.808,2.48-2.422,2.871l-0.566,0.156c-1.094,0.261-1.862,0.769-2.305,1.524l-0.254,0.449
style="stop-color:#bebebe;stop-opacity:1;" /> c-0.703,1.172-1.647,1.758-2.832,1.758c-2.278,0-3.542-1.687-3.789-5.059c-0.456,3.373-1.731,5.059-3.828,5.059
<stop c-1.211,0-2.116-0.547-2.715-1.641l-0.293-0.547c-0.404-0.743-1.062-1.231-1.973-1.465l-0.625-0.156
style="stop-color:#494949;stop-opacity:1;" c-1.836-0.442-2.754-1.465-2.754-3.066c0-1.745,1.309-3.164,3.926-4.258c-0.99,0.156-1.784,0.234-2.383,0.234
offset="1" c-1.094,0-2.006-0.306-2.734-0.918c-0.729-0.612-1.094-1.374-1.094-2.285c0-0.729,0.306-1.432,0.918-2.109l0.469-0.527
id="stop3238" /> c0.547-0.599,0.82-1.165,0.82-1.699c0-0.117-0.02-0.397-0.059-0.84l-0.059-0.508v-0.371c0-2.148,1.055-3.223,3.164-3.223
</linearGradient> c1.314,0,2.721,0.847,4.219,2.539c-0.834-1.406-1.25-2.669-1.25-3.789c0-0.872,0.283-1.604,0.85-2.197
<linearGradient C36.711,4.271,37.41,3.974,38.244,3.974 M40.842,15.185l-0.547-0.918l-0.879,0.41l0.273,1.035l-0.879-0.605l-0.645,0.664
inkscape:collect="always" l0.645,0.938l-1.934-0.449l-0.313,0.898l1.855,0.781l-1.055,0.293l0.098,0.898l1.074,0.039l-0.84,0.703l0.449,0.84l1.055-0.371
xlink:href="#linearGradient3234" l-0.977,1.738l0.742,0.566l1.309-1.504l-0.039,1.094l0.879,0.195l0.43-1.035l0.41,1.016l0.898-0.176l0.02-1.133l1.309,1.465
id="linearGradient2540" l0.801-0.586l-1.094-1.68l1.035,0.391l0.449-0.84l-0.84-0.664l1.055-0.039l0.117-0.957L44.65,17.88l1.797-0.801l-0.254-0.898
gradientUnits="userSpaceOnUse" l-1.973,0.469l0.684-0.859l-0.625-0.664L43.4,15.732l0.293-1.055l-0.879-0.41l-0.664,0.918l-0.156-1.973h-0.977L40.842,15.185
gradientTransform="matrix(8.9332267e-2,8.9332267e-2,8.9332267e-2,-8.9332267e-2,-16.525693,40.126552)" M41.545,15.341c0.808,0,1.491,0.28,2.051,0.84c0.56,0.56,0.84,1.244,0.84,2.051c0,0.808-0.28,1.491-0.84,2.051
x1="202.99225" c-0.56,0.56-1.243,0.84-2.051,0.84c-0.82,0-1.507-0.28-2.061-0.84c-0.554-0.56-0.83-1.243-0.83-2.051
y1="395.23221" c0-0.807,0.28-1.491,0.84-2.051C40.054,15.622,40.737,15.341,41.545,15.341 M41.506,19.443c0.391,0,0.684-0.101,0.879-0.303
x2="251.27765" c0.195-0.202,0.293-0.504,0.293-0.908c0-0.403-0.098-0.703-0.293-0.898s-0.488-0.293-0.879-0.293s-0.684,0.098-0.879,0.293
y2="395.23221" /> s-0.293,0.495-0.293,0.898c0,0.404,0.098,0.707,0.293,0.908C40.822,19.342,41.115,19.443,41.506,19.443 M38.244,2.974
<linearGradient c-1.113,0-2.063,0.403-2.822,1.198c-0.748,0.782-1.127,1.754-1.127,2.888c0,0.239,0.016,0.483,0.048,0.732
id="linearGradient4965"> c-0.676-0.323-1.346-0.482-2.017-0.482c-2.646,0-4.164,1.539-4.164,4.223v0.371v0.058l0.006,0.057l0.059,0.508
<stop c0.049,0.563,0.052,0.703,0.052,0.725c0,0.267-0.198,0.63-0.559,1.025l-0.478,0.537c-0.775,0.857-1.17,1.792-1.17,2.774
style="stop-color:#803300;stop-opacity:1;" c0,1.2,0.502,2.255,1.451,3.051c0.619,0.521,1.344,0.867,2.164,1.034c-0.884,0.915-1.33,1.964-1.33,3.141
offset="0" c0,2.058,1.25,3.492,3.52,4.039l0.617,0.154c0.638,0.164,1.064,0.474,1.337,0.973l0.289,0.541
id="stop4967" /> c0.778,1.421,2.021,2.168,3.597,2.168c1.247,0,2.722-0.476,3.745-2.322c0.975,1.846,2.528,2.322,3.872,2.322
<stop c1.069,0,2.577-0.39,3.689-2.243l0.267-0.472c0.294-0.501,0.842-0.847,1.666-1.043l0.601-0.165
style="stop-color:#a55d00;stop-opacity:1;" c2.024-0.489,3.156-1.854,3.156-3.835c0-1.112-0.408-2.112-1.218-2.993c0.82-0.17,1.544-0.545,2.16-1.12
offset="1" c0.891-0.831,1.343-1.879,1.343-3.114c0-0.966-0.414-1.919-1.23-2.834l-0.36-0.417c-0.419-0.466-0.616-0.893-0.616-1.319
id="stop4969" /> c0-0.165,0.01-0.324,0.03-0.472l0.073-0.438c0.035-0.209,0.053-0.437,0.053-0.692c0-1.207-0.373-2.219-1.109-3.007
</linearGradient> c-0.754-0.807-1.723-1.216-2.879-1.216c-0.634,0-1.267,0.144-1.905,0.435c0.01-0.125,0.015-0.25,0.015-0.372
<linearGradient c0-1.18-0.398-2.209-1.183-3.061c-0.807-0.875-1.797-1.318-2.942-1.318c-0.553,0-1.193,0.152-1.96,0.465l-0.571,0.236
inkscape:collect="always" c-0.589,0.229-0.806,0.236-0.828,0.236c-0.05,0-0.337-0.018-1.118-0.363l-0.461-0.222C39.43,3.094,38.849,2.974,38.244,2.974
id="linearGradient4947"> L38.244,2.974z M41.563,18.351l0.027-0.307c0.03,0.002,0.055,0.006,0.072,0.009c0.008,0.036,0.015,0.093,0.015,0.179
<stop c0,0.003,0,0.006,0,0.009l-0.041,0.051l0.04-0.009c-0.002,0.047-0.006,0.084-0.011,0.113l-0.282-0.107l0.101,0.155
style="stop-color:#aa4400;stop-opacity:1;" c-0.048-0.001-0.085-0.005-0.111-0.009l0.003-0.08l-0.031,0.036c-0.006-0.037-0.011-0.089-0.011-0.158
offset="0" c0-0.024,0.001-0.045,0.002-0.065l0.102-0.028L41.563,18.351L41.563,18.351z"/>
id="stop4949" /> </g>
<stop </g>
style="stop-color:#aa4400;stop-opacity:0;" </g>
offset="1" <g display="none">
id="stop4951" /> <g display="inline">
</linearGradient> <path fill="#DCDCDC" d="M34.455,54.5H31.76V38.854h-4.445v-2.346h11.621v2.346h-4.48V54.5z"/>
<linearGradient <g opacity="0.35">
id="linearGradient4939"> <path d="M38.936,36.508v2.346h-4.48V54.5H31.76V38.854h-4.445v-2.346H38.936 M40.436,35.008h-1.5H27.314h-1.5v1.5v2.346v1.5h1.5
<stop h2.945V54.5V56h1.5h2.695h1.5v-1.5V40.354h2.98h1.5v-1.5v-2.346V35.008L40.436,35.008z"/>
style="stop-color:#c3c3c3;stop-opacity:1;" </g>
offset="0" </g>
id="stop4941" /> <g display="inline">
<stop <path fill="#DCDCDC" d="M49.785,54.5H47.09V38.854h-4.445v-2.346h11.621v2.346h-4.48V54.5z"/>
style="stop-color:#ffff00;stop-opacity:0;" <g opacity="0.35">
offset="1" <path d="M54.266,36.508v2.346h-4.48V54.5H47.09V38.854h-4.445v-2.346H54.266 M55.766,35.008h-1.5H42.645h-1.5v1.5v2.346v1.5h1.5
id="stop4943" /> h2.945V54.5V56h1.5h2.695h1.5v-1.5V40.354h2.98h1.5v-1.5v-2.346V35.008L55.766,35.008z"/>
</linearGradient> </g>
<linearGradient </g>
id="linearGradient4891"> </g>
<stop <g display="none">
style="stop-color:#000000;stop-opacity:1;" <g display="inline">
offset="0" <path fill="#DCDCDC" d="M13.013,55.917l-1.273-3.856H8.169l-1.273,3.856H5.338l3.799-11.968h1.634l3.799,11.968H13.013z
id="stop4893" /> M8.53,50.807h2.85l-1.425-5.281L8.53,50.807z"/>
<stop <g opacity="0.35">
style="stop-color:#7f7f7f;stop-opacity:1;" <path d="M10.771,43.949l3.799,11.968h-1.558l-1.273-3.856H8.169l-1.273,3.856H5.338l3.799-11.968H10.771 M8.53,50.807h2.85
offset="1" l-1.425-5.281L8.53,50.807 M11.503,42.949h-0.732H9.138H8.406l-0.221,0.697L4.385,55.614l-0.414,1.303h1.367h1.558h0.723
id="stop4895" /> l0.227-0.687l1.046-3.17h2.125l1.046,3.17l0.227,0.687h0.723h1.558h1.367l-0.414-1.303l-3.799-11.968L11.503,42.949
</linearGradient> L11.503,42.949z"/>
<linearGradient </g>
id="linearGradient4879"> </g>
<stop <g display="inline">
style="stop-color:#d2d2d2;stop-opacity:1;" <path fill="#DCDCDC" d="M19.208,55.917h-1.463v-8.491h-2.413v-1.273h6.307v1.273h-2.432V55.917z"/>
offset="0" <g opacity="0.35">
id="stop4881" /> <path d="M21.639,46.152v1.273h-2.432v8.491h-1.463v-8.491h-2.413v-1.273H21.639 M22.639,45.152h-1h-6.307h-1v1v1.273v1h1h1.413
<stop v7.491v1h1h1.463h1v-1v-7.491h1.432h1v-1v-1.273V45.152L22.639,45.152z"/>
style="stop-color:#d0d0d0;stop-opacity:1;" </g>
offset="1" </g>
id="stop4883" /> <g display="inline">
</linearGradient> <path fill="#DCDCDC" d="M26.579,55.917h-1.463v-8.491h-2.413v-1.273h6.307v1.273h-2.432V55.917z"/>
<linearGradient <g opacity="0.35">
id="linearGradient3370"> <path d="M29.011,46.152v1.273h-2.432v8.491h-1.463v-8.491h-2.413v-1.273H29.011 M30.011,45.152h-1h-6.307h-1v1v1.273v1h1h1.413
<stop v7.491v1h1h1.463h1v-1v-7.491h1.432h1v-1v-1.273V45.152L30.011,45.152z"/>
style="stop-color:#f2f500;stop-opacity:1;" </g>
offset="0" </g>
id="stop3372" /> <g display="inline">
<stop <path fill="#DCDCDC" d="M34.577,52.84h-2.792l-1.007,3.077h-1.577l3.21-9.765h1.539l3.229,9.765h-1.577L34.577,52.84z
style="stop-color:#000000;stop-opacity:1;" M32.07,51.623h2.223l-1.103-3.666L32.07,51.623z"/>
offset="1" <g opacity="0.35">
id="stop3374" /> <path d="M33.951,46.152l3.229,9.765h-1.577l-1.026-3.077h-2.792l-1.007,3.077h-1.577l3.21-9.765H33.951 M32.07,51.623h2.223
</linearGradient> l-1.103-3.666L32.07,51.623 M34.674,45.152h-0.723h-1.539h-0.724l-0.227,0.688l-3.21,9.765l-0.431,1.313h1.381h1.577h0.725
<inkscape:perspective l0.226-0.689l0.781-2.388h1.347l0.799,2.394l0.228,0.684h0.721h1.577h1.384l-0.435-1.314L34.9,45.838L34.674,45.152
sodipodi:type="inkscape:persp3d" L34.674,45.152z"/>
inkscape:vp_x="0 : 32 : 1" </g>
inkscape:vp_y="0 : 1000 : 0" </g>
inkscape:vp_z="64 : 32 : 1" <g display="inline">
inkscape:persp3d-origin="32 : 21.333333 : 1" <path fill="#DCDCDC" d="M38.854,51.035c0-1.368,0.36-2.66,1.007-3.572c0.684-1.006,1.729-1.614,2.982-1.614
id="perspective2572" /> c1.235,0,2.185,0.399,2.697,0.722l-0.551,0.988c-0.74-0.381-1.349-0.551-2.146-0.551c-0.684,0-1.52,0.569-1.957,1.463
<linearGradient c-0.342,0.684-0.531,1.652-0.531,2.621c0,0.893,0.113,1.824,0.456,2.488c0.437,0.874,1.082,1.443,2.052,1.443
inkscape:collect="always" c1.025,0,1.918-0.551,2.165-0.721l0.665,0.969c-0.285,0.209-1.349,0.949-2.888,0.949C39.86,56.221,38.854,53.428,38.854,51.035z"
xlink:href="#linearGradient4947" />
id="linearGradient4953" <g opacity="0.35">
x1="31.990065" <path d="M42.843,45.849c1.235,0,2.185,0.399,2.697,0.722l-0.551,0.988c-0.74-0.381-1.349-0.551-2.146-0.551
y1="7.0514474" c-0.684,0-1.52,0.569-1.957,1.463c-0.342,0.684-0.531,1.652-0.531,2.621c0,0.893,0.113,1.824,0.456,2.488
x2="35.589882" c0.437,0.874,1.082,1.443,2.052,1.443c1.025,0,1.918-0.551,2.165-0.721l0.665,0.969c-0.285,0.209-1.349,0.949-2.888,0.949
y2="26.218145" c-2.944,0-3.951-2.793-3.951-5.186c0-1.368,0.36-2.66,1.007-3.572C40.544,46.457,41.589,45.849,42.843,45.849 M42.843,44.849
gradientUnits="userSpaceOnUse" /> c-1.558,0-2.91,0.729-3.81,2.052c-0.757,1.067-1.18,2.542-1.18,4.135c0,2.854,1.297,6.186,4.951,6.186
<linearGradient c1.67,0,2.896-0.716,3.479-1.143l0.782-0.573l-0.549-0.8l-0.665-0.969l-0.566-0.824l-0.824,0.566
inkscape:collect="always" c-0.081,0.056-0.814,0.545-1.599,0.545c-0.353,0-0.766-0.105-1.157-0.891c-0.229-0.442-0.351-1.163-0.351-2.041
xlink:href="#linearGradient3629" c0-0.828,0.159-1.641,0.426-2.174c0.292-0.597,0.804-0.91,1.063-0.91c0.607,0,1.065,0.119,1.689,0.44l0.859,0.442l0.471-0.846
id="linearGradient3635" l0.551-0.988l0.462-0.828l-0.803-0.505C45.653,45.461,44.501,44.849,42.843,44.849L42.843,44.849z"/>
x1="19.253855" </g>
y1="10.606701" </g>
x2="60.756615" <g display="inline">
y2="56.979095" <path fill="#DCDCDC" d="M49.665,52.099v3.818h-1.501v-9.765h1.501v4.142l3.286-4.142h1.634l-3.895,5.016l3.971,4.16v0.589h-1.425
gradientUnits="userSpaceOnUse" /> L49.665,52.099z"/>
</defs> <g opacity="0.35">
<sodipodi:namedview <path d="M54.585,46.152l-3.895,5.016l3.971,4.16v0.589h-1.425l-3.571-3.818v3.818h-1.501v-9.765h1.501v4.142l3.286-4.142H54.585
id="base" M56.628,45.152h-2.043h-1.634h-0.483l-0.3,0.379l-1.503,1.894v-1.272v-1h-1h-1.501h-1v1v9.765v1h1h1.501h1v-1v-1.285
pagecolor="#ffffff" l1.841,1.968l0.297,0.317h0.434h1.425h1v-1v-0.589v-0.4l-0.276-0.29l-3.376-3.537l3.366-4.335L56.628,45.152L56.628,45.152z"/>
bordercolor="#666666" </g>
borderopacity="1.0" </g>
inkscape:pageopacity="0.0" </g>
inkscape:pageshadow="2" <g>
inkscape:zoom="7.2452592" <g>
inkscape:cx="27.17545" <path fill="#DCDCDC" d="M7.22,56.184c-3.477,0-4.616-3.344-4.616-6.27c0-2.793,1.368-6.27,4.654-6.27
inkscape:cy="31.677957" c1.007,0,2.223,0.266,3.077,0.816l-0.551,0.988c-0.798-0.437-1.614-0.607-2.526-0.607c-2.261,0-3.135,3.362-3.135,5.148
inkscape:current-layer="layer1" c0,2.014,0.646,4.958,3.173,4.958c0.854,0,1.899-0.267,2.583-0.778l0.646,0.949C9.67,55.803,8.303,56.184,7.22,56.184z"/>
showgrid="true" <g opacity="0.35">
inkscape:document-units="px" <path d="M7.258,43.645c1.007,0,2.223,0.266,3.077,0.816l-0.551,0.988c-0.798-0.437-1.614-0.607-2.526-0.607
inkscape:grid-bbox="true" c-2.261,0-3.135,3.362-3.135,5.148c0,2.014,0.646,4.958,3.173,4.958c0.854,0,1.899-0.267,2.583-0.778l0.646,0.949
inkscape:window-width="1223" c-0.855,0.684-2.223,1.064-3.306,1.064c-3.477,0-4.616-3.344-4.616-6.27C2.604,47.121,3.972,43.645,7.258,43.645 M7.258,42.645
inkscape:window-height="725" c-3.712,0-5.654,3.657-5.654,7.27c0,4.416,2.205,7.27,5.616,7.27c1.412,0,2.955-0.504,3.93-1.283l0.724-0.578l-0.521-0.766
inkscape:window-x="51" l-0.646-0.949l-0.589-0.864L9.28,53.369c-0.456,0.341-1.271,0.579-1.984,0.579c-2.068,0-2.173-3.297-2.173-3.958
inkscape:window-y="25" c0-1.447,0.733-4.148,2.135-4.148c0.803,0,1.434,0.149,2.046,0.484l0.871,0.477l0.483-0.867l0.551-0.988l0.457-0.818
inkscape:window-maximized="0" /> l-0.788-0.509C9.929,43.01,8.576,42.645,7.258,42.645L7.258,42.645z"/>
<metadata </g>
id="metadata2569"> </g>
<rdf:RDF> <g>
<cc:Work <path fill="#DCDCDC" d="M12.236,50.959c0-2.318,1.064-5.129,3.572-5.129c2.545,0,3.571,2.85,3.571,5.186
rdf:about=""> c0,2.337-1.026,5.187-3.571,5.187C13.243,56.202,12.236,53.295,12.236,50.959z M13.719,51.111c0,1.709,0.418,3.875,2.09,3.875
<dc:format>image/svg+xml</dc:format> c1.69,0,2.07-2.242,2.07-3.971c0-1.748-0.437-3.971-2.07-3.971C14.137,47.045,13.719,49.324,13.719,51.111z"/>
<dc:type <g opacity="0.35">
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> <path d="M15.809,45.83c2.545,0,3.571,2.85,3.571,5.186c0,2.337-1.026,5.187-3.571,5.187c-2.565,0-3.572-2.907-3.572-5.243
</cc:Work> C12.236,48.641,13.301,45.83,15.809,45.83 M15.809,54.986c1.69,0,2.07-2.242,2.07-3.971c0-1.748-0.437-3.971-2.07-3.971
</rdf:RDF> c-1.672,0-2.09,2.279-2.09,4.066C13.719,52.82,14.137,54.986,15.809,54.986 M15.809,44.83c-3.002,0-4.572,3.083-4.572,6.129
</metadata> c0,3.007,1.431,6.243,4.572,6.243c3.141,0,4.571-3.207,4.571-6.187S18.949,44.83,15.809,44.83L15.809,44.83z M15.809,53.986
<g c-0.86,0-1.09-1.808-1.09-2.875c0-1.477,0.341-3.066,1.09-3.066c0.735,0,1.07,1.54,1.07,2.971
id="layer1" C16.879,52.386,16.599,53.986,15.809,53.986L15.809,53.986z"/>
inkscape:label="Layer 1" </g>
inkscape:groupmode="layer" </g>
style="display:inline;"> <g>
<path <path fill="#DCDCDC" d="M30.19,48.889l-2.413,7.01h-1.254l-2.735-7.125v0.494v6.631h-1.481v-9.766h1.861l2.546,6.574
style="fill:#c6c6c6;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.88227361px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" c0.019,0.057,0.171,0.398,0.398,1.158c0.229-0.798,0.343-1.14,0.343-1.14l2.355-6.593h1.861v9.766H30.19V48.889z"/>
d="m 17.971875,9.0497399 c 13.803078,-4.3242635 28.271111,-5.4386365 44.096655,0 0,0 0.772923,25.3873211 -3.533878,34.6679241 -3.125168,6.734334 -18.591272,14.905532 -18.591272,14.905532 0,0 -15.466106,-8.171198 -18.591274,-14.905532 -4.3068,-9.280603 -3.380231,-34.6679241 -3.380231,-34.6679241 z" <g opacity="0.35">
id="rect2577" <path d="M31.672,46.133v9.766H30.19v-7.01l-2.413,7.01h-1.254l-2.735-7.125v0.494v6.631h-1.481v-9.766h1.861l2.546,6.574
sodipodi:nodetypes="ccscsc" /> c0.019,0.057,0.171,0.398,0.398,1.158c0.229-0.798,0.343-1.14,0.343-1.14l2.355-6.593H31.672 M32.672,45.133h-1h-1.861h-0.705
<path l-0.237,0.663l-1.804,5.049l-1.964-5.073l-0.248-0.639h-0.685h-1.861h-1v1v9.766v1h1h1.481h1v-1v-1.73l0.802,2.089l0.247,0.642
style="fill:url(#linearGradient3635);fill-opacity:1.0;fill-rule:evenodd;stroke:none" h0.687h1.254h0.713l0.232-0.675l0.468-1.357v1.032v1h1h1.481h1v-1v-9.766V45.133L32.672,45.133z"/>
d="m 19.332534,10.467021 c 12.950675,-4.0572226 26.525242,-5.1027782 41.373489,0 0,0 0.725191,23.819541 -3.315646,32.527026 -2.932174,6.318459 -17.443178,13.985049 -17.443178,13.985049 0,0 -14.511004,-7.66659 -17.443179,-13.985049 -4.040836,-8.707485 -3.171486,-32.527026 -3.171486,-32.527026 z" </g>
id="path4899" </g>
sodipodi:nodetypes="ccscsc" /> <g>
<g <path fill="#DCDCDC" d="M35.093,55.784v-9.651h2.564c0.607,0,1.159,0.058,1.614,0.229c0.988,0.38,1.539,1.216,1.539,2.279
id="g2536" c0,0.381-0.209,1.045-0.494,1.387c-0.209,0.229-0.418,0.399-0.74,0.608c1.292,0.36,1.785,1.292,1.785,2.413
transform="matrix(-0.6586645,0.6586645,-0.6586645,-0.6586645,53.040738,30.874896)"> c0,1.956-1.538,3.153-3.666,3.153C36.821,56.202,35.396,55.859,35.093,55.784z M37.639,47.273h-1.045v2.887l1.025,0.02
<path c0.931,0.02,1.71-0.513,1.71-1.558c0-0.569-0.267-0.969-0.589-1.121C38.455,47.35,38.075,47.273,37.639,47.273z M37.581,51.357
id="path5116" h-0.987v3.42c0.284,0.076,0.74,0.171,1.063,0.171c1.292,0,2.204-0.627,2.204-1.899c0-0.57-0.152-1.064-0.627-1.387
d="M 19.171407,40.786299 C 30.234301,31.241571 40.052824,21.097727 49.109567,10.848139 L 56.860088,7.3217298 L 53.333679,15.072251 C 41.728583,25.484502 32.940246,34.272839 23.395519,45.010411 L 19.171407,40.786299 z M 24.645705,39.536112 L 27.026109,38.450092 L 33.586428,30.59539 L 25.731726,37.155709 L 24.645705,39.536112 z" C38.911,51.434,38.417,51.357,37.581,51.357z"/>
style="fill:url(#linearGradient2540);fill-opacity:1;stroke:#000000;stroke-width:0.12633491;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:60.01653385;stroke-opacity:1" /> <g opacity="0.35">
<path <path d="M37.657,46.133c0.607,0,1.159,0.058,1.614,0.229c0.988,0.38,1.539,1.216,1.539,2.279c0,0.381-0.209,1.045-0.494,1.387
sodipodi:nodetypes="ccsccccccss" c-0.209,0.229-0.418,0.399-0.74,0.608c1.292,0.36,1.785,1.292,1.785,2.413c0,1.956-1.538,3.153-3.666,3.153
id="path5118" c-0.874,0-2.299-0.343-2.603-0.418v-9.651H37.657 M37.668,50.181c0.909,0,1.661-0.532,1.661-1.559
d="M 7.8194102,52.395498 C 12.873471,51.041266 17.927915,42.286993 17.927915,42.286993 C 17.927915,42.286993 16.799748,40.510421 15.777733,39.790457 C 14.755718,39.070494 11.11448,37.487234 11.11448,37.487234 L 15.622027,32.979687 C 19.276736,39.30983 24.814608,44.871954 31.202132,48.559792 L 26.694585,53.067339 C 26.694585,53.067339 25.207982,49.329444 24.488018,48.307428 C 23.768054,47.285413 21.894826,46.253904 21.894826,46.253904 C 21.894826,46.253904 13.138788,51.314932 11.786321,56.362409 C 11.350723,57.988079 6.1937392,52.831094 7.8194102,52.395498 z" c0-0.569-0.267-0.969-0.589-1.121c-0.285-0.151-0.665-0.228-1.102-0.228h-1.045v2.887l1.025,0.02
style="opacity:1;fill:url(#linearGradient2542);fill-opacity:1;stroke:#000000;stroke-width:0.12667845;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:60.01653384999999474;stroke-opacity:1" /> C37.636,50.18,37.652,50.181,37.668,50.181 M37.657,54.948c1.292,0,2.204-0.627,2.204-1.899c0-0.57-0.152-1.064-0.627-1.387
</g> c-0.323-0.229-0.817-0.305-1.653-0.305h-0.987v3.42C36.878,54.854,37.334,54.948,37.657,54.948 M37.657,45.133h-2.564h-1v1v9.651
</g> v0.782l0.76,0.188c0.543,0.135,1.907,0.447,2.843,0.447c2.747,0,4.666-1.708,4.666-4.153c0-1.105-0.388-2.012-1.099-2.634
</svg> c0.363-0.574,0.548-1.298,0.548-1.774c0-1.487-0.815-2.688-2.181-3.213C39.092,45.226,38.467,45.133,37.657,45.133L37.657,45.133
z M37.594,53.946v-1.589c0.806,0.001,1.012,0.085,1.063,0.121c0.081,0.056,0.204,0.139,0.204,0.57c0,0.27,0,0.899-1.204,0.899
C37.638,53.948,37.617,53.947,37.594,53.946L37.594,53.946z"/>
</g>
</g>
<g>
<path fill="#DCDCDC" d="M48.277,52.82h-2.792l-1.007,3.078h-1.577l3.211-9.766h1.538l3.229,9.766h-1.576L48.277,52.82z
M45.77,51.604h2.223l-1.102-3.667L45.77,51.604z"/>
<g opacity="0.35">
<path d="M47.65,46.133l3.229,9.766h-1.576l-1.026-3.078h-2.792l-1.007,3.078h-1.577l3.211-9.766H47.65 M45.77,51.604h2.223
l-1.102-3.667L45.77,51.604 M48.373,45.133H47.65h-1.538h-0.724l-0.227,0.688l-3.211,9.766l-0.432,1.313h1.382h1.577h0.725
l0.226-0.689l0.781-2.389h1.347l0.799,2.395l0.228,0.684h0.721h1.576h1.384l-0.435-1.314L48.6,45.818L48.373,45.133
L48.373,45.133z"/>
</g>
</g>
<g>
<path fill="#DCDCDC" d="M54.966,55.898h-1.463v-8.492h-2.412v-1.273h6.307v1.273h-2.432V55.898z"/>
<g opacity="0.35">
<path d="M57.397,46.133v1.273h-2.432v8.492h-1.463v-8.492h-2.412v-1.273H57.397 M58.397,45.133h-1h-6.307h-1v1v1.273v1h1h1.412
v7.492v1h1h1.463h1v-1v-7.492h1.432h1v-1v-1.273V45.133L58.397,45.133z"/>
</g>
</g>
</g>
<g>
<g>
<path fill="#DCDCDC" d="M42.441,23.068l5.909,3.965v3.009c0,0.856-0.294,1.638-0.881,2.349c-0.588,0.709-1.285,1.174-2.092,1.395
L30,37.932l-15.377-4.146c-0.808-0.221-1.504-0.699-2.092-1.432c-0.587-0.734-0.881-1.505-0.881-2.312v-2.937l5.909-3.965v5.506
L30,31.986l12.442-3.34V23.068z"/>
<g opacity="0.35">
<path d="M42.441,23.068l5.909,3.965v3.009c0,0.856-0.294,1.638-0.881,2.349c-0.588,0.709-1.285,1.174-2.092,1.395L30,37.932
l-15.377-4.146c-0.808-0.221-1.504-0.699-2.092-1.432c-0.587-0.734-0.881-1.505-0.881-2.312v-2.937l5.909-3.965v5.506L30,31.986
l12.442-3.34V23.068 M40.941,20.255v2.813v4.428L30,30.434l-10.941-2.938v-4.355v-2.813l-2.336,1.567l-5.909,3.965l-0.664,0.446
v0.8v2.937c0,1.152,0.407,2.245,1.209,3.248c0.79,0.985,1.754,1.638,2.868,1.942l15.382,4.147L30,39.485l0.391-0.105
l15.378-4.146c1.111-0.304,2.07-0.938,2.855-1.886c0.814-0.986,1.227-2.098,1.227-3.306v-3.009v-0.8l-0.664-0.446l-5.909-3.965
L40.941,20.255L40.941,20.255z"/>
</g>
</g>
</g>
<g>
<g>
<path fill="#DCDCDC" d="M23.378,5.273h-4.635v3.799h3.552v1.311h-3.552v4.274h4.825v1.311h-6.345V4h6.155V5.273z"/>
<g opacity="0.35">
<path d="M23.378,4v1.273h-4.635v3.799h3.552v1.311h-3.552v4.274h4.825v1.311h-6.345V4H23.378 M24.378,3h-1h-6.155h-1v1v11.968v1
h1h6.345h1v-1v-1.311v-1h-1h-3.825v-2.274h2.552h1v-1V9.072v-1h-1h-2.552V6.273h3.635h1v-1V4V3L24.378,3z"/>
</g>
</g>
<g>
<path fill="#DCDCDC" d="M27.578,8.673c0.019,0.494,0.038,0.608,0.038,0.703v6.592h-1.501V6.185h1.862l3.116,6.782
c-0.019-0.494-0.019-0.608-0.019-0.684V6.185h1.5v9.784h-1.481L27.578,8.673z"/>
<g opacity="0.35">
<path d="M32.574,6.185v9.784h-1.481l-3.515-7.295c0.019,0.494,0.038,0.608,0.038,0.703v6.592h-1.501V6.185h1.862l3.116,6.782
c-0.019-0.494-0.019-0.608-0.019-0.684V6.185H32.574 M33.574,5.185h-1h-1.5h-1v1v2.168l-1.188-2.586l-0.268-0.583h-0.641h-1.862
h-1v1v9.784v1h1h1.501h1v-1v-2.836l1.576,3.271l0.272,0.566h0.628h1.481h1v-1V6.185V5.185L33.574,5.185z"/>
</g>
</g>
<g>
<path fill="#DCDCDC" d="M36.053,15.968V6.204h2.982c2.432,0,3.742,1.786,3.742,4.901c0,3.344-1.729,4.863-3.895,4.863H36.053z
M37.533,7.381v7.409h1.35c1.652,0,2.393-1.406,2.393-3.667c0-2.337-0.684-3.743-2.297-3.743H37.533z"/>
<g opacity="0.35">
<path d="M39.035,6.204c2.432,0,3.742,1.786,3.742,4.901c0,3.344-1.729,4.863-3.895,4.863h-2.83V6.204H39.035 M37.533,14.791h1.35
c1.652,0,2.393-1.406,2.393-3.667c0-2.337-0.684-3.743-2.297-3.743h-1.445V14.791 M39.035,5.204h-2.982h-1v1v9.765v1h1h2.83
c2.258,0,4.895-1.536,4.895-5.863C43.777,7.41,42.005,5.204,39.035,5.204L39.035,5.204z M38.533,8.381h0.445
c0.354,0,1.297,0,1.297,2.743c0,2.667-1.048,2.667-1.393,2.667h-0.35V8.381L38.533,8.381z"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 9 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View file

@ -1,253 +1,348 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) --> <!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
xmlns:dc="http://purl.org/dc/elements/1.1/" width="60px" height="60px" viewBox="0 0 60 60" enable-background="new 0 0 60 60" xml:space="preserve">
xmlns:cc="http://creativecommons.org/ns#" <radialGradient id="SVGID_1_" cx="30" cy="30" r="30" gradientUnits="userSpaceOnUse">
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" <stop offset="0" style="stop-color:#D20000"/>
xmlns:svg="http://www.w3.org/2000/svg" <stop offset="1" style="stop-color:#3C0000"/>
xmlns="http://www.w3.org/2000/svg" </radialGradient>
xmlns:xlink="http://www.w3.org/1999/xlink" <path fill="url(#SVGID_1_)" d="M60,51.818C60,56.337,56.337,60,51.818,60H8.182C3.663,60,0,56.337,0,51.818V8.182
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" C0,3.663,3.663,0,8.182,0h43.637C56.337,0,60,3.663,60,8.182V51.818z"/>
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" <g display="none">
width="64px" <g display="inline">
height="64px" <path fill="#FFFFFF" d="M21.941,45.399c0-4.271,1.96-9.451,6.581-9.451c4.691,0,6.581,5.25,6.581,9.556s-1.89,9.556-6.581,9.556
id="svg2564" C23.796,55.06,21.941,49.704,21.941,45.399z M24.671,45.679c0,3.15,0.77,7.141,3.851,7.141c3.116,0,3.815-4.13,3.815-7.315
sodipodi:version="0.32" c0-3.22-0.805-7.315-3.815-7.315C25.441,38.188,24.671,42.389,24.671,45.679z"/>
inkscape:version="0.47 r22583" <g opacity="0.35">
sodipodi:docname="icon_phase_combat_start.svg" <path d="M28.522,35.948c4.691,0,6.581,5.25,6.581,9.556s-1.89,9.556-6.581,9.556c-4.726,0-6.581-5.355-6.581-9.66
inkscape:output_extension="org.inkscape.output.svg.inkscape" C21.941,41.129,23.901,35.948,28.522,35.948 M28.522,52.819c3.116,0,3.815-4.13,3.815-7.315c0-3.22-0.805-7.315-3.815-7.315
enable-background="new" c-3.081,0-3.851,4.2-3.851,7.49C24.671,48.829,25.441,52.819,28.522,52.819 M28.522,34.448c-5.305,0-8.081,5.509-8.081,10.951
version="1.1"> c0,5.375,2.529,11.16,8.081,11.16c5.552,0,8.081-5.73,8.081-11.056S34.074,34.448,28.522,34.448L28.522,34.448z M28.522,51.319
<defs c-2.237,0-2.351-4.698-2.351-5.641c0-2.764,0.616-5.99,2.351-5.99c1.827,0,2.315,3.655,2.315,5.815
id="defs2566"> C30.837,46.475,30.725,51.319,28.522,51.319L28.522,51.319z"/>
<linearGradient </g>
id="linearGradient3625"> </g>
<stop <g display="inline">
style="stop-color:#803300;stop-opacity:1;" <path fill="#FFFFFF" d="M53.268,41.584L48.822,54.5h-2.311l-5.04-13.126v0.91V54.5h-2.73V36.508h3.431l4.69,12.111
offset="0" c0.035,0.105,0.314,0.735,0.734,2.136c0.421-1.471,0.631-2.101,0.631-2.101l4.34-12.146h3.431V54.5h-2.73V41.584z"/>
id="stop3627" /> <g opacity="0.35">
<stop <path d="M55.998,36.508V54.5h-2.73V41.584L48.822,54.5h-2.311l-5.04-13.126v0.91V54.5h-2.73V36.508h3.431l4.69,12.111
style="stop-color:#000000;stop-opacity:1;" c0.035,0.105,0.314,0.735,0.734,2.136c0.421-1.471,0.631-2.101,0.631-2.101l4.34-12.146H55.998 M57.498,35.008h-1.5h-3.431
offset="1" h-1.057l-0.355,0.995l-3.633,10.168L43.57,35.966l-0.371-0.958h-1.027h-3.431h-1.5v1.5V54.5V56h1.5h2.73h1.5v-1.5v-5.035
id="stop3629" /> l2.14,5.573L45.48,56h1.031h2.311h1.07l0.348-1.012l1.527-4.437V54.5V56h1.5h2.73h1.5v-1.5V36.508V35.008L57.498,35.008z"/>
</linearGradient> </g>
<linearGradient </g>
id="linearGradient5717"> </g>
<stop <g display="none">
style="stop-color:#003580;stop-opacity:1;" <g display="inline">
offset="0" <path fill="#FFFFFF" d="M20.003,50.288c-0.78,1.56-2.601,4.836-6.917,4.836c-7.072,0-9.568-8.372-9.568-19.657
id="stop5719" /> c0-8.84,2.392-18.408,9.776-18.408c1.508,0,1.768-0.104,1.768-0.78l1.508-0.572l2.185,5.2l-1.664,0.676
<stop c-1.092-1.248-2.288-2.028-3.796-2.028c-3.848,0-7.02,5.72-7.02,16.328c0,9.568,1.976,16.745,6.812,16.745
id="stop3194" c2.6,0,4.368-2.185,5.096-3.849L20.003,50.288z"/>
offset="0.25" <g opacity="0.35">
style="stop-color:#055897;stop-opacity:1;" /> <path d="M16.57,15.707l2.185,5.2l-1.664,0.676c-1.092-1.248-2.288-2.028-3.796-2.028c-3.848,0-7.02,5.72-7.02,16.328
<stop c0,9.568,1.976,16.745,6.812,16.745c2.6,0,4.368-2.185,5.096-3.849l1.82,1.509c-0.78,1.56-2.601,4.836-6.917,4.836
id="stop5725" c-7.072,0-9.568-8.372-9.568-19.657c0-8.84,2.392-18.408,9.776-18.408c1.508,0,1.768-0.104,1.768-0.78L16.57,15.707
offset="0.5" M17.393,13.791l-1.354,0.514l-1.508,0.572l-0.968,0.367v0.314c-0.08,0.001-0.169,0.001-0.268,0.001
style="stop-color:#00a4ff;stop-opacity:1;" /> c-7.061,0-11.276,7.442-11.276,19.908c0,17.486,6.019,21.157,11.068,21.157c3.599,0,6.377-1.906,8.258-5.665l0.533-1.065
<stop l-0.917-0.761l-1.82-1.509l-1.533-1.271l-0.798,1.824c-0.132,0.303-1.359,2.95-3.722,2.95c-3.326,0-5.312-5.699-5.312-15.245
style="stop-color:#055897;stop-opacity:1;" c0-9.735,2.777-14.828,5.52-14.828c0.927,0,1.75,0.468,2.667,1.516l0.704,0.804l0.99-0.402l1.664-0.676l1.406-0.571l-0.588-1.399
offset="0.75" l-2.185-5.2L17.393,13.791L17.393,13.791z"/>
id="stop3192" /> </g>
<stop </g>
style="stop-color:#003580;stop-opacity:1;" </g>
offset="1" <g display="none">
id="stop5721" /> <g display="inline">
</linearGradient> <path fill="#FFFFFF" d="M45.334,32.189c-1.919,0-3.208-1.03-3.853-3.069c-0.73,2.039-1.99,3.069-3.765,3.069
<linearGradient c-1.402,0-2.463-0.64-3.153-1.9l-0.295-0.551c-0.337-0.618-0.879-1.018-1.657-1.217l-0.621-0.156
inkscape:collect="always" c-2.588-0.624-3.133-2.275-3.133-3.551c0-1.357,0.685-2.537,2.041-3.523c-1.209,0-2.237-0.349-3.054-1.035
xlink:href="#linearGradient5717" c-0.844-0.708-1.272-1.605-1.272-2.668c0-0.854,0.352-1.676,1.047-2.445l0.466-0.524c0.462-0.506,0.694-0.964,0.694-1.367
id="linearGradient2542" c0-0.111-0.02-0.376-0.057-0.796l-0.057-0.495l-0.003-0.428c0-2.436,1.267-3.723,3.664-3.723c0.887,0,1.807,0.337,2.749,1.006
gradientUnits="userSpaceOnUse" c-0.187-0.616-0.28-1.202-0.28-1.756c0-1.001,0.332-1.856,0.988-2.542c0.662-0.692,1.49-1.043,2.461-1.043
gradientTransform="matrix(0,0.1263349,-0.1263349,0,74.367722,-7.5042832)" c0.535,0,1.05,0.106,1.528,0.315l0.505,0.242c0.784,0.347,1.156,0.4,1.307,0.4c0.118,0,0.409-0.036,1.029-0.278l0.557-0.23
x1="339.93985" c0.708-0.289,1.287-0.429,1.773-0.429c1,0,1.866,0.389,2.574,1.157c0.697,0.756,1.051,1.671,1.051,2.722
y1="482.58844" c0,0.426-0.067,0.872-0.202,1.335c0.885-0.602,1.744-0.898,2.593-0.898c1.013,0,1.858,0.355,2.514,1.057
x2="459.27341" c0.646,0.692,0.975,1.589,0.975,2.666c0,0.226-0.016,0.43-0.046,0.61l-0.078,0.468c-0.021,0.159-0.032,0.338-0.032,0.523
y2="355.50766" /> c0,0.555,0.239,1.091,0.731,1.638l0.377,0.438c0.728,0.814,1.099,1.655,1.099,2.495c0,1.091-0.398,2.015-1.185,2.749
<linearGradient c-0.775,0.724-1.748,1.091-2.89,1.091c-0.037,0-0.074,0-0.112-0.001c1.264,0.961,1.901,2.095,1.901,3.388
id="linearGradient3234"> c0,1.752-0.97,2.913-2.805,3.357l-0.551,0.152c-0.981,0.234-1.632,0.656-2.006,1.294l-0.25,0.443
<stop C47.798,31.517,46.701,32.189,45.334,32.189z M38.897,21.964l0.77-0.884c-0.074-0.049-0.147-0.102-0.218-0.158l-0.576,1.024
style="stop-color:#6f6f6f;stop-opacity:1;" L38.897,21.964z M44.252,21.896l0.053-0.039l-0.632-0.971c-0.063,0.051-0.127,0.1-0.192,0.146L44.252,21.896z M41.506,17.541
offset="0" c-0.173,0-0.404,0.025-0.525,0.146s-0.146,0.363-0.146,0.545c0,0.184,0.026,0.431,0.152,0.561c0.097,0.1,0.271,0.15,0.52,0.15
id="stop3236" /> s0.423-0.05,0.52-0.15c0.126-0.13,0.152-0.376,0.152-0.561c0-0.182-0.025-0.424-0.146-0.545S41.679,17.541,41.506,17.541z
<stop M38.266,17.332c0.02-0.075,0.042-0.148,0.066-0.221l-1.131-0.262l-0.011,0.031L38.266,17.332z M44.806,17.264l1.043-0.465
id="stop3242" l-0.006-0.021l-1.108,0.264C44.761,17.115,44.784,17.189,44.806,17.264z M41.374,14.845c0.057-0.002,0.222-0.003,0.248-0.003
offset="0.47999999" l-0.09-1.13h-0.058L41.374,14.845z"/>
style="stop-color:#e6e6e6;stop-opacity:1;" /> <g>
<stop <path fill="#FF0000" d="M38.244,3.974c0.469,0,0.911,0.091,1.328,0.273l0.488,0.234c0.677,0.3,1.185,0.449,1.523,0.449
style="stop-color:#ffffff;stop-opacity:1;" c0.273,0,0.677-0.104,1.211-0.313l0.566-0.234c0.638-0.26,1.165-0.391,1.582-0.391c0.859,0,1.595,0.332,2.207,0.996
offset="0.5" s0.918,1.458,0.918,2.383c0,1.042-0.449,2.214-1.348,3.516c1.511-1.719,2.923-2.578,4.238-2.578c0.872,0,1.589,0.3,2.148,0.898
id="stop3244" /> c0.56,0.599,0.84,1.374,0.84,2.324c0,0.195-0.013,0.371-0.039,0.527l-0.078,0.469c-0.026,0.195-0.039,0.397-0.039,0.605
<stop c0,0.677,0.286,1.335,0.859,1.973l0.371,0.43c0.651,0.729,0.977,1.452,0.977,2.168c0,0.951-0.342,1.745-1.025,2.383
id="stop3286" c-0.684,0.638-1.533,0.957-2.549,0.957c-0.651,0-1.511-0.104-2.578-0.313c2.578,1.094,3.867,2.494,3.867,4.199
offset="0.75" c0,1.523-0.808,2.48-2.422,2.871l-0.566,0.156c-1.094,0.261-1.862,0.769-2.305,1.524l-0.254,0.449
style="stop-color:#bebebe;stop-opacity:1;" /> c-0.703,1.172-1.647,1.758-2.832,1.758c-2.278,0-3.542-1.687-3.789-5.059c-0.456,3.373-1.731,5.059-3.828,5.059
<stop c-1.211,0-2.116-0.547-2.715-1.641l-0.293-0.547c-0.404-0.743-1.062-1.231-1.973-1.465l-0.625-0.156
style="stop-color:#494949;stop-opacity:1;" c-1.836-0.442-2.754-1.465-2.754-3.066c0-1.745,1.309-3.164,3.926-4.258c-0.99,0.156-1.784,0.234-2.383,0.234
offset="1" c-1.094,0-2.006-0.306-2.734-0.918c-0.729-0.612-1.094-1.374-1.094-2.285c0-0.729,0.306-1.432,0.918-2.109l0.469-0.527
id="stop3238" /> c0.547-0.599,0.82-1.165,0.82-1.699c0-0.117-0.02-0.397-0.059-0.84l-0.059-0.508v-0.371c0-2.148,1.055-3.223,3.164-3.223
</linearGradient> c1.314,0,2.721,0.847,4.219,2.539c-0.834-1.406-1.25-2.669-1.25-3.789c0-0.872,0.283-1.604,0.85-2.197
<linearGradient C36.711,4.271,37.41,3.974,38.244,3.974 M40.842,15.185l-0.547-0.918l-0.879,0.41l0.273,1.035l-0.879-0.605l-0.645,0.664
inkscape:collect="always" l0.645,0.938l-1.934-0.449l-0.313,0.898l1.855,0.781l-1.055,0.293l0.098,0.898l1.074,0.039l-0.84,0.703l0.449,0.84l1.055-0.371
xlink:href="#linearGradient3234" l-0.977,1.738l0.742,0.566l1.309-1.504l-0.039,1.094l0.879,0.195l0.43-1.035l0.41,1.016l0.898-0.176l0.02-1.133l1.309,1.465
id="linearGradient2540" l0.801-0.586l-1.094-1.68l1.035,0.391l0.449-0.84l-0.84-0.664l1.055-0.039l0.117-0.957L44.65,17.88l1.797-0.801l-0.254-0.898
gradientUnits="userSpaceOnUse" l-1.973,0.469l0.684-0.859l-0.625-0.664L43.4,15.732l0.293-1.055l-0.879-0.41l-0.664,0.918l-0.156-1.973h-0.977L40.842,15.185
gradientTransform="matrix(8.9332267e-2,8.9332267e-2,8.9332267e-2,-8.9332267e-2,-16.525693,40.126552)" M41.545,15.341c0.808,0,1.491,0.28,2.051,0.84c0.56,0.56,0.84,1.244,0.84,2.051c0,0.808-0.28,1.491-0.84,2.051
x1="202.99225" c-0.56,0.56-1.243,0.84-2.051,0.84c-0.82,0-1.507-0.28-2.061-0.84c-0.554-0.56-0.83-1.243-0.83-2.051
y1="395.23221" c0-0.807,0.28-1.491,0.84-2.051C40.054,15.622,40.737,15.341,41.545,15.341 M41.506,19.443c0.391,0,0.684-0.101,0.879-0.303
x2="251.27765" c0.195-0.202,0.293-0.504,0.293-0.908c0-0.403-0.098-0.703-0.293-0.898s-0.488-0.293-0.879-0.293s-0.684,0.098-0.879,0.293
y2="395.23221" /> s-0.293,0.495-0.293,0.898c0,0.404,0.098,0.707,0.293,0.908C40.822,19.342,41.115,19.443,41.506,19.443 M38.244,2.974
<linearGradient c-1.113,0-2.063,0.403-2.822,1.198c-0.748,0.782-1.127,1.754-1.127,2.888c0,0.239,0.016,0.483,0.048,0.732
id="linearGradient4965"> c-0.676-0.323-1.346-0.482-2.017-0.482c-2.646,0-4.164,1.539-4.164,4.223v0.371v0.058l0.006,0.057l0.059,0.508
<stop c0.049,0.563,0.052,0.703,0.052,0.725c0,0.267-0.198,0.63-0.559,1.025l-0.478,0.537c-0.775,0.857-1.17,1.792-1.17,2.774
style="stop-color:#803300;stop-opacity:1;" c0,1.2,0.502,2.255,1.451,3.051c0.619,0.521,1.344,0.867,2.164,1.034c-0.884,0.915-1.33,1.964-1.33,3.141
offset="0" c0,2.058,1.25,3.492,3.52,4.039l0.617,0.154c0.638,0.164,1.064,0.474,1.337,0.973l0.289,0.541
id="stop4967" /> c0.778,1.421,2.021,2.168,3.597,2.168c1.247,0,2.722-0.476,3.745-2.322c0.975,1.846,2.528,2.322,3.872,2.322
<stop c1.069,0,2.577-0.39,3.689-2.243l0.267-0.472c0.294-0.501,0.842-0.847,1.666-1.043l0.601-0.165
style="stop-color:#a55d00;stop-opacity:1;" c2.024-0.489,3.156-1.854,3.156-3.835c0-1.112-0.408-2.112-1.218-2.993c0.82-0.17,1.544-0.545,2.16-1.12
offset="1" c0.891-0.831,1.343-1.879,1.343-3.114c0-0.966-0.414-1.919-1.23-2.834l-0.36-0.417c-0.419-0.466-0.616-0.893-0.616-1.319
id="stop4969" /> c0-0.165,0.01-0.324,0.03-0.472l0.073-0.438c0.035-0.209,0.053-0.437,0.053-0.692c0-1.207-0.373-2.219-1.109-3.007
</linearGradient> c-0.754-0.807-1.723-1.216-2.879-1.216c-0.634,0-1.267,0.144-1.905,0.435c0.01-0.125,0.015-0.25,0.015-0.372
<linearGradient c0-1.18-0.398-2.209-1.183-3.061c-0.807-0.875-1.797-1.318-2.942-1.318c-0.553,0-1.193,0.152-1.96,0.465l-0.571,0.236
inkscape:collect="always" c-0.589,0.229-0.806,0.236-0.828,0.236c-0.05,0-0.337-0.018-1.118-0.363l-0.461-0.222C39.43,3.094,38.849,2.974,38.244,2.974
id="linearGradient4947"> L38.244,2.974z M41.563,18.351l0.027-0.307c0.03,0.002,0.055,0.006,0.072,0.009c0.008,0.036,0.015,0.093,0.015,0.179
<stop c0,0.003,0,0.006,0,0.009l-0.041,0.051l0.04-0.009c-0.002,0.047-0.006,0.084-0.011,0.113l-0.282-0.107l0.101,0.155
style="stop-color:#aa4400;stop-opacity:1;" c-0.048-0.001-0.085-0.005-0.111-0.009l0.003-0.08l-0.031,0.036c-0.006-0.037-0.011-0.089-0.011-0.158
offset="0" c0-0.024,0.001-0.045,0.002-0.065l0.102-0.028L41.563,18.351L41.563,18.351z"/>
id="stop4949" /> </g>
<stop </g>
style="stop-color:#aa4400;stop-opacity:0;" </g>
offset="1" <g display="none">
id="stop4951" /> <g display="inline">
</linearGradient> <path fill="#DCDCDC" d="M34.455,54.5H31.76V38.854h-4.445v-2.346h11.621v2.346h-4.48V54.5z"/>
<linearGradient <g opacity="0.35">
id="linearGradient4939"> <path d="M38.936,36.508v2.346h-4.48V54.5H31.76V38.854h-4.445v-2.346H38.936 M40.436,35.008h-1.5H27.314h-1.5v1.5v2.346v1.5h1.5
<stop h2.945V54.5V56h1.5h2.695h1.5v-1.5V40.354h2.98h1.5v-1.5v-2.346V35.008L40.436,35.008z"/>
style="stop-color:#c3c3c3;stop-opacity:1;" </g>
offset="0" </g>
id="stop4941" /> <g display="inline">
<stop <path fill="#DCDCDC" d="M49.785,54.5H47.09V38.854h-4.445v-2.346h11.621v2.346h-4.48V54.5z"/>
style="stop-color:#ffff00;stop-opacity:0;" <g opacity="0.35">
offset="1" <path d="M54.266,36.508v2.346h-4.48V54.5H47.09V38.854h-4.445v-2.346H54.266 M55.766,35.008h-1.5H42.645h-1.5v1.5v2.346v1.5h1.5
id="stop4943" /> h2.945V54.5V56h1.5h2.695h1.5v-1.5V40.354h2.98h1.5v-1.5v-2.346V35.008L55.766,35.008z"/>
</linearGradient> </g>
<linearGradient </g>
id="linearGradient4891"> </g>
<stop <g display="none">
style="stop-color:#000000;stop-opacity:1;" <g display="inline">
offset="0" <path fill="#DCDCDC" d="M13.013,55.917l-1.273-3.856H8.169l-1.273,3.856H5.338l3.799-11.968h1.634l3.799,11.968H13.013z
id="stop4893" /> M8.53,50.807h2.85l-1.425-5.281L8.53,50.807z"/>
<stop <g opacity="0.35">
style="stop-color:#7f7f7f;stop-opacity:1;" <path d="M10.771,43.949l3.799,11.968h-1.558l-1.273-3.856H8.169l-1.273,3.856H5.338l3.799-11.968H10.771 M8.53,50.807h2.85
offset="1" l-1.425-5.281L8.53,50.807 M11.503,42.949h-0.732H9.138H8.406l-0.221,0.697L4.385,55.614l-0.414,1.303h1.367h1.558h0.723
id="stop4895" /> l0.227-0.687l1.046-3.17h2.125l1.046,3.17l0.227,0.687h0.723h1.558h1.367l-0.414-1.303l-3.799-11.968L11.503,42.949
</linearGradient> L11.503,42.949z"/>
<linearGradient </g>
id="linearGradient4879"> </g>
<stop <g display="inline">
style="stop-color:#d2d2d2;stop-opacity:1;" <path fill="#DCDCDC" d="M19.208,55.917h-1.463v-8.491h-2.413v-1.273h6.307v1.273h-2.432V55.917z"/>
offset="0" <g opacity="0.35">
id="stop4881" /> <path d="M21.639,46.152v1.273h-2.432v8.491h-1.463v-8.491h-2.413v-1.273H21.639 M22.639,45.152h-1h-6.307h-1v1v1.273v1h1h1.413
<stop v7.491v1h1h1.463h1v-1v-7.491h1.432h1v-1v-1.273V45.152L22.639,45.152z"/>
style="stop-color:#d0d0d0;stop-opacity:1;" </g>
offset="1" </g>
id="stop4883" /> <g display="inline">
</linearGradient> <path fill="#DCDCDC" d="M26.579,55.917h-1.463v-8.491h-2.413v-1.273h6.307v1.273h-2.432V55.917z"/>
<linearGradient <g opacity="0.35">
id="linearGradient3370"> <path d="M29.011,46.152v1.273h-2.432v8.491h-1.463v-8.491h-2.413v-1.273H29.011 M30.011,45.152h-1h-6.307h-1v1v1.273v1h1h1.413
<stop v7.491v1h1h1.463h1v-1v-7.491h1.432h1v-1v-1.273V45.152L30.011,45.152z"/>
style="stop-color:#f2f500;stop-opacity:1;" </g>
offset="0" </g>
id="stop3372" /> <g display="inline">
<stop <path fill="#DCDCDC" d="M34.577,52.84h-2.792l-1.007,3.077h-1.577l3.21-9.765h1.539l3.229,9.765h-1.577L34.577,52.84z
style="stop-color:#000000;stop-opacity:1;" M32.07,51.623h2.223l-1.103-3.666L32.07,51.623z"/>
offset="1" <g opacity="0.35">
id="stop3374" /> <path d="M33.951,46.152l3.229,9.765h-1.577l-1.026-3.077h-2.792l-1.007,3.077h-1.577l3.21-9.765H33.951 M32.07,51.623h2.223
</linearGradient> l-1.103-3.666L32.07,51.623 M34.674,45.152h-0.723h-1.539h-0.724l-0.227,0.688l-3.21,9.765l-0.431,1.313h1.381h1.577h0.725
<inkscape:perspective l0.226-0.689l0.781-2.388h1.347l0.799,2.394l0.228,0.684h0.721h1.577h1.384l-0.435-1.314L34.9,45.838L34.674,45.152
sodipodi:type="inkscape:persp3d" L34.674,45.152z"/>
inkscape:vp_x="0 : 32 : 1" </g>
inkscape:vp_y="0 : 1000 : 0" </g>
inkscape:vp_z="64 : 32 : 1" <g display="inline">
inkscape:persp3d-origin="32 : 21.333333 : 1" <path fill="#DCDCDC" d="M38.854,51.035c0-1.368,0.36-2.66,1.007-3.572c0.684-1.006,1.729-1.614,2.982-1.614
id="perspective2572" /> c1.235,0,2.185,0.399,2.697,0.722l-0.551,0.988c-0.74-0.381-1.349-0.551-2.146-0.551c-0.684,0-1.52,0.569-1.957,1.463
<linearGradient c-0.342,0.684-0.531,1.652-0.531,2.621c0,0.893,0.113,1.824,0.456,2.488c0.437,0.874,1.082,1.443,2.052,1.443
inkscape:collect="always" c1.025,0,1.918-0.551,2.165-0.721l0.665,0.969c-0.285,0.209-1.349,0.949-2.888,0.949C39.86,56.221,38.854,53.428,38.854,51.035z"
xlink:href="#linearGradient4947" />
id="linearGradient4953" <g opacity="0.35">
x1="31.990065" <path d="M42.843,45.849c1.235,0,2.185,0.399,2.697,0.722l-0.551,0.988c-0.74-0.381-1.349-0.551-2.146-0.551
y1="7.0514474" c-0.684,0-1.52,0.569-1.957,1.463c-0.342,0.684-0.531,1.652-0.531,2.621c0,0.893,0.113,1.824,0.456,2.488
x2="35.589882" c0.437,0.874,1.082,1.443,2.052,1.443c1.025,0,1.918-0.551,2.165-0.721l0.665,0.969c-0.285,0.209-1.349,0.949-2.888,0.949
y2="26.218145" c-2.944,0-3.951-2.793-3.951-5.186c0-1.368,0.36-2.66,1.007-3.572C40.544,46.457,41.589,45.849,42.843,45.849 M42.843,44.849
gradientUnits="userSpaceOnUse" /> c-1.558,0-2.91,0.729-3.81,2.052c-0.757,1.067-1.18,2.542-1.18,4.135c0,2.854,1.297,6.186,4.951,6.186
<linearGradient c1.67,0,2.896-0.716,3.479-1.143l0.782-0.573l-0.549-0.8l-0.665-0.969l-0.566-0.824l-0.824,0.566
inkscape:collect="always" c-0.081,0.056-0.814,0.545-1.599,0.545c-0.353,0-0.766-0.105-1.157-0.891c-0.229-0.442-0.351-1.163-0.351-2.041
xlink:href="#linearGradient3625" c0-0.828,0.159-1.641,0.426-2.174c0.292-0.597,0.804-0.91,1.063-0.91c0.607,0,1.065,0.119,1.689,0.44l0.859,0.442l0.471-0.846
id="linearGradient3631" l0.551-0.988l0.462-0.828l-0.803-0.505C45.653,45.461,44.501,44.849,42.843,44.849L42.843,44.849z"/>
x1="11.24862" </g>
y1="10.529667" </g>
x2="52.751381" <g display="inline">
y2="56.979095" <path fill="#DCDCDC" d="M49.665,52.099v3.818h-1.501v-9.765h1.501v4.142l3.286-4.142h1.634l-3.895,5.016l3.971,4.16v0.589h-1.425
gradientUnits="userSpaceOnUse" /> L49.665,52.099z"/>
</defs> <g opacity="0.35">
<sodipodi:namedview <path d="M54.585,46.152l-3.895,5.016l3.971,4.16v0.589h-1.425l-3.571-3.818v3.818h-1.501v-9.765h1.501v4.142l3.286-4.142H54.585
id="base" M56.628,45.152h-2.043h-1.634h-0.483l-0.3,0.379l-1.503,1.894v-1.272v-1h-1h-1.501h-1v1v9.765v1h1h1.501h1v-1v-1.285
pagecolor="#ffffff" l1.841,1.968l0.297,0.317h0.434h1.425h1v-1v-0.589v-0.4l-0.276-0.29l-3.376-3.537l3.366-4.335L56.628,45.152L56.628,45.152z"/>
bordercolor="#666666" </g>
borderopacity="1.0" </g>
inkscape:pageopacity="0.0" </g>
inkscape:pageshadow="2" <g>
inkscape:zoom="7.7781746" <g>
inkscape:cx="23.751652" <path fill="#DCDCDC" d="M16.662,5.406l-0.855,0.722c-0.456-0.57-1.234-0.912-1.956-0.912c-1.026,0-1.843,0.608-1.843,1.691
inkscape:cy="31.764768" c0,2.812,5.129,2.546,5.129,6.383c0,2.014-1.614,3.249-3.533,3.249c-0.969,0-2.109-0.494-2.85-1.121l0.646-1.083
inkscape:current-layer="layer1" c0.551,0.456,1.501,0.988,2.223,0.988c1.197,0,2.052-0.855,2.052-2.052c0-2.47-5.148-2.584-5.148-6.136
showgrid="true" c0-2.033,1.35-3.135,3.325-3.135C14.896,4,16.092,4.513,16.662,5.406z"/>
inkscape:document-units="px" <g opacity="0.35">
inkscape:grid-bbox="true" <path d="M13.851,4c1.045,0,2.241,0.513,2.812,1.406l-0.855,0.722c-0.456-0.57-1.234-0.912-1.956-0.912
inkscape:window-width="1223" c-1.026,0-1.843,0.608-1.843,1.691c0,2.812,5.129,2.546,5.129,6.383c0,2.014-1.614,3.249-3.533,3.249
inkscape:window-height="725" c-0.969,0-2.109-0.494-2.85-1.121l0.646-1.083c0.551,0.456,1.501,0.988,2.223,0.988c1.197,0,2.052-0.855,2.052-2.052
inkscape:window-x="51" c0-2.47-5.148-2.584-5.148-6.136C10.525,5.102,11.875,4,13.851,4 M13.851,3c-2.627,0-4.325,1.623-4.325,4.135
inkscape:window-y="25" c0,2.504,1.971,3.682,3.41,4.542c1.082,0.646,1.738,1.076,1.738,1.594c0,0.649-0.403,1.052-1.052,1.052
inkscape:window-maximized="0" /> c-0.362,0-1.088-0.347-1.585-0.758l-0.899-0.745l-0.598,1.002l-0.646,1.083l-0.434,0.728l0.646,0.547
<metadata c0.974,0.825,2.346,1.358,3.496,1.358c2.627,0,4.533-1.787,4.533-4.249c0-2.639-1.939-3.781-3.355-4.614
id="metadata2569"> c-1.233-0.726-1.774-1.113-1.774-1.769c0-0.571,0.458-0.691,0.843-0.691c0.439,0,0.922,0.221,1.175,0.537l0.641,0.801
<rdf:RDF> l0.785-0.662l0.855-0.722l0.669-0.564l-0.471-0.738C16.792,3.75,15.323,3,13.851,3L13.851,3z"/>
<cc:Work </g>
rdf:about=""> </g>
<dc:format>image/svg+xml</dc:format> <g>
<dc:type <path fill="#DCDCDC" d="M22.324,16.253h-1.463V7.762h-2.412V6.489h6.307v1.273h-2.432V16.253z"/>
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> <g opacity="0.35">
</cc:Work> <path d="M24.756,6.489v1.273h-2.432v8.492h-1.463V7.762h-2.412V6.489H24.756 M25.756,5.489h-1h-6.307h-1v1v1.273v1h1h1.412v7.492
</rdf:RDF> v1h1h1.463h1v-1V8.762h1.432h1v-1V6.489V5.489L25.756,5.489z"/>
</metadata> </g>
<g </g>
id="layer1" <g>
inkscape:label="Layer 1" <path fill="#DCDCDC" d="M30.321,13.176h-2.791l-1.008,3.078h-1.577l3.211-9.765h1.537l3.23,9.765h-1.576L30.321,13.176z
inkscape:groupmode="layer" M27.814,11.96h2.222l-1.101-3.667L27.814,11.96z"/>
style="display:inline;"> <g opacity="0.35">
<path <path d="M29.695,6.489l3.23,9.765h-1.576l-1.027-3.078h-2.791l-1.008,3.078h-1.577l3.211-9.765H29.695 M27.814,11.96h2.222
style="fill:#c6c6c6;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.88227361px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" l-1.101-3.667L27.814,11.96 M30.417,5.489h-0.723h-1.537h-0.724l-0.226,0.688l-3.211,9.765l-0.432,1.313h1.381h1.577h0.725
d="M 9.9666405,9.04974 C 23.769718,4.7254765 38.237751,3.6111035 54.063295,9.04974 C 54.063295,9.04974 54.836218,34.437061 50.529417,43.717664 C 47.404249,50.451998 31.938145,58.623196 31.938145,58.623196 C 31.938145,58.623196 16.472039,50.451998 13.346871,43.717664 C 9.0400714,34.437061 9.9666405,9.04974 9.9666405,9.04974 z" l0.226-0.689l0.782-2.389h1.346L30.4,16.57l0.229,0.684h0.72h1.576h1.384l-0.435-1.314l-3.23-9.765L30.417,5.489L30.417,5.489z"
id="rect2577" />
sodipodi:nodetypes="ccscsc" /> </g>
<path </g>
style="fill:url(#linearGradient3631);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.87598264000000003px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" <g>
d="M 11.327299,10.467021 C 24.277974,6.4097985 37.852541,5.3642429 52.700788,10.467021 C 52.700788,10.467021 53.425979,34.286562 49.385142,42.994047 C 46.452968,49.312506 31.941964,56.979096 31.941964,56.979096 C 31.941964,56.979096 17.43096,49.312506 14.498785,42.994047 C 10.457949,34.286562 11.327299,10.467021 11.327299,10.467021 z" <path fill="#DCDCDC" d="M36.935,12.758c-0.096-0.038-0.361-0.171-0.361-0.171v3.667h-1.5V6.489h2.26
id="path4899" c2.793,0,3.818,1.482,3.818,3.04c0,1.463-0.779,2.736-2.375,3.191l2.85,3.021v0.513h-1.404L36.935,12.758z M36.573,7.667v3.686
sodipodi:nodetypes="ccscsc" /> c0.02,0.019,0.531,0.285,1.045,0.285c1.291,0,2.033-0.931,2.033-2.128c0-1.063-0.742-1.843-2.318-1.843H36.573z"/>
<g <g opacity="0.35">
id="g2536" <path d="M37.333,6.489c2.793,0,3.818,1.482,3.818,3.04c0,1.463-0.779,2.736-2.375,3.191l2.85,3.021v0.513h-1.404l-3.287-3.496
transform="translate(-0.1818183,-3.0952293e-8)"> c-0.096-0.038-0.361-0.171-0.361-0.171v3.667h-1.5V6.489H37.333 M37.618,11.637c1.291,0,2.033-0.931,2.033-2.128
<path c0-1.063-0.742-1.843-2.318-1.843h-0.76v3.686C36.593,11.371,37.104,11.637,37.618,11.637 M37.333,5.489h-2.26h-1v1v9.765v1h1
id="path5116" h1.5h1v-1v-1.356l1.92,2.042l0.296,0.315h0.433h1.404h1v-1v-0.513v-0.397l-0.272-0.289l-1.919-2.034
d="M 19.171407,40.786299 C 30.234301,31.241571 40.052824,21.097727 49.109567,10.848139 L 56.860088,7.3217298 L 53.333679,15.072251 C 41.728583,25.484502 32.940246,34.272839 23.395519,45.010411 L 19.171407,40.786299 z M 24.645705,39.536112 L 27.026109,38.450092 L 33.586428,30.59539 L 25.731726,37.155709 L 24.645705,39.536112 z" c1.085-0.778,1.717-2.022,1.717-3.493C42.151,7.665,40.89,5.489,37.333,5.489L37.333,5.489z M37.573,10.635V8.674
style="fill:url(#linearGradient2540);fill-opacity:1;stroke:#000000;stroke-width:0.12633491;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:60.01653385;stroke-opacity:1" /> c1.078,0.07,1.078,0.62,1.078,0.835c0,0.421-0.134,1.128-1.033,1.128C37.604,10.637,37.589,10.637,37.573,10.635L37.573,10.635z"
<path />
sodipodi:nodetypes="ccsccccccss" </g>
id="path5118" </g>
d="M 7.8194102,52.395498 C 12.873471,51.041266 17.927915,42.286993 17.927915,42.286993 C 17.927915,42.286993 16.799748,40.510421 15.777733,39.790457 C 14.755718,39.070494 11.11448,37.487234 11.11448,37.487234 L 15.622027,32.979687 C 19.276736,39.30983 24.814608,44.871954 31.202132,48.559792 L 26.694585,53.067339 C 26.694585,53.067339 25.207982,49.329444 24.488018,48.307428 C 23.768054,47.285413 21.894826,46.253904 21.894826,46.253904 C 21.894826,46.253904 13.138788,51.314932 11.786321,56.362409 C 11.350723,57.988079 6.1937392,52.831094 7.8194102,52.395498 z" <g>
style="opacity:1;fill:url(#linearGradient2542);fill-opacity:1;stroke:#000000;stroke-width:0.12633491;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:60.01653385;stroke-opacity:1" /> <path fill="#DCDCDC" d="M46.909,16.253h-1.463V7.762h-2.412V6.489h6.307v1.273h-2.432V16.253z"/>
</g> <g opacity="0.35">
</g> <path d="M49.341,6.489v1.273h-2.432v8.492h-1.463V7.762h-2.412V6.489H49.341 M50.341,5.489h-1h-6.307h-1v1v1.273v1h1h1.412v7.492
</svg> v1h1h1.463h1v-1V8.762h1.432h1v-1V6.489V5.489L50.341,5.489z"/>
</g>
</g>
</g>
<g>
<g>
<path fill="#DCDCDC" d="M7.22,56.184c-3.477,0-4.616-3.344-4.616-6.27c0-2.793,1.368-6.27,4.654-6.27
c1.007,0,2.223,0.266,3.077,0.816l-0.551,0.988c-0.798-0.437-1.614-0.607-2.526-0.607c-2.261,0-3.135,3.362-3.135,5.148
c0,2.014,0.646,4.958,3.173,4.958c0.854,0,1.899-0.267,2.583-0.778l0.646,0.949C9.67,55.803,8.303,56.184,7.22,56.184z"/>
<g opacity="0.35">
<path d="M7.258,43.645c1.007,0,2.223,0.266,3.077,0.816l-0.551,0.988c-0.798-0.437-1.614-0.607-2.526-0.607
c-2.261,0-3.135,3.362-3.135,5.148c0,2.014,0.646,4.958,3.173,4.958c0.854,0,1.899-0.267,2.583-0.778l0.646,0.949
c-0.855,0.684-2.223,1.064-3.306,1.064c-3.477,0-4.616-3.344-4.616-6.27C2.604,47.121,3.972,43.645,7.258,43.645 M7.258,42.645
c-3.712,0-5.654,3.657-5.654,7.27c0,4.416,2.205,7.27,5.616,7.27c1.412,0,2.955-0.504,3.93-1.283l0.724-0.578l-0.521-0.766
l-0.646-0.949l-0.589-0.864L9.28,53.369c-0.456,0.341-1.271,0.579-1.984,0.579c-2.068,0-2.173-3.297-2.173-3.958
c0-1.447,0.733-4.148,2.135-4.148c0.803,0,1.434,0.149,2.046,0.484l0.871,0.477l0.483-0.867l0.551-0.988l0.457-0.818
l-0.788-0.509C9.929,43.01,8.576,42.645,7.258,42.645L7.258,42.645z"/>
</g>
</g>
<g>
<path fill="#DCDCDC" d="M12.236,50.959c0-2.318,1.064-5.129,3.572-5.129c2.545,0,3.571,2.85,3.571,5.186
c0,2.337-1.026,5.187-3.571,5.187C13.243,56.202,12.236,53.295,12.236,50.959z M13.719,51.111c0,1.709,0.418,3.875,2.09,3.875
c1.69,0,2.07-2.242,2.07-3.971c0-1.748-0.437-3.971-2.07-3.971C14.137,47.045,13.719,49.324,13.719,51.111z"/>
<g opacity="0.35">
<path d="M15.809,45.83c2.545,0,3.571,2.85,3.571,5.186c0,2.337-1.026,5.187-3.571,5.187c-2.565,0-3.572-2.907-3.572-5.243
C12.236,48.641,13.301,45.83,15.809,45.83 M15.809,54.986c1.69,0,2.07-2.242,2.07-3.971c0-1.748-0.437-3.971-2.07-3.971
c-1.672,0-2.09,2.279-2.09,4.066C13.719,52.82,14.137,54.986,15.809,54.986 M15.809,44.83c-3.002,0-4.572,3.083-4.572,6.129
c0,3.007,1.431,6.243,4.572,6.243c3.141,0,4.571-3.207,4.571-6.187S18.949,44.83,15.809,44.83L15.809,44.83z M15.809,53.986
c-0.86,0-1.09-1.808-1.09-2.875c0-1.477,0.341-3.066,1.09-3.066c0.735,0,1.07,1.54,1.07,2.971
C16.879,52.386,16.599,53.986,15.809,53.986L15.809,53.986z"/>
</g>
</g>
<g>
<path fill="#DCDCDC" d="M30.19,48.889l-2.413,7.01h-1.254l-2.735-7.125v0.494v6.631h-1.481v-9.766h1.861l2.546,6.574
c0.019,0.057,0.171,0.398,0.398,1.158c0.229-0.798,0.343-1.14,0.343-1.14l2.355-6.593h1.861v9.766H30.19V48.889z"/>
<g opacity="0.35">
<path d="M31.672,46.133v9.766H30.19v-7.01l-2.413,7.01h-1.254l-2.735-7.125v0.494v6.631h-1.481v-9.766h1.861l2.546,6.574
c0.019,0.057,0.171,0.398,0.398,1.158c0.229-0.798,0.343-1.14,0.343-1.14l2.355-6.593H31.672 M32.672,45.133h-1h-1.861h-0.705
l-0.237,0.663l-1.804,5.049l-1.964-5.073l-0.248-0.639h-0.685h-1.861h-1v1v9.766v1h1h1.481h1v-1v-1.73l0.802,2.089l0.247,0.642
h0.687h1.254h0.713l0.232-0.675l0.468-1.357v1.032v1h1h1.481h1v-1v-9.766V45.133L32.672,45.133z"/>
</g>
</g>
<g>
<path fill="#DCDCDC" d="M35.093,55.784v-9.651h2.564c0.607,0,1.159,0.058,1.614,0.229c0.988,0.38,1.539,1.216,1.539,2.279
c0,0.381-0.209,1.045-0.494,1.387c-0.209,0.229-0.418,0.399-0.74,0.608c1.292,0.36,1.785,1.292,1.785,2.413
c0,1.956-1.538,3.153-3.666,3.153C36.821,56.202,35.396,55.859,35.093,55.784z M37.639,47.273h-1.045v2.887l1.025,0.02
c0.931,0.02,1.71-0.513,1.71-1.558c0-0.569-0.267-0.969-0.589-1.121C38.455,47.35,38.075,47.273,37.639,47.273z M37.581,51.357
h-0.987v3.42c0.284,0.076,0.74,0.171,1.063,0.171c1.292,0,2.204-0.627,2.204-1.899c0-0.57-0.152-1.064-0.627-1.387
C38.911,51.434,38.417,51.357,37.581,51.357z"/>
<g opacity="0.35">
<path d="M37.657,46.133c0.607,0,1.159,0.058,1.614,0.229c0.988,0.38,1.539,1.216,1.539,2.279c0,0.381-0.209,1.045-0.494,1.387
c-0.209,0.229-0.418,0.399-0.74,0.608c1.292,0.36,1.785,1.292,1.785,2.413c0,1.956-1.538,3.153-3.666,3.153
c-0.874,0-2.299-0.343-2.603-0.418v-9.651H37.657 M37.668,50.181c0.909,0,1.661-0.532,1.661-1.559
c0-0.569-0.267-0.969-0.589-1.121c-0.285-0.151-0.665-0.228-1.102-0.228h-1.045v2.887l1.025,0.02
C37.636,50.18,37.652,50.181,37.668,50.181 M37.657,54.948c1.292,0,2.204-0.627,2.204-1.899c0-0.57-0.152-1.064-0.627-1.387
c-0.323-0.229-0.817-0.305-1.653-0.305h-0.987v3.42C36.878,54.854,37.334,54.948,37.657,54.948 M37.657,45.133h-2.564h-1v1v9.651
v0.782l0.76,0.188c0.543,0.135,1.907,0.447,2.843,0.447c2.747,0,4.666-1.708,4.666-4.153c0-1.105-0.388-2.012-1.099-2.634
c0.363-0.574,0.548-1.298,0.548-1.774c0-1.487-0.815-2.688-2.181-3.213C39.092,45.226,38.467,45.133,37.657,45.133L37.657,45.133
z M37.594,53.946v-1.589c0.806,0.001,1.012,0.085,1.063,0.121c0.081,0.056,0.204,0.139,0.204,0.57c0,0.27,0,0.899-1.204,0.899
C37.638,53.948,37.617,53.947,37.594,53.946L37.594,53.946z"/>
</g>
</g>
<g>
<path fill="#DCDCDC" d="M48.277,52.82h-2.792l-1.007,3.078h-1.577l3.211-9.766h1.538l3.229,9.766h-1.576L48.277,52.82z
M45.77,51.604h2.223l-1.102-3.667L45.77,51.604z"/>
<g opacity="0.35">
<path d="M47.65,46.133l3.229,9.766h-1.576l-1.026-3.078h-2.792l-1.007,3.078h-1.577l3.211-9.766H47.65 M45.77,51.604h2.223
l-1.102-3.667L45.77,51.604 M48.373,45.133H47.65h-1.538h-0.724l-0.227,0.688l-3.211,9.766l-0.432,1.313h1.382h1.577h0.725
l0.226-0.689l0.781-2.389h1.347l0.799,2.395l0.228,0.684h0.721h1.576h1.384l-0.435-1.314L48.6,45.818L48.373,45.133
L48.373,45.133z"/>
</g>
</g>
<g>
<path fill="#DCDCDC" d="M54.966,55.898h-1.463v-8.492h-2.412v-1.273h6.307v1.273h-2.432V55.898z"/>
<g opacity="0.35">
<path d="M57.397,46.133v1.273h-2.432v8.492h-1.463v-8.492h-2.412v-1.273H57.397 M58.397,45.133h-1h-6.307h-1v1v1.273v1h1h1.412
v7.492v1h1h1.463h1v-1v-7.492h1.432h1v-1v-1.273V45.133L58.397,45.133z"/>
</g>
</g>
</g>
<g>
<g>
<path fill="#DCDCDC" d="M42.441,32.354L30,29.014l-12.441,3.339v5.506l-5.909-3.965v-2.937c0-0.807,0.293-1.577,0.881-2.311
c0.587-0.733,1.284-1.211,2.092-1.432L30,23.068l15.378,4.147c0.807,0.221,1.504,0.685,2.092,1.395
c0.587,0.71,0.881,1.492,0.881,2.348v3.009l-5.909,3.965V32.354z"/>
<g opacity="0.35">
<path d="M30,23.068l15.378,4.147c0.807,0.221,1.504,0.685,2.092,1.395c0.587,0.71,0.881,1.492,0.881,2.348v3.009l-5.909,3.965
v-5.578L30,29.014l-12.441,3.339v5.506l-5.909-3.965v-2.937c0-0.807,0.293-1.577,0.881-2.311
c0.587-0.733,1.284-1.211,2.092-1.432L30,23.068 M30,21.515l-0.391,0.105l-15.377,4.147c-1.12,0.306-2.084,0.959-2.872,1.942
c-0.803,1.003-1.21,2.096-1.21,3.249v2.937v0.8l0.664,0.445l5.909,3.965l2.336,1.567v-2.813v-4.355L30,30.567l10.942,2.937v4.428
v2.813l2.336-1.567l5.909-3.965l0.664-0.445v-0.8v-3.009c0-1.208-0.412-2.32-1.225-3.304c-0.785-0.949-1.745-1.583-2.853-1.886
L30.39,21.62L30,21.515L30,21.515z"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 9.1 KiB

After

Width:  |  Height:  |  Size: 26 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View file

@ -1,135 +1,79 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) --> <!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
xmlns:dc="http://purl.org/dc/elements/1.1/" <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
xmlns:cc="http://creativecommons.org/ns#" width="60px" height="60px" viewBox="0 0 60 60" enable-background="new 0 0 60 60" xml:space="preserve">
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" <radialGradient id="SVGID_1_" cx="30" cy="30" r="30" gradientUnits="userSpaceOnUse">
xmlns:svg="http://www.w3.org/2000/svg" <stop offset="0" style="stop-color:#0087FF"/>
xmlns="http://www.w3.org/2000/svg" <stop offset="1" style="stop-color:#191919"/>
xmlns:xlink="http://www.w3.org/1999/xlink" </radialGradient>
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" <path fill="url(#SVGID_1_)" d="M60,51.818C60,56.337,56.337,60,51.818,60H8.182C3.663,60,0,56.337,0,51.818V8.182
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" C0,3.663,3.663,0,8.182,0h43.637C56.337,0,60,3.663,60,8.182V51.818z"/>
width="64px" <g>
height="64px" <g>
id="svg2385" <path fill="#FFFFFF" d="M36.672,50.172h-3.938l-1.42,4.341h-2.225l4.528-13.772h2.171l4.555,13.772h-2.224L36.672,50.172z
sodipodi:version="0.32" M33.135,48.457h3.135l-1.554-5.171L33.135,48.457z"/>
inkscape:version="0.46" <g opacity="0.35">
sodipodi:docname="icon_mainphase1.svg" <path d="M35.788,40.74l4.555,13.772h-2.224l-1.447-4.341h-3.938l-1.42,4.341h-2.225l4.528-13.772H35.788 M33.135,48.457h3.135
inkscape:output_extension="org.inkscape.output.svg.inkscape"> l-1.554-5.171L33.135,48.457 M36.872,39.24h-1.084h-2.171h-1.086l-0.339,1.031l-4.528,13.772l-0.647,1.969h2.072h2.225h1.088
<defs l0.338-1.033l1.082-3.308h1.77l1.105,3.315l0.342,1.025h1.081h2.224h2.076l-0.652-1.971L37.212,40.27L36.872,39.24L36.872,39.24z
id="defs2387"> "/>
<linearGradient </g>
id="linearGradient3177"> </g>
<stop <g>
style="stop-color:#ffffff;stop-opacity:1;" <path fill="#FFFFFF" d="M42.445,40.74h2.197v13.772h-2.197V40.74z"/>
offset="0" <g opacity="0.35">
id="stop3179" /> <path d="M44.643,40.74v13.772h-2.197V40.74H44.643 M46.143,39.24h-1.5h-2.197h-1.5v1.5v13.772v1.5h1.5h2.197h1.5v-1.5V40.74
<stop V39.24L46.143,39.24z"/>
style="stop-color:#0044aa;stop-opacity:0;" </g>
offset="1" </g>
id="stop3181" /> <g>
</linearGradient> <path fill="#FFFFFF" d="M50.27,44.224c0.026,0.696,0.054,0.857,0.054,0.991v9.298h-2.117V40.714h2.626l4.395,9.565
<linearGradient c-0.027-0.697-0.027-0.857-0.027-0.965v-8.601h2.117v13.799h-2.09L50.27,44.224z"/>
id="linearGradient3167"> <g opacity="0.35">
<stop <path d="M57.316,40.714v13.799h-2.09L50.27,44.224c0.026,0.696,0.054,0.857,0.054,0.991v9.298h-2.117V40.714h2.626l4.395,9.565
style="stop-color:#0044aa;stop-opacity:1;" c-0.027-0.697-0.027-0.857-0.027-0.965v-8.601H57.316 M58.816,39.214h-1.5h-2.117h-1.5v1.5v2.647l-1.504-3.273l-0.401-0.874
offset="0" h-0.962h-2.626h-1.5v1.5v13.799v1.5h1.5h2.117h1.5v-1.5v-3.608l2.052,4.26l0.409,0.849h0.942h2.09h1.5v-1.5V40.714V39.214
id="stop3169" /> L58.816,39.214z"/>
<stop </g>
style="stop-color:#00122f;stop-opacity:1;" </g>
offset="1" </g>
id="stop3171" /> <g>
</linearGradient> <g>
<inkscape:perspective <path fill="#FFFFFF" d="M3.311,54.5v-1.977c2.288-0.26,2.288-0.52,2.288-2.027V21.687c0-1.508,0-1.82-2.288-2.028v-1.976h5.096
sodipodi:type="inkscape:persp3d" l6.344,5.46l6.344-5.46h5.096v1.976c-2.288,0.208-2.288,0.52-2.288,2.028v28.809c0,1.508,0,1.768,2.288,2.027V54.5h-7.02v-1.977
inkscape:vp_x="0 : 32 : 1" c2.132-0.26,2.132-0.623,2.132-2.027V20.439l-6.552,5.824l-6.552-5.824v30.057c0,1.404,0,1.768,2.132,2.027V54.5H3.311z"/>
inkscape:vp_y="0 : 1000 : 0" <g opacity="0.35">
inkscape:vp_z="64 : 32 : 1" <path d="M26.191,17.683v1.976c-2.288,0.208-2.288,0.52-2.288,2.028v28.809c0,1.508,0,1.768,2.288,2.027V54.5h-7.02v-1.977
inkscape:persp3d-origin="32 : 21.333333 : 1" c2.132-0.26,2.132-0.623,2.132-2.027V20.439l-6.552,5.824l-6.552-5.824v30.057c0,1.404,0,1.768,2.132,2.027V54.5h-7.02v-1.977
id="perspective2393" /> c2.288-0.26,2.288-0.52,2.288-2.027V21.687c0-1.508,0-1.82-2.288-2.028v-1.976h5.096l6.344,5.46l6.344-5.46H26.191
<linearGradient M27.691,16.183h-1.5h-5.096h-0.557l-0.422,0.363l-5.366,4.618l-5.366-4.618l-0.422-0.363H8.407H3.311h-1.5v1.5v1.976v1.37
inkscape:collect="always" l1.364,0.124c0.453,0.042,0.74,0.082,0.921,0.115c0.003,0.132,0.003,0.284,0.003,0.419v28.809c0,0.129,0,0.272-0.002,0.399
xlink:href="#linearGradient3167" c-0.188,0.037-0.485,0.084-0.955,0.138l-1.331,0.151v1.339V54.5V56h1.5h7.02h1.5v-1.5v-1.977v-1.328l-1.318-0.161
id="linearGradient3173" c-0.398-0.048-0.651-0.094-0.811-0.13c-0.003-0.127-0.003-0.276-0.003-0.408V23.779l4.056,3.605l0.997,0.886l0.997-0.886
x1="31.09091" l4.056-3.605v26.717c0,0.132,0,0.281-0.003,0.408c-0.16,0.036-0.413,0.082-0.811,0.13l-1.318,0.161v1.328V54.5V56h1.5h7.02h1.5
y1="5.2455459" v-1.5v-1.977v-1.339l-1.331-0.151c-0.47-0.054-0.768-0.101-0.955-0.138c-0.002-0.127-0.002-0.271-0.002-0.399V21.687
x2="31.09091" c0-0.136,0-0.288,0.003-0.419c0.181-0.034,0.468-0.074,0.921-0.115l1.364-0.124v-1.37v-1.976V16.183L27.691,16.183z"/>
y2="62.754456" </g>
gradientUnits="userSpaceOnUse" /> </g>
<linearGradient </g>
inkscape:collect="always" <g>
xlink:href="#linearGradient3177" <g>
id="linearGradient3183" <path fill="#FFFFFF" d="M37.323,7.689l6.981-3.386h0.683v24.202c0,1.592,0.07,2.585,0.21,2.979s0.42,0.7,0.84,0.919
x1="38.090908" s1.277,0.337,2.572,0.354v0.787H37.848v-0.787c1.348-0.018,2.218-0.132,2.612-0.342c0.394-0.21,0.669-0.485,0.826-0.826
y1="12.35777" c0.158-0.342,0.236-1.37,0.236-3.084V13.018c0-2.083-0.07-3.421-0.21-4.016c-0.104-0.438-0.289-0.765-0.551-0.984
x2="38.090908" c-0.263-0.219-0.578-0.328-0.945-0.328c-0.525,0-1.251,0.219-2.179,0.656L37.323,7.689z"/>
y2="33.096775" <g opacity="0.35">
gradientUnits="userSpaceOnUse" /> <path d="M44.987,4.303v24.202c0,1.592,0.07,2.585,0.21,2.979s0.42,0.7,0.84,0.919s1.277,0.337,2.572,0.354v0.787H37.848v-0.787
<filter c1.348-0.018,2.218-0.132,2.612-0.342c0.394-0.21,0.669-0.485,0.826-0.826c0.158-0.342,0.236-1.37,0.236-3.084V13.018
inkscape:collect="always" c0-2.083-0.07-3.421-0.21-4.016c-0.104-0.438-0.289-0.765-0.551-0.984c-0.263-0.219-0.578-0.328-0.945-0.328
id="filter3193"> c-0.525,0-1.251,0.219-2.179,0.656l-0.314-0.656l6.981-3.386H44.987 M45.987,3.303h-1h-0.683h-0.229l-0.207,0.1l-6.981,3.386
<feGaussianBlur l-0.896,0.435l0.431,0.897l0.314,0.656l0.429,0.896l0.898-0.423c1.036-0.488,1.543-0.561,1.753-0.561
inkscape:collect="always" c0.167,0,0.248,0.049,0.306,0.097c0.09,0.075,0.166,0.231,0.218,0.448c0.067,0.288,0.183,1.168,0.183,3.784v15.487
stdDeviation="0.15669667" c0,2.142-0.127,2.612-0.152,2.685c-0.016,0.031-0.087,0.187-0.381,0.344c-0.038,0.02-0.435,0.201-2.154,0.224l-0.987,0.013v0.987
id="feGaussianBlur3195" /> v0.787v1h1h10.762h1v-1v-0.787v-0.986l-0.986-0.014c-1.623-0.021-2.054-0.205-2.124-0.241c-0.249-0.13-0.323-0.265-0.359-0.366
</filter> c-0.025-0.072-0.152-0.54-0.152-2.645V4.303V3.303L45.987,3.303z"/>
</defs> </g>
<sodipodi:namedview </g>
id="base" </g>
pagecolor="#ffffff" </svg>
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.5"
inkscape:cx="12.016282"
inkscape:cy="30.70745"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1280"
inkscape:window-height="725"
inkscape:window-x="0"
inkscape:window-y="25" />
<metadata
id="metadata2390">
<rdf:RDF>
<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>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<path
sodipodi:type="arc"
style="fill:url(#linearGradient3173);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.41800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path2395"
sodipodi:cx="31.09091"
sodipodi:cy="34"
sodipodi:rx="28.545454"
sodipodi:ry="28.545454"
d="M 59.636364,34 A 28.545454,28.545454 0 1 1 2.5454559,34 A 28.545454,28.545454 0 1 1 59.636364,34 z"
transform="translate(0.90909,-2)" />
<path
sodipodi:type="arc"
style="fill:url(#linearGradient3183);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.41800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3193)"
id="path3175"
sodipodi:cx="38.090908"
sodipodi:cy="22.727272"
sodipodi:rx="22.272728"
sodipodi:ry="10.181818"
d="M 60.363636,22.727272 A 22.272728,10.181818 0 1 1 15.81818,22.727272 A 22.272728,10.181818 0 1 1 60.363636,22.727272 z"
transform="matrix(0.8292896,0,0,1.0283566,0.4116061,-8.3717394)" />
<path
style="font-size:72px;font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:URW Chancery L;-inkscape-font-specification:URW Chancery L Bold Italic"
d="M 17.407273,50.18182 L 21.943273,50.18182 C 21.943273,50.18182 29.791273,50.10982 29.791273,50.10982 C 29.791273,50.10982 38.071273,50.18182 38.071273,50.18182 L 41.023273,50.18182 L 42.751273,48.23782 C 40.591275,48.16582 36.703272,47.73382 35.335273,47.44582 C 34.183274,47.15782 33.463273,46.365819 33.463273,45.28582 C 33.463273,44.493821 33.607273,43.413819 33.967273,42.26182 C 34.183273,41.397821 34.903274,38.085815 35.983273,33.04582 C 39.07927,19.437834 40.735274,12.597816 41.887273,8.2778199 L 39.439273,9.5738199 C 34.471278,12.237817 34.327271,12.309821 32.023273,13.38982 C 30.655274,14.037819 28.27927,15.045821 24.967273,16.55782 L 27.127273,17.63782 C 28.855271,17.06182 29.719274,16.701819 31.015273,16.19782 L 33.175273,15.33382 C 33.463273,15.18982 34.111274,14.97382 35.191273,14.61382 L 28.351273,44.06182 C 27.631274,47.085817 27.559271,47.22982 25.255273,47.51782 C 22.231276,47.87782 20.287272,48.09382 19.495273,48.23782 L 17.407273,50.18182"
id="text3217" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

View file

@ -1,135 +1,235 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) --> <!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
xmlns:dc="http://purl.org/dc/elements/1.1/" <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
xmlns:cc="http://creativecommons.org/ns#" width="60px" height="60px" viewBox="0 0 60 60" enable-background="new 0 0 60 60" xml:space="preserve">
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" <radialGradient id="SVGID_1_" cx="30" cy="30" r="30" gradientUnits="userSpaceOnUse">
xmlns:svg="http://www.w3.org/2000/svg" <stop offset="0" style="stop-color:#0087FF"/>
xmlns="http://www.w3.org/2000/svg" <stop offset="1" style="stop-color:#191919"/>
xmlns:xlink="http://www.w3.org/1999/xlink" </radialGradient>
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" <path fill="url(#SVGID_1_)" d="M60,51.818C60,56.337,56.337,60,51.818,60H8.182C3.663,60,0,56.337,0,51.818V8.182
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" C0,3.663,3.663,0,8.182,0h43.637C56.337,0,60,3.663,60,8.182V51.818z"/>
width="64px" <g>
height="64px" <g>
id="svg2385" <path fill="#FFFFFF" d="M36.672,50.172h-3.938l-1.42,4.341h-2.225l4.528-13.772h2.171l4.555,13.772h-2.224L36.672,50.172z
sodipodi:version="0.32" M33.135,48.457h3.135l-1.554-5.171L33.135,48.457z"/>
inkscape:version="0.46" <g opacity="0.35">
sodipodi:docname="icon_mainphase2.svg" <path d="M35.788,40.74l4.555,13.772h-2.224l-1.447-4.341h-3.938l-1.42,4.341h-2.225l4.528-13.772H35.788 M33.135,48.457h3.135
inkscape:output_extension="org.inkscape.output.svg.inkscape"> l-1.554-5.171L33.135,48.457 M36.872,39.24h-1.084h-2.171h-1.086l-0.339,1.031l-4.528,13.772l-0.647,1.969h2.072h2.225h1.088
<defs l0.338-1.033l1.082-3.308h1.77l1.105,3.315l0.342,1.025h1.081h2.224h2.076l-0.652-1.971L37.212,40.27L36.872,39.24L36.872,39.24z
id="defs2387"> "/>
<linearGradient </g>
id="linearGradient3177"> </g>
<stop <g>
style="stop-color:#ffffff;stop-opacity:1;" <path fill="#FFFFFF" d="M42.445,40.74h2.197v13.772h-2.197V40.74z"/>
offset="0" <g opacity="0.35">
id="stop3179" /> <path d="M44.643,40.74v13.772h-2.197V40.74H44.643 M46.143,39.24h-1.5h-2.197h-1.5v1.5v13.772v1.5h1.5h2.197h1.5v-1.5V40.74
<stop V39.24L46.143,39.24z"/>
style="stop-color:#0044aa;stop-opacity:0;" </g>
offset="1" </g>
id="stop3181" /> <g>
</linearGradient> <path fill="#FFFFFF" d="M50.27,44.224c0.026,0.696,0.054,0.857,0.054,0.991v9.298h-2.117V40.714h2.626l4.395,9.565
<linearGradient c-0.027-0.697-0.027-0.857-0.027-0.965v-8.601h2.117v13.799h-2.09L50.27,44.224z"/>
id="linearGradient3167"> <g opacity="0.35">
<stop <path d="M57.316,40.714v13.799h-2.09L50.27,44.224c0.026,0.696,0.054,0.857,0.054,0.991v9.298h-2.117V40.714h2.626l4.395,9.565
style="stop-color:#0044aa;stop-opacity:1;" c-0.027-0.697-0.027-0.857-0.027-0.965v-8.601H57.316 M58.816,39.214h-1.5h-2.117h-1.5v1.5v2.647l-1.504-3.273l-0.401-0.874
offset="0" h-0.962h-2.626h-1.5v1.5v13.799v1.5h1.5h2.117h1.5v-1.5v-3.608l2.052,4.26l0.409,0.849h0.942h2.09h1.5v-1.5V40.714V39.214
id="stop3169" /> L58.816,39.214z"/>
<stop </g>
style="stop-color:#00122f;stop-opacity:1;" </g>
offset="1" </g>
id="stop3171" /> <g display="none">
</linearGradient> <g display="inline">
<inkscape:perspective <path fill="#FFFFFF" d="M29.857,48.793c-1.015,0-2.135-0.525-2.275-0.595v6.896h-2.765V37.102h4.166
sodipodi:type="inkscape:persp3d" c5.18,0,7.036,2.73,7.036,5.601c0,1.855-0.665,3.536-1.96,4.656C33.007,48.268,31.572,48.793,29.857,48.793z M27.582,39.272v6.79
inkscape:vp_x="0 : 32 : 1" c0,0,1.085,0.525,1.925,0.525c2.38,0,3.745-1.715,3.745-3.921c0-1.96-1.365-3.395-4.27-3.395H27.582z"/>
inkscape:vp_y="0 : 1000 : 0" <g opacity="0.35">
inkscape:vp_z="64 : 32 : 1" <path d="M28.982,37.102c5.18,0,7.036,2.73,7.036,5.601c0,1.855-0.665,3.536-1.96,4.656c-1.051,0.909-2.485,1.435-4.201,1.435
inkscape:persp3d-origin="32 : 21.333333 : 1" c-1.015,0-2.135-0.525-2.275-0.595v6.896h-2.765V37.102H28.982 M29.507,46.588c2.38,0,3.745-1.715,3.745-3.921
id="perspective2393" /> c0-1.96-1.365-3.395-4.27-3.395h-1.4v6.79C27.582,46.063,28.667,46.588,29.507,46.588 M28.982,35.602h-4.166h-1.5v1.5v17.992v1.5
<linearGradient h1.5h2.765h1.5v-1.5v-4.862c0.252,0.038,0.514,0.062,0.775,0.062c2.029,0,3.821-0.622,5.182-1.8
inkscape:collect="always" c1.599-1.383,2.479-3.439,2.479-5.791C37.518,39.27,35.275,35.602,28.982,35.602L28.982,35.602z M29.082,45.019v-4.245
xlink:href="#linearGradient3167" c1.772,0.022,2.67,0.659,2.67,1.894c0,0.568-0.162,2.421-2.245,2.421C29.395,45.088,29.244,45.061,29.082,45.019L29.082,45.019z"
id="linearGradient3173" />
x1="31.09091" </g>
y1="5.2455459" </g>
x2="31.09091" </g>
y2="62.754456" <g display="none">
gradientUnits="userSpaceOnUse" /> <g display="inline">
<linearGradient <path fill="#FFFFFF" d="M19.689,45.317c0,6.136-1.352,9.776-7.488,9.776c-5.876,0-7.176-3.641-7.176-9.776V21.656
inkscape:collect="always" c0-1.508,0-1.82-1.977-2.028v-1.976h6.604v1.976c-2.028,0.208-2.028,0.52-2.028,2.028v23.869c0,4.68,0.937,7.072,4.681,7.072
xlink:href="#linearGradient3177" c3.848,0,4.784-2.393,4.784-7.072V21.656c0-1.508,0-1.82-2.028-2.028v-1.976h6.604v1.976c-1.977,0.208-1.977,0.52-1.977,2.028
id="linearGradient3183" V45.317z"/>
x1="38.090908" <g opacity="0.35">
y1="12.35777" <path d="M21.666,17.652v1.976c-1.977,0.208-1.977,0.52-1.977,2.028v23.661c0,6.136-1.352,9.776-7.488,9.776
x2="38.090908" c-5.876,0-7.176-3.641-7.176-9.776V21.656c0-1.508,0-1.82-1.977-2.028v-1.976h6.604v1.976c-2.028,0.208-2.028,0.52-2.028,2.028
y2="33.096775" v23.869c0,4.68,0.937,7.072,4.681,7.072c3.848,0,4.784-2.393,4.784-7.072V21.656c0-1.508,0-1.82-2.028-2.028v-1.976H21.666
gradientUnits="userSpaceOnUse" /> M23.166,16.152h-1.5h-6.604h-1.5v1.5v1.976v1.354l1.347,0.138c0.314,0.032,0.531,0.063,0.678,0.09
<filter c0.003,0.14,0.003,0.301,0.003,0.446v23.869c0,5.197-1.241,5.572-3.284,5.572c-1.921,0-3.181-0.388-3.181-5.572V21.656
inkscape:collect="always" c0-0.145,0-0.306,0.003-0.446c0.147-0.026,0.364-0.058,0.678-0.09l1.347-0.138v-1.354v-1.976v-1.5h-1.5H3.049h-1.5v1.5v1.976
id="filter3193"> v1.351l1.343,0.141c0.289,0.03,0.491,0.06,0.631,0.084c0.003,0.142,0.003,0.306,0.003,0.452v23.661
<feGaussianBlur c0,5.576,1.031,11.276,8.676,11.276c7.92,0,8.988-5.7,8.988-11.276V21.656c0-0.146,0-0.31,0.003-0.452
inkscape:collect="always" c0.14-0.025,0.342-0.054,0.631-0.084l1.343-0.141v-1.351v-1.976V16.152L23.166,16.152z"/>
stdDeviation="0.15669667" </g>
id="feGaussianBlur3195" /> </g>
</filter> </g>
</defs> <g display="none">
<sodipodi:namedview <g display="inline">
id="base" <path d="M24.317,48.141c0.015,0.403,0.03,0.496,0.03,0.574v5.379h-1.225v-7.984h1.52l2.543,5.535
pagecolor="#ffffff" c-0.016-0.403-0.016-0.496-0.016-0.559v-4.977h1.225v7.984h-1.209L24.317,48.141z"/>
bordercolor="#666666" <g opacity="0.35">
borderopacity="1.0" <path fill="#FFFFFF" d="M28.395,46.109v7.984h-1.209l-2.868-5.953c0.015,0.403,0.03,0.496,0.03,0.574v5.379h-1.225v-7.984h1.52
inkscape:pageopacity="0.0" l2.543,5.535c-0.016-0.403-0.016-0.496-0.016-0.559v-4.977H28.395 M29.395,45.109h-1H27.17h-1v1v0.929l-0.619-1.346l-0.268-0.583
inkscape:pageshadow="2" h-0.641h-1.52h-1v1v7.984v1h1h1.225h1v-1v-1.511l0.937,1.944l0.272,0.566h0.628h1.209h1v-1v-7.984V45.109L29.395,45.109z"/>
inkscape:zoom="5.5" </g>
inkscape:cx="12.016282" </g>
inkscape:cy="30.70745" <g display="inline">
inkscape:current-layer="layer1" <path d="M33.431,54.094h-1.193v-6.93h-1.97v-1.039h5.147v1.039h-1.984V54.094z"/>
showgrid="true" <g opacity="0.35">
inkscape:document-units="px" <path fill="#FFFFFF" d="M35.415,46.125v1.039h-1.984v6.93h-1.193v-6.93h-1.97v-1.039H35.415 M36.415,45.125h-1h-5.147h-1v1v1.039
inkscape:grid-bbox="true" v1h1h0.97v5.93v1h1h1.193h1v-1v-5.93h0.984h1v-1v-1.039V45.125L36.415,45.125z"/>
inkscape:window-width="1280" </g>
inkscape:window-height="725" </g>
inkscape:window-x="0" <g display="inline">
inkscape:window-y="25" /> <path d="M40.332,51.582h-2.279l-0.821,2.512h-1.287l2.62-7.969h1.256l2.636,7.969h-1.287L40.332,51.582z M38.285,50.59H40.1
<metadata L39.2,47.598L38.285,50.59z"/>
id="metadata2390"> <g opacity="0.35">
<rdf:RDF> <path fill="#FFFFFF" d="M39.82,46.125l2.636,7.969h-1.287l-0.837-2.512h-2.279l-0.821,2.512h-1.287l2.62-7.969H39.82
<cc:Work M38.285,50.59H40.1L39.2,47.598L38.285,50.59 M40.543,45.125H39.82h-1.256h-0.724l-0.227,0.688l-2.62,7.969l-0.432,1.313h1.382
rdf:about=""> h1.287h0.726l0.225-0.689l0.597-1.822h0.833l0.609,1.828l0.228,0.684h0.721h1.287h1.384l-0.435-1.314l-2.636-7.969L40.543,45.125
<dc:format>image/svg+xml</dc:format> L40.543,45.125z"/>
<dc:type </g>
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> </g>
</cc:Work> <g display="inline">
</rdf:RDF> <path d="M46.438,51.303c-0.45,0-0.946-0.232-1.008-0.264v3.055h-1.225v-7.969h1.845c2.294,0,3.116,1.209,3.116,2.48
</metadata> c0,0.822-0.295,1.566-0.868,2.063C47.834,51.07,47.198,51.303,46.438,51.303z M45.431,47.086v3.008c0,0,0.48,0.232,0.853,0.232
<g c1.055,0,1.659-0.76,1.659-1.736c0-0.867-0.604-1.504-1.892-1.504H45.431z"/>
id="layer1" <g opacity="0.35">
inkscape:label="Layer 1" <path fill="#FFFFFF" d="M46.051,46.125c2.294,0,3.116,1.209,3.116,2.48c0,0.822-0.295,1.566-0.868,2.063
inkscape:groupmode="layer"> c-0.465,0.402-1.101,0.635-1.86,0.635c-0.45,0-0.946-0.232-1.008-0.264v3.055h-1.225v-7.969H46.051 M46.283,50.326
<path c1.055,0,1.659-0.76,1.659-1.736c0-0.867-0.604-1.504-1.892-1.504h-0.62v3.008C45.431,50.094,45.911,50.326,46.283,50.326
sodipodi:type="arc" M46.051,45.125h-1.845h-1v1v7.969v1h1h1.225h1v-1v-1.791c0.003,0,0.005,0,0.008,0c0.981,0,1.851-0.304,2.515-0.879
style="fill:url(#linearGradient3173);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.41800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" c0.783-0.677,1.214-1.678,1.214-2.818C50.167,47,49.089,45.125,46.051,45.125L46.051,45.125z M46.431,49.315v-1.202
id="path2395" c0.512,0.086,0.512,0.352,0.512,0.477C46.942,49.021,46.771,49.264,46.431,49.315L46.431,49.315z"/>
sodipodi:cx="31.09091" </g>
sodipodi:cy="34" </g>
sodipodi:rx="28.545454" </g>
sodipodi:ry="28.545454" <g display="none">
d="M 59.636364,34 A 28.545454,28.545454 0 1 1 2.5454559,34 A 28.545454,28.545454 0 1 1 59.636364,34 z" <path display="inline" d="M31.88,13.991l-5.19,5.191c0,0,0.6,3.174,1.794,5.382c0.378,0.618,1.558,2.401,2.274,3.162
transform="translate(0.90909,-2)" /> c0.779,0.83,1.675,1.615,2.481,2.247c1.7,1.333,4.077,2.482,6.011,3.109c3.442,1.118,7.89,0.522,9.301,0
<path c1.411-0.521,2.979-1.984,3.763-3.5c0.783-1.516,1.203-2.561,1.203-5.591c0-3.031-0.549-4.727-1.151-6.428
sodipodi:type="arc" c-0.627-1.774-1.986-4.023-1.986-4.023l3.424-3.423L38.778,4.603l2.299,16.67l4.547-3.344c0,0,1.062,1.533,1.62,3.693
style="fill:url(#linearGradient3183);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.41800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3193)" c0.273,1.061,0.288,1.652,0.295,2.211c0.009,0.587-0.036,1.064-0.243,1.83c-0.144,0.535-1.071,1.45-1.686,1.685
id="path3175" c-0.695,0.266-2.469,0.378-4.377,0.091c-2.493-0.375-4.29-1.652-5.033-2.299c-1.358-1.184-1.881-1.637-3.432-4.65
sodipodi:cx="38.090908" C31.207,17.451,31.88,13.991,31.88,13.991z"/>
sodipodi:cy="22.727272" <g display="inline" opacity="0.25">
sodipodi:rx="22.272728" <path fill="#FFFFFF" d="M38.778,4.603l15.023,5.513l-3.424,3.423c0,0,1.359,2.249,1.986,4.023
sodipodi:ry="10.181818" c0.603,1.702,1.151,3.397,1.151,6.428c0,3.03-0.42,4.075-1.203,5.591c-0.784,1.516-2.352,2.979-3.763,3.5
d="M 60.363636,22.727272 A 22.272728,10.181818 0 1 1 15.81818,22.727272 A 22.272728,10.181818 0 1 1 60.363636,22.727272 z" c-0.823,0.305-2.679,0.635-4.766,0.635c-1.491,0-3.101-0.169-4.535-0.635c-1.934-0.627-4.311-1.776-6.011-3.109
transform="matrix(0.8292896,0,0,1.0283566,0.4116061,-8.3717394)" /> c-0.806-0.632-1.702-1.417-2.481-2.247c-0.716-0.761-1.896-2.543-2.274-3.162c-1.194-2.208-1.794-5.382-1.794-5.382l5.19-5.191
<path c0,0-0.673,3.46,0.889,6.498c1.551,3.013,2.073,3.466,3.432,4.65c0.743,0.647,2.54,1.924,5.033,2.299
style="font-size:72px;font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:URW Chancery L;-inkscape-font-specification:URW Chancery L Bold Italic" c0.785,0.118,1.548,0.169,2.222,0.169c0.964,0,1.746-0.104,2.155-0.26c0.614-0.235,1.542-1.15,1.686-1.685
d="M 15.175273,51.40582 C 18.27127,48.021823 19.135275,47.44582 20.935273,47.44582 C 21.655272,47.44582 22.591274,47.58982 23.743273,47.87782 C 29.071268,49.101819 36.127274,50.39782 37.279273,50.39782 C 37.855272,50.39782 38.215274,50.32582 38.935273,50.03782 L 45.271273,40.53382 L 44.695273,38.87782 C 40.087278,44.709814 39.583271,45.21382 37.639273,45.21382 C 37.279273,45.21382 36.775272,45.14182 36.127273,44.99782 C 31.159278,44.133821 26.839269,43.485819 23.239273,42.90982 L 32.095273,34.70182 L 38.503273,28.72582 L 42.103273,25.34182 C 44.191271,22.173823 45.055273,19.725817 45.055273,16.55782 C 45.055273,11.949825 42.103269,8.9978199 37.639273,8.9978199 C 33.967277,8.9978199 30.15127,10.365822 27.199273,12.81382 C 24.607276,14.829818 23.239273,17.421823 23.239273,20.37382 C 23.239273,20.949819 23.311273,21.309821 23.455273,22.10182 L 28.567273,22.67782 C 27.919274,20.733822 27.703273,19.725819 27.703273,18.42982 C 27.703273,14.469824 30.079277,11.87782 33.679273,11.87782 C 37.06327,11.87782 39.511273,14.829824 39.511273,18.93382 C 39.511273,21.165818 38.791272,23.685822 37.639273,25.48582 C 36.127275,27.933817 34.327267,29.877825 28.783273,35.06182 C 19.495282,43.773811 18.415269,44.853824 14.887273,49.31782 L 15.175273,51.40582" c0.207-0.766,0.252-1.243,0.243-1.83c-0.007-0.56-0.021-1.15-0.295-2.211c-0.559-2.16-1.62-3.693-1.62-3.693l-4.547,3.344
id="text3217" /> L38.778,4.603 M37.561,3.09l0.228,1.649l2.299,16.67l0.229,1.665l1.354-0.996l3.649-2.685c0.312,0.602,0.695,1.469,0.957,2.478
</g> c0.251,0.974,0.257,1.482,0.263,1.973c0.007,0.484-0.023,0.874-0.209,1.557c-0.096,0.246-0.737,0.882-1.077,1.012
</svg> c-0.188,0.072-0.779,0.194-1.798,0.194c-0.672,0-1.388-0.055-2.072-0.158c-2.418-0.364-4.075-1.672-4.525-2.064
c-1.302-1.134-1.738-1.515-3.2-4.354c-1.387-2.698-0.802-5.818-0.796-5.85l0.625-3.211l-2.313,2.313l-5.19,5.191l-0.374,0.374
l0.098,0.519c0.025,0.136,0.643,3.354,1.896,5.672l0.013,0.023l0.014,0.023c0.27,0.441,1.545,2.418,2.399,3.325
c0.929,0.989,1.922,1.823,2.592,2.349c1.965,1.54,4.553,2.7,6.319,3.273c1.396,0.453,3.025,0.684,4.844,0.684
c2.232,0,4.177-0.351,5.113-0.697c1.634-0.604,3.404-2.24,4.304-3.979c0.817-1.584,1.314-2.781,1.314-6.051
c0-3.097-0.548-4.895-1.209-6.762c-0.442-1.253-1.211-2.696-1.678-3.526l2.88-2.879l1.107-1.106l-1.47-0.54L39.123,3.664
L37.561,3.09L37.561,3.09z"/>
</g>
</g>
<g display="none">
<g display="inline">
<path fill="#FFFFFF" d="M52.748,26.513l-0.918,7.07H32.553v-1.074c0.625-0.469,1.263-0.94,1.914-1.416
c0.651-0.475,1.302-0.97,1.953-1.484c0.651-0.514,1.445-1.194,2.383-2.041c0.938-0.846,1.731-1.602,2.383-2.266
c1.94-1.914,3.486-3.802,4.639-5.664c1.152-1.862,1.729-3.626,1.729-5.293c0-1.237-0.303-2.36-0.908-3.369
c-0.605-1.009-1.394-1.807-2.363-2.393s-1.937-0.879-2.9-0.879c-1.706,0-3.093,0.541-4.16,1.621
c-1.067,1.081-1.667,2.324-1.797,3.73h-0.352c0-0.039-0.01-0.241-0.029-0.605c-0.02-0.364-0.036-0.625-0.049-0.781
c0-1.497,0.332-2.78,0.996-3.848c0.664-1.067,1.56-1.862,2.686-2.383c1.126-0.521,2.393-0.781,3.799-0.781
c1.224,0,2.383,0.212,3.477,0.635c1.094,0.423,2.044,1.009,2.852,1.758c0.808,0.749,1.438,1.615,1.895,2.598
c0.456,0.983,0.684,2.041,0.684,3.174c0,1.25-0.247,2.503-0.742,3.76c-0.495,1.257-1.162,2.461-2.002,3.613
s-1.826,2.295-2.959,3.428c-1.094,1.094-2.497,2.321-4.209,3.682c-1.712,1.361-3.577,2.777-5.596,4.248
c0.352,0.078,0.769,0.169,1.25,0.273s1.077,0.202,1.787,0.293s1.526,0.166,2.451,0.225s1.999,0.088,3.223,0.088
c2.578,0,4.538-0.176,5.879-0.527l2.051-5.391H52.748z M38.861,28.017l0.176,0.293c1.94-1.575,3.545-2.981,4.814-4.219
c1.27-1.237,2.321-2.425,3.154-3.564c0.833-1.139,1.458-2.266,1.875-3.379s0.625-2.197,0.625-3.252c0-1.588-0.4-2.969-1.201-4.141
s-1.794-2.061-2.979-2.666s-2.312-0.908-3.379-0.908c-2.734,0-4.785,1.322-6.152,3.965h0.195c0.56-0.911,1.279-1.641,2.158-2.188
s1.943-0.82,3.193-0.82s2.396,0.322,3.438,0.967s1.865,1.521,2.471,2.627c0.605,1.107,0.908,2.312,0.908,3.613
c0,1.341-0.352,2.738-1.055,4.189c-0.703,1.452-1.738,2.966-3.105,4.541C42.631,24.651,40.919,26.298,38.861,28.017z"/>
<g opacity="0.35">
<path d="M42.475,4.657c1.224,0,2.383,0.212,3.477,0.635c1.094,0.423,2.044,1.009,2.852,1.758
c0.808,0.749,1.438,1.615,1.895,2.598c0.456,0.983,0.684,2.041,0.684,3.174c0,1.25-0.247,2.503-0.742,3.76
c-0.495,1.257-1.162,2.461-2.002,3.613s-1.826,2.295-2.959,3.428c-1.094,1.094-2.497,2.321-4.209,3.682
c-1.712,1.361-3.577,2.777-5.596,4.248c0.352,0.078,0.769,0.169,1.25,0.273s1.077,0.202,1.787,0.293s1.526,0.166,2.451,0.225
s1.999,0.088,3.223,0.088c2.578,0,4.538-0.176,5.879-0.527l2.051-5.391h0.234l-0.918,7.07H32.553v-1.074
c0.625-0.469,1.263-0.94,1.914-1.416c0.651-0.475,1.302-0.97,1.953-1.484c0.651-0.514,1.445-1.194,2.383-2.041
c0.938-0.846,1.731-1.602,2.383-2.266c1.94-1.914,3.486-3.802,4.639-5.664c1.152-1.862,1.729-3.626,1.729-5.293
c0-1.237-0.303-2.36-0.908-3.369c-0.605-1.009-1.394-1.807-2.363-2.393s-1.937-0.879-2.9-0.879c-1.706,0-3.093,0.541-4.16,1.621
c-1.067,1.081-1.667,2.324-1.797,3.73h-0.352c0-0.039-0.01-0.241-0.029-0.605c-0.02-0.364-0.036-0.625-0.049-0.781
c0-1.497,0.332-2.78,0.996-3.848c0.664-1.067,1.56-1.862,2.686-2.383C39.802,4.918,41.068,4.657,42.475,4.657 M35.795,10.146
h0.195c0.56-0.911,1.279-1.641,2.158-2.188s1.943-0.82,3.193-0.82s2.396,0.322,3.438,0.967s1.865,1.521,2.471,2.627
c0.605,1.107,0.908,2.312,0.908,3.613c0,1.341-0.352,2.738-1.055,4.189c-0.703,1.452-1.738,2.966-3.105,4.541
c-1.367,1.576-3.079,3.223-5.137,4.941l0.176,0.293c1.94-1.575,3.545-2.981,4.814-4.219c1.27-1.237,2.321-2.425,3.154-3.564
c0.833-1.139,1.458-2.266,1.875-3.379s0.625-2.197,0.625-3.252c0-1.588-0.4-2.969-1.201-4.141s-1.794-2.061-2.979-2.666
s-2.312-0.908-3.379-0.908C39.213,6.181,37.162,7.502,35.795,10.146 M42.475,3.657c-1.545,0-2.965,0.294-4.219,0.874
c-1.301,0.602-2.349,1.531-3.114,2.762c-0.762,1.224-1.147,2.696-1.147,4.376v0.041l0.003,0.041
c0.013,0.151,0.028,0.402,0.047,0.754c0.018,0.32,0.027,0.508,0.028,0.563l0.022,0.977l0.978,0.011h0.352h0.912l0.084-0.908
c0.108-1.179,0.604-2.199,1.513-3.12c0.88-0.891,2.008-1.324,3.448-1.324c0.774,0,1.576,0.247,2.383,0.735
c0.825,0.498,1.506,1.188,2.023,2.051c0.516,0.859,0.766,1.792,0.766,2.854c0,1.47-0.531,3.074-1.579,4.767
c-1.105,1.786-2.616,3.629-4.49,5.479c-0.649,0.662-1.437,1.41-2.351,2.235c-0.918,0.829-1.702,1.501-2.332,1.998
c-0.645,0.509-1.291,1-1.923,1.461c-0.655,0.479-1.297,0.953-1.925,1.424l-0.4,0.3v0.5v1.074v1h1H51.83h0.879l0.112-0.871
l0.918-7.07l0.147-1.129h-1.139h-0.234h-0.689l-0.245,0.645l-1.861,4.893c-1.235,0.253-2.958,0.381-5.134,0.381
c-1.197,0-2.26-0.029-3.159-0.086c-0.894-0.057-1.696-0.13-2.388-0.219c-0.27-0.034-0.522-0.07-0.758-0.106
c1.345-1.005,2.621-1.987,3.812-2.933c1.733-1.377,3.179-2.642,4.294-3.757c1.164-1.164,2.193-2.357,3.061-3.546
c0.885-1.215,1.6-2.505,2.124-3.835c0.538-1.367,0.812-2.755,0.812-4.126c0-1.274-0.261-2.483-0.776-3.595
c-0.51-1.098-1.224-2.077-2.122-2.91c-0.897-0.832-1.964-1.49-3.17-1.957C45.106,3.894,43.815,3.657,42.475,3.657L42.475,3.657z"
/>
</g>
</g>
</g>
<g>
<g>
<path fill="#FFFFFF" d="M3.311,54.5v-1.977c2.288-0.26,2.288-0.52,2.288-2.027V21.687c0-1.508,0-1.82-2.288-2.028v-1.976h5.096
l6.344,5.46l6.344-5.46h5.096v1.976c-2.288,0.208-2.288,0.52-2.288,2.028v28.809c0,1.508,0,1.768,2.288,2.027V54.5h-7.02v-1.977
c2.132-0.26,2.132-0.623,2.132-2.027V20.439l-6.552,5.824l-6.552-5.824v30.057c0,1.404,0,1.768,2.132,2.027V54.5H3.311z"/>
<g opacity="0.35">
<path d="M26.191,17.683v1.976c-2.288,0.208-2.288,0.52-2.288,2.028v28.809c0,1.508,0,1.768,2.288,2.027V54.5h-7.02v-1.977
c2.132-0.26,2.132-0.623,2.132-2.027V20.439l-6.552,5.824l-6.552-5.824v30.057c0,1.404,0,1.768,2.132,2.027V54.5h-7.02v-1.977
c2.288-0.26,2.288-0.52,2.288-2.027V21.687c0-1.508,0-1.82-2.288-2.028v-1.976h5.096l6.344,5.46l6.344-5.46H26.191
M27.691,16.183h-1.5h-5.096h-0.557l-0.422,0.363l-5.366,4.618l-5.366-4.618l-0.422-0.363H8.407H3.311h-1.5v1.5v1.976v1.37
l1.364,0.124c0.453,0.042,0.74,0.082,0.921,0.115c0.003,0.132,0.003,0.284,0.003,0.419v28.809c0,0.129,0,0.272-0.002,0.399
c-0.188,0.037-0.485,0.084-0.955,0.138l-1.331,0.151v1.339V54.5V56h1.5h7.02h1.5v-1.5v-1.977v-1.328l-1.318-0.161
c-0.398-0.048-0.651-0.094-0.811-0.13c-0.003-0.127-0.003-0.276-0.003-0.408V23.779l4.056,3.605l0.997,0.886l0.997-0.886
l4.056-3.605v26.717c0,0.132,0,0.281-0.003,0.408c-0.16,0.036-0.413,0.082-0.811,0.13l-1.318,0.161v1.328V54.5V56h1.5h7.02h1.5
v-1.5v-1.977v-1.339l-1.331-0.151c-0.47-0.054-0.768-0.101-0.955-0.138c-0.002-0.127-0.002-0.271-0.002-0.399V21.687
c0-0.136,0-0.288,0.003-0.419c0.181-0.034,0.468-0.074,0.921-0.115l1.364-0.124v-1.37v-1.976V16.183L27.691,16.183z"/>
</g>
</g>
</g>
<g>
<g>
<path fill="#FFFFFF" d="M53.012,28.07l-2.021,5.513H34.086v-0.788c4.987-4.532,8.491-8.233,10.513-11.103s3.032-5.495,3.032-7.875
c0-1.82-0.556-3.316-1.667-4.489s-2.438-1.759-3.977-1.759c-1.418,0-2.687,0.411-3.807,1.234s-1.942,2.03-2.468,3.622h-0.787
c0.35-2.607,1.256-4.606,2.717-5.998c1.461-1.391,3.276-2.087,5.447-2.087c2.327,0,4.27,0.749,5.827,2.245
s2.336,3.251,2.336,5.263c0,1.453-0.341,2.905-1.023,4.357c-1.033,2.292-2.722,4.708-5.066,7.245
c-3.5,3.833-5.688,6.142-6.563,6.93h7.481c1.522,0,2.59-0.052,3.202-0.157s1.164-0.333,1.654-0.683
c0.489-0.35,0.919-0.84,1.286-1.47H53.012z"/>
<g opacity="0.35">
<path d="M43.09,4.34c2.327,0,4.27,0.749,5.827,2.245s2.336,3.251,2.336,5.263c0,1.453-0.341,2.905-1.023,4.357
c-1.033,2.292-2.722,4.708-5.066,7.245c-3.5,3.833-5.688,6.142-6.563,6.93h7.481c1.522,0,2.59-0.052,3.202-0.157
s1.164-0.333,1.654-0.683c0.489-0.35,0.919-0.84,1.286-1.47h0.787l-2.021,5.513H34.086v-0.788
c4.987-4.532,8.491-8.233,10.513-11.103s3.032-5.495,3.032-7.875c0-1.82-0.556-3.316-1.667-4.489s-2.438-1.759-3.977-1.759
c-1.418,0-2.687,0.411-3.807,1.234s-1.942,2.03-2.468,3.622h-0.787c0.35-2.607,1.256-4.606,2.717-5.998
C39.104,5.036,40.919,4.34,43.09,4.34 M43.09,3.34c-2.426,0-4.49,0.795-6.137,2.363c-1.624,1.547-2.64,3.764-3.019,6.589
l-0.151,1.133h1.143h0.787h0.723l0.227-0.687c0.457-1.384,1.167-2.437,2.11-3.129c0.953-0.7,2.004-1.04,3.215-1.04
c1.265,0,2.328,0.473,3.251,1.447c0.937,0.989,1.393,2.232,1.393,3.801c0,2.159-0.959,4.614-2.85,7.299
c-1.971,2.798-5.459,6.479-10.368,10.938l-0.327,0.298v0.442v0.788v1h1h16.905h0.698l0.24-0.656l2.021-5.512l0.493-1.344h-1.432
h-0.787h-0.575l-0.289,0.497c-0.293,0.503-0.631,0.893-1.004,1.16c-0.368,0.263-0.774,0.431-1.241,0.51
c-0.38,0.065-1.215,0.143-3.033,0.143h-5.063c1.159-1.208,2.778-2.951,4.883-5.255c2.402-2.6,4.167-5.128,5.24-7.508
c0.735-1.565,1.111-3.174,1.111-4.769c0-2.286-0.89-4.3-2.644-5.984C47.866,4.189,45.673,3.34,43.09,3.34L43.09,3.34z"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View file

@ -1,89 +1,102 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) --> <!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
xmlns:dc="http://purl.org/dc/elements/1.1/" <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
xmlns:cc="http://creativecommons.org/ns#" width="60px" height="60px" viewBox="0 0 60 60" enable-background="new 0 0 60 60" xml:space="preserve">
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" <radialGradient id="SVGID_1_" cx="30" cy="30" r="30" gradientUnits="userSpaceOnUse">
xmlns:svg="http://www.w3.org/2000/svg" <stop offset="0" style="stop-color:#E6E6E6"/>
xmlns="http://www.w3.org/2000/svg" <stop offset="1" style="stop-color:#191919"/>
xmlns:xlink="http://www.w3.org/1999/xlink" </radialGradient>
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" <path fill="url(#SVGID_1_)" d="M60,51.818C60,56.337,56.337,60,51.818,60H8.182C3.663,60,0,56.337,0,51.818V8.182
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" C0,3.663,3.663,0,8.182,0h43.637C56.337,0,60,3.663,60,8.182V51.818z"/>
width="64px" <g>
height="64px" <path fill="#FFFFFF" d="M36.803,32.291l-6.082,6.082c0,0-3.719-0.705-6.307-2.103c-0.725-0.444-2.813-1.825-3.705-2.665
id="svg3167" c-0.972-0.912-1.893-1.963-2.632-2.906c-1.562-1.992-2.909-4.777-3.644-7.043c-1.31-4.034-0.612-9.245,0-10.898
sodipodi:version="0.32" c0.611-1.653,2.325-3.49,4.101-4.409c1.777-0.918,3.001-1.41,6.552-1.41c3.552,0,5.539,0.643,7.532,1.349
inkscape:version="0.46" c2.08,0.734,4.714,2.327,4.714,2.327l4.012-4.012l6.46,17.604l-19.533-2.693l3.919-5.328c0,0-1.797-1.244-4.328-1.898
sodipodi:docname="icon_nextTurn.svg" c-1.243-0.32-1.936-0.337-2.591-0.345c-0.688-0.01-1.247,0.042-2.144,0.285c-0.627,0.168-1.701,1.255-1.975,1.975
inkscape:output_extension="org.inkscape.output.svg.inkscape"> c-0.312,0.815-0.444,2.893-0.106,5.129c0.439,2.921,1.935,5.026,2.695,5.897c1.387,1.592,1.917,2.204,5.448,4.021
<defs C32.748,33.079,36.803,32.291,36.803,32.291z"/>
id="defs3169"> <g opacity="0.25">
<linearGradient <path d="M41.344,6.604l6.46,17.604l-19.533-2.693l3.919-5.328c0,0-1.797-1.215-4.328-1.87C26.62,13.996,25.926,14,25.271,14
id="linearGradient3159"> c-0.052,0-0.104,0-0.155,0c-0.62,0-1.16,0.032-1.989,0.256c-0.627,0.168-1.701,1.241-1.975,1.96
<stop c-0.312,0.815-0.444,2.885-0.106,5.122c0.439,2.921,1.935,5.023,2.695,5.894c1.387,1.592,1.917,2.202,5.448,4.02
style="stop-color:#ff0000;stop-opacity:1;" c1.912,0.982,3.967,1.209,5.459,1.209c1.287,0,2.155-0.17,2.155-0.17l-6.082,6.082c0,0-3.719-0.705-6.307-2.103
offset="0" c-0.725-0.444-2.813-1.825-3.705-2.665c-0.972-0.912-1.893-1.963-2.632-2.906c-1.562-1.992-2.909-4.777-3.644-7.043
id="stop3161" /> c-1.31-4.034-0.612-9.245,0-10.898c0.611-1.653,2.325-3.49,4.101-4.409c1.777-0.918,3.001-1.41,6.552-1.41
<stop c3.552,0,5.539,0.643,7.532,1.349c2.08,0.734,4.714,2.327,4.714,2.327L41.344,6.604 M41.743,4.79l-1.106,1.107L37.17,9.364
style="stop-color:#870000;stop-opacity:1;" c-0.944-0.536-2.701-1.483-4.219-2.019c-2.171-0.769-4.263-1.406-7.865-1.406c-3.793,0-5.179,0.575-7.011,1.521
offset="1" c-2.003,1.037-3.886,3.072-4.58,4.951c-0.677,1.83-1.404,7.271-0.013,11.554c0.667,2.056,2.017,5.066,3.808,7.351
id="stop3163" /> c0.609,0.777,1.578,1.933,2.734,3.019c1.045,0.983,3.352,2.473,3.867,2.788l0.023,0.015l0.024,0.013
</linearGradient> c2.694,1.454,6.438,2.175,6.596,2.205l0.52,0.099l0.374-0.374l6.082-6.082l2.313-2.313l-3.21,0.625
<linearGradient c-0.007,0.001-0.804,0.15-1.965,0.15c-1.306,0-3.233-0.19-5.002-1.1c-3.355-1.728-3.807-2.246-5.146-3.783
inkscape:collect="always" c-0.473-0.542-2.031-2.514-2.465-5.395c-0.331-2.195-0.165-4.056,0.052-4.623c0.183-0.48,1.009-1.239,1.306-1.338
xlink:href="#linearGradient3159" C24.165,15.012,24.61,15,25.116,15h0.141c0.588,0,1.194-0.015,2.356,0.285c1.3,0.336,2.4,0.831,3.117,1.213l-3.265,4.431
id="linearGradient3165" l-0.996,1.35l1.665,0.228l19.533,2.692l1.648,0.227l-0.573-1.563l-6.46-17.604L41.743,4.79L41.743,4.79z"/>
x1="460.92261" </g>
y1="383.05679" </g>
x2="144.23897" <g>
y2="474.24744" <g>
gradientUnits="userSpaceOnUse" <path fill="#FFFFFF" d="M20.223,45.629c0,2.805-1.816,4.852-4.691,4.852c-0.621,0-1.426-0.161-1.978-0.46v5.634h-1.839V41.168
gradientTransform="matrix(0.2002403,0,0,0.2002403,-29.54275,-55.059863)" /> h3.127C17.739,41.168,20.223,42.432,20.223,45.629z M13.554,42.639v5.864c0.529,0.229,1.311,0.483,1.863,0.483
<inkscape:perspective c1.885,0,2.966-1.633,2.966-3.381c0-2.093-1.633-2.967-3.542-2.967H13.554z"/>
sodipodi:type="inkscape:persp3d" <g opacity="0.35">
inkscape:vp_x="0 : 32 : 1" <path d="M14.842,41.168c2.897,0,5.381,1.264,5.381,4.461c0,2.805-1.816,4.852-4.691,4.852c-0.621,0-1.426-0.161-1.978-0.46v5.634
inkscape:vp_y="0 : 1000 : 0" h-1.839V41.168H14.842 M15.417,48.986c1.885,0,2.966-1.633,2.966-3.381c0-2.093-1.633-2.967-3.542-2.967h-1.288v5.864
inkscape:vp_z="64 : 32 : 1" C14.083,48.732,14.865,48.986,15.417,48.986 M14.842,40.168h-3.127h-1v1v14.486v1h1h1.839h1v-1v-4.264
inkscape:persp3d-origin="32 : 21.333333 : 1" c0.357,0.063,0.696,0.09,0.978,0.09c3.351,0,5.691-2.406,5.691-5.852C21.223,42.261,18.778,40.168,14.842,40.168L14.842,40.168z
id="perspective3175" /> M14.554,43.639h0.288c1.159,0,2.542,0.341,2.542,1.967c0,1.146-0.615,2.381-1.966,2.381c-0.203,0-0.519-0.066-0.863-0.176
</defs> V43.639L14.554,43.639z"/>
<sodipodi:namedview </g>
id="base" </g>
pagecolor="#ffffff" <g>
bordercolor="#666666" <path fill="#FFFFFF" d="M27.676,51.93h-3.38l-1.219,3.725h-1.909l3.886-11.819h1.863l3.909,11.819h-1.908L27.676,51.93z
borderopacity="1.0" M24.64,50.457h2.69l-1.333-4.438L24.64,50.457z"/>
inkscape:pageopacity="0.0" <g opacity="0.35">
inkscape:pageshadow="2" <path d="M26.917,43.835l3.909,11.819h-1.908l-1.242-3.725h-3.38l-1.219,3.725h-1.909l3.886-11.819H26.917 M24.64,50.457h2.69
inkscape:zoom="6.4785302" l-1.333-4.438L24.64,50.457 M27.64,42.835h-0.723h-1.863h-0.724l-0.227,0.688l-3.886,11.819l-0.431,1.313h1.381h1.909h0.725
inkscape:cx="71.431122" l0.225-0.689l0.994-3.035h1.935l1.014,3.041l0.228,0.684h0.721h1.908h1.384l-0.435-1.314l-3.909-11.819L27.64,42.835
inkscape:cy="35.114322" L27.64,42.835z"/>
inkscape:current-layer="layer1" </g>
showgrid="true" </g>
inkscape:document-units="px" <g>
inkscape:grid-bbox="true" <path fill="#FFFFFF" d="M32.806,54.826l0.805-1.265c0.161,0.115,0.46,0.322,0.851,0.552c0.438,0.23,0.943,0.461,1.426,0.461
inkscape:window-width="1280" c1.081,0,1.932-0.713,1.932-1.863c0-0.645-0.506-1.311-1.195-1.748l-2.185-1.311c-0.966-0.598-1.817-1.609-1.817-3.035
inkscape:window-height="725" c0-2.023,1.403-3.15,3.496-3.15c1.771,0,2.782,1.195,3.012,1.518l-1.08,0.874c-0.207-0.229-0.92-0.966-1.932-0.966
inkscape:window-x="0" c-0.967,0-1.725,0.529-1.725,1.518c0,0.874,0.574,1.518,1.287,1.932l1.979,1.219c1.241,0.736,1.908,1.771,1.908,3.174
inkscape:window-y="25" /> c0,2-1.656,3.288-3.703,3.288C34.484,56.022,33.127,55.057,32.806,54.826z"/>
<metadata <g opacity="0.35">
id="metadata3172"> <path d="M36.117,43.467c1.771,0,2.782,1.195,3.012,1.518l-1.08,0.874c-0.207-0.229-0.92-0.966-1.932-0.966
<rdf:RDF> c-0.967,0-1.725,0.529-1.725,1.518c0,0.874,0.574,1.518,1.287,1.932l1.979,1.219c1.241,0.736,1.908,1.771,1.908,3.174
<cc:Work c0,2-1.656,3.288-3.703,3.288c-1.379,0-2.736-0.966-3.058-1.196l0.805-1.265c0.161,0.115,0.46,0.322,0.851,0.552
rdf:about=""> c0.438,0.23,0.943,0.461,1.426,0.461c1.081,0,1.932-0.713,1.932-1.863c0-0.645-0.506-1.311-1.195-1.748l-2.185-1.311
<dc:format>image/svg+xml</dc:format> c-0.966-0.598-1.817-1.609-1.817-3.035C32.621,44.594,34.024,43.467,36.117,43.467 M36.117,42.467
<dc:type c-2.731,0-4.496,1.629-4.496,4.15c0,1.568,0.835,2.984,2.291,3.886l2.196,1.317c0.454,0.288,0.71,0.678,0.71,0.891
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> c0,0.801-0.713,0.863-0.932,0.863c-0.304,0-0.78-0.251-0.96-0.346c-0.228-0.135-0.488-0.305-0.734-0.48l-0.859-0.614
</cc:Work> l-0.566,0.891l-0.805,1.265l-0.508,0.798l0.769,0.552c1.262,0.905,2.521,1.384,3.641,1.384c2.726,0,4.703-1.804,4.703-4.288
</rdf:RDF> c0-1.708-0.829-3.104-2.398-4.034l-1.964-1.21c-0.382-0.223-0.812-0.577-0.812-1.08c0-0.128,0-0.518,0.725-0.518
</metadata> c0.556,0,1.017,0.444,1.189,0.636l0.635,0.704l0.736-0.597l1.08-0.874l0.731-0.592l-0.546-0.766
<g C39.713,44.081,38.445,42.467,36.117,42.467L36.117,42.467z"/>
id="layer1" </g>
inkscape:label="Layer 1" </g>
inkscape:groupmode="layer"> <g>
<path <path fill="#FFFFFF" d="M42.189,54.826l0.805-1.265c0.161,0.115,0.46,0.322,0.852,0.552c0.436,0.23,0.942,0.461,1.425,0.461
style="fill:url(#linearGradient3165);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.30036047;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" c1.081,0,1.932-0.713,1.932-1.863c0-0.645-0.506-1.311-1.196-1.748l-2.184-1.311c-0.966-0.598-1.816-1.609-1.816-3.035
d="M 29.130932,18.753217 C 20.744599,18.686709 11.651606,23.163902 1.3976484,34.253068 L 3.7535432,38.873766 C 29.306087,10.191947 44.263934,30.067613 51.933109,37.746086 C 50.522291,38.573832 48.464685,38.467536 46.274272,38.998726 C 51.42154,40.570478 56.687692,42.488294 61.676216,44.630089 C 60.792534,39.544838 59.481746,34.617053 58.935262,29.103904 C 58.378905,31.662724 57.62115,32.32038 56.582628,34.559687 C 47.924709,25.228354 39.020111,18.831643 29.130932,18.753217 z" c0-2.023,1.402-3.15,3.494-3.15c1.771,0,2.783,1.195,3.014,1.518l-1.082,0.874c-0.207-0.229-0.919-0.966-1.932-0.966
id="path2383" c-0.965,0-1.725,0.529-1.725,1.518c0,0.874,0.576,1.518,1.289,1.932l1.977,1.219c1.242,0.736,1.908,1.771,1.908,3.174
sodipodi:nodetypes="ccccccccc" /> c0,2-1.654,3.288-3.701,3.288C43.868,56.022,42.512,55.057,42.189,54.826z"/>
</g> <g opacity="0.35">
</svg> <path d="M45.5,43.467c1.771,0,2.783,1.195,3.014,1.518l-1.082,0.874c-0.207-0.229-0.919-0.966-1.932-0.966
c-0.965,0-1.725,0.529-1.725,1.518c0,0.874,0.576,1.518,1.289,1.932l1.977,1.219c1.242,0.736,1.908,1.771,1.908,3.174
c0,2-1.654,3.288-3.701,3.288c-1.38,0-2.736-0.966-3.059-1.196l0.805-1.265c0.161,0.115,0.46,0.322,0.852,0.552
c0.436,0.23,0.942,0.461,1.425,0.461c1.081,0,1.932-0.713,1.932-1.863c0-0.645-0.506-1.311-1.196-1.748l-2.184-1.311
c-0.966-0.598-1.816-1.609-1.816-3.035C42.006,44.594,43.408,43.467,45.5,43.467 M45.5,42.467c-2.73,0-4.494,1.629-4.494,4.15
c0,1.568,0.835,2.985,2.29,3.886l2.195,1.317c0.454,0.288,0.711,0.678,0.711,0.891c0,0.801-0.713,0.863-0.932,0.863
c-0.306,0-0.779-0.251-0.957-0.345c-0.23-0.136-0.491-0.306-0.737-0.481l-0.859-0.614l-0.566,0.891l-0.805,1.265l-0.509,0.8
l0.771,0.551c1.266,0.904,2.524,1.383,3.641,1.383c2.724,0,4.701-1.804,4.701-4.288c0-1.733-0.807-3.091-2.398-4.034l-1.962-1.21
c-0.383-0.223-0.813-0.578-0.813-1.08c0-0.128,0-0.518,0.725-0.518c0.556,0,1.017,0.444,1.189,0.636l0.634,0.703l0.736-0.595
l1.082-0.874l0.734-0.593l-0.549-0.768C49.096,44.079,47.825,42.467,45.5,42.467L45.5,42.467z"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

View file

@ -1,159 +1,162 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) --> <!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
xmlns:dc="http://purl.org/dc/elements/1.1/" <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
xmlns:cc="http://creativecommons.org/ns#" width="60px" height="60px" viewBox="0 0 60 60" enable-background="new 0 0 60 60" xml:space="preserve">
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" <radialGradient id="SVGID_1_" cx="542" cy="761" r="30" gradientTransform="matrix(1 0 0 1 -512 -731)" gradientUnits="userSpaceOnUse">
xmlns:svg="http://www.w3.org/2000/svg" <stop offset="0" style="stop-color:#00DC00"/>
xmlns="http://www.w3.org/2000/svg" <stop offset="1" style="stop-color:#191919"/>
xmlns:xlink="http://www.w3.org/1999/xlink" </radialGradient>
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" <path fill="url(#SVGID_1_)" d="M60,51.818C60,56.337,56.337,60,51.818,60H8.182C3.663,60,0,56.337,0,51.818V8.182
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" C0,3.663,3.663,0,8.182,0h43.636C56.337,0,60,3.663,60,8.182V51.818z"/>
width="64px" <g display="none">
height="64px" <g display="inline">
id="svg3319" <path fill="#EBEBEB" d="M29.857,48.793c-1.015,0-2.135-0.525-2.275-0.595v6.896h-2.765V37.102h4.166
sodipodi:version="0.32" c5.18,0,7.037,2.73,7.037,5.603c0,1.854-0.666,3.536-1.961,4.655C33.007,48.268,31.572,48.793,29.857,48.793z M27.582,39.271
inkscape:version="0.46" v6.791c0,0,1.085,0.523,1.925,0.523c2.38,0,3.745-1.715,3.745-3.921c0-1.96-1.365-3.396-4.27-3.396h-1.4V39.271z"/>
sodipodi:docname="icon_upkeep.svg" <g opacity="0.35">
inkscape:output_extension="org.inkscape.output.svg.inkscape"> <path d="M28.982,37.102c5.18,0,7.036,2.73,7.036,5.603c0,1.854-0.664,3.536-1.959,4.655c-1.052,0.908-2.484,1.436-4.202,1.436
<defs c-1.015,0-2.135-0.523-2.275-0.595v6.896h-2.765V37.102H28.982 M29.507,46.588c2.38,0,3.745-1.715,3.745-3.921
id="defs3321"> c0-1.96-1.365-3.396-4.27-3.396h-1.4v6.791C27.582,46.063,28.667,46.588,29.507,46.588 M28.982,35.602h-4.166h-1.5v1.5v17.992
<linearGradient v1.5h1.5h2.765h1.5v-1.5v-4.861c0.252,0.037,0.514,0.063,0.775,0.063c2.029,0,3.821-0.622,5.182-1.8
inkscape:collect="always" c1.599-1.384,2.479-3.438,2.479-5.791C37.518,39.27,35.275,35.602,28.982,35.602L28.982,35.602z M29.082,45.02v-4.246
id="linearGradient3307"> c1.771,0.022,2.67,0.66,2.67,1.896c0,0.567-0.162,2.421-2.245,2.421C29.395,45.088,29.244,45.061,29.082,45.02L29.082,45.02z"/>
<stop </g>
style="stop-color:#808080;stop-opacity:1;" </g>
offset="0" </g>
id="stop3309" /> <g display="none">
<stop <g display="inline">
style="stop-color:#808080;stop-opacity:0;" <path fill="#EBEBEB" d="M19.689,45.316c0,6.137-1.352,9.775-7.488,9.775c-5.876,0-7.176-3.641-7.176-9.775v-23.66
offset="1" c0-1.508,0-1.82-1.977-2.028v-1.976h6.604v1.976c-2.028,0.208-2.028,0.52-2.028,2.028v23.869c0,4.68,0.937,7.072,4.681,7.072
id="stop3311" /> c3.848,0,4.784-2.395,4.784-7.072V21.656c0-1.508,0-1.82-2.028-2.028v-1.976h6.604v1.976c-1.977,0.208-1.977,0.52-1.977,2.028
</linearGradient> L19.689,45.316L19.689,45.316z"/>
<linearGradient <g opacity="0.35">
id="linearGradient3297"> <path d="M21.666,17.652v1.976c-1.977,0.208-1.977,0.52-1.977,2.028v23.66c0,6.137-1.352,9.775-7.488,9.775
<stop c-5.876,0-7.176-3.641-7.176-9.775v-23.66c0-1.508,0-1.82-1.977-2.028v-1.976h6.604v1.976c-2.028,0.208-2.028,0.52-2.028,2.028
style="stop-color:#808080;stop-opacity:1;" v23.869c0,4.68,0.937,7.072,4.681,7.072c3.848,0,4.784-2.395,4.784-7.072V21.656c0-1.508,0-1.82-2.028-2.028v-1.976H21.666
offset="0" M23.166,16.152h-1.5h-6.604h-1.5v1.5v1.976v1.354l1.347,0.138c0.314,0.032,0.531,0.063,0.678,0.09
id="stop3299" /> c0.003,0.14,0.003,0.301,0.003,0.446v23.869c0,5.197-1.241,5.572-3.284,5.572c-1.921,0-3.181-0.39-3.181-5.572V21.656
<stop c0-0.146,0-0.306,0.003-0.446c0.147-0.026,0.364-0.058,0.678-0.09l1.347-0.138v-1.354v-1.976v-1.5h-1.5H3.049h-1.5v1.5v1.976
style="stop-color:#e8e8e8;stop-opacity:1;" v1.351l1.343,0.141c0.289,0.03,0.491,0.06,0.631,0.084c0.003,0.142,0.003,0.306,0.003,0.452v23.66
offset="1" c0,5.576,1.031,11.275,8.676,11.275c7.92,0,8.988-5.699,8.988-11.275v-23.66c0-0.146,0-0.31,0.003-0.452
id="stop3301" /> c0.14-0.025,0.342-0.054,0.631-0.084l1.343-0.141v-1.351v-1.976L23.166,16.152L23.166,16.152z"/>
</linearGradient> </g>
<inkscape:perspective </g>
sodipodi:type="inkscape:persp3d" </g>
inkscape:vp_x="0 : 32 : 1" <g>
inkscape:vp_y="0 : 1000 : 0" <g>
inkscape:vp_z="64 : 32 : 1" <path fill="#EBEBEB" d="M26.306,4.625c0.692,1.026,1.137,2.3,1.6,3.555c0.849-0.32,2.879-0.179,3.744,0.066
inkscape:persp3d-origin="32 : 21.333333 : 1" c0.565-0.948,1.329-3.181,1.941-3.62c2.123,0.543,4.129,1.28,5.577,2.497c-0.175,1.365-0.975,2.508-1.377,3.645
id="perspective3327" /> c0.948,0.637,1.856,1.56,2.568,2.626c1.178-0.335,3.447-1.214,3.749-1.26c0.347,0,1.843,3.461,2.359,5.611
<linearGradient c-1.018,0.708-2.347,1.205-3.637,1.632c0.121,2.126,0.11,1.991,0,3.908c1.065,0.593,2.367,0.949,3.375,1.599
inkscape:collect="always" c-0.34,2.033-1.218,4.186-2.31,5.686c-0.702-0.076-2.286-0.793-3.376-1.242c-0.357,0.483-1.85,1.938-3.021,2.666
xlink:href="#linearGradient3297" c0.663,1.22,1.471,3.739,1.471,3.739s-3.789,1.961-5.689,2.385c-0.574-0.989-1.33-2.695-1.644-3.637
id="linearGradient3344" c-0.865,0.062-2.938,0.154-3.76,0.004c-0.653,0.97-1.458,2.673-1.927,3.371c-2.259-0.346-4.094-1.164-5.57-2.296
gradientUnits="userSpaceOnUse" c0.092-0.649,0.873-2.456,1.306-3.568c-0.854-0.839-1.87-1.804-2.667-2.843c-1.162,0.408-2.225,0.87-3.377,1.245
x1="274.50203" c-1.517-1.195-2.492-3.723-2.488-5.864c1.326-0.637,2.205-0.885,3.376-1.422c-0.166-1.406-0.224-2.124,0-3.73
y1="427.10938" c-0.95-0.708-2.335-0.981-3.376-1.599c0.072-2.272,0.983-4.255,2.488-5.864c1.298,0.301,2.284,1.031,3.519,1.335
x2="481.21672" c0.8-0.942,1.604-1.914,2.7-2.58c-0.431-1.228-1.181-2.135-1.245-3.731C22.085,5.734,23.95,4.936,26.306,4.625z M21.687,23.281
y2="427.10938" /> c1.895,8.187,14.204,7.626,15.99,0c1.388-5.915-3.487-10.71-9.062-9.951C23.943,13.967,20.494,18.146,21.687,23.281z"/>
<linearGradient <g opacity="0.35">
inkscape:collect="always" <path d="M33.591,4.625c2.123,0.543,4.129,1.28,5.577,2.497c-0.175,1.365-0.975,2.508-1.377,3.645
xlink:href="#linearGradient3307" c0.948,0.637,1.856,1.56,2.568,2.626c1.178-0.335,3.447-1.214,3.749-1.26c0.347,0,1.843,3.461,2.359,5.61
id="linearGradient3346" c-1.018,0.708-2.347,1.206-3.637,1.632c0.121,2.126,0.11,1.992,0,3.909c1.065,0.593,2.367,0.949,3.375,1.599
gradientUnits="userSpaceOnUse" c-0.34,2.033-1.218,4.186-2.31,5.686c-0.702-0.076-2.286-0.793-3.376-1.242c-0.357,0.483-1.85,1.938-3.021,2.665
x1="395.91437" c0.663,1.22,1.471,3.741,1.471,3.741s-3.789,1.959-5.689,2.385c-0.574-0.989-1.33-2.695-1.644-3.637
y1="519.13428" c-0.521,0.037-1.476,0.085-2.331,0.085c-0.57,0-1.099-0.023-1.429-0.081c-0.653,0.97-1.458,2.672-1.927,3.371
x2="360.02484" c-2.259-0.346-4.094-1.166-5.57-2.296c0.092-0.649,0.873-2.456,1.306-3.568c-0.854-0.839-1.87-1.804-2.667-2.843
y2="519.13428" /> c-1.162,0.408-2.225,0.87-3.377,1.245c-1.517-1.195-2.492-3.723-2.488-5.864c1.326-0.637,2.205-0.885,3.376-1.422
<linearGradient c-0.166-1.406-0.224-2.124,0-3.73c-0.95-0.708-2.335-0.981-3.376-1.599c0.072-2.272,0.983-4.255,2.488-5.864
inkscape:collect="always" c1.298,0.301,2.284,1.031,3.519,1.335c0.8-0.942,1.604-1.914,2.7-2.58c-0.431-1.228-1.181-2.135-1.245-3.731
xlink:href="#linearGradient3297" c1.466-1.2,3.331-1.999,5.687-2.311c0.693,1.026,1.137,2.3,1.6,3.555c0.351-0.133,0.903-0.185,1.492-0.185
id="linearGradient3926" c0.836,0,1.745,0.107,2.252,0.251C32.215,7.296,32.979,5.063,33.591,4.625 M29.535,29.214c3.601,0,7.232-2.051,8.142-5.932
gradientUnits="userSpaceOnUse" c1.292-5.499-2.832-10.03-7.896-10.03c-0.385,0-0.773,0.025-1.165,0.079c-4.675,0.637-8.122,4.814-6.928,9.951
x1="274.50203" C22.618,27.302,26.062,29.214,29.535,29.214 M33.368,3.437l-0.415,0.297c-0.586,0.42-1.003,1.282-1.621,2.653
y1="427.10938" c-0.096,0.21-0.191,0.426-0.284,0.624c-0.515-0.072-1.098-0.114-1.652-0.114c-0.285,0-0.545,0.011-0.788,0.033
x2="481.21672" c-0.379-1.015-0.799-2.032-1.396-2.919l-0.381-0.562l-0.669,0.088c-2.473,0.326-4.57,1.184-6.237,2.549l-0.422,0.345l0.021,0.546
y2="427.10938" /> c0.053,1.313,0.488,2.238,0.875,3.054c0.038,0.082,0.076,0.164,0.115,0.244c-0.653,0.518-1.198,1.109-1.713,1.706
<linearGradient c-0.287-0.111-0.574-0.242-0.872-0.379c-0.621-0.285-1.263-0.58-2.038-0.76L15.274,10.7l-0.432,0.462
inkscape:collect="always" c-1.744,1.866-2.705,4.14-2.783,6.577l-0.021,0.647l0.556,0.331c0.537,0.319,1.117,0.544,1.676,0.763
xlink:href="#linearGradient3307" c0.387,0.151,0.76,0.297,1.085,0.46c-0.102,0.988-0.083,1.675-0.004,2.479c-0.23,0.094-0.457,0.183-0.691,0.274
id="linearGradient3928" c-0.597,0.233-1.214,0.476-1.981,0.844l-0.619,0.297l-0.001,0.687c-0.007,2.608,1.188,5.374,2.905,6.728l0.46,0.363l0.558-0.182
gradientUnits="userSpaceOnUse" c0.68-0.222,1.331-0.473,1.962-0.715c0.239-0.091,0.477-0.184,0.72-0.275c0.559,0.651,1.166,1.259,1.735,1.818
x1="395.91437" c-0.023,0.059-0.047,0.117-0.071,0.177c-0.569,1.411-0.948,2.379-1.032,2.966l-0.088,0.633l0.507,0.389
y1="519.13428" c1.703,1.31,3.746,2.153,6.072,2.51l0.689,0.106l0.389-0.579c0.244-0.364,0.528-0.893,0.858-1.509
x2="360.02484" c0.233-0.434,0.486-0.906,0.726-1.314c0.25,0.015,0.534,0.021,0.857,0.021c0.527,0,1.095-0.02,1.583-0.04
y2="519.13428" /> c0.387,0.971,0.955,2.21,1.441,3.046l0.404,0.692l0.782-0.174c2.018-0.448,5.797-2.398,5.956-2.479l0.824-0.427l-0.282-0.884
<linearGradient c-0.027-0.086-0.558-1.726-1.128-3.039c0.717-0.549,1.431-1.202,1.932-1.718c1.309,0.553,2.294,0.946,2.959,1.02l0.632,0.069
inkscape:collect="always" l0.375-0.515c1.199-1.649,2.134-3.949,2.502-6.148l0.119-0.711l-0.606-0.39c-0.64-0.413-1.345-0.707-2.028-0.99
xlink:href="#linearGradient3307" c-0.278-0.116-0.548-0.228-0.805-0.345c0.061-1.045,0.064-1.365,0.006-2.483c1.073-0.382,2.199-0.859,3.122-1.5l0.615-0.428
id="linearGradient3931" l-0.175-0.728c-0.25-1.043-0.736-2.458-1.301-3.785c-0.891-2.093-1.347-2.667-2.124-2.667h-0.085l-0.082,0.013
gradientUnits="userSpaceOnUse" c-0.216,0.034-0.507,0.132-1.562,0.507c-0.502,0.179-1.082,0.386-1.594,0.556c-0.497-0.638-1.061-1.218-1.653-1.709
x1="395.91437" c0.057-0.122,0.114-0.245,0.174-0.371c0.384-0.801,0.812-1.71,0.946-2.77l0.077-0.595l-0.458-0.384
y1="519.13428" c-1.382-1.161-3.291-2.025-6.011-2.72L33.368,3.437L33.368,3.437z M29.535,28.118c-2.71,0-5.913-1.335-6.78-5.083
x2="360.02484" c-0.474-2.029-0.131-4.019,0.963-5.604c1.123-1.632,2.962-2.73,5.044-3.014c0.339-0.046,0.68-0.069,1.018-0.069
y2="519.13428" c2.2,0,4.23,0.97,5.571,2.66c1.33,1.677,1.775,3.815,1.257,6.022C35.786,26.545,32.463,28.118,29.535,28.118L29.535,28.118z"/>
gradientTransform="matrix(0.1340241,0,0,0.1340241,-5.388189,-54.63095)" /> </g>
<linearGradient </g>
inkscape:collect="always" </g>
xlink:href="#linearGradient3297" <g>
id="linearGradient3934" <g>
gradientUnits="userSpaceOnUse" <path fill="#EBEBEB" d="M6.816,54.741c-3.426,0-4.599-2.897-4.599-5.979v-8.854h1.84v8.877c0,1.862,0.368,4.438,2.759,4.438
x1="274.50204" c2.438,0,2.759-2.575,2.759-4.461v-8.854h1.84v8.945C11.415,51.867,10.265,54.741,6.816,54.741z"/>
y1="427.10938" <g opacity="0.35">
x2="481.21671" <path d="M11.415,39.909v8.945c0,3.013-1.15,5.887-4.599,5.887c-3.426,0-4.599-2.897-4.599-5.979v-8.854h1.84v8.877
y2="427.10938" c0,1.862,0.368,4.438,2.759,4.438c2.438,0,2.759-2.575,2.759-4.461v-8.854H11.415 M12.415,38.909h-1h-1.84h-1v1v8.854
gradientTransform="matrix(9.476938e-2,9.476938e-2,-9.476938e-2,9.476938e-2,34.81989,-42.43994)" /> c0,3.461-1.233,3.461-1.759,3.461c-0.435,0-1.759,0-1.759-3.438v-8.877v-1h-1h-1.84h-1v1v8.854c0,4.37,2.093,6.979,5.599,6.979
</defs> s5.599-2.574,5.599-6.887v-8.945V38.909L12.415,38.909z"/>
<sodipodi:namedview </g>
id="base" </g>
pagecolor="#ffffff" <g>
bordercolor="#666666" <path fill="#EBEBEB" d="M17.465,50.258c-0.667,0-1.403-0.346-1.495-0.392v4.53h-1.817V42.577h2.737
borderopacity="1.0" c3.403,0,4.622,1.794,4.622,3.679c0,1.219-0.437,2.323-1.288,3.059C19.535,49.912,18.592,50.258,17.465,50.258z M15.971,44.003
inkscape:pageopacity="0.0" v4.461c0,0,0.713,0.345,1.265,0.345c1.563,0,2.46-1.127,2.46-2.575c0-1.288-0.897-2.23-2.805-2.23H15.971z"/>
inkscape:pageshadow="2" <g opacity="0.35">
inkscape:zoom="10.614848" <path d="M16.891,42.577c3.403,0,4.622,1.794,4.622,3.679c0,1.219-0.437,2.323-1.288,3.059c-0.69,0.598-1.632,0.943-2.759,0.943
inkscape:cx="40.777992" c-0.667,0-1.403-0.346-1.495-0.392v4.53h-1.817V42.577H16.891 M17.235,48.809c1.563,0,2.46-1.127,2.46-2.575
inkscape:cy="30.845103" c0-1.288-0.897-2.23-2.805-2.23h-0.92v4.461C15.971,48.464,16.684,48.809,17.235,48.809 M16.891,41.577h-2.737h-1v1v11.819v1h1
inkscape:current-layer="layer1" h1.817h1v-1v-3.178c0.162,0.024,0.328,0.039,0.495,0.039c1.336,0,2.517-0.41,3.414-1.188c1.053-0.909,1.633-2.265,1.633-3.814
showgrid="true" C22.512,43.994,21.036,41.577,16.891,41.577L16.891,41.577z M16.971,47.767v-2.763c1.145,0.018,1.725,0.432,1.725,1.229
inkscape:document-units="px" c0,0.369-0.105,1.575-1.46,1.575C17.166,47.809,17.072,47.792,16.971,47.767L16.971,47.767z"/>
inkscape:grid-bbox="true" </g>
inkscape:window-width="1280" </g>
inkscape:window-height="949" <g>
inkscape:window-x="0" <path fill="#EBEBEB" d="M25.285,49.774v4.622h-1.817V42.577h1.817v5.013l3.978-5.013h1.977l-4.713,6.07l4.805,5.036v0.713h-1.725
inkscape:window-y="25" /> L25.285,49.774z"/>
<metadata <g opacity="0.35">
id="metadata3324"> <path d="M31.24,42.577l-4.713,6.07l4.805,5.036v0.713h-1.725l-4.322-4.622v4.622h-1.817V42.577h1.817v5.013l3.978-5.013H31.24
<rdf:RDF> M33.283,41.577H31.24h-1.977H28.78l-0.3,0.378l-2.195,2.766v-2.144v-1h-1h-1.817h-1v1v11.819v1h1h1.817h1v-1v-2.089l2.592,2.771
<cc:Work l0.296,0.317h0.434h1.725h1v-1v-0.713v-0.4l-0.276-0.29l-4.21-4.413l4.185-5.39L33.283,41.577L33.283,41.577z"/>
rdf:about=""> </g>
<dc:format>image/svg+xml</dc:format> </g>
<dc:type <g>
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> <path fill="#EBEBEB" d="M32.83,42.577h6.484v1.472h-4.668v3.426h3.586v1.518h-3.586v3.887h4.875v1.518H32.83V42.577z"/>
</cc:Work> <g opacity="0.35">
</rdf:RDF> <path d="M39.314,42.577v1.472h-4.668v3.426h3.586v1.518h-3.586v3.887h4.875v1.518H32.83V42.577H39.314 M40.314,41.577h-1H32.83
</metadata> h-1v1v11.819v1h1h6.691h1v-1v-1.518v-1h-1h-3.875v-1.887h2.586h1v-1v-1.518v-1h-1h-2.586v-1.426h3.668h1v-1v-1.472V41.577
<g L40.314,41.577z"/>
id="layer1" </g>
inkscape:label="Layer 1" </g>
inkscape:groupmode="layer"> <g>
<path <path fill="#EBEBEB" d="M41.73,42.577h6.484v1.472h-4.668v3.426h3.588v1.518h-3.588v3.887h4.875v1.518H41.73V42.577z"/>
style="fill:url(#linearGradient3934);fill-opacity:1.0;stroke:#000000;stroke-width:0.16698611999999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:60.01653385000000185;stroke-opacity:1" <g opacity="0.35">
d="M 52.772764,3.4047476 C 47.84595,1.474827 42.046422,2.4803794 38.086472,6.4403293 C 33.902475,10.624326 33.011815,16.866643 35.403314,21.958815 C 35.37805,21.983383 35.351338,22.004868 35.326314,22.029892 L 4.4611114,52.895095 C 2.1557088,55.200497 1.7831477,58.539073 3.6229947,60.378914 C 5.462838,62.218757 8.798451,61.843238 11.103853,59.537836 L 41.969055,28.672634 C 41.994066,28.647623 42.018538,28.623844 42.043094,28.598595 C 47.134477,30.989307 53.374621,30.096472 57.558618,25.912475 C 61.518861,21.952234 62.524694,16.153234 60.5942,11.226183 L 51.875417,19.944966 C 51.22515,20.595238 50.308186,20.723277 49.820106,20.235197 L 43.76375,14.178841 C 43.27567,13.690763 43.403714,12.773798 44.053981,12.123531 L 52.772764,3.4047476 z" <path d="M48.215,42.577v1.472h-4.668v3.426h3.588v1.518h-3.588v3.887h4.875v1.518H41.73V42.577H48.215 M49.215,41.577h-1H41.73
id="path2383" /> h-1v1v11.819v1h1h6.691h1v-1v-1.518v-1h-1h-3.875v-1.887h2.588h1v-1v-1.518v-1h-1h-2.588v-1.426h3.668h1v-1v-1.472V41.577
<rect L49.215,41.577z"/>
style="fill:url(#linearGradient3931);fill-opacity:1;stroke:#000000;stroke-width:0.13748859;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:60.01653385;stroke-opacity:1" </g>
id="rect3305" </g>
width="4.6725717" <g>
height="43.171928" <path fill="#EBEBEB" d="M53.943,50.258c-0.668,0-1.404-0.346-1.496-0.392v4.53h-1.816V42.577h2.736
x="42.932579" c3.404,0,4.623,1.794,4.623,3.679c0,1.219-0.438,2.323-1.289,3.059C56.012,49.912,55.07,50.258,53.943,50.258z M52.447,44.003
y="-6.640388" v4.461c0,0,0.713,0.345,1.266,0.345c1.563,0,2.461-1.127,2.461-2.575c0-1.288-0.898-2.23-2.807-2.23H52.447z"/>
ry="2.4622774" <g opacity="0.35">
transform="matrix(0.7071068,0.7071068,-0.7071068,0.7071068,0,0)" /> <path d="M53.367,42.577c3.404,0,4.623,1.794,4.623,3.679c0,1.219-0.438,2.323-1.289,3.059c-0.689,0.598-1.631,0.943-2.758,0.943
<g c-0.668,0-1.404-0.346-1.496-0.392v4.53h-1.816V42.577H53.367 M53.713,48.809c1.563,0,2.461-1.127,2.461-2.575
inkscape:groupmode="layer" c0-1.288-0.898-2.23-2.807-2.23h-0.92v4.461C52.447,48.464,53.16,48.809,53.713,48.809 M53.367,41.577h-2.736h-1v1v11.819v1h1
id="layer2" h1.816h1v-1v-3.178c0.162,0.024,0.329,0.039,0.496,0.039c1.336,0,2.517-0.411,3.413-1.188c1.053-0.91,1.634-2.265,1.634-3.814
inkscape:label="Schattierung" /> C58.99,43.994,57.513,41.577,53.367,41.577L53.367,41.577z M53.447,47.767v-2.763c1.146,0.018,1.727,0.432,1.727,1.229
</g> c0,0.369-0.105,1.575-1.461,1.575C53.643,47.809,53.549,47.792,53.447,47.767L53.447,47.767z"/>
</svg> </g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View file

@ -0,0 +1,749 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg5603"
sodipodi:version="0.32"
inkscape:version="0.46"
sodipodi:docname="icon_cleanup.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
id="defs5605">
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5601"
gradientUnits="userSpaceOnUse"
x1="395.53043"
y1="611.20276"
x2="395.53043"
y2="682.70667" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5599"
gradientUnits="userSpaceOnUse"
x1="406.30539"
y1="611.20276"
x2="406.30539"
y2="682.70667" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5597"
gradientUnits="userSpaceOnUse"
x1="438.18127"
y1="610.75385"
x2="438.18127"
y2="682.25769" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5595"
gradientUnits="userSpaceOnUse"
x1="427.40634"
y1="610.75385"
x2="424.43286"
y2="682.25769" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5593"
gradientUnits="userSpaceOnUse"
x1="416.63138"
y1="610.75385"
x2="416.63138"
y2="682.25769" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5591"
gradientUnits="userSpaceOnUse"
x1="385.20444"
y1="611.65173"
x2="385.20444"
y2="683.15558" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5589"
gradientUnits="userSpaceOnUse"
x1="374.4295"
y1="611.65173"
x2="374.4295"
y2="683.15558" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5587"
gradientUnits="userSpaceOnUse"
x1="361.40976"
y1="611.20276"
x2="361.40976"
y2="682.70667" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5585"
gradientUnits="userSpaceOnUse"
x1="349.73691"
y1="611.20276"
x2="349.73691"
y2="682.70667" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5583"
gradientUnits="userSpaceOnUse"
x1="332.0408"
y1="611.71985"
x2="332.0408"
y2="683.22369" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5581"
gradientUnits="userSpaceOnUse"
x1="322.83875"
y1="611.71985"
x2="322.83875"
y2="683.22369" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5579"
gradientUnits="userSpaceOnUse"
x1="300.60043"
y1="611.71985"
x2="300.60043"
y2="683.22369" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5577"
gradientUnits="userSpaceOnUse"
x1="289.86472"
y1="611.71985"
x2="289.86472"
y2="683.22369" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5575"
gradientUnits="userSpaceOnUse"
x1="269.1601"
y1="610.953"
x2="269.1601"
y2="682.45685" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5573"
gradientUnits="userSpaceOnUse"
x1="259.95804"
y1="610.953"
x2="259.95804"
y2="682.45685" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5571"
gradientUnits="userSpaceOnUse"
x1="339.70917"
y1="611.71985"
x2="339.70917"
y2="683.22369" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5569"
gradientUnits="userSpaceOnUse"
x1="311.33618"
y1="611.71985"
x2="311.33618"
y2="683.22369" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5567"
gradientUnits="userSpaceOnUse"
x1="277.59531"
y1="610.953"
x2="277.59531"
y2="682.45685" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5565"
gradientUnits="userSpaceOnUse"
x1="251.52283"
y1="611.71985"
x2="251.52283"
y2="683.22369" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5563"
gradientUnits="userSpaceOnUse"
x1="240.02026"
y1="611.71985"
x2="240.02026"
y2="683.22369" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5561"
gradientUnits="userSpaceOnUse"
x1="229.28452"
y1="611.71985"
x2="229.28452"
y2="683.22369" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5559"
gradientUnits="userSpaceOnUse"
x1="220.08247"
y1="610.953"
x2="220.08247"
y2="682.45691" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5557"
gradientUnits="userSpaceOnUse"
x1="208.5799"
y1="610.953"
x2="208.5799"
y2="682.45691" />
<linearGradient
id="linearGradient5329">
<stop
style="stop-color:#ffe680;stop-opacity:1;"
offset="0"
id="stop5331" />
<stop
style="stop-color:#ffc341;stop-opacity:1;"
offset="1"
id="stop5333" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5555"
gradientUnits="userSpaceOnUse"
x1="196.17035"
y1="611.30573"
x2="196.17035"
y2="679.24634" />
<linearGradient
id="linearGradient3197">
<stop
style="stop-color:#803300;stop-opacity:1;"
offset="0"
id="stop3199" />
<stop
id="stop3205"
offset="0.39693579"
style="stop-color:#bf7d51;stop-opacity:1;" />
<stop
style="stop-color:#dfa27a;stop-opacity:1;"
offset="0.63405275"
id="stop3207" />
<stop
style="stop-color:#973c00;stop-opacity:1;"
offset="1"
id="stop3201" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3197"
id="linearGradient5553"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.6458849,0,0,0.9865768,-211.71948,8.0732737)"
x1="321.41293"
y1="612.16199"
x2="321.41293"
y2="590.72852" />
<linearGradient
id="linearGradient5272">
<stop
style="stop-color:#c87137;stop-opacity:1;"
offset="0"
id="stop5274" />
<stop
style="stop-color:#faf1eb;stop-opacity:1;"
offset="1"
id="stop5276" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5272"
id="linearGradient5551"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.9977113,0,0,1.1799457,0.7341533,-111.29357)"
x1="339.84283"
y1="423.96219"
x2="266.61029"
y2="423.96219" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 32 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="64 : 32 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective5611" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5840"
gradientUnits="userSpaceOnUse"
x1="395.53043"
y1="611.20276"
x2="395.53043"
y2="682.70667"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5843"
gradientUnits="userSpaceOnUse"
x1="406.30539"
y1="611.20276"
x2="406.30539"
y2="682.70667"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5846"
gradientUnits="userSpaceOnUse"
x1="438.18127"
y1="610.75385"
x2="438.18127"
y2="682.25769"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5849"
gradientUnits="userSpaceOnUse"
x1="427.40634"
y1="610.75385"
x2="424.43286"
y2="682.25769"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5852"
gradientUnits="userSpaceOnUse"
x1="416.63138"
y1="610.75385"
x2="416.63138"
y2="682.25769"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5855"
gradientUnits="userSpaceOnUse"
x1="385.20444"
y1="611.65173"
x2="385.20444"
y2="683.15558"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5858"
gradientUnits="userSpaceOnUse"
x1="374.4295"
y1="611.65173"
x2="374.4295"
y2="683.15558"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5861"
gradientUnits="userSpaceOnUse"
x1="361.40976"
y1="611.20276"
x2="361.40976"
y2="682.70667"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5864"
gradientUnits="userSpaceOnUse"
x1="349.73691"
y1="611.20276"
x2="349.73691"
y2="682.70667"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5867"
gradientUnits="userSpaceOnUse"
x1="332.0408"
y1="611.71985"
x2="332.0408"
y2="683.22369"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5870"
gradientUnits="userSpaceOnUse"
x1="322.83875"
y1="611.71985"
x2="322.83875"
y2="683.22369"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5873"
gradientUnits="userSpaceOnUse"
x1="300.60043"
y1="611.71985"
x2="300.60043"
y2="683.22369"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5876"
gradientUnits="userSpaceOnUse"
x1="289.86472"
y1="611.71985"
x2="289.86472"
y2="683.22369"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5879"
gradientUnits="userSpaceOnUse"
x1="269.1601"
y1="610.953"
x2="269.1601"
y2="682.45685"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5882"
gradientUnits="userSpaceOnUse"
x1="259.95804"
y1="610.953"
x2="259.95804"
y2="682.45685"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5885"
gradientUnits="userSpaceOnUse"
x1="339.70917"
y1="611.71985"
x2="339.70917"
y2="683.22369"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5888"
gradientUnits="userSpaceOnUse"
x1="311.33618"
y1="611.71985"
x2="311.33618"
y2="683.22369"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5891"
gradientUnits="userSpaceOnUse"
x1="277.59531"
y1="610.953"
x2="277.59531"
y2="682.45685"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5894"
gradientUnits="userSpaceOnUse"
x1="251.52283"
y1="611.71985"
x2="251.52283"
y2="683.22369"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5897"
gradientUnits="userSpaceOnUse"
x1="240.02026"
y1="611.71985"
x2="240.02026"
y2="683.22369"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5900"
gradientUnits="userSpaceOnUse"
x1="229.28452"
y1="611.71985"
x2="229.28452"
y2="683.22369"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5903"
gradientUnits="userSpaceOnUse"
x1="220.08247"
y1="610.953"
x2="220.08247"
y2="682.45691"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5906"
gradientUnits="userSpaceOnUse"
x1="208.5799"
y1="610.953"
x2="208.5799"
y2="682.45691"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5329"
id="linearGradient5909"
gradientUnits="userSpaceOnUse"
x1="196.17035"
y1="611.30573"
x2="196.17035"
y2="679.24634"
gradientTransform="matrix(9.507719e-2,-9.507719e-2,9.507719e-2,9.507719e-2,-44.329294,16.35555)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3197"
id="linearGradient5912"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.2213048,0,0,0.1326546,-71.37835,-18.694896)"
x1="321.41293"
y1="612.16199"
x2="321.41293"
y2="590.72852" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5272"
id="linearGradient5917"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.1341517,0,0,0.1586549,-42.811951,-34.744896)"
x1="339.84283"
y1="423.96219"
x2="266.61029"
y2="423.96219" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.1172201"
inkscape:cx="-22.786837"
inkscape:cy="27.255752"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1280"
inkscape:window-height="725"
inkscape:window-x="0"
inkscape:window-y="25" />
<metadata
id="metadata5608">
<rdf:RDF>
<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>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<rect
style="fill:url(#linearGradient5917);fill-opacity:1.0;fill-rule:nonzero;stroke:#000000;stroke-width:0.14588976000000001;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2383"
width="4.9827776"
height="61.648746"
x="-2.2713048"
y="1.6943892"
ry="2.9464471"
transform="matrix(0.7071068,-0.7071068,0.7071068,0.7071068,0,0)" />
<path
style="fill:#ebcab5;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 44.904132,41.323651 L 4.8565979,1.129034 C 4.8565979,1.129034 3.2946309,0.33074409 2.991018,0.73427166 C 2.4571168,1.4438736 45.452675,43.122386 45.452675,43.122386 C 45.452675,43.122386 45.67752,42.53682 44.904132,41.323651 z"
id="path3157"
sodipodi:nodetypes="ccscc" />
<path
style="fill:#ffe680;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="M 32.990203,51.516739 L 51.190377,33.316565 C 52.794548,31.712394 54.360316,30.695278 54.701069,31.036031 L 57.18543,33.520392 L 59.669792,36.004754 C 60.010545,36.345507 58.993429,37.911276 57.389258,39.515446 L 39.189084,57.71562 C 37.584914,59.319791 36.019144,60.336908 35.678391,59.996155 L 33.194029,57.511793 L 30.709668,55.027432 C 30.368915,54.686679 31.386032,53.12091 32.990203,51.516739 z"
id="rect3159"
sodipodi:nodetypes="ccccccccccc" />
<rect
style="fill:url(#linearGradient5912);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.17133911;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3175"
width="34.587376"
height="2.7105932"
x="-17.541821"
y="59.73428"
ry="1.3552966"
rx="0.3055422"
transform="matrix(0.7071068,-0.7071068,0.7071068,0.7071068,0,0)" />
<path
style="fill:url(#linearGradient5909);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 31.986721,56.353875 L 33.04455,55.296047 C 33.04455,55.296047 37.94372,59.481767 39.509347,61.724389 C 39.768454,62.095537 39.363163,62.10712 39.24489,61.988847 L 39.016887,62.289758 L 38.916474,62.681805 C 39.094748,62.97744 38.34756,63.177813 38.378609,63.21967 C 38.378609,63.21967 37.318113,61.756505 36.807978,61.175132 C 36.358275,60.662631 35.683018,60.050172 35.200893,59.568047 C 34.718767,59.085921 34.075933,58.443087 33.593807,57.960961 C 33.111681,57.478835 31.986721,56.353875 31.986721,56.353875 z"
id="rect5280"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5906);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 33.133051,55.140476 L 34.19088,54.082647 C 34.19088,54.082647 39.09005,58.268367 40.655678,60.51099 C 40.914785,60.882138 40.509494,60.89372 40.39122,60.775447 L 40.163218,61.076358 L 40.062805,61.468405 C 40.241078,61.76404 39.49389,61.964413 39.52494,62.00627 C 39.52494,62.00627 38.464443,60.543105 37.954308,59.961732 C 37.504606,59.449231 36.829348,58.836772 36.347223,58.354647 C 35.865097,57.872521 35.222263,57.229687 34.740137,56.747562 C 34.258011,56.265436 33.133051,55.140476 33.133051,55.140476 z"
id="path5283"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5903);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 34.226684,54.046844 L 35.284512,52.989015 C 35.284512,52.989015 40.183682,57.174735 41.74931,59.417358 C 42.008417,59.788506 41.603126,59.800088 41.484852,59.681815 L 41.25685,59.982726 L 41.156437,60.374773 C 41.33471,60.670408 40.587522,60.870781 40.618572,60.912638 C 40.618572,60.912638 39.558075,59.449473 39.04794,58.8681 C 38.598238,58.355599 37.92298,57.74314 37.440855,57.261015 C 36.958729,56.778889 36.315895,56.136055 35.833769,55.653929 C 35.351643,55.171804 34.226684,54.046844 34.226684,54.046844 z"
id="path5285"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5900);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 35.174496,53.244846 L 36.232324,52.187017 C 36.232324,52.187017 41.131494,56.372737 42.697122,58.61536 C 42.956229,58.986508 42.550938,58.99809 42.432665,58.879817 L 42.204662,59.180728 L 42.104249,59.572775 C 42.282522,59.86841 41.535335,60.068783 41.566384,60.11064 C 41.566384,60.11064 40.505887,58.647475 39.995753,58.066102 C 39.54605,57.553601 38.870793,56.941142 38.388668,56.459017 C 37.906542,55.976891 37.263708,55.334058 36.781582,54.851932 C 36.299456,54.369806 35.174496,53.244846 35.174496,53.244846 z"
id="path5287"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5897);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 36.195221,52.224123 L 37.253049,51.166294 C 37.253049,51.166294 42.152219,55.352014 43.717847,57.594637 C 43.976954,57.965785 43.571663,57.977367 43.45339,57.859094 L 43.225387,58.160005 L 43.124974,58.552052 C 43.303247,58.847687 42.55606,59.04806 42.587109,59.089917 C 42.587109,59.089917 41.526612,57.626752 41.016477,57.045379 C 40.566775,56.532878 39.891518,55.920419 39.409392,55.438294 C 38.927267,54.956168 38.284433,54.313334 37.802307,53.831208 C 37.320181,53.349083 36.195221,52.224123 36.195221,52.224123 z"
id="path5289"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5894);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 37.288853,51.130491 L 38.346681,50.072662 C 38.346681,50.072662 43.245851,54.258382 44.811479,56.501005 C 45.070586,56.872153 44.665295,56.883735 44.547022,56.765462 L 44.319019,57.066373 L 44.218606,57.45842 C 44.396879,57.754055 43.649692,57.954428 43.680741,57.996285 C 43.680741,57.996285 42.620244,56.53312 42.11011,55.951747 C 41.660407,55.439246 40.98515,54.826787 40.503025,54.344662 C 40.020899,53.862536 39.378065,53.219702 38.895939,52.737576 C 38.413813,52.25545 37.288853,51.130491 37.288853,51.130491 z"
id="path5291"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5891);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 39.694842,48.578683 L 40.752671,47.520855 C 40.752671,47.520855 45.65184,51.706575 47.217468,53.949197 C 47.476575,54.320345 47.071284,54.331928 46.953011,54.213655 L 46.725008,54.514566 L 46.624595,54.906613 C 46.802869,55.202248 46.055681,55.402621 46.08673,55.444478 C 46.08673,55.444478 45.026233,53.981313 44.516099,53.39994 C 44.066396,52.887439 43.391139,52.27498 42.909014,51.792855 C 42.426888,51.310729 41.784054,50.667895 41.301928,50.185769 C 40.819802,49.703643 39.694842,48.578683 39.694842,48.578683 z"
id="path5293"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5888);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 42.975738,45.443605 L 44.033567,44.385776 C 44.033567,44.385776 48.932736,48.571497 50.498364,50.814119 C 50.757471,51.185267 50.35218,51.19685 50.233907,51.078576 L 50.005904,51.379488 L 49.905491,51.771535 C 50.083765,52.06717 49.336577,52.267542 49.367626,52.3094 C 49.367626,52.3094 48.30713,50.846234 47.796995,50.264862 C 47.347292,49.752361 46.672035,49.139902 46.18991,48.657777 C 45.707784,48.175651 45.06495,47.532817 44.582824,47.050691 C 44.100698,46.568565 42.975738,45.443605 42.975738,45.443605 z"
id="path5295"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5885);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 45.673363,42.74598 L 46.731192,41.688151 C 46.731192,41.688151 51.630362,45.873871 53.195989,48.116494 C 53.455096,48.487642 53.049805,48.499225 52.931532,48.380951 L 52.703529,48.681863 L 52.603116,49.07391 C 52.78139,49.369545 52.034202,49.569917 52.065251,49.611775 C 52.065251,49.611775 51.004755,48.148609 50.49462,47.567237 C 50.044917,47.054736 49.36966,46.442277 48.887535,45.960152 C 48.405409,45.478026 47.762575,44.835192 47.280449,44.353066 C 46.798323,43.87094 45.673363,42.74598 45.673363,42.74598 z"
id="path5297"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5882);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 38.01794,50.255585 L 39.075769,49.197757 C 39.075769,49.197757 43.974938,53.383477 45.540566,55.626099 C 45.799673,55.997248 45.394382,56.00883 45.276109,55.890557 L 45.048106,56.191468 L 44.947693,56.583515 C 45.125967,56.87915 44.378779,57.079523 44.409828,57.12138 C 44.409828,57.12138 43.349331,55.658215 42.839197,55.076842 C 42.389494,54.564341 41.714237,53.951882 41.232112,53.469757 C 40.749986,52.987631 40.107152,52.344797 39.625026,51.862671 C 39.1429,51.380545 38.01794,50.255585 38.01794,50.255585 z"
id="path5299"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5879);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 38.892845,49.38068 L 39.950674,48.322852 C 39.950674,48.322852 44.849843,52.508572 46.415471,54.751194 C 46.674578,55.122342 46.269287,55.133925 46.151014,55.015652 L 45.923011,55.316563 L 45.822598,55.70861 C 46.000872,56.004245 45.253684,56.204618 45.284733,56.246475 C 45.284733,56.246475 44.224236,54.78331 43.714102,54.201937 C 43.264399,53.689436 42.589142,53.076977 42.107017,52.594852 C 41.624891,52.112726 40.982057,51.469892 40.499931,50.987766 C 40.017805,50.50564 38.892845,49.38068 38.892845,49.38068 z"
id="path5301"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5876);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 40.934292,47.485051 L 41.992121,46.427223 C 41.992121,46.427223 46.89129,50.612943 48.456918,52.855565 C 48.716025,53.226713 48.310734,53.238296 48.192461,53.120023 L 47.964458,53.420934 L 47.864045,53.812981 C 48.042319,54.108616 47.295131,54.308988 47.32618,54.350846 C 47.32618,54.350846 46.265683,52.887681 45.755549,52.306308 C 45.305846,51.793807 44.630589,51.181348 44.148464,50.699223 C 43.666338,50.217097 43.023504,49.574263 42.541378,49.092137 C 42.059252,48.610011 40.934292,47.485051 40.934292,47.485051 z"
id="path5303"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5873);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 41.955014,46.464329 L 43.012843,45.4065 C 43.012843,45.4065 47.912012,49.59222 49.47764,51.834843 C 49.736747,52.205991 49.331456,52.217574 49.213183,52.0993 L 48.98518,52.400212 L 48.884767,52.792259 C 49.063041,53.087894 48.315853,53.288266 48.346902,53.330124 C 48.346902,53.330124 47.286406,51.866958 46.776271,51.285586 C 46.326568,50.773085 45.651311,50.160626 45.169186,49.678501 C 44.68706,49.196375 44.044226,48.553541 43.5621,48.071415 C 43.079974,47.589289 41.955014,46.464329 41.955014,46.464329 z"
id="path5305"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5870);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 44.069369,44.349974 L 45.127198,43.292145 C 45.127198,43.292145 50.026368,47.477865 51.591995,49.720488 C 51.851102,50.091636 51.445811,50.103219 51.327538,49.984945 L 51.099535,50.285857 L 50.999122,50.677904 C 51.177396,50.973539 50.430208,51.173911 50.461257,51.215769 C 50.461257,51.215769 49.400761,49.752603 48.890626,49.171231 C 48.440923,48.65873 47.765666,48.046271 47.283541,47.564146 C 46.801415,47.08202 46.158581,46.439186 45.676455,45.95706 C 45.194329,45.474934 44.069369,44.349974 44.069369,44.349974 z"
id="path5307"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5867);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 44.944275,43.475068 L 46.002104,42.417239 C 46.002104,42.417239 50.901274,46.602959 52.466901,48.845582 C 52.726008,49.21673 52.320717,49.228313 52.202444,49.110039 L 51.974441,49.410951 L 51.874028,49.802998 C 52.052302,50.098633 51.305114,50.299005 51.336163,50.340863 C 51.336163,50.340863 50.275667,48.877697 49.765532,48.296325 C 49.315829,47.783824 48.640572,47.171365 48.158447,46.68924 C 47.676321,46.207114 47.033487,45.56428 46.551361,45.082154 C 46.069235,44.600028 44.944275,43.475068 44.944275,43.475068 z"
id="path5309"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5864);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 46.577609,41.743411 L 47.635438,40.685582 C 47.635438,40.685582 52.534607,44.871302 54.100235,47.113925 C 54.359342,47.485073 53.954051,47.496656 53.835778,47.378382 L 53.607775,47.679294 L 53.507362,48.071341 C 53.685636,48.366976 52.938448,48.567348 52.969497,48.609206 C 52.969497,48.609206 51.909001,47.14604 51.398866,46.564668 C 50.949163,46.052167 50.273906,45.439708 49.791781,44.957583 C 49.309655,44.475457 48.666821,43.832623 48.184695,43.350497 C 47.702569,42.868371 46.577609,41.743411 46.577609,41.743411 z"
id="path5311"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5861);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 47.687432,40.633588 L 48.74526,39.57576 C 48.74526,39.57576 53.64443,43.76148 55.210058,46.004102 C 55.469165,46.37525 55.063874,46.386833 54.945601,46.26856 L 54.717598,46.569471 L 54.617185,46.961518 C 54.795458,47.257153 54.048271,47.457526 54.07932,47.499383 C 54.07932,47.499383 53.018823,46.036218 52.508688,45.454845 C 52.058986,44.942344 51.383729,44.329885 50.901603,43.84776 C 50.419478,43.365634 49.776644,42.7228 49.294518,42.240674 C 48.812392,41.758548 47.687432,40.633588 47.687432,40.633588 z"
id="path5313"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5858);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 48.967997,39.438395 L 50.025826,38.380566 C 50.025826,38.380566 54.924995,42.566286 56.490623,44.808909 C 56.74973,45.180057 56.344439,45.191639 56.226166,45.073366 L 55.998163,45.374278 L 55.89775,45.766325 C 56.076024,46.06196 55.328836,46.262332 55.359885,46.30419 C 55.359885,46.30419 54.299388,44.841024 53.789254,44.259652 C 53.339551,43.747151 52.664294,43.134692 52.182169,42.652567 C 51.700043,42.170441 51.057209,41.527607 50.575083,41.045481 C 50.092957,40.563355 48.967997,39.438395 48.967997,39.438395 z"
id="path5315"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5855);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 49.992449,38.413941 L 51.050278,37.356112 C 51.050278,37.356112 55.949447,41.541832 57.515075,43.784455 C 57.774182,44.155603 57.368891,44.167185 57.250618,44.048912 L 57.022615,44.349824 L 56.922202,44.741871 C 57.100476,45.037506 56.353288,45.237878 56.384337,45.279736 C 56.384337,45.279736 55.32384,43.81657 54.813706,43.235198 C 54.364003,42.722697 53.688746,42.110238 53.206621,41.628113 C 52.724495,41.145987 52.081661,40.503153 51.599535,40.021027 C 51.117409,39.538901 49.992449,38.413941 49.992449,38.413941 z"
id="path5317"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5852);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 52.895063,35.340587 L 53.952892,34.282758 C 53.952892,34.282758 58.852062,38.468478 60.417689,40.711101 C 60.676796,41.082249 60.271505,41.093831 60.153232,40.975558 L 59.925229,41.27647 L 59.824816,41.668517 C 60.00309,41.964152 59.255902,42.164524 59.286951,42.206382 C 59.286951,42.206382 58.226455,40.743216 57.71632,40.161844 C 57.266617,39.649343 56.59136,39.036884 56.109235,38.554759 C 55.627109,38.072633 54.984275,37.429799 54.502149,36.947673 C 54.020023,36.465547 52.895063,35.340587 52.895063,35.340587 z"
id="path5319"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5849);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 53.919514,34.316134 L 54.977343,33.258305 C 54.977343,33.258305 59.876513,37.444025 61.44214,39.686648 C 61.701248,40.057796 61.295956,40.069379 61.177683,39.951105 L 60.94968,40.252017 L 60.849267,40.644064 C 61.027541,40.939699 60.280353,41.140071 60.311402,41.181929 C 60.311402,41.181929 59.250906,39.718763 58.740771,39.137391 C 58.291068,38.62489 57.615811,38.012431 57.133686,37.530306 C 56.65156,37.04818 56.008726,36.405346 55.5266,35.92322 C 55.044474,35.441094 53.919514,34.316134 53.919514,34.316134 z"
id="path5321"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5846);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 54.943965,33.291683 L 56.001794,32.233854 C 56.001794,32.233854 60.900964,36.419574 62.466591,38.662197 C 62.725699,39.033345 62.320407,39.044927 62.202134,38.926654 L 61.974131,39.227566 L 61.873718,39.619613 C 62.051992,39.915248 61.304804,40.11562 61.335854,40.157478 C 61.335854,40.157478 60.275357,38.694312 59.765222,38.11294 C 59.315519,37.600439 58.640262,36.98798 58.158137,36.505855 C 57.676011,36.023729 57.033177,35.380895 56.551051,34.898769 C 56.068925,34.416643 54.943965,33.291683 54.943965,33.291683 z"
id="path5323"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5843);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 51.955981,36.365039 L 53.01381,35.30721 C 53.01381,35.30721 57.91298,39.49293 59.478607,41.735553 C 59.737714,42.106701 59.332423,42.118283 59.21415,42.00001 L 58.986147,42.300922 L 58.885734,42.692969 C 59.064008,42.988604 58.31682,43.188976 58.347869,43.230834 C 58.347869,43.230834 57.287373,41.767668 56.777238,41.186296 C 56.327535,40.673795 55.652278,40.061336 55.170153,39.579211 C 54.688027,39.097085 54.045193,38.454251 53.563067,37.972125 C 53.080941,37.489999 51.955981,36.365039 51.955981,36.365039 z"
id="path5325"
sodipodi:nodetypes="ccsccccsssc" />
<path
style="fill:url(#linearGradient5840);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10165134;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 50.931529,37.389491 L 51.989358,36.331662 C 51.989358,36.331662 56.888528,40.517382 58.454155,42.760005 C 58.713262,43.131153 58.307971,43.142735 58.189698,43.024462 L 57.961695,43.325374 L 57.861282,43.717421 C 58.039556,44.013056 57.292368,44.213428 57.323417,44.255286 C 57.323417,44.255286 56.262921,42.79212 55.752786,42.210748 C 55.303083,41.698247 54.627826,41.085788 54.145701,40.603663 C 53.663575,40.121537 53.020741,39.478703 52.538615,38.996577 C 52.056489,38.514451 50.931529,37.389491 50.931529,37.389491 z"
id="path5327"
sodipodi:nodetypes="ccsccccsssc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 39 KiB

View file

@ -0,0 +1,162 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg2508"
sodipodi:version="0.32"
inkscape:version="0.46"
sodipodi:docname="icon_phase_attacker.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
id="defs2510">
<linearGradient
id="linearGradient5717">
<stop
style="stop-color:#003580;stop-opacity:1;"
offset="0"
id="stop5719" />
<stop
id="stop5727"
offset="0.25297618"
style="stop-color:#055897;stop-opacity:1;" />
<stop
id="stop5725"
offset="0.5"
style="stop-color:#00a4ff;stop-opacity:1;" />
<stop
id="stop5733"
offset="0.75"
style="stop-color:#055897;stop-opacity:1;" />
<stop
style="stop-color:#003580;stop-opacity:1;"
offset="1"
id="stop5721" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5717"
id="linearGradient5723"
x1="339.93985"
y1="482.58844"
x2="459.27341"
y2="355.50766"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,0.1263349,-0.1263349,0,74.367722,-7.5042832)" />
<linearGradient
id="linearGradient3234">
<stop
style="stop-color:#6f6f6f;stop-opacity:1;"
offset="0"
id="stop3236" />
<stop
id="stop3242"
offset="0.47999999"
style="stop-color:#e6e6e6;stop-opacity:1;" />
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0.5"
id="stop3244" />
<stop
id="stop3286"
offset="0.75"
style="stop-color:#bebebe;stop-opacity:1;" />
<stop
style="stop-color:#494949;stop-opacity:1;"
offset="1"
id="stop3238" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3234"
id="linearGradient5120"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(8.9332267e-2,8.9332267e-2,8.9332267e-2,-8.9332267e-2,-16.525693,40.126552)"
x1="202.99225"
y1="395.23221"
x2="251.27765"
y2="395.23221" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 32 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="64 : 32 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective2516" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3234"
id="linearGradient2540"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(8.9332267e-2,8.9332267e-2,8.9332267e-2,-8.9332267e-2,-16.525693,40.126552)"
x1="202.99225"
y1="395.23221"
x2="251.27765"
y2="395.23221" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5717"
id="linearGradient2542"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,0.1263349,-0.1263349,0,74.367722,-7.5042832)"
x1="339.93985"
y1="482.58844"
x2="459.27341"
y2="355.50766" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.5"
inkscape:cx="-40.818182"
inkscape:cy="32"
inkscape:current-layer="g2536"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1280"
inkscape:window-height="725"
inkscape:window-x="0"
inkscape:window-y="25" />
<metadata
id="metadata2513">
<rdf:RDF>
<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>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
id="g2536"
transform="translate(-0.1818183,-3.0952293e-8)">
<path
id="path5116"
d="M 19.171407,40.786299 C 30.234301,31.241571 40.052824,21.097727 49.109567,10.848139 L 56.860088,7.3217298 L 53.333679,15.072251 C 41.728583,25.484502 32.940246,34.272839 23.395519,45.010411 L 19.171407,40.786299 z M 24.645705,39.536112 L 27.026109,38.450092 L 33.586428,30.59539 L 25.731726,37.155709 L 24.645705,39.536112 z"
style="fill:url(#linearGradient2540);fill-opacity:1;stroke:#000000;stroke-width:0.12633491;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:60.01653385;stroke-opacity:1" />
<path
sodipodi:nodetypes="ccsccccccss"
id="path5118"
d="M 7.8194102,52.395498 C 12.873471,51.041266 17.927915,42.286993 17.927915,42.286993 C 17.927915,42.286993 16.799748,40.510421 15.777733,39.790457 C 14.755718,39.070494 11.11448,37.487234 11.11448,37.487234 L 15.622027,32.979687 C 19.276736,39.30983 24.814608,44.871954 31.202132,48.559792 L 26.694585,53.067339 C 26.694585,53.067339 25.207982,49.329444 24.488018,48.307428 C 23.768054,47.285413 21.894826,46.253904 21.894826,46.253904 C 21.894826,46.253904 13.138788,51.314932 11.786321,56.362409 C 11.350723,57.988079 6.1937392,52.831094 7.8194102,52.395498 z"
style="opacity:1;fill:url(#linearGradient2542);fill-opacity:1;stroke:#000000;stroke-width:0.12633491;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:60.01653385;stroke-opacity:1" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6 KiB

View file

@ -0,0 +1,181 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg2564"
sodipodi:version="0.32"
inkscape:version="0.47 r22583"
sodipodi:docname="icon_phase_combat_blockers.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
enable-background="new"
version="1.1">
<defs
id="defs2566">
<linearGradient
id="linearGradient3630">
<stop
style="stop-color:#803300;stop-opacity:1;"
offset="0"
id="stop3632" />
<stop
style="stop-color:#030000;stop-opacity:1;"
offset="1"
id="stop3634" />
</linearGradient>
<linearGradient
id="linearGradient4965">
<stop
style="stop-color:#803300;stop-opacity:1;"
offset="0"
id="stop4967" />
<stop
style="stop-color:#a55d00;stop-opacity:1;"
offset="1"
id="stop4969" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient4947">
<stop
style="stop-color:#aa4400;stop-opacity:1;"
offset="0"
id="stop4949" />
<stop
style="stop-color:#aa4400;stop-opacity:0;"
offset="1"
id="stop4951" />
</linearGradient>
<linearGradient
id="linearGradient4939">
<stop
style="stop-color:#c3c3c3;stop-opacity:1;"
offset="0"
id="stop4941" />
<stop
style="stop-color:#ffff00;stop-opacity:0;"
offset="1"
id="stop4943" />
</linearGradient>
<linearGradient
id="linearGradient4891">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop4893" />
<stop
style="stop-color:#7f7f7f;stop-opacity:1;"
offset="1"
id="stop4895" />
</linearGradient>
<linearGradient
id="linearGradient4879">
<stop
style="stop-color:#d2d2d2;stop-opacity:1;"
offset="0"
id="stop4881" />
<stop
style="stop-color:#d0d0d0;stop-opacity:1;"
offset="1"
id="stop4883" />
</linearGradient>
<linearGradient
id="linearGradient3370">
<stop
style="stop-color:#f2f500;stop-opacity:1;"
offset="0"
id="stop3372" />
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="1"
id="stop3374" />
</linearGradient>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 32 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="64 : 32 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective2572" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4947"
id="linearGradient4953"
x1="31.990065"
y1="7.0514474"
x2="35.589882"
y2="26.218145"
gradientUnits="userSpaceOnUse" />
<inkscape:perspective
id="perspective2844"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3630"
id="linearGradient3636"
x1="21.405245"
y1="20.300596"
x2="45.166054"
y2="48.10812"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="7.7781746"
inkscape:cx="28.10927"
inkscape:cy="28.829322"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1223"
inkscape:window-height="725"
inkscape:window-x="51"
inkscape:window-y="25"
inkscape:window-maximized="0" />
<metadata
id="metadata2569">
<rdf:RDF>
<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>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer"
style="display:inline;">
<path
style="fill:#c6c6c6;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.88227361px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 9.9666404,9.0497401 C 23.769718,4.7254766 38.237751,3.6111036 54.063295,9.0497401 C 54.063295,9.0497401 54.836218,34.437061 50.529417,43.717664 C 47.404249,50.451998 31.938145,58.623196 31.938145,58.623196 C 31.938145,58.623196 16.472039,50.451998 13.346871,43.717664 C 9.0400713,34.437061 9.9666404,9.0497401 9.9666404,9.0497401 z"
id="rect2577"
sodipodi:nodetypes="ccscsc" />
<path
style="fill:url(#linearGradient3636);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.87598264000000003px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 11.327299,10.467021 C 24.277974,6.4097986 37.852541,5.364243 52.700788,10.467021 C 52.700788,10.467021 53.425979,34.286562 49.385142,42.994047 C 46.452968,49.312506 31.941964,56.979096 31.941964,56.979096 C 31.941964,56.979096 17.43096,49.312506 14.498785,42.994047 C 10.457949,34.286562 11.327299,10.467021 11.327299,10.467021 z"
id="path4899"
sodipodi:nodetypes="ccscsc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.9 KiB

View file

@ -0,0 +1,169 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg5128"
sodipodi:version="0.32"
inkscape:version="0.46"
sodipodi:docname="icon_phase_combat.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
id="defs5130">
<linearGradient
id="linearGradient5717">
<stop
style="stop-color:#003580;stop-opacity:1;"
offset="0"
id="stop5719" />
<stop
id="stop5727"
offset="0.25297618"
style="stop-color:#055897;stop-opacity:1;" />
<stop
id="stop5725"
offset="0.5"
style="stop-color:#00a4ff;stop-opacity:1;" />
<stop
id="stop5733"
offset="0.75"
style="stop-color:#055897;stop-opacity:1;" />
<stop
style="stop-color:#003580;stop-opacity:1;"
offset="1"
id="stop5721" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3234"
id="linearGradient5120"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.7071068,-0.7071068,-0.7071068,-0.7071068,377.0204,719.46402)"
x1="202.99225"
y1="395.23221"
x2="251.27765"
y2="395.23221" />
<linearGradient
id="linearGradient3234">
<stop
style="stop-color:#6f6f6f;stop-opacity:1;"
offset="0"
id="stop3236" />
<stop
id="stop3242"
offset="0.47999999"
style="stop-color:#e6e6e6;stop-opacity:1;" />
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0.5"
id="stop3244" />
<stop
id="stop3286"
offset="0.75"
style="stop-color:#bebebe;stop-opacity:1;" />
<stop
style="stop-color:#494949;stop-opacity:1;"
offset="1"
id="stop3238" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3234"
id="linearGradient5114"
gradientUnits="userSpaceOnUse"
x1="202.99225"
y1="395.23221"
x2="251.27765"
y2="395.23221"
gradientTransform="matrix(-0.7071068,-0.7071068,0.7071068,-0.7071068,156.76864,718.23161)" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 32 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="64 : 32 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective5136" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5717"
id="linearGradient5723"
x1="339.93985"
y1="482.58844"
x2="459.27341"
y2="355.50766"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5717"
id="linearGradient5741"
x1="70.945976"
y1="357.84494"
x2="196.70493"
y2="480.64206"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="11.087072"
inkscape:cx="12.956872"
inkscape:cy="29.617085"
inkscape:current-layer="g5122"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1280"
inkscape:window-height="725"
inkscape:window-x="0"
inkscape:window-y="25" />
<metadata
id="metadata5133">
<rdf:RDF>
<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>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
id="g5122"
transform="matrix(0.1263349,0,0,0.1263349,-1.139644,-10.328942)">
<path
style="fill:url(#linearGradient5114);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:60.01653385;stroke-opacity:1"
d="M 151.54643,435.67232 C 227.09743,348.10432 307.39071,270.38611 388.52101,198.69774 L 416.43419,137.34873 L 355.08518,165.26191 C 272.66733,257.12169 203.10352,326.6855 118.1106,402.23649 L 151.54643,435.67232 z M 161.44224,392.34068 L 170.0386,373.49867 L 232.21225,321.57067 L 180.28425,383.74432 L 161.44224,392.34068 z"
id="rect2383" />
<path
style="opacity:1;fill:url(#linearGradient5741);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:60.01653384999999474;stroke-opacity:1"
d="M 59.65417,525.5287 C 70.373545,485.52344 139.66773,445.51514 139.66773,445.51514 C 139.66773,445.51514 153.73013,454.44511 159.42898,462.53484 C 165.12783,470.62457 177.66007,499.44668 177.66007,499.44668 L 213.33942,463.76733 C 163.23337,434.83859 119.20655,391.00374 90.015578,340.44349 L 54.336228,376.12284 C 54.336228,376.12284 83.923422,387.89 92.013155,393.58885 C 100.10289,399.2877 108.26777,414.11518 108.26777,414.11518 C 108.26777,414.11518 68.207351,483.42333 28.254209,494.12874 C 15.386263,497.5767 56.206215,538.39665 59.65417,525.5287 z"
id="rect2407"
sodipodi:nodetypes="ccsccccccss" />
<path
style="fill:url(#linearGradient5120);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:60.01653385;stroke-opacity:1"
d="M 382.24261,436.90473 C 306.69161,349.33673 226.39833,271.61852 145.26803,199.93015 L 117.35485,138.58114 L 178.70386,166.49432 C 261.12171,258.3541 330.68552,327.91791 415.67844,403.4689 L 382.24261,436.90473 z M 372.3468,393.57309 L 363.75044,374.73108 L 301.57679,322.80308 L 353.50479,384.97673 L 372.3468,393.57309 z"
id="path5116" />
<path
style="opacity:1;fill:url(#linearGradient5723);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:60.01653384999999474;stroke-opacity:1"
d="M 474.13487,526.76111 C 463.41549,486.75585 394.12131,446.74755 394.12131,446.74755 C 394.12131,446.74755 380.05891,455.67752 374.36006,463.76725 C 368.66121,471.85698 356.12897,500.67909 356.12897,500.67909 L 320.44962,464.99974 C 370.55567,436.071 414.58249,392.23615 443.77346,341.6759 L 479.45281,377.35525 C 479.45281,377.35525 449.86561,389.12241 441.77588,394.82126 C 433.68615,400.52011 425.52127,415.34759 425.52127,415.34759 C 425.52127,415.34759 465.58168,484.65574 505.53483,495.36115 C 518.40277,498.80911 477.58282,539.62906 474.13487,526.76111 z"
id="path5118"
sodipodi:nodetypes="ccsccccccss" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.3 KiB

View file

@ -0,0 +1,253 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg2564"
sodipodi:version="0.32"
inkscape:version="0.47 r22583"
sodipodi:docname="icon_phase_combat_end.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
enable-background="new"
version="1.1">
<defs
id="defs2566">
<linearGradient
id="linearGradient3629">
<stop
style="stop-color:#803300;stop-opacity:1;"
offset="0"
id="stop3631" />
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="1"
id="stop3633" />
</linearGradient>
<linearGradient
id="linearGradient5717">
<stop
style="stop-color:#003580;stop-opacity:1;"
offset="0"
id="stop5719" />
<stop
id="stop5217"
offset="0.25"
style="stop-color:#055897;stop-opacity:1;" />
<stop
id="stop5725"
offset="0.5"
style="stop-color:#00a4ff;stop-opacity:1;" />
<stop
style="stop-color:#055897;stop-opacity:1;"
offset="0.75"
id="stop5215" />
<stop
style="stop-color:#003580;stop-opacity:1;"
offset="1"
id="stop5721" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5717"
id="linearGradient2542"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,0.1263349,-0.1263349,0,74.367722,-7.5042832)"
x1="339.93985"
y1="482.58844"
x2="459.27341"
y2="355.50766" />
<linearGradient
id="linearGradient3234">
<stop
style="stop-color:#6f6f6f;stop-opacity:1;"
offset="0"
id="stop3236" />
<stop
id="stop3242"
offset="0.47999999"
style="stop-color:#e6e6e6;stop-opacity:1;" />
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0.5"
id="stop3244" />
<stop
id="stop3286"
offset="0.75"
style="stop-color:#bebebe;stop-opacity:1;" />
<stop
style="stop-color:#494949;stop-opacity:1;"
offset="1"
id="stop3238" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3234"
id="linearGradient2540"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(8.9332267e-2,8.9332267e-2,8.9332267e-2,-8.9332267e-2,-16.525693,40.126552)"
x1="202.99225"
y1="395.23221"
x2="251.27765"
y2="395.23221" />
<linearGradient
id="linearGradient4965">
<stop
style="stop-color:#803300;stop-opacity:1;"
offset="0"
id="stop4967" />
<stop
style="stop-color:#a55d00;stop-opacity:1;"
offset="1"
id="stop4969" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient4947">
<stop
style="stop-color:#aa4400;stop-opacity:1;"
offset="0"
id="stop4949" />
<stop
style="stop-color:#aa4400;stop-opacity:0;"
offset="1"
id="stop4951" />
</linearGradient>
<linearGradient
id="linearGradient4939">
<stop
style="stop-color:#c3c3c3;stop-opacity:1;"
offset="0"
id="stop4941" />
<stop
style="stop-color:#ffff00;stop-opacity:0;"
offset="1"
id="stop4943" />
</linearGradient>
<linearGradient
id="linearGradient4891">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop4893" />
<stop
style="stop-color:#7f7f7f;stop-opacity:1;"
offset="1"
id="stop4895" />
</linearGradient>
<linearGradient
id="linearGradient4879">
<stop
style="stop-color:#d2d2d2;stop-opacity:1;"
offset="0"
id="stop4881" />
<stop
style="stop-color:#d0d0d0;stop-opacity:1;"
offset="1"
id="stop4883" />
</linearGradient>
<linearGradient
id="linearGradient3370">
<stop
style="stop-color:#f2f500;stop-opacity:1;"
offset="0"
id="stop3372" />
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="1"
id="stop3374" />
</linearGradient>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 32 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="64 : 32 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective2572" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4947"
id="linearGradient4953"
x1="31.990065"
y1="7.0514474"
x2="35.589882"
y2="26.218145"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3629"
id="linearGradient3635"
x1="19.253855"
y1="10.606701"
x2="60.756615"
y2="56.979095"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="7.2452592"
inkscape:cx="27.17545"
inkscape:cy="31.677957"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1223"
inkscape:window-height="725"
inkscape:window-x="51"
inkscape:window-y="25"
inkscape:window-maximized="0" />
<metadata
id="metadata2569">
<rdf:RDF>
<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>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer"
style="display:inline;">
<path
style="fill:#c6c6c6;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.88227361px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 17.971875,9.0497399 c 13.803078,-4.3242635 28.271111,-5.4386365 44.096655,0 0,0 0.772923,25.3873211 -3.533878,34.6679241 -3.125168,6.734334 -18.591272,14.905532 -18.591272,14.905532 0,0 -15.466106,-8.171198 -18.591274,-14.905532 -4.3068,-9.280603 -3.380231,-34.6679241 -3.380231,-34.6679241 z"
id="rect2577"
sodipodi:nodetypes="ccscsc" />
<path
style="fill:url(#linearGradient3635);fill-opacity:1.0;fill-rule:evenodd;stroke:none"
d="m 19.332534,10.467021 c 12.950675,-4.0572226 26.525242,-5.1027782 41.373489,0 0,0 0.725191,23.819541 -3.315646,32.527026 -2.932174,6.318459 -17.443178,13.985049 -17.443178,13.985049 0,0 -14.511004,-7.66659 -17.443179,-13.985049 -4.040836,-8.707485 -3.171486,-32.527026 -3.171486,-32.527026 z"
id="path4899"
sodipodi:nodetypes="ccscsc" />
<g
id="g2536"
transform="matrix(-0.6586645,0.6586645,-0.6586645,-0.6586645,53.040738,30.874896)">
<path
id="path5116"
d="M 19.171407,40.786299 C 30.234301,31.241571 40.052824,21.097727 49.109567,10.848139 L 56.860088,7.3217298 L 53.333679,15.072251 C 41.728583,25.484502 32.940246,34.272839 23.395519,45.010411 L 19.171407,40.786299 z M 24.645705,39.536112 L 27.026109,38.450092 L 33.586428,30.59539 L 25.731726,37.155709 L 24.645705,39.536112 z"
style="fill:url(#linearGradient2540);fill-opacity:1;stroke:#000000;stroke-width:0.12633491;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:60.01653385;stroke-opacity:1" />
<path
sodipodi:nodetypes="ccsccccccss"
id="path5118"
d="M 7.8194102,52.395498 C 12.873471,51.041266 17.927915,42.286993 17.927915,42.286993 C 17.927915,42.286993 16.799748,40.510421 15.777733,39.790457 C 14.755718,39.070494 11.11448,37.487234 11.11448,37.487234 L 15.622027,32.979687 C 19.276736,39.30983 24.814608,44.871954 31.202132,48.559792 L 26.694585,53.067339 C 26.694585,53.067339 25.207982,49.329444 24.488018,48.307428 C 23.768054,47.285413 21.894826,46.253904 21.894826,46.253904 C 21.894826,46.253904 13.138788,51.314932 11.786321,56.362409 C 11.350723,57.988079 6.1937392,52.831094 7.8194102,52.395498 z"
style="opacity:1;fill:url(#linearGradient2542);fill-opacity:1;stroke:#000000;stroke-width:0.12667845;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:60.01653384999999474;stroke-opacity:1" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9 KiB

View file

@ -0,0 +1,253 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg2564"
sodipodi:version="0.32"
inkscape:version="0.47 r22583"
sodipodi:docname="icon_phase_combat_start.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
enable-background="new"
version="1.1">
<defs
id="defs2566">
<linearGradient
id="linearGradient3625">
<stop
style="stop-color:#803300;stop-opacity:1;"
offset="0"
id="stop3627" />
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="1"
id="stop3629" />
</linearGradient>
<linearGradient
id="linearGradient5717">
<stop
style="stop-color:#003580;stop-opacity:1;"
offset="0"
id="stop5719" />
<stop
id="stop3194"
offset="0.25"
style="stop-color:#055897;stop-opacity:1;" />
<stop
id="stop5725"
offset="0.5"
style="stop-color:#00a4ff;stop-opacity:1;" />
<stop
style="stop-color:#055897;stop-opacity:1;"
offset="0.75"
id="stop3192" />
<stop
style="stop-color:#003580;stop-opacity:1;"
offset="1"
id="stop5721" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5717"
id="linearGradient2542"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,0.1263349,-0.1263349,0,74.367722,-7.5042832)"
x1="339.93985"
y1="482.58844"
x2="459.27341"
y2="355.50766" />
<linearGradient
id="linearGradient3234">
<stop
style="stop-color:#6f6f6f;stop-opacity:1;"
offset="0"
id="stop3236" />
<stop
id="stop3242"
offset="0.47999999"
style="stop-color:#e6e6e6;stop-opacity:1;" />
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0.5"
id="stop3244" />
<stop
id="stop3286"
offset="0.75"
style="stop-color:#bebebe;stop-opacity:1;" />
<stop
style="stop-color:#494949;stop-opacity:1;"
offset="1"
id="stop3238" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3234"
id="linearGradient2540"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(8.9332267e-2,8.9332267e-2,8.9332267e-2,-8.9332267e-2,-16.525693,40.126552)"
x1="202.99225"
y1="395.23221"
x2="251.27765"
y2="395.23221" />
<linearGradient
id="linearGradient4965">
<stop
style="stop-color:#803300;stop-opacity:1;"
offset="0"
id="stop4967" />
<stop
style="stop-color:#a55d00;stop-opacity:1;"
offset="1"
id="stop4969" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient4947">
<stop
style="stop-color:#aa4400;stop-opacity:1;"
offset="0"
id="stop4949" />
<stop
style="stop-color:#aa4400;stop-opacity:0;"
offset="1"
id="stop4951" />
</linearGradient>
<linearGradient
id="linearGradient4939">
<stop
style="stop-color:#c3c3c3;stop-opacity:1;"
offset="0"
id="stop4941" />
<stop
style="stop-color:#ffff00;stop-opacity:0;"
offset="1"
id="stop4943" />
</linearGradient>
<linearGradient
id="linearGradient4891">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop4893" />
<stop
style="stop-color:#7f7f7f;stop-opacity:1;"
offset="1"
id="stop4895" />
</linearGradient>
<linearGradient
id="linearGradient4879">
<stop
style="stop-color:#d2d2d2;stop-opacity:1;"
offset="0"
id="stop4881" />
<stop
style="stop-color:#d0d0d0;stop-opacity:1;"
offset="1"
id="stop4883" />
</linearGradient>
<linearGradient
id="linearGradient3370">
<stop
style="stop-color:#f2f500;stop-opacity:1;"
offset="0"
id="stop3372" />
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="1"
id="stop3374" />
</linearGradient>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 32 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="64 : 32 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective2572" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4947"
id="linearGradient4953"
x1="31.990065"
y1="7.0514474"
x2="35.589882"
y2="26.218145"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3625"
id="linearGradient3631"
x1="11.24862"
y1="10.529667"
x2="52.751381"
y2="56.979095"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="7.7781746"
inkscape:cx="23.751652"
inkscape:cy="31.764768"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1223"
inkscape:window-height="725"
inkscape:window-x="51"
inkscape:window-y="25"
inkscape:window-maximized="0" />
<metadata
id="metadata2569">
<rdf:RDF>
<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>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer"
style="display:inline;">
<path
style="fill:#c6c6c6;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.88227361px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 9.9666405,9.04974 C 23.769718,4.7254765 38.237751,3.6111035 54.063295,9.04974 C 54.063295,9.04974 54.836218,34.437061 50.529417,43.717664 C 47.404249,50.451998 31.938145,58.623196 31.938145,58.623196 C 31.938145,58.623196 16.472039,50.451998 13.346871,43.717664 C 9.0400714,34.437061 9.9666405,9.04974 9.9666405,9.04974 z"
id="rect2577"
sodipodi:nodetypes="ccscsc" />
<path
style="fill:url(#linearGradient3631);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.87598264000000003px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 11.327299,10.467021 C 24.277974,6.4097985 37.852541,5.3642429 52.700788,10.467021 C 52.700788,10.467021 53.425979,34.286562 49.385142,42.994047 C 46.452968,49.312506 31.941964,56.979096 31.941964,56.979096 C 31.941964,56.979096 17.43096,49.312506 14.498785,42.994047 C 10.457949,34.286562 11.327299,10.467021 11.327299,10.467021 z"
id="path4899"
sodipodi:nodetypes="ccscsc" />
<g
id="g2536"
transform="translate(-0.1818183,-3.0952293e-8)">
<path
id="path5116"
d="M 19.171407,40.786299 C 30.234301,31.241571 40.052824,21.097727 49.109567,10.848139 L 56.860088,7.3217298 L 53.333679,15.072251 C 41.728583,25.484502 32.940246,34.272839 23.395519,45.010411 L 19.171407,40.786299 z M 24.645705,39.536112 L 27.026109,38.450092 L 33.586428,30.59539 L 25.731726,37.155709 L 24.645705,39.536112 z"
style="fill:url(#linearGradient2540);fill-opacity:1;stroke:#000000;stroke-width:0.12633491;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:60.01653385;stroke-opacity:1" />
<path
sodipodi:nodetypes="ccsccccccss"
id="path5118"
d="M 7.8194102,52.395498 C 12.873471,51.041266 17.927915,42.286993 17.927915,42.286993 C 17.927915,42.286993 16.799748,40.510421 15.777733,39.790457 C 14.755718,39.070494 11.11448,37.487234 11.11448,37.487234 L 15.622027,32.979687 C 19.276736,39.30983 24.814608,44.871954 31.202132,48.559792 L 26.694585,53.067339 C 26.694585,53.067339 25.207982,49.329444 24.488018,48.307428 C 23.768054,47.285413 21.894826,46.253904 21.894826,46.253904 C 21.894826,46.253904 13.138788,51.314932 11.786321,56.362409 C 11.350723,57.988079 6.1937392,52.831094 7.8194102,52.395498 z"
style="opacity:1;fill:url(#linearGradient2542);fill-opacity:1;stroke:#000000;stroke-width:0.12633491;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:60.01653385;stroke-opacity:1" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.1 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 29 KiB

View file

@ -0,0 +1,135 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg2385"
sodipodi:version="0.32"
inkscape:version="0.46"
sodipodi:docname="icon_mainphase1.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
id="defs2387">
<linearGradient
id="linearGradient3177">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3179" />
<stop
style="stop-color:#0044aa;stop-opacity:0;"
offset="1"
id="stop3181" />
</linearGradient>
<linearGradient
id="linearGradient3167">
<stop
style="stop-color:#0044aa;stop-opacity:1;"
offset="0"
id="stop3169" />
<stop
style="stop-color:#00122f;stop-opacity:1;"
offset="1"
id="stop3171" />
</linearGradient>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 32 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="64 : 32 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective2393" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3167"
id="linearGradient3173"
x1="31.09091"
y1="5.2455459"
x2="31.09091"
y2="62.754456"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3177"
id="linearGradient3183"
x1="38.090908"
y1="12.35777"
x2="38.090908"
y2="33.096775"
gradientUnits="userSpaceOnUse" />
<filter
inkscape:collect="always"
id="filter3193">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="0.15669667"
id="feGaussianBlur3195" />
</filter>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.5"
inkscape:cx="12.016282"
inkscape:cy="30.70745"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1280"
inkscape:window-height="725"
inkscape:window-x="0"
inkscape:window-y="25" />
<metadata
id="metadata2390">
<rdf:RDF>
<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>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<path
sodipodi:type="arc"
style="fill:url(#linearGradient3173);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.41800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path2395"
sodipodi:cx="31.09091"
sodipodi:cy="34"
sodipodi:rx="28.545454"
sodipodi:ry="28.545454"
d="M 59.636364,34 A 28.545454,28.545454 0 1 1 2.5454559,34 A 28.545454,28.545454 0 1 1 59.636364,34 z"
transform="translate(0.90909,-2)" />
<path
sodipodi:type="arc"
style="fill:url(#linearGradient3183);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.41800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3193)"
id="path3175"
sodipodi:cx="38.090908"
sodipodi:cy="22.727272"
sodipodi:rx="22.272728"
sodipodi:ry="10.181818"
d="M 60.363636,22.727272 A 22.272728,10.181818 0 1 1 15.81818,22.727272 A 22.272728,10.181818 0 1 1 60.363636,22.727272 z"
transform="matrix(0.8292896,0,0,1.0283566,0.4116061,-8.3717394)" />
<path
style="font-size:72px;font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:URW Chancery L;-inkscape-font-specification:URW Chancery L Bold Italic"
d="M 17.407273,50.18182 L 21.943273,50.18182 C 21.943273,50.18182 29.791273,50.10982 29.791273,50.10982 C 29.791273,50.10982 38.071273,50.18182 38.071273,50.18182 L 41.023273,50.18182 L 42.751273,48.23782 C 40.591275,48.16582 36.703272,47.73382 35.335273,47.44582 C 34.183274,47.15782 33.463273,46.365819 33.463273,45.28582 C 33.463273,44.493821 33.607273,43.413819 33.967273,42.26182 C 34.183273,41.397821 34.903274,38.085815 35.983273,33.04582 C 39.07927,19.437834 40.735274,12.597816 41.887273,8.2778199 L 39.439273,9.5738199 C 34.471278,12.237817 34.327271,12.309821 32.023273,13.38982 C 30.655274,14.037819 28.27927,15.045821 24.967273,16.55782 L 27.127273,17.63782 C 28.855271,17.06182 29.719274,16.701819 31.015273,16.19782 L 33.175273,15.33382 C 33.463273,15.18982 34.111274,14.97382 35.191273,14.61382 L 28.351273,44.06182 C 27.631274,47.085817 27.559271,47.22982 25.255273,47.51782 C 22.231276,47.87782 20.287272,48.09382 19.495273,48.23782 L 17.407273,50.18182"
id="text3217" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.5 KiB

View file

@ -0,0 +1,135 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg2385"
sodipodi:version="0.32"
inkscape:version="0.46"
sodipodi:docname="icon_mainphase2.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
id="defs2387">
<linearGradient
id="linearGradient3177">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3179" />
<stop
style="stop-color:#0044aa;stop-opacity:0;"
offset="1"
id="stop3181" />
</linearGradient>
<linearGradient
id="linearGradient3167">
<stop
style="stop-color:#0044aa;stop-opacity:1;"
offset="0"
id="stop3169" />
<stop
style="stop-color:#00122f;stop-opacity:1;"
offset="1"
id="stop3171" />
</linearGradient>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 32 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="64 : 32 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective2393" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3167"
id="linearGradient3173"
x1="31.09091"
y1="5.2455459"
x2="31.09091"
y2="62.754456"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3177"
id="linearGradient3183"
x1="38.090908"
y1="12.35777"
x2="38.090908"
y2="33.096775"
gradientUnits="userSpaceOnUse" />
<filter
inkscape:collect="always"
id="filter3193">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="0.15669667"
id="feGaussianBlur3195" />
</filter>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.5"
inkscape:cx="12.016282"
inkscape:cy="30.70745"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1280"
inkscape:window-height="725"
inkscape:window-x="0"
inkscape:window-y="25" />
<metadata
id="metadata2390">
<rdf:RDF>
<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>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<path
sodipodi:type="arc"
style="fill:url(#linearGradient3173);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.41800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path2395"
sodipodi:cx="31.09091"
sodipodi:cy="34"
sodipodi:rx="28.545454"
sodipodi:ry="28.545454"
d="M 59.636364,34 A 28.545454,28.545454 0 1 1 2.5454559,34 A 28.545454,28.545454 0 1 1 59.636364,34 z"
transform="translate(0.90909,-2)" />
<path
sodipodi:type="arc"
style="fill:url(#linearGradient3183);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.41800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3193)"
id="path3175"
sodipodi:cx="38.090908"
sodipodi:cy="22.727272"
sodipodi:rx="22.272728"
sodipodi:ry="10.181818"
d="M 60.363636,22.727272 A 22.272728,10.181818 0 1 1 15.81818,22.727272 A 22.272728,10.181818 0 1 1 60.363636,22.727272 z"
transform="matrix(0.8292896,0,0,1.0283566,0.4116061,-8.3717394)" />
<path
style="font-size:72px;font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:URW Chancery L;-inkscape-font-specification:URW Chancery L Bold Italic"
d="M 15.175273,51.40582 C 18.27127,48.021823 19.135275,47.44582 20.935273,47.44582 C 21.655272,47.44582 22.591274,47.58982 23.743273,47.87782 C 29.071268,49.101819 36.127274,50.39782 37.279273,50.39782 C 37.855272,50.39782 38.215274,50.32582 38.935273,50.03782 L 45.271273,40.53382 L 44.695273,38.87782 C 40.087278,44.709814 39.583271,45.21382 37.639273,45.21382 C 37.279273,45.21382 36.775272,45.14182 36.127273,44.99782 C 31.159278,44.133821 26.839269,43.485819 23.239273,42.90982 L 32.095273,34.70182 L 38.503273,28.72582 L 42.103273,25.34182 C 44.191271,22.173823 45.055273,19.725817 45.055273,16.55782 C 45.055273,11.949825 42.103269,8.9978199 37.639273,8.9978199 C 33.967277,8.9978199 30.15127,10.365822 27.199273,12.81382 C 24.607276,14.829818 23.239273,17.421823 23.239273,20.37382 C 23.239273,20.949819 23.311273,21.309821 23.455273,22.10182 L 28.567273,22.67782 C 27.919274,20.733822 27.703273,19.725819 27.703273,18.42982 C 27.703273,14.469824 30.079277,11.87782 33.679273,11.87782 C 37.06327,11.87782 39.511273,14.829824 39.511273,18.93382 C 39.511273,21.165818 38.791272,23.685822 37.639273,25.48582 C 36.127275,27.933817 34.327267,29.877825 28.783273,35.06182 C 19.495282,43.773811 18.415269,44.853824 14.887273,49.31782 L 15.175273,51.40582"
id="text3217" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.8 KiB

View file

@ -0,0 +1,89 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg3167"
sodipodi:version="0.32"
inkscape:version="0.46"
sodipodi:docname="icon_nextTurn.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
id="defs3169">
<linearGradient
id="linearGradient3159">
<stop
style="stop-color:#ff0000;stop-opacity:1;"
offset="0"
id="stop3161" />
<stop
style="stop-color:#870000;stop-opacity:1;"
offset="1"
id="stop3163" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3159"
id="linearGradient3165"
x1="460.92261"
y1="383.05679"
x2="144.23897"
y2="474.24744"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.2002403,0,0,0.2002403,-29.54275,-55.059863)" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 32 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="64 : 32 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective3175" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="6.4785302"
inkscape:cx="71.431122"
inkscape:cy="35.114322"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1280"
inkscape:window-height="725"
inkscape:window-x="0"
inkscape:window-y="25" />
<metadata
id="metadata3172">
<rdf:RDF>
<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>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<path
style="fill:url(#linearGradient3165);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.30036047;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 29.130932,18.753217 C 20.744599,18.686709 11.651606,23.163902 1.3976484,34.253068 L 3.7535432,38.873766 C 29.306087,10.191947 44.263934,30.067613 51.933109,37.746086 C 50.522291,38.573832 48.464685,38.467536 46.274272,38.998726 C 51.42154,40.570478 56.687692,42.488294 61.676216,44.630089 C 60.792534,39.544838 59.481746,34.617053 58.935262,29.103904 C 58.378905,31.662724 57.62115,32.32038 56.582628,34.559687 C 47.924709,25.228354 39.020111,18.831643 29.130932,18.753217 z"
id="path2383"
sodipodi:nodetypes="ccccccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 28 KiB

View file

@ -0,0 +1,159 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg3319"
sodipodi:version="0.32"
inkscape:version="0.46"
sodipodi:docname="icon_upkeep.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
id="defs3321">
<linearGradient
inkscape:collect="always"
id="linearGradient3307">
<stop
style="stop-color:#808080;stop-opacity:1;"
offset="0"
id="stop3309" />
<stop
style="stop-color:#808080;stop-opacity:0;"
offset="1"
id="stop3311" />
</linearGradient>
<linearGradient
id="linearGradient3297">
<stop
style="stop-color:#808080;stop-opacity:1;"
offset="0"
id="stop3299" />
<stop
style="stop-color:#e8e8e8;stop-opacity:1;"
offset="1"
id="stop3301" />
</linearGradient>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 32 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="64 : 32 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective3327" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3297"
id="linearGradient3344"
gradientUnits="userSpaceOnUse"
x1="274.50203"
y1="427.10938"
x2="481.21672"
y2="427.10938" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3307"
id="linearGradient3346"
gradientUnits="userSpaceOnUse"
x1="395.91437"
y1="519.13428"
x2="360.02484"
y2="519.13428" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3297"
id="linearGradient3926"
gradientUnits="userSpaceOnUse"
x1="274.50203"
y1="427.10938"
x2="481.21672"
y2="427.10938" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3307"
id="linearGradient3928"
gradientUnits="userSpaceOnUse"
x1="395.91437"
y1="519.13428"
x2="360.02484"
y2="519.13428" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3307"
id="linearGradient3931"
gradientUnits="userSpaceOnUse"
x1="395.91437"
y1="519.13428"
x2="360.02484"
y2="519.13428"
gradientTransform="matrix(0.1340241,0,0,0.1340241,-5.388189,-54.63095)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3297"
id="linearGradient3934"
gradientUnits="userSpaceOnUse"
x1="274.50204"
y1="427.10938"
x2="481.21671"
y2="427.10938"
gradientTransform="matrix(9.476938e-2,9.476938e-2,-9.476938e-2,9.476938e-2,34.81989,-42.43994)" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="10.614848"
inkscape:cx="40.777992"
inkscape:cy="30.845103"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1280"
inkscape:window-height="949"
inkscape:window-x="0"
inkscape:window-y="25" />
<metadata
id="metadata3324">
<rdf:RDF>
<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>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<path
style="fill:url(#linearGradient3934);fill-opacity:1.0;stroke:#000000;stroke-width:0.16698611999999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:60.01653385000000185;stroke-opacity:1"
d="M 52.772764,3.4047476 C 47.84595,1.474827 42.046422,2.4803794 38.086472,6.4403293 C 33.902475,10.624326 33.011815,16.866643 35.403314,21.958815 C 35.37805,21.983383 35.351338,22.004868 35.326314,22.029892 L 4.4611114,52.895095 C 2.1557088,55.200497 1.7831477,58.539073 3.6229947,60.378914 C 5.462838,62.218757 8.798451,61.843238 11.103853,59.537836 L 41.969055,28.672634 C 41.994066,28.647623 42.018538,28.623844 42.043094,28.598595 C 47.134477,30.989307 53.374621,30.096472 57.558618,25.912475 C 61.518861,21.952234 62.524694,16.153234 60.5942,11.226183 L 51.875417,19.944966 C 51.22515,20.595238 50.308186,20.723277 49.820106,20.235197 L 43.76375,14.178841 C 43.27567,13.690763 43.403714,12.773798 44.053981,12.123531 L 52.772764,3.4047476 z"
id="path2383" />
<rect
style="fill:url(#linearGradient3931);fill-opacity:1;stroke:#000000;stroke-width:0.13748859;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:60.01653385;stroke-opacity:1"
id="rect3305"
width="4.6725717"
height="43.171928"
x="42.932579"
y="-6.640388"
ry="2.4622774"
transform="matrix(0.7071068,0.7071068,-0.7071068,0.7071068,0,0)" />
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Schattierung" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.7 KiB

View file

@ -26,6 +26,7 @@ AbstractCardItem::AbstractCardItem(const QString &_name, Player *_owner, QGraphi
AbstractCardItem::~AbstractCardItem() AbstractCardItem::~AbstractCardItem()
{ {
qDebug() << "AbstractCardItem destructor:" << name; qDebug() << "AbstractCardItem destructor:" << name;
emit deleteCardInfoPopup(name);
} }
QRectF AbstractCardItem::boundingRect() const QRectF AbstractCardItem::boundingRect() const
@ -157,6 +158,10 @@ void AbstractCardItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *
void AbstractCardItem::setName(const QString &_name) void AbstractCardItem::setName(const QString &_name)
{ {
if (name == _name)
return;
emit deleteCardInfoPopup(name);
disconnect(info, 0, this, 0); disconnect(info, 0, this, 0);
name = _name; name = _name;
info = db->getCard(name); info = db->getCard(name);
@ -213,7 +218,7 @@ void AbstractCardItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
void AbstractCardItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) void AbstractCardItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{ {
if (event->button() == Qt::MidButton) if (event->button() == Qt::MidButton)
emit deleteCardInfoPopup(); emit deleteCardInfoPopup(name);
// This function ensures the parent function doesn't mess around with our selection. // This function ensures the parent function doesn't mess around with our selection.
event->accept(); event->accept();

View file

@ -30,7 +30,7 @@ private slots:
signals: signals:
void hovered(AbstractCardItem *card); void hovered(AbstractCardItem *card);
void showCardInfoPopup(QPoint pos, QString cardName); void showCardInfoPopup(QPoint pos, QString cardName);
void deleteCardInfoPopup(); void deleteCardInfoPopup(QString cardName);
public: public:
enum { Type = typeCard }; enum { Type = typeCard };
int type() const { return Type; } int type() const { return Type; }
@ -50,6 +50,7 @@ public:
bool getTapped() const { return tapped; } bool getTapped() const { return tapped; }
void setTapped(bool _tapped, bool canAnimate = false); void setTapped(bool _tapped, bool canAnimate = false);
void processHoverEvent(); void processHoverEvent();
void deleteCardInfoPopup() { emit deleteCardInfoPopup(name); }
protected: protected:
QSizeF getTranslatedSize(QPainter *painter) const; QSizeF getTranslatedSize(QPainter *painter) const;
void transformPainter(QPainter *painter, const QSizeF &translatedSize, int angle); void transformPainter(QPainter *painter, const QSizeF &translatedSize, int angle);

View file

@ -32,15 +32,16 @@ void AbstractClient::processProtocolItem(ProtocolItem *item)
GenericEvent *genericEvent = qobject_cast<GenericEvent *>(item); GenericEvent *genericEvent = qobject_cast<GenericEvent *>(item);
if (genericEvent) { if (genericEvent) {
switch (genericEvent->getItemId()) { switch (genericEvent->getItemId()) {
case ItemId_Event_ConnectionClosed: emit connectionClosedEventReceived(qobject_cast<Event_ConnectionClosed *>(item)); break; case ItemId_Event_ConnectionClosed: emit connectionClosedEventReceived(static_cast<Event_ConnectionClosed *>(item)); break;
case ItemId_Event_AddToList: emit addToListEventReceived(qobject_cast<Event_AddToList *>(item)); break; case ItemId_Event_ServerShutdown: emit serverShutdownEventReceived(static_cast<Event_ServerShutdown *>(item)); break;
case ItemId_Event_RemoveFromList: emit removeFromListEventReceived(qobject_cast<Event_RemoveFromList *>(item)); break; case ItemId_Event_AddToList: emit addToListEventReceived(static_cast<Event_AddToList *>(item)); break;
case ItemId_Event_UserJoined: emit userJoinedEventReceived(qobject_cast<Event_UserJoined *>(item)); break; case ItemId_Event_RemoveFromList: emit removeFromListEventReceived(static_cast<Event_RemoveFromList *>(item)); break;
case ItemId_Event_UserLeft: emit userLeftEventReceived(qobject_cast<Event_UserLeft *>(item)); break; case ItemId_Event_UserJoined: emit userJoinedEventReceived(static_cast<Event_UserJoined *>(item)); break;
case ItemId_Event_ServerMessage: emit serverMessageEventReceived(qobject_cast<Event_ServerMessage *>(item)); break; case ItemId_Event_UserLeft: emit userLeftEventReceived(static_cast<Event_UserLeft *>(item)); break;
case ItemId_Event_ListRooms: emit listRoomsEventReceived(qobject_cast<Event_ListRooms *>(item)); break; case ItemId_Event_ServerMessage: emit serverMessageEventReceived(static_cast<Event_ServerMessage *>(item)); break;
case ItemId_Event_GameJoined: emit gameJoinedEventReceived(qobject_cast<Event_GameJoined *>(item)); break; case ItemId_Event_ListRooms: emit listRoomsEventReceived(static_cast<Event_ListRooms *>(item)); break;
case ItemId_Event_Message: emit messageEventReceived(qobject_cast<Event_Message *>(item)); break; case ItemId_Event_GameJoined: emit gameJoinedEventReceived(static_cast<Event_GameJoined *>(item)); break;
case ItemId_Event_Message: emit messageEventReceived(static_cast<Event_Message *>(item)); break;
} }
if (genericEvent->getReceiverMayDelete()) if (genericEvent->getReceiverMayDelete())
delete genericEvent; delete genericEvent;

View file

@ -21,6 +21,7 @@ class Event_ListRooms;
class Event_GameJoined; class Event_GameJoined;
class Event_Message; class Event_Message;
class Event_ConnectionClosed; class Event_ConnectionClosed;
class Event_ServerShutdown;
enum ClientStatus { enum ClientStatus {
StatusDisconnected, StatusDisconnected,
@ -43,6 +44,7 @@ signals:
void gameEventContainerReceived(GameEventContainer *event); void gameEventContainerReceived(GameEventContainer *event);
// Generic events // Generic events
void connectionClosedEventReceived(Event_ConnectionClosed *event); void connectionClosedEventReceived(Event_ConnectionClosed *event);
void serverShutdownEventReceived(Event_ServerShutdown *event);
void addToListEventReceived(Event_AddToList *event); void addToListEventReceived(Event_AddToList *event);
void removeFromListEventReceived(Event_RemoveFromList *event); void removeFromListEventReceived(Event_RemoveFromList *event);
void userJoinedEventReceived(Event_UserJoined *event); void userJoinedEventReceived(Event_UserJoined *event);

View file

@ -172,8 +172,7 @@ void CardInfoWidget::resizeEvent(QResizeEvent * /*event*/)
} }
} }
void CardInfoWidget::mouseReleaseEvent(QMouseEvent *event) QString CardInfoWidget::getCardName() const
{ {
if ((event->button() == Qt::MidButton) && (mode == ModePopUp)) return nameLabel2->text();
emit mouseReleased(); }
}

View file

@ -39,6 +39,7 @@ private:
public: public:
CardInfoWidget(ResizeMode _mode, QWidget *parent = 0, Qt::WindowFlags f = 0); CardInfoWidget(ResizeMode _mode, QWidget *parent = 0, Qt::WindowFlags f = 0);
void retranslateUi(); void retranslateUi();
QString getCardName() const;
public slots: public slots:
void setCard(CardInfo *card); void setCard(CardInfo *card);
@ -50,12 +51,8 @@ private slots:
void updatePixmap(); void updatePixmap();
void minimizeClicked(int newMinimized); void minimizeClicked(int newMinimized);
signals:
void mouseReleased();
protected: protected:
void resizeEvent(QResizeEvent *event); void resizeEvent(QResizeEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
}; };
#endif #endif

View file

@ -34,6 +34,8 @@ CardItem::CardItem(Player *_owner, const QString &_name, int _cardid, bool _reve
connect(aAttach, SIGNAL(triggered()), this, SLOT(actAttach())); connect(aAttach, SIGNAL(triggered()), this, SLOT(actAttach()));
aUnattach = new QAction(this); aUnattach = new QAction(this);
connect(aUnattach, SIGNAL(triggered()), this, SLOT(actUnattach())); connect(aUnattach, SIGNAL(triggered()), this, SLOT(actUnattach()));
aDrawArrow = new QAction(this);
connect(aDrawArrow, SIGNAL(triggered()), this, SLOT(actDrawArrow()));
aIncP = new QAction(this); aIncP = new QAction(this);
connect(aIncP, SIGNAL(triggered()), this, SLOT(actIncP())); connect(aIncP, SIGNAL(triggered()), this, SLOT(actIncP()));
aDecP = new QAction(this); aDecP = new QAction(this);
@ -172,6 +174,7 @@ void CardItem::updateCardMenu()
cardMenu->addAction(aAttach); cardMenu->addAction(aAttach);
if (attachedTo) if (attachedTo)
cardMenu->addAction(aUnattach); cardMenu->addAction(aUnattach);
cardMenu->addAction(aDrawArrow);
cardMenu->addSeparator(); cardMenu->addSeparator();
cardMenu->addMenu(ptMenu); cardMenu->addMenu(ptMenu);
cardMenu->addAction(aSetAnnotation); cardMenu->addAction(aSetAnnotation);
@ -186,6 +189,9 @@ void CardItem::updateCardMenu()
cardMenu->addAction(aSetCounter[i]); cardMenu->addAction(aSetCounter[i]);
} }
cardMenu->addSeparator(); cardMenu->addSeparator();
} else if (zone->getName() == "stack") {
cardMenu->addAction(aDrawArrow);
cardMenu->addMenu(moveMenu);
} else { } else {
cardMenu->addAction(aPlay); cardMenu->addAction(aPlay);
cardMenu->addMenu(moveMenu); cardMenu->addMenu(moveMenu);
@ -209,6 +215,7 @@ void CardItem::retranslateUi()
aAttach->setText(tr("&Attach to card...")); aAttach->setText(tr("&Attach to card..."));
aAttach->setShortcut(tr("Ctrl+A")); aAttach->setShortcut(tr("Ctrl+A"));
aUnattach->setText(tr("Unattac&h")); aUnattach->setText(tr("Unattac&h"));
aDrawArrow->setText(tr("&Draw arrow..."));
ptMenu->setTitle(tr("&Power / toughness")); ptMenu->setTitle(tr("&Power / toughness"));
aIncP->setText(tr("&Increase power")); aIncP->setText(tr("&Increase power"));
aIncP->setShortcut(tr("Ctrl++")); aIncP->setShortcut(tr("Ctrl++"));
@ -399,13 +406,35 @@ void CardItem::deleteDragItem()
dragItem = NULL; dragItem = NULL;
} }
void CardItem::drawArrow(const QColor &arrowColor)
{
if (static_cast<TabGame *>(owner->parent())->getSpectator())
return;
Player *arrowOwner = static_cast<TabGame *>(owner->parent())->getActiveLocalPlayer();
ArrowDragItem *arrow = new ArrowDragItem(arrowOwner, this, arrowColor);
scene()->addItem(arrow);
arrow->grabMouse();
QListIterator<QGraphicsItem *> itemIterator(scene()->selectedItems());
while (itemIterator.hasNext()) {
CardItem *c = qgraphicsitem_cast<CardItem *>(itemIterator.next());
if (!c || (c == this))
continue;
if (c->getZone() != zone)
continue;
ArrowDragItem *childArrow = new ArrowDragItem(arrowOwner, c, arrowColor);
scene()->addItem(childArrow);
arrow->addChildArrow(childArrow);
}
}
void CardItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) void CardItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{ {
if (event->buttons().testFlag(Qt::RightButton)) { if (event->buttons().testFlag(Qt::RightButton)) {
if ((event->screenPos() - event->buttonDownScreenPos(Qt::RightButton)).manhattanLength() < 2 * QApplication::startDragDistance()) if ((event->screenPos() - event->buttonDownScreenPos(Qt::RightButton)).manhattanLength() < 2 * QApplication::startDragDistance())
return; return;
if (static_cast<TabGame *>(owner->parent())->getSpectator())
return;
QColor arrowColor = Qt::red; QColor arrowColor = Qt::red;
if (event->modifiers().testFlag(Qt::ControlModifier)) if (event->modifiers().testFlag(Qt::ControlModifier))
@ -415,23 +444,7 @@ void CardItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
else if (event->modifiers().testFlag(Qt::ShiftModifier)) else if (event->modifiers().testFlag(Qt::ShiftModifier))
arrowColor = Qt::green; arrowColor = Qt::green;
Player *arrowOwner = static_cast<TabGame *>(owner->parent())->getActiveLocalPlayer(); drawArrow(arrowColor);
ArrowDragItem *arrow = new ArrowDragItem(arrowOwner, this, arrowColor);
scene()->addItem(arrow);
arrow->grabMouse();
QListIterator<QGraphicsItem *> itemIterator(scene()->selectedItems());
while (itemIterator.hasNext()) {
CardItem *c = qgraphicsitem_cast<CardItem *>(itemIterator.next());
if (!c || (c == this))
continue;
if (c->getZone() != zone)
continue;
ArrowDragItem *childArrow = new ArrowDragItem(arrowOwner, c, arrowColor);
scene()->addItem(childArrow);
arrow->addChildArrow(childArrow);
}
} else if (event->buttons().testFlag(Qt::LeftButton)) { } else if (event->buttons().testFlag(Qt::LeftButton)) {
if ((event->screenPos() - event->buttonDownScreenPos(Qt::LeftButton)).manhattanLength() < 2 * QApplication::startDragDistance()) if ((event->screenPos() - event->buttonDownScreenPos(Qt::LeftButton)).manhattanLength() < 2 * QApplication::startDragDistance())
return; return;
@ -547,6 +560,11 @@ void CardItem::actUnattach()
owner->actUnattach(static_cast<QAction *>(sender())); owner->actUnattach(static_cast<QAction *>(sender()));
} }
void CardItem::actDrawArrow()
{
drawArrow(Qt::red);
}
void CardItem::actIncP() void CardItem::actIncP()
{ {
owner->actIncPT(1, 0); owner->actIncPT(1, 0);

View file

@ -9,6 +9,7 @@ class CardZone;
class ServerInfo_Card; class ServerInfo_Card;
class Player; class Player;
class QAction; class QAction;
class QColor;
const int MAX_COUNTERS_ON_CARD = 999; const int MAX_COUNTERS_ON_CARD = 999;
@ -33,17 +34,19 @@ private:
QList<QAction *> aAddCounter, aSetCounter, aRemoveCounter; QList<QAction *> aAddCounter, aSetCounter, aRemoveCounter;
QAction *aPlay, QAction *aPlay,
*aHide, *aHide,
*aTap, *aUntap, *aDoesntUntap, *aAttach, *aUnattach, *aSetPT, *aIncP, *aDecP, *aIncT, *aDecT, *aIncPT, *aDecPT, *aSetAnnotation, *aFlip, *aClone, *aTap, *aUntap, *aDoesntUntap, *aAttach, *aUnattach, *aDrawArrow, *aSetPT, *aIncP, *aDecP, *aIncT, *aDecT, *aIncPT, *aDecPT, *aSetAnnotation, *aFlip, *aClone,
*aMoveToTopLibrary, *aMoveToBottomLibrary, *aMoveToGraveyard, *aMoveToExile; *aMoveToTopLibrary, *aMoveToBottomLibrary, *aMoveToGraveyard, *aMoveToExile;
QMenu *cardMenu, *ptMenu, *moveMenu; QMenu *cardMenu, *ptMenu, *moveMenu;
void playCard(bool faceDown); void playCard(bool faceDown);
void drawArrow(const QColor &arrowColor);
void prepareDelete(); void prepareDelete();
private slots: private slots:
void cardMenuAction(); void cardMenuAction();
void actCardCounterTrigger(); void actCardCounterTrigger();
void actAttach(); void actAttach();
void actUnattach(); void actUnattach();
void actDrawArrow();
void actSetPT(); void actSetPT();
void actIncP(); void actIncP();
void actDecP(); void actDecP();

View file

@ -1,35 +1,73 @@
#include <QTextEdit> #include <QTextEdit>
#include <QDateTime> #include <QDateTime>
#include <QTextTable>
#include <QScrollBar> #include <QScrollBar>
#include <QMouseEvent>
#include <QDesktopServices>
#include "chatview.h" #include "chatview.h"
ChatView::ChatView(const QString &_ownName, QWidget *parent) ChatView::ChatView(const QString &_ownName, bool _showTimestamps, QWidget *parent)
: QTextEdit(parent), ownName(_ownName) : QTextBrowser(parent), evenNumber(true), ownName(_ownName), showTimestamps(_showTimestamps)
{ {
setTextInteractionFlags(Qt::TextSelectableByMouse); setReadOnly(true);
setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::LinksAccessibleByMouse);
setOpenLinks(false);
connect(this, SIGNAL(anchorClicked(const QUrl &)), this, SLOT(openLink(const QUrl &)));
} }
void ChatView::appendMessage(QString sender, const QString &message) QTextCursor ChatView::prepareBlock(bool same)
{ {
lastSender.clear();
QTextCursor cursor(document()->lastBlock()); QTextCursor cursor(document()->lastBlock());
cursor.movePosition(QTextCursor::End); cursor.movePosition(QTextCursor::End);
if (!same) {
QTextBlockFormat blockFormat;
if ((evenNumber = !evenNumber))
blockFormat.setBackground(palette().alternateBase());
blockFormat.setBottomMargin(2);
cursor.insertBlock(blockFormat);
} else
cursor.insertHtml("<br>");
QTextBlockFormat blockFormat; return cursor;
blockFormat.setBottomMargin(3); }
cursor.insertBlock(blockFormat);
void ChatView::appendHtml(const QString &html)
{
prepareBlock().insertHtml(html);
verticalScrollBar()->setValue(verticalScrollBar()->maximum());
}
void ChatView::appendMessage(QString sender, QString message, QColor playerColor, bool playerBold)
{
bool sameSender = (sender == lastSender) && !lastSender.isEmpty();
QTextCursor cursor = prepareBlock(sameSender);
lastSender = sender;
QTextCharFormat timeFormat; if (showTimestamps) {
timeFormat.setForeground(Qt::black); QTextCharFormat timeFormat;
cursor.setCharFormat(timeFormat); if (sameSender)
cursor.insertText(QDateTime::currentDateTime().toString("[hh:mm] ")); timeFormat.setForeground(Qt::transparent);
else
timeFormat.setForeground(Qt::black);
cursor.setCharFormat(timeFormat);
cursor.insertText(QDateTime::currentDateTime().toString("[hh:mm] "));
}
QTextCharFormat senderFormat; QTextCharFormat senderFormat;
if (sender == ownName) { if (sender == ownName) {
senderFormat.setFontWeight(QFont::Bold); senderFormat.setFontWeight(QFont::Bold);
senderFormat.setForeground(Qt::red); senderFormat.setForeground(Qt::red);
} else } else {
senderFormat.setForeground(Qt::blue); if (playerColor == QColor())
senderFormat.setForeground(QColor(0, 0, 254));
else
senderFormat.setForeground(playerColor);
if (playerBold)
senderFormat.setFontWeight(QFont::Bold);
}
if (sameSender)
senderFormat.setForeground(Qt::transparent);
cursor.setCharFormat(senderFormat); cursor.setCharFormat(senderFormat);
if (!sender.isEmpty()) if (!sender.isEmpty())
sender.append(": "); sender.append(": ");
@ -39,7 +77,122 @@ void ChatView::appendMessage(QString sender, const QString &message)
if (sender.isEmpty()) if (sender.isEmpty())
messageFormat.setForeground(Qt::darkGreen); messageFormat.setForeground(Qt::darkGreen);
cursor.setCharFormat(messageFormat); cursor.setCharFormat(messageFormat);
cursor.insertText(message);
int from = 0, index = 0;
while ((index = message.indexOf('[', from)) != -1) {
cursor.insertText(message.left(index));
message = message.mid(index);
if (message.isEmpty())
break;
if (message.startsWith("[card]")) {
message = message.mid(6);
QTextCharFormat tempFormat = messageFormat;
tempFormat.setForeground(Qt::blue);
cursor.setCharFormat(tempFormat);
int closeTagIndex = message.indexOf("[/card]");
cursor.insertText(message.left(closeTagIndex));
cursor.setCharFormat(messageFormat);
if (closeTagIndex == -1)
message.clear();
else
message = message.mid(closeTagIndex + 7);
} else if (message.startsWith("[url]")) {
message = message.mid(5);
int closeTagIndex = message.indexOf("[/url]");
QString url = message.left(closeTagIndex);
if (!url.startsWith("http://"))
url.prepend("http://");
QTextCharFormat tempFormat = messageFormat;
tempFormat.setForeground(QColor(0, 0, 254));
tempFormat.setAnchor(true);
tempFormat.setAnchorHref(url);
cursor.setCharFormat(tempFormat);
cursor.insertText(url);
cursor.setCharFormat(messageFormat);
if (closeTagIndex == -1)
message.clear();
else
message = message.mid(closeTagIndex + 6);
} else
from = 1;
}
if (!message.isEmpty())
cursor.insertText(message);
verticalScrollBar()->setValue(verticalScrollBar()->maximum()); verticalScrollBar()->setValue(verticalScrollBar()->maximum());
} }
void ChatView::enterEvent(QEvent * /*event*/)
{
setMouseTracking(true);
}
void ChatView::leaveEvent(QEvent * /*event*/)
{
setMouseTracking(false);
}
QTextFragment ChatView::getFragmentUnderMouse(const QPoint &pos) const
{
QTextCursor cursor(cursorForPosition(pos));
QTextBlock block(cursor.block());
QTextBlock::iterator it;
for (it = block.begin(); !(it.atEnd()); ++it) {
QTextFragment frag = it.fragment();
if (frag.contains(cursor.position()))
return frag;
}
return QTextFragment();
}
QString ChatView::getCardNameUnderMouse(QTextFragment frag) const
{
if (frag.charFormat().foreground().color() == Qt::blue)
return frag.text();
return QString();
}
QString ChatView::getCardNameUnderMouse(const QPoint &pos) const
{
return getCardNameUnderMouse(getFragmentUnderMouse(pos));
}
void ChatView::mouseMoveEvent(QMouseEvent *event)
{
QTextFragment frag = getFragmentUnderMouse(event->pos());
QString cardName = getCardNameUnderMouse(frag);
if (!cardName.isEmpty()) {
viewport()->setCursor(Qt::PointingHandCursor);
emit cardNameHovered(cardName);
} else if (frag.charFormat().isAnchor())
viewport()->setCursor(Qt::PointingHandCursor);
else
viewport()->setCursor(Qt::IBeamCursor);
QTextBrowser::mouseMoveEvent(event);
}
void ChatView::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::MidButton) {
QString cardName = getCardNameUnderMouse(event->pos());
if (!cardName.isEmpty())
emit showCardInfoPopup(event->globalPos(), cardName);
}
QTextBrowser::mousePressEvent(event);
}
void ChatView::mouseReleaseEvent(QMouseEvent *event)
{
if (event->button() == Qt::MidButton)
emit deleteCardInfoPopup(QString("_"));
QTextBrowser::mouseReleaseEvent(event);
}
void ChatView::openLink(const QUrl &link)
{
QDesktopServices::openUrl(link);
}

View file

@ -1,18 +1,41 @@
#ifndef CHATVIEW_H #ifndef CHATVIEW_H
#define CHATVIEW_H #define CHATVIEW_H
#include <QTextEdit> #include <QTextBrowser>
#include <QTextFragment>
#include <QTextCursor>
#include <QColor>
class QTextTable; class QTextTable;
class QMouseEvent;
class ChatView : public QTextEdit { class ChatView : public QTextBrowser {
Q_OBJECT; Q_OBJECT;
private: private:
QTextTable *table; QString lastSender;
bool evenNumber;
QString ownName; QString ownName;
bool showTimestamps;
QTextFragment getFragmentUnderMouse(const QPoint &pos) const;
QString getCardNameUnderMouse(QTextFragment frag) const;
QString getCardNameUnderMouse(const QPoint &pos) const;
QTextCursor prepareBlock(bool same = false);
private slots:
void openLink(const QUrl &link);
public: public:
ChatView(const QString &_ownName, QWidget *parent = 0); ChatView(const QString &_ownName, bool _showTimestamps, QWidget *parent = 0);
void appendMessage(QString sender, const QString &message); void appendHtml(const QString &html);
void appendMessage(QString sender, QString message, QColor playerColor = QColor(), bool playerBold = false);
protected:
void enterEvent(QEvent *event);
void leaveEvent(QEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
signals:
void cardNameHovered(QString cardName);
void showCardInfoPopup(QPoint pos, QString cardName);
void deleteCardInfoPopup(QString cardName);
}; };
#endif #endif

View file

@ -17,6 +17,7 @@ DlgCreateGame::DlgCreateGame(AbstractClient *_client, int _roomId, const QMap<in
descriptionLabel = new QLabel(tr("&Description:")); descriptionLabel = new QLabel(tr("&Description:"));
descriptionEdit = new QLineEdit; descriptionEdit = new QLineEdit;
descriptionLabel->setBuddy(descriptionEdit); descriptionLabel->setBuddy(descriptionEdit);
descriptionEdit->setMaxLength(60);
maxPlayersLabel = new QLabel(tr("P&layers:")); maxPlayersLabel = new QLabel(tr("P&layers:"));
maxPlayersEdit = new QSpinBox(); maxPlayersEdit = new QSpinBox();

View file

@ -16,6 +16,7 @@
#include <QSettings> #include <QSettings>
#include <QApplication> #include <QApplication>
#include <QInputDialog> #include <QInputDialog>
#include <QSpinBox>
#include "carddatabase.h" #include "carddatabase.h"
#include "dlg_settings.h" #include "dlg_settings.h"
#include "main.h" #include "main.h"
@ -242,8 +243,17 @@ AppearanceSettingsPage::AppearanceSettingsPage()
invertVerticalCoordinateCheckBox->setChecked(settingsCache->getInvertVerticalCoordinate()); invertVerticalCoordinateCheckBox->setChecked(settingsCache->getInvertVerticalCoordinate());
connect(invertVerticalCoordinateCheckBox, SIGNAL(stateChanged(int)), settingsCache, SLOT(setInvertVerticalCoordinate(int))); connect(invertVerticalCoordinateCheckBox, SIGNAL(stateChanged(int)), settingsCache, SLOT(setInvertVerticalCoordinate(int)));
minPlayersForMultiColumnLayoutLabel = new QLabel;
minPlayersForMultiColumnLayoutEdit = new QSpinBox;
minPlayersForMultiColumnLayoutEdit->setMinimum(2);
minPlayersForMultiColumnLayoutEdit->setValue(settingsCache->getMinPlayersForMultiColumnLayout());
connect(minPlayersForMultiColumnLayoutEdit, SIGNAL(valueChanged(int)), settingsCache, SLOT(setMinPlayersForMultiColumnLayout(int)));
minPlayersForMultiColumnLayoutLabel->setBuddy(minPlayersForMultiColumnLayoutEdit);
QGridLayout *tableGrid = new QGridLayout; QGridLayout *tableGrid = new QGridLayout;
tableGrid->addWidget(invertVerticalCoordinateCheckBox, 0, 0, 1, 2); tableGrid->addWidget(invertVerticalCoordinateCheckBox, 0, 0, 1, 2);
tableGrid->addWidget(minPlayersForMultiColumnLayoutLabel, 1, 0, 1, 1);
tableGrid->addWidget(minPlayersForMultiColumnLayoutEdit, 1, 1, 1, 1);
tableGroupBox = new QGroupBox; tableGroupBox = new QGroupBox;
tableGroupBox->setLayout(tableGrid); tableGroupBox->setLayout(tableGrid);
@ -289,6 +299,7 @@ void AppearanceSettingsPage::retranslateUi()
tableGroupBox->setTitle(tr("Table grid layout")); tableGroupBox->setTitle(tr("Table grid layout"));
invertVerticalCoordinateCheckBox->setText(tr("Invert vertical coordinate")); invertVerticalCoordinateCheckBox->setText(tr("Invert vertical coordinate"));
minPlayersForMultiColumnLayoutLabel->setText(tr("Minimum player count for multi-column layout:"));
zoneViewGroupBox->setTitle(tr("Zone view layout")); zoneViewGroupBox->setTitle(tr("Zone view layout"));
zoneViewSortByNameCheckBox->setText(tr("Sort by name")); zoneViewSortByNameCheckBox->setText(tr("Sort by name"));

View file

@ -14,6 +14,7 @@ class QGroupBox;
class QCheckBox; class QCheckBox;
class QLabel; class QLabel;
class QCloseEvent; class QCloseEvent;
class QSpinBox;
class AbstractSettingsPage : public QWidget { class AbstractSettingsPage : public QWidget {
public: public:
@ -65,10 +66,11 @@ signals:
void playerAreaBgChanged(const QString &path); void playerAreaBgChanged(const QString &path);
void cardBackPicturePathChanged(const QString &path); void cardBackPicturePathChanged(const QString &path);
private: private:
QLabel *handBgLabel, *stackBgLabel, *tableBgLabel, *playerAreaBgLabel, *cardBackPicturePathLabel; QLabel *handBgLabel, *stackBgLabel, *tableBgLabel, *playerAreaBgLabel, *cardBackPicturePathLabel, *minPlayersForMultiColumnLayoutLabel;
QLineEdit *handBgEdit, *stackBgEdit, *tableBgEdit, *playerAreaBgEdit, *cardBackPicturePathEdit; QLineEdit *handBgEdit, *stackBgEdit, *tableBgEdit, *playerAreaBgEdit, *cardBackPicturePathEdit;
QCheckBox *displayCardNamesCheckBox, *horizontalHandCheckBox, *invertVerticalCoordinateCheckBox, *zoneViewSortByNameCheckBox, *zoneViewSortByTypeCheckBox; QCheckBox *displayCardNamesCheckBox, *horizontalHandCheckBox, *invertVerticalCoordinateCheckBox, *zoneViewSortByNameCheckBox, *zoneViewSortByTypeCheckBox;
QGroupBox *zoneBgGroupBox, *cardsGroupBox, *handGroupBox, *tableGroupBox, *zoneViewGroupBox; QGroupBox *zoneBgGroupBox, *cardsGroupBox, *handGroupBox, *tableGroupBox, *zoneViewGroupBox;
QSpinBox *minPlayersForMultiColumnLayoutEdit;
public: public:
AppearanceSettingsPage(); AppearanceSettingsPage();
void retranslateUi(); void retranslateUi();

View file

@ -3,6 +3,7 @@
#include "zoneviewwidget.h" #include "zoneviewwidget.h"
#include "zoneviewzone.h" #include "zoneviewzone.h"
#include "phasestoolbar.h" #include "phasestoolbar.h"
#include "settingscache.h"
#include <math.h> #include <math.h>
#include <QAction> #include <QAction>
#include <QGraphicsSceneMouseEvent> #include <QGraphicsSceneMouseEvent>
@ -14,6 +15,7 @@ GameScene::GameScene(PhasesToolbar *_phasesToolbar, QObject *parent)
{ {
animationTimer = new QBasicTimer; animationTimer = new QBasicTimer;
addItem(phasesToolbar); addItem(phasesToolbar);
connect(settingsCache, SIGNAL(minPlayersForMultiColumnLayoutChanged()), this, SLOT(rearrange()));
} }
GameScene::~GameScene() GameScene::~GameScene()
@ -59,7 +61,7 @@ void GameScene::rearrange()
if (firstPlayer == -1) if (firstPlayer == -1)
firstPlayer = 0; firstPlayer = 0;
const int playersCount = playersPlaying.size(); const int playersCount = playersPlaying.size();
const int columns = playersCount < 4 ? 1 : 2; const int columns = playersCount < settingsCache->getMinPlayersForMultiColumnLayout() ? 1 : 2;
const int rows = ceil((qreal) playersCount / columns); const int rows = ceil((qreal) playersCount / columns);
qreal sceneHeight = 0, sceneWidth = -playerAreaSpacing; qreal sceneHeight = 0, sceneWidth = -playerAreaSpacing;

View file

@ -0,0 +1,150 @@
#include <QTreeView>
#include <QCheckBox>
#include <QPushButton>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QMessageBox>
#include <QHeaderView>
#include <QInputDialog>
#include "dlg_creategame.h"
#include "abstractclient.h"
#include "protocol_items.h"
#include "gameselector.h"
#include "gamesmodel.h"
GameSelector::GameSelector(AbstractClient *_client, TabRoom *_room, const QMap<int, QString> &_rooms, const QMap<int, GameTypeMap> &_gameTypes, QWidget *parent)
: QGroupBox(parent), client(_client), room(_room)
{
gameListView = new QTreeView;
gameListModel = new GamesModel(_rooms, _gameTypes, this);
gameListProxyModel = new GamesProxyModel(this);
gameListProxyModel->setSourceModel(gameListModel);
gameListProxyModel->setSortCaseSensitivity(Qt::CaseInsensitive);
gameListView->setModel(gameListProxyModel);
gameListView->setSortingEnabled(true);
gameListView->setAlternatingRowColors(true);
if (_room)
gameListView->header()->hideSection(0);
gameListView->header()->setResizeMode(1, QHeaderView::ResizeToContents);
showFullGamesCheckBox = new QCheckBox;
showRunningGamesCheckBox = new QCheckBox;
QVBoxLayout *filterLayout = new QVBoxLayout;
filterLayout->addWidget(showFullGamesCheckBox);
filterLayout->addWidget(showRunningGamesCheckBox);
if (room)
createButton = new QPushButton;
else
createButton = 0;
joinButton = new QPushButton;
spectateButton = new QPushButton;
QHBoxLayout *buttonLayout = new QHBoxLayout;
if (room)
buttonLayout->addWidget(createButton);
buttonLayout->addWidget(joinButton);
buttonLayout->addWidget(spectateButton);
buttonLayout->setAlignment(Qt::AlignTop);
QHBoxLayout *hbox = new QHBoxLayout;
hbox->addLayout(filterLayout);
hbox->addStretch();
hbox->addLayout(buttonLayout);
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(gameListView);
mainLayout->addLayout(hbox);
retranslateUi();
setLayout(mainLayout);
setMinimumWidth((qreal) (gameListView->columnWidth(0) * gameListModel->columnCount()) / 1.5);
setMinimumHeight(200);
connect(showFullGamesCheckBox, SIGNAL(stateChanged(int)), this, SLOT(showFullGamesChanged(int)));
connect(showRunningGamesCheckBox, SIGNAL(stateChanged(int)), this, SLOT(showRunningGamesChanged(int)));
connect(createButton, SIGNAL(clicked()), this, SLOT(actCreate()));
connect(joinButton, SIGNAL(clicked()), this, SLOT(actJoin()));
connect(spectateButton, SIGNAL(clicked()), this, SLOT(actJoin()));
}
void GameSelector::showFullGamesChanged(int state)
{
gameListProxyModel->setFullGamesVisible(state);
}
void GameSelector::showRunningGamesChanged(int state)
{
gameListProxyModel->setRunningGamesVisible(state);
}
void GameSelector::actCreate()
{
DlgCreateGame dlg(client, room->getRoomId(), room->getGameTypes(), this);
dlg.exec();
}
void GameSelector::checkResponse(ResponseCode response)
{
if (createButton)
createButton->setEnabled(true);
joinButton->setEnabled(true);
spectateButton->setEnabled(true);
switch (response) {
case RespNotInRoom: QMessageBox::critical(this, tr("Error"), tr("Please join the appropriate room first.")); break;
case RespWrongPassword: QMessageBox::critical(this, tr("Error"), tr("Wrong password.")); break;
case RespSpectatorsNotAllowed: QMessageBox::critical(this, tr("Error"), tr("Spectators are not allowed in this game.")); break;
case RespGameFull: QMessageBox::critical(this, tr("Error"), tr("The game is already full.")); break;
case RespNameNotFound: QMessageBox::critical(this, tr("Error"), tr("The game does not exist any more.")); break;
case RespUserLevelTooLow: QMessageBox::critical(this, tr("Error"), tr("This game is only open to registered users.")); break;
case RespOnlyBuddies: QMessageBox::critical(this, tr("Error"), tr("This game is only open to its creator's buddies.")); break;
case RespInIgnoreList: QMessageBox::critical(this, tr("Error"), tr("You are being ignored by the creator of this game.")); break;
default: ;
}
}
void GameSelector::actJoin()
{
bool spectator = sender() == spectateButton;
QModelIndex ind = gameListView->currentIndex();
if (!ind.isValid())
return;
ServerInfo_Game *game = gameListModel->getGame(ind.data(Qt::UserRole).toInt());
QString password;
if (game->getHasPassword() && !(spectator && !game->getSpectatorsNeedPassword())) {
bool ok;
password = QInputDialog::getText(this, tr("Join game"), tr("Password:"), QLineEdit::Password, QString(), &ok);
if (!ok)
return;
}
Command_JoinGame *commandJoinGame = new Command_JoinGame(game->getRoomId(), game->getGameId(), password, spectator);
connect(commandJoinGame, SIGNAL(finished(ResponseCode)), this, SLOT(checkResponse(ResponseCode)));
client->sendCommand(commandJoinGame);
if (createButton)
createButton->setEnabled(false);
joinButton->setEnabled(false);
spectateButton->setEnabled(false);
}
void GameSelector::retranslateUi()
{
setTitle(tr("Games"));
showFullGamesCheckBox->setText(tr("Show &full games"));
showRunningGamesCheckBox->setText(tr("Show &running games"));
if (createButton)
createButton->setText(tr("C&reate"));
joinButton->setText(tr("&Join"));
spectateButton->setText(tr("J&oin as spectator"));
}
void GameSelector::processGameInfo(ServerInfo_Game *info)
{
gameListModel->updateGameList(info);
}

View file

@ -0,0 +1,42 @@
#ifndef GAMESELECTOR_H
#define GAMESELECTOR_H
#include <QGroupBox>
#include "protocol_datastructures.h"
#include "tab_room.h"
#include "gametypemap.h"
class QTreeView;
class GamesModel;
class GamesProxyModel;
class QPushButton;
class QCheckBox;
class AbstractClient;
class TabRoom;
class GameSelector : public QGroupBox {
Q_OBJECT
private slots:
void showFullGamesChanged(int state);
void showRunningGamesChanged(int state);
void actCreate();
void actJoin();
void checkResponse(ResponseCode response);
signals:
void gameJoined(int gameId);
private:
AbstractClient *client;
TabRoom *room;
QTreeView *gameListView;
GamesModel *gameListModel;
GamesProxyModel *gameListProxyModel;
QPushButton *createButton, *joinButton, *spectateButton;
QCheckBox *showFullGamesCheckBox, *showRunningGamesCheckBox;
public:
GameSelector(AbstractClient *_client, TabRoom *_room, const QMap<int, QString> &_rooms, const QMap<int, GameTypeMap> &_gameTypes, QWidget *parent = 0);
void retranslateUi();
void processGameInfo(ServerInfo_Game *info);
};
#endif

View file

@ -1,8 +1,8 @@
#include "gamesmodel.h" #include "gamesmodel.h"
#include "protocol_datastructures.h" #include "protocol_datastructures.h"
GamesModel::GamesModel(const QMap<int, QString> &_gameTypes, QObject *parent) GamesModel::GamesModel(const QMap<int, QString> &_rooms, const QMap<int, GameTypeMap> &_gameTypes, QObject *parent)
: QAbstractTableModel(parent), gameTypes(_gameTypes) : QAbstractTableModel(parent), rooms(_rooms), gameTypes(_gameTypes)
{ {
} }
@ -30,17 +30,19 @@ QVariant GamesModel::data(const QModelIndex &index, int role) const
ServerInfo_Game *g = gameList[index.row()]; ServerInfo_Game *g = gameList[index.row()];
switch (index.column()) { switch (index.column()) {
case 0: return g->getDescription(); case 0: return rooms.value(g->getRoomId());
case 1: return g->getCreatorInfo()->getName(); case 1: return g->getDescription();
case 2: { case 2: return g->getCreatorInfo()->getName();
case 3: {
QStringList result; QStringList result;
QList<GameTypeId *> gameTypeList = g->getGameTypes(); QList<GameTypeId *> gameTypeList = g->getGameTypes();
GameTypeMap gameTypeMap = gameTypes.value(g->getRoomId());
for (int i = 0; i < gameTypeList.size(); ++i) for (int i = 0; i < gameTypeList.size(); ++i)
result.append(gameTypes.value(gameTypeList[i]->getData())); result.append(gameTypeMap.value(gameTypeList[i]->getData()));
return result.join(", "); return result.join(", ");
} }
case 3: return g->getHasPassword() ? (g->getSpectatorsNeedPassword() ? tr("yes") : tr("yes, free for spectators")) : tr("no"); case 4: return g->getHasPassword() ? (g->getSpectatorsNeedPassword() ? tr("yes") : tr("yes, free for spectators")) : tr("no");
case 4: { case 5: {
QStringList result; QStringList result;
if (g->getOnlyBuddies()) if (g->getOnlyBuddies())
result.append(tr("buddies only")); result.append(tr("buddies only"));
@ -48,8 +50,8 @@ QVariant GamesModel::data(const QModelIndex &index, int role) const
result.append(tr("reg. users only")); result.append(tr("reg. users only"));
return result.join(", "); return result.join(", ");
} }
case 5: return QString("%1/%2").arg(g->getPlayerCount()).arg(g->getMaxPlayers()); case 6: return QString("%1/%2").arg(g->getPlayerCount()).arg(g->getMaxPlayers());
case 6: return g->getSpectatorsAllowed() ? QVariant(g->getSpectatorCount()) : QVariant(tr("not allowed")); case 7: return g->getSpectatorsAllowed() ? QVariant(g->getSpectatorCount()) : QVariant(tr("not allowed"));
default: return QVariant(); default: return QVariant();
} }
} }
@ -59,13 +61,14 @@ QVariant GamesModel::headerData(int section, Qt::Orientation orientation, int ro
if ((role != Qt::DisplayRole) || (orientation != Qt::Horizontal)) if ((role != Qt::DisplayRole) || (orientation != Qt::Horizontal))
return QVariant(); return QVariant();
switch (section) { switch (section) {
case 0: return tr("Description"); case 0: return tr("Room");
case 1: return tr("Creator"); case 1: return tr("Description");
case 2: return tr("Game type"); case 2: return tr("Creator");
case 3: return tr("Password"); case 3: return tr("Game type");
case 4: return tr("Restrictions"); case 4: return tr("Password");
case 5: return tr("Players"); case 5: return tr("Restrictions");
case 6: return tr("Spectators"); case 6: return tr("Players");
case 7: return tr("Spectators");
default: return QVariant(); default: return QVariant();
} }
} }
@ -82,7 +85,7 @@ void GamesModel::updateGameList(ServerInfo_Game *_game)
for (int i = 0; i < oldGameTypeList.size(); ++i) for (int i = 0; i < oldGameTypeList.size(); ++i)
gameTypeList.append(new GameTypeId(oldGameTypeList[i]->getData())); gameTypeList.append(new GameTypeId(oldGameTypeList[i]->getData()));
ServerInfo_Game *game = new ServerInfo_Game(_game->getGameId(), _game->getDescription(), _game->getHasPassword(), _game->getPlayerCount(), _game->getMaxPlayers(), gameTypeList, new ServerInfo_User(_game->getCreatorInfo()), _game->getOnlyBuddies(), _game->getOnlyRegistered(), _game->getSpectatorsAllowed(), _game->getSpectatorsNeedPassword(), _game->getSpectatorCount()); ServerInfo_Game *game = new ServerInfo_Game(_game->getRoomId(), _game->getGameId(), _game->getDescription(), _game->getHasPassword(), _game->getPlayerCount(), _game->getMaxPlayers(), _game->getStarted(), gameTypeList, new ServerInfo_User(_game->getCreatorInfo()), _game->getOnlyBuddies(), _game->getOnlyRegistered(), _game->getSpectatorsAllowed(), _game->getSpectatorsNeedPassword(), _game->getSpectatorCount());
for (int i = 0; i < gameList.size(); i++) for (int i = 0; i < gameList.size(); i++)
if (gameList[i]->getGameId() == game->getGameId()) { if (gameList[i]->getGameId() == game->getGameId()) {
if (game->getPlayerCount() == 0) { if (game->getPlayerCount() == 0) {
@ -92,7 +95,7 @@ void GamesModel::updateGameList(ServerInfo_Game *_game)
} else { } else {
delete gameList[i]; delete gameList[i];
gameList[i] = game; gameList[i] = game;
emit dataChanged(index(i, 0), index(i, 4)); emit dataChanged(index(i, 0), index(i, 7));
} }
return; return;
} }
@ -115,17 +118,22 @@ void GamesProxyModel::setFullGamesVisible(bool _fullGamesVisible)
invalidateFilter(); invalidateFilter();
} }
void GamesProxyModel::setRunningGamesVisible(bool _runningGamesVisible)
{
runningGamesVisible = _runningGamesVisible;
invalidateFilter();
}
bool GamesProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &/*sourceParent*/) const bool GamesProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &/*sourceParent*/) const
{ {
if (fullGamesVisible)
return true;
GamesModel *model = qobject_cast<GamesModel *>(sourceModel()); GamesModel *model = qobject_cast<GamesModel *>(sourceModel());
if (!model) if (!model)
return false; return false;
ServerInfo_Game *game = model->getGame(sourceRow); ServerInfo_Game *game = model->getGame(sourceRow);
if (game->getPlayerCount() == game->getMaxPlayers()) if ((game->getPlayerCount() == game->getMaxPlayers()) && !fullGamesVisible)
return false;
if (game->getStarted() && !runningGamesVisible)
return false; return false;
return true; return true;

View file

@ -4,6 +4,7 @@
#include <QAbstractTableModel> #include <QAbstractTableModel>
#include <QSortFilterProxyModel> #include <QSortFilterProxyModel>
#include <QList> #include <QList>
#include "gametypemap.h"
class ServerInfo_Game; class ServerInfo_Game;
@ -11,12 +12,13 @@ class GamesModel : public QAbstractTableModel {
Q_OBJECT Q_OBJECT
private: private:
QList<ServerInfo_Game *> gameList; QList<ServerInfo_Game *> gameList;
QMap<int, QString> gameTypes; QMap<int, QString> rooms;
QMap<int, GameTypeMap> gameTypes;
public: public:
GamesModel(const QMap<int, QString> &_gameTypes, QObject *parent = 0); GamesModel(const QMap<int, QString> &_rooms, const QMap<int, GameTypeMap> &_gameTypes, QObject *parent = 0);
~GamesModel(); ~GamesModel();
int rowCount(const QModelIndex &parent = QModelIndex()) const { return parent.isValid() ? 0 : gameList.size(); } int rowCount(const QModelIndex &parent = QModelIndex()) const { return parent.isValid() ? 0 : gameList.size(); }
int columnCount(const QModelIndex &/*parent*/ = QModelIndex()) const { return 7; } int columnCount(const QModelIndex &/*parent*/ = QModelIndex()) const { return 8; }
QVariant data(const QModelIndex &index, int role) const; QVariant data(const QModelIndex &index, int role) const;
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
@ -28,9 +30,11 @@ class GamesProxyModel : public QSortFilterProxyModel {
Q_OBJECT Q_OBJECT
private: private:
bool fullGamesVisible; bool fullGamesVisible;
bool runningGamesVisible;
public: public:
GamesProxyModel(QObject *parent = 0); GamesProxyModel(QObject *parent = 0);
void setFullGamesVisible(bool _fullGamesVisible); void setFullGamesVisible(bool _fullGamesVisible);
void setRunningGamesVisible(bool _runningGamesVisible);
protected: protected:
bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const; bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const;
}; };

View file

@ -0,0 +1,8 @@
#ifndef GAMETYPEMAP_H
#define GAMETYPEMAP_H
#include <QMap>
typedef QMap<int, QString> GameTypeMap;
#endif

View file

@ -11,11 +11,12 @@ class LocalServer : public Server
public: public:
LocalServer(QObject *parent = 0); LocalServer(QObject *parent = 0);
~LocalServer(); ~LocalServer();
AuthenticationResult checkUserPassword(const QString & /*user*/, const QString & /*password*/) { return UnknownUser; } AuthenticationResult checkUserPassword(Server_ProtocolHandler * /*handler*/, const QString & /*user*/, const QString & /*password*/) { return UnknownUser; }
QString getLoginMessage() const { return QString(); } QString getLoginMessage() const { return QString(); }
bool getGameShouldPing() const { return false; } bool getGameShouldPing() const { return false; }
int getMaxGameInactivityTime() const { return 9999999; } int getMaxGameInactivityTime() const { return 9999999; }
int getMaxPlayerInactivityTime() const { return 9999999; } int getMaxPlayerInactivityTime() const { return 9999999; }
bool getThreaded() const { return false; }
LocalServerInterface *newConnection(); LocalServerInterface *newConnection();
protected: protected:

View file

@ -18,14 +18,16 @@ private:
ResponseCode cmdDeckDel(Command_DeckDel * /*cmd*/, CommandContainer * /*cont*/) { return RespFunctionNotAllowed; } ResponseCode cmdDeckDel(Command_DeckDel * /*cmd*/, CommandContainer * /*cont*/) { return RespFunctionNotAllowed; }
ResponseCode cmdDeckUpload(Command_DeckUpload * /*cmd*/, CommandContainer * /*cont*/) { return RespFunctionNotAllowed; } ResponseCode cmdDeckUpload(Command_DeckUpload * /*cmd*/, CommandContainer * /*cont*/) { return RespFunctionNotAllowed; }
ResponseCode cmdDeckDownload(Command_DeckDownload * /*cmd*/, CommandContainer * /*cont*/) { return RespFunctionNotAllowed; } ResponseCode cmdDeckDownload(Command_DeckDownload * /*cmd*/, CommandContainer * /*cont*/) { return RespFunctionNotAllowed; }
ResponseCode cmdUpdateServerMessage(Command_UpdateServerMessage * /*cmd*/, CommandContainer * /*cont*/) { return RespFunctionNotAllowed; }
ResponseCode cmdBanFromServer(Command_BanFromServer * /*cmd*/, CommandContainer * /*cont*/) { return RespFunctionNotAllowed; } ResponseCode cmdBanFromServer(Command_BanFromServer * /*cmd*/, CommandContainer * /*cont*/) { return RespFunctionNotAllowed; }
ResponseCode cmdShutdownServer(Command_ShutdownServer * /*cmd*/, CommandContainer * /*cont*/) { return RespFunctionNotAllowed; }
ResponseCode cmdUpdateServerMessage(Command_UpdateServerMessage * /*cmd*/, CommandContainer * /*cont*/) { return RespFunctionNotAllowed; }
protected:
bool getCompressionSupport() const { return false; }
public: public:
LocalServerInterface(LocalServer *_server); LocalServerInterface(LocalServer *_server);
~LocalServerInterface(); ~LocalServerInterface();
void sendProtocolItem(ProtocolItem *item, bool deleteItem = true); void sendProtocolItem(ProtocolItem *item, bool deleteItem = true);
signals: signals:
void itemToClient(ProtocolItem *item); void itemToClient(ProtocolItem *item);
public slots: public slots:

View file

@ -9,7 +9,7 @@ extern CardDatabase *db;
extern QTranslator *translator; extern QTranslator *translator;
const QString translationPrefix = "cockatrice"; const QString translationPrefix = "cockatrice";
const QString versionString = "0.20110303"; const QString versionString = "0.20110625";
void installNewTranslator(); void installNewTranslator();

View file

@ -1,11 +1,9 @@
#include "messagelogwidget.h" #include "messagelogwidget.h"
#include "player.h" #include "player.h"
#include "cardzone.h" #include "cardzone.h"
#include "cardinfowidget.h"
#include "protocol_items.h" #include "protocol_items.h"
#include "soundengine.h" #include "soundengine.h"
#include <QMouseEvent> #include <QScrollBar>
#include <QTextBlock>
QString MessageLogWidget::sanitizeHtml(QString dirty) const QString MessageLogWidget::sanitizeHtml(QString dirty) const
{ {
@ -20,123 +18,132 @@ bool MessageLogWidget::isFemale(Player *player) const
return player->getUserInfo()->getGender() == ServerInfo_User::Female; return player->getUserInfo()->getGender() == ServerInfo_User::Female;
} }
void MessageLogWidget::logConnecting(QString hostname)
{
append(tr("Connecting to %1...").arg(sanitizeHtml(hostname)));
}
void MessageLogWidget::logConnected()
{
append(tr("Connected."));
}
void MessageLogWidget::logDisconnected()
{
append(tr("Disconnected from server."));
}
void MessageLogWidget::logSocketError(const QString &errorString)
{
append(sanitizeHtml(errorString));
}
void MessageLogWidget::logServerError(ResponseCode response)
{
switch (response) {
case RespWrongPassword: append(tr("Invalid password.")); break;
default: ;
}
}
void MessageLogWidget::logProtocolVersionMismatch(int clientVersion, int serverVersion)
{
append(tr("Protocol version mismatch. Client: %1, Server: %2").arg(clientVersion).arg(serverVersion));
}
void MessageLogWidget::logProtocolError()
{
append(tr("Protocol error."));
}
void MessageLogWidget::logGameJoined(int gameId) void MessageLogWidget::logGameJoined(int gameId)
{ {
append(tr("You have joined game #%1.").arg(gameId)); if (female)
appendHtml(tr("You have joined game #%1.", "female").arg(gameId));
else
appendHtml(tr("You have joined game #%1.", "male").arg(gameId));
} }
void MessageLogWidget::logJoin(Player *player) void MessageLogWidget::logJoin(Player *player)
{ {
soundEngine->notification(); soundEngine->cuckoo();
append(tr("%1 has joined the game.").arg(sanitizeHtml(player->getName()))); if (isFemale(player))
appendHtml(tr("%1 has joined the game.", "female").arg(sanitizeHtml(player->getName())));
else
appendHtml(tr("%1 has joined the game.", "male").arg(sanitizeHtml(player->getName())));
} }
void MessageLogWidget::logLeave(Player *player) void MessageLogWidget::logLeave(Player *player)
{ {
append(tr("%1 has left the game.").arg(sanitizeHtml(player->getName()))); if (isFemale(player))
appendHtml(tr("%1 has left the game.", "female").arg(sanitizeHtml(player->getName())));
else
appendHtml(tr("%1 has left the game.", "male").arg(sanitizeHtml(player->getName())));
} }
void MessageLogWidget::logGameClosed() void MessageLogWidget::logGameClosed()
{ {
append(tr("The game has been closed.")); appendHtml(tr("The game has been closed."));
} }
void MessageLogWidget::logJoinSpectator(QString name) void MessageLogWidget::logJoinSpectator(QString name)
{ {
append(tr("%1 is now watching the game.").arg(sanitizeHtml(name))); appendHtml(tr("%1 is now watching the game.").arg(sanitizeHtml(name)));
} }
void MessageLogWidget::logLeaveSpectator(QString name) void MessageLogWidget::logLeaveSpectator(QString name)
{ {
append(tr("%1 is not watching the game any more.").arg(sanitizeHtml(name))); appendHtml(tr("%1 is not watching the game any more.").arg(sanitizeHtml(name)));
} }
void MessageLogWidget::logDeckSelect(Player *player, int deckId) void MessageLogWidget::logDeckSelect(Player *player, int deckId)
{ {
if (deckId == -1) if (deckId == -1) {
append(tr("%1 has loaded a local deck.").arg(sanitizeHtml(player->getName()))); if (isFemale(player))
else appendHtml(tr("%1 has loaded a local deck.", "female").arg(sanitizeHtml(player->getName())));
append(tr("%1 has loaded deck #%2.").arg(sanitizeHtml(player->getName())).arg(deckId)); else
appendHtml(tr("%1 has loaded a local deck.", "male").arg(sanitizeHtml(player->getName())));
} else {
if (isFemale(player))
appendHtml(tr("%1 has loaded deck #%2.", "female").arg(sanitizeHtml(player->getName())).arg(deckId));
else
appendHtml(tr("%1 has loaded deck #%2.", "male").arg(sanitizeHtml(player->getName())).arg(deckId));
}
} }
void MessageLogWidget::logReadyStart(Player *player) void MessageLogWidget::logReadyStart(Player *player)
{ {
append(tr("%1 is ready to start the game.").arg(sanitizeHtml(player->getName()))); if (isFemale(player))
appendHtml(tr("%1 is ready to start the game.", "female").arg(sanitizeHtml(player->getName())));
else
appendHtml(tr("%1 is ready to start the game.", "male").arg(sanitizeHtml(player->getName())));
} }
void MessageLogWidget::logNotReadyStart(Player *player) void MessageLogWidget::logNotReadyStart(Player *player)
{ {
append(tr("%1 is not ready to start the game any more.").arg(sanitizeHtml(player->getName()))); if (isFemale(player))
appendHtml(tr("%1 is not ready to start the game any more.", "female").arg(sanitizeHtml(player->getName())));
else
appendHtml(tr("%1 is not ready to start the game any more.", "male").arg(sanitizeHtml(player->getName())));
} }
void MessageLogWidget::logConcede(Player *player) void MessageLogWidget::logConcede(Player *player)
{ {
append(tr("%1 has conceded the game.").arg(sanitizeHtml(player->getName()))); if (isFemale(player))
appendHtml(tr("%1 has conceded the game.", "female").arg(sanitizeHtml(player->getName())));
else
appendHtml(tr("%1 has conceded the game.", "male").arg(sanitizeHtml(player->getName())));
} }
void MessageLogWidget::logGameStart() void MessageLogWidget::logGameStart()
{ {
append(tr("The game has started.")); appendHtml(tr("The game has started."));
}
void MessageLogWidget::logConnectionStateChanged(Player *player, bool connectionState)
{
if (connectionState) {
if (isFemale(player))
appendHtml(tr("%1 has restored connection to the game.", "female").arg(sanitizeHtml(player->getName())));
else
appendHtml(tr("%1 has restored connection to the game.", "male").arg(sanitizeHtml(player->getName())));
} else {
if (isFemale(player))
appendHtml(tr("%1 has lost connection to the game.", "female").arg(sanitizeHtml(player->getName())));
else
appendHtml(tr("%1 has lost connection to the game.", "male").arg(sanitizeHtml(player->getName())));
}
} }
void MessageLogWidget::logSay(Player *player, QString message) void MessageLogWidget::logSay(Player *player, QString message)
{ {
append(QString("<b><font color=\"") + (player->getLocal() ? "red" : "#0000fe") + QString("\">%1:</font></b> %2").arg(sanitizeHtml(player->getName())).arg(sanitizeHtml(message))); appendMessage(player->getName(), message, QColor(), true);
} }
void MessageLogWidget::logSpectatorSay(QString spectatorName, QString message) void MessageLogWidget::logSpectatorSay(QString spectatorName, QString message)
{ {
append(QString("<font color=\"red\">%1:</font> %2").arg(sanitizeHtml(spectatorName)).arg(sanitizeHtml(message))); appendMessage(spectatorName, message, QColor(), false);
} }
void MessageLogWidget::logShuffle(Player *player, CardZone *zone) void MessageLogWidget::logShuffle(Player *player, CardZone *zone)
{ {
soundEngine->shuffle(); soundEngine->shuffle();
if (currentContext != MessageContext_Mulligan) if (currentContext != MessageContext_Mulligan) {
append(tr("%1 shuffles %2.").arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(true, CaseAccusative))); if (isFemale(player))
appendHtml(tr("%1 shuffles %2.", "female").arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(true, CaseAccusative)));
else
appendHtml(tr("%1 shuffles %2.", "male").arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(true, CaseAccusative)));
}
} }
void MessageLogWidget::logRollDie(Player *player, int sides, int roll) void MessageLogWidget::logRollDie(Player *player, int sides, int roll)
{ {
append(tr("%1 rolls a %2 with a %3-sided die.").arg(sanitizeHtml(player->getName())).arg(roll).arg(sides)); if (isFemale(player))
appendHtml(tr("%1 rolls a %2 with a %3-sided die.", "female").arg(sanitizeHtml(player->getName())).arg(roll).arg(sides));
else
appendHtml(tr("%1 rolls a %2 with a %3-sided die.", "male").arg(sanitizeHtml(player->getName())).arg(roll).arg(sides));
} }
void MessageLogWidget::logDrawCards(Player *player, int number) void MessageLogWidget::logDrawCards(Player *player, int number)
@ -145,16 +152,19 @@ void MessageLogWidget::logDrawCards(Player *player, int number)
mulliganPlayer = player; mulliganPlayer = player;
else { else {
soundEngine->draw(); soundEngine->draw();
append(tr("%1 draws %n card(s).", "", number).arg(sanitizeHtml(player->getName()))); if (isFemale(player))
appendHtml(tr("%1 draws %n card(s).", "female", number).arg(sanitizeHtml(player->getName())));
else
appendHtml(tr("%1 draws %n card(s).", "male", number).arg(sanitizeHtml(player->getName())));
} }
} }
void MessageLogWidget::logUndoDraw(Player *player, QString cardName) void MessageLogWidget::logUndoDraw(Player *player, QString cardName)
{ {
if (cardName.isEmpty()) if (cardName.isEmpty())
append((isFemale(player) ? tr("%1 undoes her last draw.") : tr("%1 undoes his last draw.")).arg(sanitizeHtml(player->getName()))); appendHtml((isFemale(player) ? tr("%1 undoes her last draw.") : tr("%1 undoes his last draw.")).arg(sanitizeHtml(player->getName())));
else else
append((isFemale(player) ? tr("%1 undoes her last draw (%2).") : tr("%1 undoes his last draw (%2).")).arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(cardName)))); appendHtml((isFemale(player) ? tr("%1 undoes her last draw (%2).") : tr("%1 undoes his last draw (%2).")).arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(cardName))));
} }
QPair<QString, QString> MessageLogWidget::getFromStr(CardZone *zone, QString cardName, int position) const QPair<QString, QString> MessageLogWidget::getFromStr(CardZone *zone, QString cardName, int position) const
@ -219,7 +229,7 @@ void MessageLogWidget::doMoveCard(LogMoveCard &attributes)
cardStr = QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(cardName)); cardStr = QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(cardName));
if (attributes.startZone->getPlayer() != attributes.targetZone->getPlayer()) { if (attributes.startZone->getPlayer() != attributes.targetZone->getPlayer()) {
append(tr("%1 gives %2 control over %3.").arg(sanitizeHtml(attributes.player->getName())).arg(sanitizeHtml(attributes.targetZone->getPlayer()->getName())).arg(cardStr)); appendHtml(tr("%1 gives %2 control over %3.").arg(sanitizeHtml(attributes.player->getName())).arg(sanitizeHtml(attributes.targetZone->getPlayer()->getName())).arg(cardStr));
return; return;
} }
@ -252,7 +262,7 @@ void MessageLogWidget::doMoveCard(LogMoveCard &attributes)
finalStr = tr("%1 plays %2%3."); finalStr = tr("%1 plays %2%3.");
} }
append(finalStr.arg(sanitizeHtml(attributes.player->getName())).arg(cardStr).arg(fromStr).arg(attributes.newX)); appendHtml(finalStr.arg(sanitizeHtml(attributes.player->getName())).arg(cardStr).arg(fromStr).arg(attributes.newX));
} }
void MessageLogWidget::logMoveCard(Player *player, CardItem *card, CardZone *startZone, int oldX, CardZone *targetZone, int newX) void MessageLogWidget::logMoveCard(Player *player, CardItem *card, CardZone *startZone, int oldX, CardZone *targetZone, int newX)
@ -271,57 +281,200 @@ void MessageLogWidget::logMulligan(Player *player, int number)
if (!player) if (!player)
return; return;
if (number > -1) if (number > -1) {
append(tr("%1 takes a mulligan to %n.", "", number).arg(sanitizeHtml(player->getName()))); if (isFemale(player))
else appendHtml(tr("%1 takes a mulligan to %n.", "female", number).arg(sanitizeHtml(player->getName())));
append((isFemale(player) ? tr("%1 draws her initial hand.") : tr("%1 draws his initial hand.")).arg(sanitizeHtml(player->getName()))); else
appendHtml(tr("%1 takes a mulligan to %n.", "male", number).arg(sanitizeHtml(player->getName())));
} else
appendHtml((isFemale(player) ? tr("%1 draws her initial hand.") : tr("%1 draws his initial hand.")).arg(sanitizeHtml(player->getName())));
} }
void MessageLogWidget::logFlipCard(Player *player, QString cardName, bool faceDown) void MessageLogWidget::logFlipCard(Player *player, QString cardName, bool faceDown)
{ {
if (faceDown) if (faceDown) {
append(tr("%1 flips %2 face-down.").arg(sanitizeHtml(player->getName())).arg(cardName)); if (isFemale(player))
else appendHtml(tr("%1 flips %2 face-down.", "female").arg(sanitizeHtml(player->getName())).arg(cardName));
append(tr("%1 flips %2 face-up.").arg(sanitizeHtml(player->getName())).arg(cardName)); else
appendHtml(tr("%1 flips %2 face-down.", "male").arg(sanitizeHtml(player->getName())).arg(cardName));
} else {
if (isFemale(player))
appendHtml(tr("%1 flips %2 face-up.", "female").arg(sanitizeHtml(player->getName())).arg(cardName));
else
appendHtml(tr("%1 flips %2 face-up.", "male").arg(sanitizeHtml(player->getName())).arg(cardName));
}
} }
void MessageLogWidget::logDestroyCard(Player *player, QString cardName) void MessageLogWidget::logDestroyCard(Player *player, QString cardName)
{ {
append(tr("%1 destroys %2.").arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(cardName)))); if (isFemale(player))
appendHtml(tr("%1 destroys %2.", "female").arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(cardName))));
else
appendHtml(tr("%1 destroys %2.", "male").arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(cardName))));
} }
void MessageLogWidget::logAttachCard(Player *player, QString cardName, Player *targetPlayer, QString targetCardName) void MessageLogWidget::logAttachCard(Player *player, QString cardName, Player *targetPlayer, QString targetCardName)
{ {
append(tr("%1 attaches %2 to %3's %4.").arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(cardName))).arg(sanitizeHtml(targetPlayer->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(targetCardName)))); QString str;
if (isFemale(player)) {
if (isFemale(targetPlayer))
str = tr("%1 attaches %2 to %3's %4.", "p1 female, p2 female");
else
str = tr("%1 attaches %2 to %3's %4.", "p1 female, p2 male");
} else {
if (isFemale(targetPlayer))
str = tr("%1 attaches %2 to %3's %4.", "p1 male, p2 female");
else
str = tr("%1 attaches %2 to %3's %4.", "p1 male, p2 male");
}
appendHtml(str.arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(cardName))).arg(sanitizeHtml(targetPlayer->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(targetCardName))));
} }
void MessageLogWidget::logUnattachCard(Player *player, QString cardName) void MessageLogWidget::logUnattachCard(Player *player, QString cardName)
{ {
append(tr("%1 unattaches %2.").arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(cardName)))); if (isFemale(player))
appendHtml(tr("%1 unattaches %2.", "female").arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(cardName))));
else
appendHtml(tr("%1 unattaches %2.", "male").arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(cardName))));
} }
void MessageLogWidget::logCreateToken(Player *player, QString cardName, QString pt) void MessageLogWidget::logCreateToken(Player *player, QString cardName, QString pt)
{ {
append(tr("%1 creates token: %2%3.").arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\"><a name=\"foo\">%1</a></font>").arg(sanitizeHtml(cardName))).arg(pt.isEmpty() ? QString() : QString(" (%1)").arg(sanitizeHtml(pt)))); if (isFemale(player))
appendHtml(tr("%1 creates token: %2%3.", "female").arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(cardName))).arg(pt.isEmpty() ? QString() : QString(" (%1)").arg(sanitizeHtml(pt))));
else
appendHtml(tr("%1 creates token: %2%3.", "male").arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(cardName))).arg(pt.isEmpty() ? QString() : QString(" (%1)").arg(sanitizeHtml(pt))));
} }
void MessageLogWidget::logCreateArrow(Player *player, Player *startPlayer, QString startCard, Player *targetPlayer, QString targetCard, bool playerTarget) void MessageLogWidget::logCreateArrow(Player *player, Player *startPlayer, QString startCard, Player *targetPlayer, QString targetCard, bool playerTarget)
{ {
if (playerTarget) startCard = QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(startCard));
append(tr("%1 points from %2's %3 to %4.") targetCard = QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(targetCard));
.arg(sanitizeHtml(player->getName())) QString str;
.arg(sanitizeHtml(startPlayer->getName())) if (playerTarget) {
.arg(sanitizeHtml(startCard)) if ((player == startPlayer) && (player == targetPlayer)) {
.arg(sanitizeHtml(targetPlayer->getName())) if (isFemale(player))
); str = tr("%1 points from her %2 to herself.", "female");
else else
append(tr("%1 points from %2's %3 to %4's %5.") str = tr("%1 points from his %2 to himself.", "male");
.arg(sanitizeHtml(player->getName())) appendHtml(str.arg(sanitizeHtml(player->getName())).arg(startCard));
.arg(sanitizeHtml(startPlayer->getName())) } else if (player == startPlayer) {
.arg(sanitizeHtml(startCard)) if (isFemale(player)) {
.arg(sanitizeHtml(targetPlayer->getName())) if (isFemale(targetPlayer))
.arg(sanitizeHtml(targetCard)) str = tr("%1 points from her %2 to %3.", "p1 female, p2 female");
); else
str = tr("%1 points from her %2 to %3.", "p1 female, p2 male");
} else {
if (isFemale(targetPlayer))
str = tr("%1 points from his %2 to %3.", "p1 male, p2 female");
else
str = tr("%1 points from his %2 to %3.", "p1 male, p2 male");
}
appendHtml(str.arg(sanitizeHtml(player->getName())).arg(startCard).arg(sanitizeHtml(targetPlayer->getName())));
} else if (player == targetPlayer) {
if (isFemale(player)) {
if (isFemale(startPlayer))
str = tr("%1 points from %2's %3 to herself.", "card owner female, target female");
else
str = tr("%1 points from %2's %3 to herself.", "card owner male, target female");
} else {
if (isFemale(startPlayer))
str = tr("%1 points from %2's %3 to himself.", "card owner female, target male");
else
str = tr("%1 points from %2's %3 to himself.", "card owner male, target male");
}
appendHtml(str.arg(sanitizeHtml(player->getName())).arg(sanitizeHtml(startPlayer->getName())).arg(startCard));
} else {
if (isFemale(player)) {
if (isFemale(startPlayer)) {
if (isFemale(targetPlayer))
str = tr("%1 points from %2's %3 to %4.", "p1 female, p2 female, p3 female");
else
str = tr("%1 points from %2's %3 to %4.", "p1 female, p2 female, p3 male");
} else {
if (isFemale(targetPlayer))
str = tr("%1 points from %2's %3 to %4.", "p1 female, p2 male, p3 female");
else
str = tr("%1 points from %2's %3 to %4.", "p1 female, p2 male, p3 male");
}
} else {
if (isFemale(startPlayer)) {
if (isFemale(targetPlayer))
str = tr("%1 points from %2's %3 to %4.", "p1 male, p2 female, p3 female");
else
str = tr("%1 points from %2's %3 to %4.", "p1 male, p2 female, p3 male");
} else {
if (isFemale(targetPlayer))
str = tr("%1 points from %2's %3 to %4.", "p1 male, p2 male, p3 female");
else
str = tr("%1 points from %2's %3 to %4.", "p1 male, p2 male, p3 male");
}
}
appendHtml(str.arg(sanitizeHtml(player->getName())).arg(sanitizeHtml(startPlayer->getName())).arg(startCard).arg(sanitizeHtml(targetPlayer->getName())));
}
} else {
if ((player == startPlayer) && (player == targetPlayer)) {
if (isFemale(player))
str = tr("%1 points from her %2 to her %3.", "female");
else
str = tr("%1 points from his %2 to his %3.", "male");
appendHtml(str.arg(sanitizeHtml(player->getName())).arg(startCard).arg(targetCard));
} else if (player == startPlayer) {
if (isFemale(player)) {
if (isFemale(targetPlayer))
str = tr("%1 points from her %2 to %3's %4.", "p1 female, p2 female");
else
str = tr("%1 points from her %2 to %3's %4.", "p1 female, p2 male");
} else {
if (isFemale(targetPlayer))
str = tr("%1 points from his %2 to %3's %4.", "p1 male, p2 female");
else
str = tr("%1 points from his %2 to %3's %4.", "p1 male, p2 male");
}
appendHtml(str.arg(sanitizeHtml(player->getName())).arg(startCard).arg(sanitizeHtml(targetPlayer->getName())).arg(targetCard));
} else if (player == targetPlayer) {
if (isFemale(player)) {
if (isFemale(startPlayer))
str = tr("%1 points from %2's %3 to her own %4.", "card owner female, target female");
else
str = tr("%1 points from %2's %3 to her own %4.", "card owner male, target female");
} else {
if (isFemale(startPlayer))
str = tr("%1 points from %2's %3 to his own %4.", "card owner female, target male");
else
str = tr("%1 points from %2's %3 to his own %4.", "card owner male, target male");
}
appendHtml(str.arg(sanitizeHtml(player->getName())).arg(sanitizeHtml(startPlayer->getName())).arg(startCard).arg(targetCard));
} else {
if (isFemale(player)) {
if (isFemale(startPlayer)) {
if (isFemale(targetPlayer))
str = tr("%1 points from %2's %3 to %4's %5.", "p1 female, p2 female, p3 female");
else
str = tr("%1 points from %2's %3 to %4's %5.", "p1 female, p2 female, p3 male");
} else {
if (isFemale(targetPlayer))
str = tr("%1 points from %2's %3 to %4's %5.", "p1 female, p2 male, p3 female");
else
str = tr("%1 points from %2's %3 to %4's %5.", "p1 female, p2 male, p3 male");
}
} else {
if (isFemale(startPlayer)) {
if (isFemale(targetPlayer))
str = tr("%1 points from %2's %3 to %4's %5.", "p1 male, p2 female, p3 female");
else
str = tr("%1 points from %2's %3 to %4's %5.", "p1 male, p2 female, p3 male");
} else {
if (isFemale(targetPlayer))
str = tr("%1 points from %2's %3 to %4's %5.", "p1 male, p2 male, p3 female");
else
str = tr("%1 points from %2's %3 to %4's %5.", "p1 male, p2 male, p3 male");
}
}
appendHtml(str.arg(sanitizeHtml(player->getName())).arg(sanitizeHtml(startPlayer->getName())).arg(startCard).arg(sanitizeHtml(targetPlayer->getName())).arg(targetCard));
}
}
} }
void MessageLogWidget::logSetCardCounter(Player *player, QString cardName, int counterId, int value, int oldValue) void MessageLogWidget::logSetCardCounter(Player *player, QString cardName, int counterId, int value, int oldValue)
@ -329,10 +482,17 @@ void MessageLogWidget::logSetCardCounter(Player *player, QString cardName, int c
QString finalStr, colorStr; QString finalStr, colorStr;
int delta = abs(oldValue - value); int delta = abs(oldValue - value);
if (value > oldValue) if (value > oldValue) {
finalStr = tr("%1 places %n %2 counter(s) on %3 (now %4).", "", delta); if (isFemale(player))
else finalStr = tr("%1 places %n %2 counter(s) on %3 (now %4).", "female", delta);
finalStr = tr("%1 removes %n %2 counter(s) from %3 (now %4).", "", delta); else
finalStr = tr("%1 places %n %2 counter(s) on %3 (now %4).", "male", delta);
} else {
if (isFemale(player))
finalStr = tr("%1 removes %n %2 counter(s) from %3 (now %4).", "female", delta);
else
finalStr = tr("%1 removes %n %2 counter(s) from %3 (now %4).", "male", delta);
}
switch (counterId) { switch (counterId) {
case 0: colorStr = tr("red", "", delta); break; case 0: colorStr = tr("red", "", delta); break;
@ -341,7 +501,7 @@ void MessageLogWidget::logSetCardCounter(Player *player, QString cardName, int c
default: ; default: ;
} }
append(finalStr.arg(sanitizeHtml(player->getName())).arg(colorStr).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(cardName))).arg(value)); appendHtml(finalStr.arg(sanitizeHtml(player->getName())).arg(colorStr).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(cardName))).arg(value));
} }
void MessageLogWidget::logSetTapped(Player *player, CardItem *card, bool tapped) void MessageLogWidget::logSetTapped(Player *player, CardItem *card, bool tapped)
@ -354,55 +514,111 @@ void MessageLogWidget::logSetTapped(Player *player, CardItem *card, bool tapped)
if (currentContext == MessageContext_MoveCard) if (currentContext == MessageContext_MoveCard)
moveCardTapped.insert(card, tapped); moveCardTapped.insert(card, tapped);
else { else {
QString cardStr; QString str;
if (!card) if (!card) {
cardStr = isFemale(player) ? tr("her permanents") : tr("his permanents"); if (isFemale(player)) {
else if (tapped)
cardStr = QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(card->getName())); str = tr("%1 taps her permanents.", "female");
append(tr("%1 %2 %3.").arg(sanitizeHtml(player->getName())).arg(tapped ? tr("taps") : tr("untaps")).arg(cardStr)); else
str = tr("%1 untaps her permanents.", "female");
} else {
if (tapped)
str = tr("%1 taps his permanents.", "male");
else
str = tr("%1 untaps his permanents.", "male");
}
appendHtml(str.arg(sanitizeHtml(player->getName())));
} else {
if (isFemale(player)) {
if (tapped)
str = tr("%1 taps %2.", "female");
else
str = tr("%1 untaps %2.", "female");
} else {
if (tapped)
str = tr("%1 taps %2.", "male");
else
str = tr("%1 untaps %2.", "male");
}
QString cardStr = QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(card->getName()));
appendHtml(str.arg(sanitizeHtml(player->getName())).arg(cardStr));
}
} }
} }
void MessageLogWidget::logSetCounter(Player *player, QString counterName, int value, int oldValue) void MessageLogWidget::logSetCounter(Player *player, QString counterName, int value, int oldValue)
{ {
append(tr("%1 sets counter %2 to %3 (%4%5).").arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(counterName))).arg(QString("<font color=\"blue\">%1</font>").arg(value)).arg(value > oldValue ? "+" : "").arg(value - oldValue)); QString str;
if (isFemale(player))
str = tr("%1 sets counter %2 to %3 (%4%5).", "female");
else
str = tr("%1 sets counter %2 to %3 (%4%5).", "male");
appendHtml(str.arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(counterName))).arg(QString("<font color=\"blue\">%1</font>").arg(value)).arg(value > oldValue ? "+" : "").arg(value - oldValue));
} }
void MessageLogWidget::logSetDoesntUntap(Player *player, CardItem *card, bool doesntUntap) void MessageLogWidget::logSetDoesntUntap(Player *player, CardItem *card, bool doesntUntap)
{ {
QString finalStr; QString str;
if (doesntUntap) if (doesntUntap) {
finalStr = tr("%1 sets %2 to not untap normally."); if (isFemale(player))
else str = tr("%1 sets %2 to not untap normally.", "female");
finalStr = tr("%1 sets %2 to untap normally."); else
append(finalStr.arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(card->getName())))); str = tr("%1 sets %2 to not untap normally.", "male");
} else {
if (isFemale(player))
str = tr("%1 sets %2 to untap normally.", "female");
else
str = tr("%1 sets %2 to untap normally.", "male");
}
appendHtml(str.arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(card->getName()))));
} }
void MessageLogWidget::logSetPT(Player *player, CardItem *card, QString newPT) void MessageLogWidget::logSetPT(Player *player, CardItem *card, QString newPT)
{ {
if (currentContext == MessageContext_MoveCard) if (currentContext == MessageContext_MoveCard)
moveCardPT.insert(card, newPT); moveCardPT.insert(card, newPT);
else else {
append(tr("%1 sets PT of %2 to %3.").arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(card->getName()))).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(newPT)))); QString str;
if (isFemale(player))
str = tr("%1 sets PT of %2 to %3.", "female");
else
str = tr("%1 sets PT of %2 to %3.", "male");
appendHtml(str.arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(card->getName()))).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(newPT))));
}
} }
void MessageLogWidget::logSetAnnotation(Player *player, CardItem *card, QString newAnnotation) void MessageLogWidget::logSetAnnotation(Player *player, CardItem *card, QString newAnnotation)
{ {
append(tr("%1 sets annotation of %2 to %3.").arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(card->getName()))).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(newAnnotation)))); QString str;
if (isFemale(player))
str = tr("%1 sets annotation of %2 to %3.", "female");
else
str = tr("%1 sets annotation of %2 to %3.", "male");
appendHtml(str.arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(card->getName()))).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(newAnnotation))));
} }
void MessageLogWidget::logDumpZone(Player *player, CardZone *zone, int numberCards) void MessageLogWidget::logDumpZone(Player *player, CardZone *zone, int numberCards)
{ {
if (numberCards != -1) if (numberCards != -1) {
append(tr("%1 is looking at the top %2 cards %3.").arg(sanitizeHtml(player->getName())).arg(numberCards).arg(zone->getTranslatedName(zone->getPlayer() == player, CaseGenitive))); if (isFemale(player))
else appendHtml(tr("%1 is looking at the top %2 cards %3.", "female").arg(sanitizeHtml(player->getName())).arg(numberCards).arg(zone->getTranslatedName(zone->getPlayer() == player, CaseGenitive)));
append(tr("%1 is looking at %2.").arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(zone->getPlayer() == player, CaseAccusative))); else
appendHtml(tr("%1 is looking at the top %2 cards %3.", "male").arg(sanitizeHtml(player->getName())).arg(numberCards).arg(zone->getTranslatedName(zone->getPlayer() == player, CaseGenitive)));
} else {
if (isFemale(player))
appendHtml(tr("%1 is looking at %2.", "female").arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(zone->getPlayer() == player, CaseAccusative)));
else
appendHtml(tr("%1 is looking at %2.", "male").arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(zone->getPlayer() == player, CaseAccusative)));
}
} }
void MessageLogWidget::logStopDumpZone(Player *player, CardZone *zone) void MessageLogWidget::logStopDumpZone(Player *player, CardZone *zone)
{ {
QString zoneName = zone->getTranslatedName(zone->getPlayer() == player, CaseAccusative); QString zoneName = zone->getTranslatedName(zone->getPlayer() == player, CaseAccusative);
append(tr("%1 stops looking at %2.").arg(sanitizeHtml(player->getName())).arg(zoneName)); if (isFemale(player))
appendHtml(tr("%1 stops looking at %2.", "female").arg(sanitizeHtml(player->getName())).arg(zoneName));
else
appendHtml(tr("%1 stops looking at %2.", "male").arg(sanitizeHtml(player->getName())).arg(zoneName));
} }
void MessageLogWidget::logRevealCards(Player *player, CardZone *zone, int cardId, QString cardName, Player *otherPlayer) void MessageLogWidget::logRevealCards(Player *player, CardZone *zone, int cardId, QString cardName, Player *otherPlayer)
@ -423,30 +639,80 @@ void MessageLogWidget::logRevealCards(Player *player, CardZone *zone, int cardId
else else
cardStr = QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(cardName)); cardStr = QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(cardName));
QString str;
if (cardId == -1) { if (cardId == -1) {
if (otherPlayer) if (otherPlayer) {
append(tr("%1 reveals %2 to %3.").arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(true, CaseAccusative)).arg(sanitizeHtml(otherPlayer->getName()))); if (isFemale(player)) {
else if (isFemale(otherPlayer))
append(tr("%1 reveals %2.").arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(true, CaseAccusative))); str = tr("%1 reveals %2 to %3.", "p1 female, p2 female");
else
str = tr("%1 reveals %2 to %3.", "p1 female, p2 male");
} else {
if (isFemale(otherPlayer))
str = tr("%1 reveals %2 to %3.", "p1 male, p2 female");
else
str = tr("%1 reveals %2 to %3.", "p1 male, p2 male");
}
appendHtml(str.arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(true, CaseAccusative)).arg(sanitizeHtml(otherPlayer->getName())));
} else {
if (isFemale(player))
appendHtml(tr("%1 reveals %2.", "female").arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(true, CaseAccusative)));
else
appendHtml(tr("%1 reveals %2.", "male").arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(true, CaseAccusative)));
}
} else if (cardId == -2) { } else if (cardId == -2) {
if (otherPlayer) if (otherPlayer) {
append(tr("%1 randomly reveals %2%3 to %4.").arg(sanitizeHtml(player->getName())).arg(cardStr).arg(fromStr).arg(sanitizeHtml(otherPlayer->getName()))); if (isFemale(player)) {
else if (isFemale(otherPlayer))
append(tr("%1 randomly reveals %2%3.").arg(sanitizeHtml(player->getName())).arg(cardStr).arg(fromStr)); str = tr("%1 randomly reveals %2%3 to %4.", "p1 female, p2 female");
else
str = tr("%1 randomly reveals %2%3 to %4.", "p1 female, p2 male");
} else {
if (isFemale(otherPlayer))
str = tr("%1 randomly reveals %2%3 to %4.", "p1 male, p2 female");
else
str = tr("%1 randomly reveals %2%3 to %4.", "p1 male, p2 male");
}
appendHtml(str.arg(sanitizeHtml(player->getName())).arg(cardStr).arg(fromStr).arg(sanitizeHtml(otherPlayer->getName())));
} else {
if (isFemale(player))
appendHtml(tr("%1 randomly reveals %2%3.", "female").arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(true, CaseAccusative)));
else
appendHtml(tr("%1 randomly reveals %2%3.", "male").arg(sanitizeHtml(player->getName())).arg(cardStr).arg(fromStr));
}
} else { } else {
if (otherPlayer) if (otherPlayer) {
append(tr("%1 reveals %2%3 to %4.").arg(sanitizeHtml(player->getName())).arg(cardStr).arg(fromStr).arg(sanitizeHtml(otherPlayer->getName()))); if (isFemale(player)) {
else if (isFemale(otherPlayer))
append(tr("%1 reveals %2%3.").arg(sanitizeHtml(player->getName())).arg(cardStr).arg(fromStr)); str = tr("%1 reveals %2%3 to %4.", "p1 female, p2 female");
else
str = tr("%1 reveals %2%3 to %4.", "p1 female, p2 male");
} else {
if (isFemale(otherPlayer))
str = tr("%1 reveals %2%3 to %4.", "p1 male, p2 female");
else
str = tr("%1 reveals %2%3 to %4.", "p1 male, p2 male");
}
appendHtml(str.arg(sanitizeHtml(player->getName())).arg(cardStr).arg(fromStr).arg(sanitizeHtml(otherPlayer->getName())));
} else {
if (isFemale(player))
appendHtml(tr("%1 reveals %2%3.", "female").arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(true, CaseAccusative)));
else
appendHtml(tr("%1 reveals %2%3.", "male").arg(sanitizeHtml(player->getName())).arg(cardStr).arg(fromStr));
}
} }
} }
void MessageLogWidget::logSetActivePlayer(Player *player) void MessageLogWidget::logSetActivePlayer(Player *player)
{ {
soundEngine->notification(); soundEngine->notification();
append(QString());
append("<font color=\"green\"><b>" + tr("It is now %1's turn.").arg(player->getName()) + "</b></font>"); QString str;
append(QString()); if (isFemale(player))
str = tr("It is now %1's turn.", "female");
else
str = tr("It is now %1's turn.", "male");
appendHtml("<br><font color=\"green\"><b>" + str.arg(player->getName()) + "</b></font><br>");
} }
void MessageLogWidget::logSetActivePhase(int phase) void MessageLogWidget::logSetActivePhase(int phase)
@ -466,7 +732,7 @@ void MessageLogWidget::logSetActivePhase(int phase)
case 9: phaseName = tr("second main phase"); break; case 9: phaseName = tr("second main phase"); break;
case 10: phaseName = tr("ending phase"); break; case 10: phaseName = tr("ending phase"); break;
} }
append("<font color=\"green\"><b>" + tr("It is now the %1.").arg(phaseName) + "</b></font>"); appendHtml("<font color=\"green\"><b>" + tr("It is now the %1.").arg(phaseName) + "</b></font>");
} }
void MessageLogWidget::containerProcessingStarted(GameEventContext *_context) void MessageLogWidget::containerProcessingStarted(GameEventContext *_context)
@ -499,6 +765,7 @@ void MessageLogWidget::containerProcessingDone()
void MessageLogWidget::connectToPlayer(Player *player) void MessageLogWidget::connectToPlayer(Player *player)
{ {
connect(player, SIGNAL(logConnectionStateChanged(Player *, bool)), this, SLOT(logConnectionStateChanged(Player *, bool)));
connect(player, SIGNAL(logSay(Player *, QString)), this, SLOT(logSay(Player *, QString))); connect(player, SIGNAL(logSay(Player *, QString)), this, SLOT(logSay(Player *, QString)));
connect(player, SIGNAL(logShuffle(Player *, CardZone *)), this, SLOT(logShuffle(Player *, CardZone *))); connect(player, SIGNAL(logShuffle(Player *, CardZone *)), this, SLOT(logShuffle(Player *, CardZone *)));
connect(player, SIGNAL(logRollDie(Player *, int, int)), this, SLOT(logRollDie(Player *, int, int))); connect(player, SIGNAL(logRollDie(Player *, int, int)), this, SLOT(logRollDie(Player *, int, int)));
@ -522,67 +789,7 @@ void MessageLogWidget::connectToPlayer(Player *player)
connect(player, SIGNAL(logRevealCards(Player *, CardZone *, int, QString, Player *)), this, SLOT(logRevealCards(Player *, CardZone *, int, QString, Player *))); connect(player, SIGNAL(logRevealCards(Player *, CardZone *, int, QString, Player *)), this, SLOT(logRevealCards(Player *, CardZone *, int, QString, Player *)));
} }
MessageLogWidget::MessageLogWidget(QWidget *parent) MessageLogWidget::MessageLogWidget(const QString &_ownName, bool _female, QWidget *parent)
: QTextEdit(parent) : ChatView(_ownName, false, parent), female(_female)
{ {
setReadOnly(true);
}
void MessageLogWidget::enterEvent(QEvent * /*event*/)
{
setMouseTracking(true);
}
void MessageLogWidget::leaveEvent(QEvent * /*event*/)
{
setMouseTracking(false);
}
QString MessageLogWidget::getCardNameUnderMouse(const QPoint &pos) const
{
QTextCursor cursor(cursorForPosition(pos));
QTextBlock block(cursor.block());
QTextBlock::iterator it;
for (it = block.begin(); !(it.atEnd()); ++it) {
QTextFragment frag = it.fragment();
if (!frag.contains(cursor.position()))
continue;
if (frag.charFormat().foreground().color() == Qt::blue)
return frag.text();
break;
}
return QString();
}
void MessageLogWidget::mouseMoveEvent(QMouseEvent *event)
{
QString cardName = getCardNameUnderMouse(event->pos());
if (!cardName.isEmpty()) {
viewport()->setCursor(Qt::PointingHandCursor);
emit cardNameHovered(cardName);
} else
viewport()->setCursor(Qt::IBeamCursor);
QTextEdit::mouseMoveEvent(event);
}
void MessageLogWidget::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::MidButton) {
QString cardName = getCardNameUnderMouse(event->pos());
if (!cardName.isEmpty())
emit showCardInfoPopup(event->globalPos(), cardName);
}
QTextEdit::mousePressEvent(event);
}
void MessageLogWidget::mouseReleaseEvent(QMouseEvent *event)
{
if (event->button() == Qt::MidButton)
emit deleteCardInfoPopup();
QTextEdit::mouseReleaseEvent(event);
} }

View file

@ -1,15 +1,13 @@
#ifndef MESSAGELOGWIDGET_H #ifndef MESSAGELOGWIDGET_H
#define MESSAGELOGWIDGET_H #define MESSAGELOGWIDGET_H
#include <QTextEdit> #include "chatview.h"
#include <QAbstractSocket> #include <QAbstractSocket>
#include "translation.h" #include "translation.h"
#include "protocol_datastructures.h" #include "protocol_datastructures.h"
class Player; class Player;
class CardZone; class CardZone;
class QMouseEvent;
class QEvent;
class CardInfoWidget; class CardInfoWidget;
class GameEventContext; class GameEventContext;
class CardItem; class CardItem;
@ -24,17 +22,16 @@ struct LogMoveCard {
int newX; int newX;
}; };
class MessageLogWidget : public QTextEdit { class MessageLogWidget : public ChatView {
Q_OBJECT Q_OBJECT
private: private:
enum MessageContext { MessageContext_None, MessageContext_MoveCard, MessageContext_Mulligan }; enum MessageContext { MessageContext_None, MessageContext_MoveCard, MessageContext_Mulligan };
CardInfoWidget *infoWidget;
QString sanitizeHtml(QString dirty) const; QString sanitizeHtml(QString dirty) const;
bool isFemale(Player *player) const; bool isFemale(Player *player) const;
QPair<QString, QString> getFromStr(CardZone *zone, QString cardName, int position) const; QPair<QString, QString> getFromStr(CardZone *zone, QString cardName, int position) const;
QString getCardNameUnderMouse(const QPoint &pos) const;
MessageContext currentContext; MessageContext currentContext;
bool female;
QList<LogMoveCard> moveCardQueue; QList<LogMoveCard> moveCardQueue;
QMap<CardItem *, QString> moveCardPT; QMap<CardItem *, QString> moveCardPT;
@ -42,18 +39,7 @@ private:
Player *mulliganPlayer; Player *mulliganPlayer;
int mulliganNumber; int mulliganNumber;
signals:
void cardNameHovered(QString cardName);
void showCardInfoPopup(QPoint pos, QString cardName);
void deleteCardInfoPopup();
public slots: public slots:
void logConnecting(QString hostname);
void logConnected();
void logDisconnected();
void logSocketError(const QString &errorString);
void logServerError(ResponseCode response);
void logProtocolVersionMismatch(int clientVersion, int serverVersion);
void logProtocolError();
void logGameJoined(int gameId); void logGameJoined(int gameId);
void logJoin(Player *player); void logJoin(Player *player);
void logLeave(Player *player); void logLeave(Player *player);
@ -65,6 +51,7 @@ public slots:
void logNotReadyStart(Player *player); void logNotReadyStart(Player *player);
void logConcede(Player *player); void logConcede(Player *player);
void logGameStart(); void logGameStart();
void logConnectionStateChanged(Player *player, bool connectionState);
void logSay(Player *player, QString message); void logSay(Player *player, QString message);
void logSpectatorSay(QString spectatorName, QString message); void logSpectatorSay(QString spectatorName, QString message);
void logShuffle(Player *player, CardZone *zone); void logShuffle(Player *player, CardZone *zone);
@ -95,13 +82,7 @@ public slots:
void containerProcessingDone(); void containerProcessingDone();
public: public:
void connectToPlayer(Player *player); void connectToPlayer(Player *player);
MessageLogWidget(QWidget *parent = 0); MessageLogWidget(const QString &_ownName, bool _female, QWidget *parent = 0);
protected:
void enterEvent(QEvent *event);
void leaveEvent(QEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
}; };
#endif #endif

View file

@ -706,6 +706,11 @@ void Player::setCardAttrHelper(GameEventContext *context, CardItem *card, const
} }
} }
void Player::eventConnectionStateChanged(Event_ConnectionStateChanged *event)
{
emit logConnectionStateChanged(this, event->getConnected());
}
void Player::eventSay(Event_Say *event) void Player::eventSay(Event_Say *event)
{ {
emit logSay(this, event->getMessage()); emit logSay(this, event->getMessage());
@ -862,6 +867,8 @@ void Player::eventMoveCard(Event_MoveCard *event, GameEventContext *context)
CardItem *card = startZone->takeCard(position, event->getCardId(), startZone != targetZone); CardItem *card = startZone->takeCard(position, event->getCardId(), startZone != targetZone);
if (!card) if (!card)
return; return;
if (startZone != targetZone)
card->deleteCardInfoPopup();
card->setName(event->getCardName()); card->setName(event->getCardName());
if (card->getAttachedTo() && (startZone != targetZone)) { if (card->getAttachedTo() && (startZone != targetZone)) {
@ -1036,6 +1043,7 @@ void Player::processGameEvent(GameEvent *event, GameEventContext *context)
{ {
qDebug() << "player event: id=" << event->getItemId(); qDebug() << "player event: id=" << event->getItemId();
switch (event->getItemId()) { switch (event->getItemId()) {
case ItemId_Event_ConnectionStateChanged: eventConnectionStateChanged(static_cast<Event_ConnectionStateChanged *>(event)); break;
case ItemId_Event_Say: eventSay(static_cast<Event_Say *>(event)); break; case ItemId_Event_Say: eventSay(static_cast<Event_Say *>(event)); break;
case ItemId_Event_Shuffle: eventShuffle(static_cast<Event_Shuffle *>(event)); break; case ItemId_Event_Shuffle: eventShuffle(static_cast<Event_Shuffle *>(event)); break;
case ItemId_Event_RollDie: eventRollDie(static_cast<Event_RollDie *>(event)); break; case ItemId_Event_RollDie: eventRollDie(static_cast<Event_RollDie *>(event)); break;

View file

@ -26,6 +26,7 @@ class CommandContainer;
class GameCommand; class GameCommand;
class GameEvent; class GameEvent;
class GameEventContext; class GameEventContext;
class Event_ConnectionStateChanged;
class Event_Say; class Event_Say;
class Event_Shuffle; class Event_Shuffle;
class Event_RollDie; class Event_RollDie;
@ -69,6 +70,7 @@ class Player : public QObject, public QGraphicsItem {
signals: signals:
void newCardAdded(AbstractCardItem *card); void newCardAdded(AbstractCardItem *card);
// Log events // Log events
void logConnectionStateChanged(Player *player, bool connectionState);
void logSay(Player *player, QString message); void logSay(Player *player, QString message);
void logShuffle(Player *player, CardZone *zone); void logShuffle(Player *player, CardZone *zone);
void logRollDie(Player *player, int sides, int roll); void logRollDie(Player *player, int sides, int roll);
@ -176,6 +178,7 @@ private:
void initSayMenu(); void initSayMenu();
void eventConnectionStateChanged(Event_ConnectionStateChanged *event);
void eventSay(Event_Say *event); void eventSay(Event_Say *event);
void eventShuffle(Event_Shuffle *event); void eventShuffle(Event_Shuffle *event);
void eventRollDie(Event_RollDie *event); void eventRollDie(Event_RollDie *event);

View file

@ -83,6 +83,7 @@ void RemoteClient::readData()
xmlWriter->writeStartDocument(); xmlWriter->writeStartDocument();
xmlWriter->writeStartElement("cockatrice_client_stream"); xmlWriter->writeStartElement("cockatrice_client_stream");
xmlWriter->writeAttribute("version", QString::number(ProtocolItem::protocolVersion)); xmlWriter->writeAttribute("version", QString::number(ProtocolItem::protocolVersion));
xmlWriter->writeAttribute("comp", "1");
topLevelItem = new TopLevelProtocolItem; topLevelItem = new TopLevelProtocolItem;
connect(topLevelItem, SIGNAL(protocolItemReceived(ProtocolItem *)), this, SLOT(processProtocolItem(ProtocolItem *))); connect(topLevelItem, SIGNAL(protocolItemReceived(ProtocolItem *)), this, SLOT(processProtocolItem(ProtocolItem *)));

View file

@ -24,6 +24,7 @@ SettingsCache::SettingsCache()
displayCardNames = settings->value("cards/displaycardnames", true).toBool(); displayCardNames = settings->value("cards/displaycardnames", true).toBool();
horizontalHand = settings->value("hand/horizontal", true).toBool(); horizontalHand = settings->value("hand/horizontal", true).toBool();
invertVerticalCoordinate = settings->value("table/invert_vertical", false).toBool(); invertVerticalCoordinate = settings->value("table/invert_vertical", false).toBool();
minPlayersForMultiColumnLayout = settings->value("interface/min_players_multicolumn", 5).toInt();
tapAnimation = settings->value("cards/tapanimation", true).toBool(); tapAnimation = settings->value("cards/tapanimation", true).toBool();
zoneViewSortByName = settings->value("zoneview/sortbyname", true).toBool(); zoneViewSortByName = settings->value("zoneview/sortbyname", true).toBool();
@ -143,6 +144,13 @@ void SettingsCache::setInvertVerticalCoordinate(int _invertVerticalCoordinate)
emit invertVerticalCoordinateChanged(); emit invertVerticalCoordinateChanged();
} }
void SettingsCache::setMinPlayersForMultiColumnLayout(int _minPlayersForMultiColumnLayout)
{
minPlayersForMultiColumnLayout = _minPlayersForMultiColumnLayout;
settings->setValue("interface/min_players_multicolumn", minPlayersForMultiColumnLayout);
emit minPlayersForMultiColumnLayoutChanged();
}
void SettingsCache::setTapAnimation(int _tapAnimation) void SettingsCache::setTapAnimation(int _tapAnimation)
{ {
tapAnimation = _tapAnimation; tapAnimation = _tapAnimation;

View file

@ -20,6 +20,7 @@ signals:
void displayCardNamesChanged(); void displayCardNamesChanged();
void horizontalHandChanged(); void horizontalHandChanged();
void invertVerticalCoordinateChanged(); void invertVerticalCoordinateChanged();
void minPlayersForMultiColumnLayoutChanged();
void soundPathChanged(); void soundPathChanged();
private: private:
QSettings *settings; QSettings *settings;
@ -34,6 +35,7 @@ private:
bool displayCardNames; bool displayCardNames;
bool horizontalHand; bool horizontalHand;
bool invertVerticalCoordinate; bool invertVerticalCoordinate;
int minPlayersForMultiColumnLayout;
bool tapAnimation; bool tapAnimation;
bool zoneViewSortByName, zoneViewSortByType; bool zoneViewSortByName, zoneViewSortByType;
bool soundEnabled; bool soundEnabled;
@ -57,6 +59,7 @@ public:
bool getDisplayCardNames() const { return displayCardNames; } bool getDisplayCardNames() const { return displayCardNames; }
bool getHorizontalHand() const { return horizontalHand; } bool getHorizontalHand() const { return horizontalHand; }
bool getInvertVerticalCoordinate() const { return invertVerticalCoordinate; } bool getInvertVerticalCoordinate() const { return invertVerticalCoordinate; }
int getMinPlayersForMultiColumnLayout() const { return minPlayersForMultiColumnLayout; }
bool getTapAnimation() const { return tapAnimation; } bool getTapAnimation() const { return tapAnimation; }
bool getZoneViewSortByName() const { return zoneViewSortByName; } bool getZoneViewSortByName() const { return zoneViewSortByName; }
bool getZoneViewSortByType() const { return zoneViewSortByType; } bool getZoneViewSortByType() const { return zoneViewSortByType; }
@ -80,6 +83,7 @@ public slots:
void setDisplayCardNames(int _displayCardNames); void setDisplayCardNames(int _displayCardNames);
void setHorizontalHand(int _horizontalHand); void setHorizontalHand(int _horizontalHand);
void setInvertVerticalCoordinate(int _invertVerticalCoordinate); void setInvertVerticalCoordinate(int _invertVerticalCoordinate);
void setMinPlayersForMultiColumnLayout(int _minPlayersForMultiColumnLayout);
void setTapAnimation(int _tapAnimation); void setTapAnimation(int _tapAnimation);
void setZoneViewSortByName(int _zoneViewSortByName); void setZoneViewSortByName(int _zoneViewSortByName);
void setZoneViewSortByType(int _zoneViewSortByType); void setZoneViewSortByType(int _zoneViewSortByType);

View file

@ -25,7 +25,7 @@ SoundEngine::SoundEngine(QObject *parent)
void SoundEngine::cacheData() void SoundEngine::cacheData()
{ {
static const QStringList fileNames = QStringList() static const QStringList fileNames = QStringList()
<< "notification" << "draw" << "playcard" << "shuffle" << "tap" << "untap"; << "notification" << "draw" << "playcard" << "shuffle" << "tap" << "untap" << "cuckoo";
for (int i = 0; i < fileNames.size(); ++i) { for (int i = 0; i < fileNames.size(); ++i) {
QFile file(settingsCache->getSoundPath() + "/" + fileNames[i] + ".raw"); QFile file(settingsCache->getSoundPath() + "/" + fileNames[i] + ".raw");
file.open(QIODevice::ReadOnly); file.open(QIODevice::ReadOnly);
@ -75,3 +75,8 @@ void SoundEngine::untap()
{ {
playSound("untap"); playSound("untap");
} }
void SoundEngine::cuckoo()
{
playSound("cuckoo");
}

View file

@ -25,6 +25,7 @@ public slots:
void shuffle(); void shuffle();
void tap(); void tap();
void untap(); void untap();
void cuckoo();
}; };
extern SoundEngine *soundEngine; extern SoundEngine *soundEngine;

32
cockatrice/src/tab.cpp Normal file
View file

@ -0,0 +1,32 @@
#include "tab.h"
#include "cardinfowidget.h"
#include <QDesktopWidget>
#include <QApplication>
Tab::Tab(TabSupervisor *_tabSupervisor, QWidget *parent)
: QWidget(parent), tabMenu(0), tabSupervisor(_tabSupervisor), contentsChanged(false), infoPopup(0)
{
}
void Tab::showCardInfoPopup(const QPoint &pos, const QString &cardName)
{
infoPopup = new CardInfoWidget(CardInfoWidget::ModePopUp, 0, Qt::Widget | Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint | Qt::WindowStaysOnTopHint);
infoPopup->setAttribute(Qt::WA_TransparentForMouseEvents);
infoPopup->setCard(cardName);
QRect screenRect = qApp->desktop()->screenGeometry(this);
infoPopup->move(
qMax(screenRect.left(), qMin(pos.x() - infoPopup->width() / 2, screenRect.left() + screenRect.width() - infoPopup->width())),
qMax(screenRect.top(), qMin(pos.y() - infoPopup->height() / 2, screenRect.top() + screenRect.height() - infoPopup->height()))
);
infoPopup->show();
}
void Tab::deleteCardInfoPopup(const QString &cardName)
{
if (infoPopup) {
if ((infoPopup->getCardName() == cardName) || (cardName == "_")) {
infoPopup->deleteLater();
infoPopup = 0;
}
}
}

View file

@ -5,19 +5,23 @@
class QMenu; class QMenu;
class TabSupervisor; class TabSupervisor;
class CardInfoWidget;
class Tab : public QWidget { class Tab : public QWidget {
Q_OBJECT Q_OBJECT
signals: signals:
void userEvent(); void userEvent(bool globalEvent = true);
protected: protected:
QMenu *tabMenu; QMenu *tabMenu;
TabSupervisor *tabSupervisor; TabSupervisor *tabSupervisor;
protected slots:
void showCardInfoPopup(const QPoint &pos, const QString &cardName);
void deleteCardInfoPopup(const QString &cardName);
private: private:
bool contentsChanged; bool contentsChanged;
CardInfoWidget *infoPopup;
public: public:
Tab(TabSupervisor *_tabSupervisor, QWidget *parent = 0) Tab(TabSupervisor *_tabSupervisor, QWidget *parent = 0);
: QWidget(parent), tabMenu(0), tabSupervisor(_tabSupervisor), contentsChanged(false) { }
QMenu *getTabMenu() const { return tabMenu; } QMenu *getTabMenu() const { return tabMenu; }
bool getContentsChanged() const { return contentsChanged; } bool getContentsChanged() const { return contentsChanged; }
void setContentsChanged(bool _contentsChanged) { contentsChanged = _contentsChanged; } void setContentsChanged(bool _contentsChanged) { contentsChanged = _contentsChanged; }

View file

@ -1,19 +1,72 @@
#include <QHBoxLayout>
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QGridLayout>
#include <QPushButton> #include <QPushButton>
#include <QGroupBox> #include <QGroupBox>
#include <QMessageBox> #include <QMessageBox>
#include <QSpinBox>
#include <QLabel>
#include <QLineEdit>
#include "tab_admin.h" #include "tab_admin.h"
#include "abstractclient.h" #include "abstractclient.h"
#include "protocol_items.h" #include "protocol_items.h"
TabAdmin::TabAdmin(TabSupervisor *_tabSupervisor, AbstractClient *_client, QWidget *parent) ShutdownDialog::ShutdownDialog(QWidget *parent)
: Tab(_tabSupervisor, parent), locked(true), client(_client) : QDialog(parent)
{
QLabel *reasonLabel = new QLabel(tr("&Reason for shutdown:"));
reasonEdit = new QLineEdit;
reasonLabel->setBuddy(reasonEdit);
QLabel *minutesLabel = new QLabel(tr("&Time until shutdown (minutes):"));
minutesEdit = new QSpinBox;
minutesLabel->setBuddy(minutesEdit);
minutesEdit->setMinimum(0);
minutesEdit->setValue(5);
QPushButton *okButton = new QPushButton(tr("&OK"));
okButton->setAutoDefault(true);
okButton->setDefault(true);
connect(okButton, SIGNAL(clicked()), this, SLOT(accept()));
QPushButton *cancelButton = new QPushButton(tr("&Cancel"));
connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
QHBoxLayout *buttonLayout = new QHBoxLayout;
buttonLayout->addStretch();
buttonLayout->addWidget(okButton);
buttonLayout->addWidget(cancelButton);
QGridLayout *mainLayout = new QGridLayout;
mainLayout->addWidget(reasonLabel, 0, 0);
mainLayout->addWidget(reasonEdit, 0, 1);
mainLayout->addWidget(minutesLabel, 1, 0);
mainLayout->addWidget(minutesEdit, 1, 1);
mainLayout->addLayout(buttonLayout, 2, 0, 1, 2);
setLayout(mainLayout);
setWindowTitle(tr("Shut down server"));
}
QString ShutdownDialog::getReason() const
{
return reasonEdit->text();
}
int ShutdownDialog::getMinutes() const
{
return minutesEdit->value();
}
TabAdmin::TabAdmin(TabSupervisor *_tabSupervisor, AbstractClient *_client, bool _fullAdmin, QWidget *parent)
: Tab(_tabSupervisor, parent), locked(true), client(_client), fullAdmin(_fullAdmin)
{ {
updateServerMessageButton = new QPushButton; updateServerMessageButton = new QPushButton;
connect(updateServerMessageButton, SIGNAL(clicked()), this, SLOT(actUpdateServerMessage())); connect(updateServerMessageButton, SIGNAL(clicked()), this, SLOT(actUpdateServerMessage()));
shutdownServerButton = new QPushButton;
connect(shutdownServerButton, SIGNAL(clicked()), this, SLOT(actShutdownServer()));
QVBoxLayout *vbox = new QVBoxLayout; QVBoxLayout *vbox = new QVBoxLayout;
vbox->addWidget(updateServerMessageButton); vbox->addWidget(updateServerMessageButton);
vbox->addWidget(shutdownServerButton);
vbox->addStretch(); vbox->addStretch();
adminGroupBox = new QGroupBox; adminGroupBox = new QGroupBox;
@ -38,6 +91,7 @@ TabAdmin::TabAdmin(TabSupervisor *_tabSupervisor, AbstractClient *_client, QWidg
void TabAdmin::retranslateUi() void TabAdmin::retranslateUi()
{ {
updateServerMessageButton->setText(tr("Update server &message")); updateServerMessageButton->setText(tr("Update server &message"));
shutdownServerButton->setText(tr("&Shut down server"));
adminGroupBox->setTitle(tr("Server administration functions")); adminGroupBox->setTitle(tr("Server administration functions"));
unlockButton->setText(tr("&Unlock functions")); unlockButton->setText(tr("&Unlock functions"));
@ -49,10 +103,18 @@ void TabAdmin::actUpdateServerMessage()
client->sendCommand(new Command_UpdateServerMessage()); client->sendCommand(new Command_UpdateServerMessage());
} }
void TabAdmin::actShutdownServer()
{
ShutdownDialog dlg;
if (dlg.exec())
client->sendCommand(new Command_ShutdownServer(dlg.getReason(), dlg.getMinutes()));
}
void TabAdmin::actUnlock() void TabAdmin::actUnlock()
{ {
if (QMessageBox::question(this, tr("Unlock administration functions"), tr("Do you really want to unlock the administration functions?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) { if (QMessageBox::question(this, tr("Unlock administration functions"), tr("Do you really want to unlock the administration functions?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) {
adminGroupBox->setEnabled(true); if (fullAdmin)
adminGroupBox->setEnabled(true);
lockButton->setEnabled(true); lockButton->setEnabled(true);
unlockButton->setEnabled(false); unlockButton->setEnabled(false);
locked = false; locked = false;
@ -61,7 +123,8 @@ void TabAdmin::actUnlock()
void TabAdmin::actLock() void TabAdmin::actLock()
{ {
adminGroupBox->setEnabled(false); if (fullAdmin)
adminGroupBox->setEnabled(false);
lockButton->setEnabled(false); lockButton->setEnabled(false);
unlockButton->setEnabled(true); unlockButton->setEnabled(true);
locked = true; locked = true;

View file

@ -2,27 +2,43 @@
#define TAB_ADMIN_H #define TAB_ADMIN_H
#include "tab.h" #include "tab.h"
#include <QDialog>
class AbstractClient; class AbstractClient;
class QGroupBox; class QGroupBox;
class QPushButton; class QPushButton;
class QSpinBox;
class QLineEdit;
class ShutdownDialog : public QDialog {
Q_OBJECT
private:
QLineEdit *reasonEdit;
QSpinBox *minutesEdit;
public:
ShutdownDialog(QWidget *parent = 0);
QString getReason() const;
int getMinutes() const;
};
class TabAdmin : public Tab { class TabAdmin : public Tab {
Q_OBJECT Q_OBJECT
private: private:
bool locked; bool locked;
AbstractClient *client; AbstractClient *client;
QPushButton *updateServerMessageButton; bool fullAdmin;
QPushButton *updateServerMessageButton, *shutdownServerButton;
QGroupBox *adminGroupBox; QGroupBox *adminGroupBox;
QPushButton *unlockButton, *lockButton; QPushButton *unlockButton, *lockButton;
private slots: private slots:
void actUpdateServerMessage(); void actUpdateServerMessage();
void actShutdownServer();
void actUnlock(); void actUnlock();
void actLock(); void actLock();
public: public:
TabAdmin(TabSupervisor *_tabSupervisor, AbstractClient *_client, QWidget *parent = 0); TabAdmin(TabSupervisor *_tabSupervisor, AbstractClient *_client, bool _fullAdmin, QWidget *parent = 0);
void retranslateUi(); void retranslateUi();
QString getTabText() const { return tr("Administration"); } QString getTabText() const { return tr("Administration"); }
bool getLocked() const { return locked; } bool getLocked() const { return locked; }

View file

@ -5,8 +5,6 @@
#include <QAction> #include <QAction>
#include <QMessageBox> #include <QMessageBox>
#include <QFileDialog> #include <QFileDialog>
#include <QApplication>
#include <QDesktopWidget>
#include "tab_game.h" #include "tab_game.h"
#include "cardinfowidget.h" #include "cardinfowidget.h"
#include "playerlistwidget.h" #include "playerlistwidget.h"
@ -160,8 +158,8 @@ void DeckViewContainer::setDeck(DeckList *deck)
readyStartButton->setEnabled(true); readyStartButton->setEnabled(true);
} }
TabGame::TabGame(TabSupervisor *_tabSupervisor, QList<AbstractClient *> &_clients, int _gameId, const QString &_gameDescription, int _localPlayerId, bool _spectator, bool _spectatorsCanTalk, bool _spectatorsSeeEverything, bool _resuming) TabGame::TabGame(TabSupervisor *_tabSupervisor, QList<AbstractClient *> &_clients, int _gameId, const QString &_gameDescription, int _localPlayerId, ServerInfo_User *_userInfo, bool _spectator, bool _spectatorsCanTalk, bool _spectatorsSeeEverything, bool _resuming)
: Tab(_tabSupervisor), clients(_clients), gameId(_gameId), gameDescription(_gameDescription), localPlayerId(_localPlayerId), spectator(_spectator), spectatorsCanTalk(_spectatorsCanTalk), spectatorsSeeEverything(_spectatorsSeeEverything), started(false), resuming(_resuming), currentPhase(-1), infoPopup(0) : Tab(_tabSupervisor), clients(_clients), gameId(_gameId), gameDescription(_gameDescription), localPlayerId(_localPlayerId), spectator(_spectator), spectatorsCanTalk(_spectatorsCanTalk), spectatorsSeeEverything(_spectatorsSeeEverything), started(false), resuming(_resuming), currentPhase(-1)
{ {
phasesToolbar = new PhasesToolbar; phasesToolbar = new PhasesToolbar;
phasesToolbar->hide(); phasesToolbar->hide();
@ -178,10 +176,10 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, QList<AbstractClient *> &_client
timeElapsedLabel = new QLabel; timeElapsedLabel = new QLabel;
timeElapsedLabel->setAlignment(Qt::AlignCenter); timeElapsedLabel->setAlignment(Qt::AlignCenter);
messageLog = new MessageLogWidget; messageLog = new MessageLogWidget(_userInfo->getName(), _userInfo->getGender() == ServerInfo_User::Female);
connect(messageLog, SIGNAL(cardNameHovered(QString)), cardInfo, SLOT(setCard(QString))); connect(messageLog, SIGNAL(cardNameHovered(QString)), cardInfo, SLOT(setCard(QString)));
connect(messageLog, SIGNAL(showCardInfoPopup(QPoint, QString)), this, SLOT(showCardInfoPopup(QPoint, QString))); connect(messageLog, SIGNAL(showCardInfoPopup(QPoint, QString)), this, SLOT(showCardInfoPopup(QPoint, QString)));
connect(messageLog, SIGNAL(deleteCardInfoPopup()), this, SLOT(deleteCardInfoPopup())); connect(messageLog, SIGNAL(deleteCardInfoPopup(QString)), this, SLOT(deleteCardInfoPopup(QString)));
sayLabel = new QLabel; sayLabel = new QLabel;
sayEdit = new QLineEdit; sayEdit = new QLineEdit;
sayLabel->setBuddy(sayEdit); sayLabel->setBuddy(sayEdit);
@ -747,7 +745,7 @@ void TabGame::newCardAdded(AbstractCardItem *card)
{ {
connect(card, SIGNAL(hovered(AbstractCardItem *)), cardInfo, SLOT(setCard(AbstractCardItem *))); connect(card, SIGNAL(hovered(AbstractCardItem *)), cardInfo, SLOT(setCard(AbstractCardItem *)));
connect(card, SIGNAL(showCardInfoPopup(QPoint, QString)), this, SLOT(showCardInfoPopup(QPoint, QString))); connect(card, SIGNAL(showCardInfoPopup(QPoint, QString)), this, SLOT(showCardInfoPopup(QPoint, QString)));
connect(card, SIGNAL(deleteCardInfoPopup()), this, SLOT(deleteCardInfoPopup())); connect(card, SIGNAL(deleteCardInfoPopup(QString)), this, SLOT(deleteCardInfoPopup(QString)));
} }
CardItem *TabGame::getCard(int playerId, const QString &zoneName, int cardId) const CardItem *TabGame::getCard(int playerId, const QString &zoneName, int cardId) const
@ -779,24 +777,3 @@ Player *TabGame::getActiveLocalPlayer() const
return 0; return 0;
} }
void TabGame::showCardInfoPopup(const QPoint &pos, const QString &cardName)
{
infoPopup = new CardInfoWidget(CardInfoWidget::ModePopUp, 0, Qt::Widget | Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint | Qt::WindowStaysOnTopHint);
infoPopup->setAttribute(Qt::WA_TransparentForMouseEvents);
infoPopup->setCard(cardName);
QRect screenRect = qApp->desktop()->screenGeometry(this);
infoPopup->move(
qMax(screenRect.left(), qMin(pos.x() - infoPopup->width() / 2, screenRect.left() + screenRect.width() - infoPopup->width())),
qMax(screenRect.top(), qMin(pos.y() - infoPopup->height() / 2, screenRect.top() + screenRect.height() - infoPopup->height()))
);
infoPopup->show();
}
void TabGame::deleteCardInfoPopup()
{
if (infoPopup) {
infoPopup->deleteLater();
infoPopup = 0;
}
}

View file

@ -100,7 +100,6 @@ private:
int activePlayer; int activePlayer;
QSplitter *splitter; QSplitter *splitter;
CardInfoWidget *infoPopup;
CardInfoWidget *cardInfo; CardInfoWidget *cardInfo;
PlayerListWidget *playerListWidget; PlayerListWidget *playerListWidget;
QLabel *timeElapsedLabel; QLabel *timeElapsedLabel;
@ -147,8 +146,6 @@ signals:
void openMessageDialog(const QString &userName, bool focus); void openMessageDialog(const QString &userName, bool focus);
private slots: private slots:
void newCardAdded(AbstractCardItem *card); void newCardAdded(AbstractCardItem *card);
void showCardInfoPopup(const QPoint &pos, const QString &cardName);
void deleteCardInfoPopup();
void actConcede(); void actConcede();
void actLeaveGame(); void actLeaveGame();
@ -158,7 +155,7 @@ private slots:
void actNextPhase(); void actNextPhase();
void actNextTurn(); void actNextTurn();
public: public:
TabGame(TabSupervisor *_tabSupervisor, QList<AbstractClient *> &_clients, int _gameId, const QString &_gameDescription, int _localPlayerId, bool _spectator, bool _spectatorsCanTalk, bool _spectatorsSeeEverything, bool _resuming); TabGame(TabSupervisor *_tabSupervisor, QList<AbstractClient *> &_clients, int _gameId, const QString &_gameDescription, int _localPlayerId, ServerInfo_User *_userInfo, bool _spectator, bool _spectatorsCanTalk, bool _spectatorsSeeEverything, bool _resuming);
~TabGame(); ~TabGame();
void retranslateUi(); void retranslateUi();
void closeRequest(); void closeRequest();

View file

@ -11,7 +11,9 @@
TabMessage::TabMessage(TabSupervisor *_tabSupervisor, AbstractClient *_client, const QString &_ownName, const QString &_userName) TabMessage::TabMessage(TabSupervisor *_tabSupervisor, AbstractClient *_client, const QString &_ownName, const QString &_userName)
: Tab(_tabSupervisor), client(_client), userName(_userName), userOnline(true) : Tab(_tabSupervisor), client(_client), userName(_userName), userOnline(true)
{ {
chatView = new ChatView(_ownName); chatView = new ChatView(_ownName, true);
connect(chatView, SIGNAL(showCardInfoPopup(QPoint, QString)), this, SLOT(showCardInfoPopup(QPoint, QString)));
connect(chatView, SIGNAL(deleteCardInfoPopup(QString)), this, SLOT(deleteCardInfoPopup(QString)));
sayEdit = new QLineEdit; sayEdit = new QLineEdit;
connect(sayEdit, SIGNAL(returnPressed()), this, SLOT(sendMessage())); connect(sayEdit, SIGNAL(returnPressed()), this, SLOT(sendMessage()));

View file

@ -4,127 +4,17 @@
#include <QMenu> #include <QMenu>
#include <QAction> #include <QAction>
#include <QPushButton> #include <QPushButton>
#include <QHeaderView>
#include <QMessageBox> #include <QMessageBox>
#include <QCheckBox> #include <QCheckBox>
#include <QInputDialog>
#include <QLabel> #include <QLabel>
#include <QSplitter> #include <QSplitter>
#include "dlg_creategame.h"
#include "tab_supervisor.h" #include "tab_supervisor.h"
#include "tab_room.h" #include "tab_room.h"
#include "userlist.h" #include "userlist.h"
#include "abstractclient.h" #include "abstractclient.h"
#include "protocol_items.h" #include "protocol_items.h"
#include "gamesmodel.h"
#include "chatview.h" #include "chatview.h"
#include "gameselector.h"
GameSelector::GameSelector(AbstractClient *_client, TabRoom *_room, QWidget *parent)
: QGroupBox(parent), client(_client), room(_room)
{
gameListView = new QTreeView;
gameListModel = new GamesModel(room->getGameTypes(), this);
gameListProxyModel = new GamesProxyModel(this);
gameListProxyModel->setSourceModel(gameListModel);
gameListProxyModel->setSortCaseSensitivity(Qt::CaseInsensitive);
gameListView->setModel(gameListProxyModel);
gameListView->header()->setResizeMode(0, QHeaderView::ResizeToContents);
gameListView->setSortingEnabled(true);
showFullGamesCheckBox = new QCheckBox;
createButton = new QPushButton;
joinButton = new QPushButton;
spectateButton = new QPushButton;
QHBoxLayout *buttonLayout = new QHBoxLayout;
buttonLayout->addWidget(showFullGamesCheckBox);
buttonLayout->addStretch();
buttonLayout->addWidget(createButton);
buttonLayout->addWidget(joinButton);
buttonLayout->addWidget(spectateButton);
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(gameListView);
mainLayout->addLayout(buttonLayout);
retranslateUi();
setLayout(mainLayout);
setMinimumWidth((qreal) (gameListView->columnWidth(0) * gameListModel->columnCount()) / 1.5);
setMinimumHeight(200);
connect(showFullGamesCheckBox, SIGNAL(stateChanged(int)), this, SLOT(showFullGamesChanged(int)));
connect(createButton, SIGNAL(clicked()), this, SLOT(actCreate()));
connect(joinButton, SIGNAL(clicked()), this, SLOT(actJoin()));
connect(spectateButton, SIGNAL(clicked()), this, SLOT(actJoin()));
}
void GameSelector::showFullGamesChanged(int state)
{
gameListProxyModel->setFullGamesVisible(state);
}
void GameSelector::actCreate()
{
DlgCreateGame dlg(client, room->getRoomId(), room->getGameTypes(), this);
dlg.exec();
}
void GameSelector::checkResponse(ResponseCode response)
{
createButton->setEnabled(true);
joinButton->setEnabled(true);
spectateButton->setEnabled(true);
switch (response) {
case RespWrongPassword: QMessageBox::critical(this, tr("Error"), tr("Wrong password.")); break;
case RespSpectatorsNotAllowed: QMessageBox::critical(this, tr("Error"), tr("Spectators are not allowed in this game.")); break;
case RespGameFull: QMessageBox::critical(this, tr("Error"), tr("The game is already full.")); break;
case RespNameNotFound: QMessageBox::critical(this, tr("Error"), tr("The game does not exist any more.")); break;
case RespUserLevelTooLow: QMessageBox::critical(this, tr("Error"), tr("This game is only open to registered users.")); break;
case RespOnlyBuddies: QMessageBox::critical(this, tr("Error"), tr("This game is only open to its creator's buddies.")); break;
case RespInIgnoreList: QMessageBox::critical(this, tr("Error"), tr("You are being ignored by the creator of this game.")); break;
default: ;
}
}
void GameSelector::actJoin()
{
bool spectator = sender() == spectateButton;
QModelIndex ind = gameListView->currentIndex();
if (!ind.isValid())
return;
ServerInfo_Game *game = gameListModel->getGame(ind.data(Qt::UserRole).toInt());
QString password;
if (game->getHasPassword() && !(spectator && !game->getSpectatorsNeedPassword())) {
bool ok;
password = QInputDialog::getText(this, tr("Join game"), tr("Password:"), QLineEdit::Password, QString(), &ok);
if (!ok)
return;
}
Command_JoinGame *commandJoinGame = new Command_JoinGame(room->getRoomId(), game->getGameId(), password, spectator);
connect(commandJoinGame, SIGNAL(finished(ResponseCode)), this, SLOT(checkResponse(ResponseCode)));
client->sendCommand(commandJoinGame);
createButton->setEnabled(false);
joinButton->setEnabled(false);
spectateButton->setEnabled(false);
}
void GameSelector::retranslateUi()
{
setTitle(tr("Games"));
showFullGamesCheckBox->setText(tr("Show &full games"));
createButton->setText(tr("C&reate"));
joinButton->setText(tr("&Join"));
spectateButton->setText(tr("J&oin as spectator"));
}
void GameSelector::processGameInfo(ServerInfo_Game *info)
{
gameListModel->updateGameList(info);
}
TabRoom::TabRoom(TabSupervisor *_tabSupervisor, AbstractClient *_client, const QString &_ownName, ServerInfo_Room *info) TabRoom::TabRoom(TabSupervisor *_tabSupervisor, AbstractClient *_client, const QString &_ownName, ServerInfo_Room *info)
: Tab(_tabSupervisor), client(_client), roomId(info->getRoomId()), roomName(info->getName()), ownName(_ownName) : Tab(_tabSupervisor), client(_client), roomId(info->getRoomId()), roomName(info->getName()), ownName(_ownName)
@ -133,11 +23,15 @@ TabRoom::TabRoom(TabSupervisor *_tabSupervisor, AbstractClient *_client, const Q
for (int i = 0; i < gameTypeList.size(); ++i) for (int i = 0; i < gameTypeList.size(); ++i)
gameTypes.insert(gameTypeList[i]->getGameTypeId(), gameTypeList[i]->getDescription()); gameTypes.insert(gameTypeList[i]->getGameTypeId(), gameTypeList[i]->getDescription());
gameSelector = new GameSelector(client, this); QMap<int, GameTypeMap> tempMap;
tempMap.insert(info->getRoomId(), gameTypes);
gameSelector = new GameSelector(client, this, QMap<int, QString>(), tempMap);
userList = new UserList(tabSupervisor, client, UserList::RoomList); userList = new UserList(tabSupervisor, client, UserList::RoomList);
connect(userList, SIGNAL(openMessageDialog(const QString &, bool)), this, SIGNAL(openMessageDialog(const QString &, bool))); connect(userList, SIGNAL(openMessageDialog(const QString &, bool)), this, SIGNAL(openMessageDialog(const QString &, bool)));
chatView = new ChatView(ownName); chatView = new ChatView(ownName, true);
connect(chatView, SIGNAL(showCardInfoPopup(QPoint, QString)), this, SLOT(showCardInfoPopup(QPoint, QString)));
connect(chatView, SIGNAL(deleteCardInfoPopup(QString)), this, SLOT(deleteCardInfoPopup(QString)));
sayLabel = new QLabel; sayLabel = new QLabel;
sayEdit = new QLineEdit; sayEdit = new QLineEdit;
sayLabel->setBuddy(sayEdit); sayLabel->setBuddy(sayEdit);
@ -262,5 +156,5 @@ void TabRoom::processLeaveRoomEvent(Event_LeaveRoom *event)
void TabRoom::processSayEvent(Event_RoomSay *event) void TabRoom::processSayEvent(Event_RoomSay *event)
{ {
chatView->appendMessage(event->getPlayerName(), event->getMessage()); chatView->appendMessage(event->getPlayerName(), event->getMessage());
emit userEvent(); emit userEvent(false);
} }

View file

@ -2,20 +2,16 @@
#define TAB_ROOM_H #define TAB_ROOM_H
#include "tab.h" #include "tab.h"
#include "protocol_datastructures.h"
#include <QGroupBox> #include <QGroupBox>
#include <QMap>
class AbstractClient; class AbstractClient;
class UserList; class UserList;
class QLabel; class QLabel;
class ChatView; class ChatView;
class QLineEdit; class QLineEdit;
class QTreeView;
class QPushButton; class QPushButton;
class QTextTable; class QTextTable;
class QCheckBox;
class GamesModel;
class GamesProxyModel;
class RoomEvent; class RoomEvent;
class ServerInfo_Room; class ServerInfo_Room;
class ServerInfo_Game; class ServerInfo_Game;
@ -24,31 +20,7 @@ class Event_JoinRoom;
class Event_LeaveRoom; class Event_LeaveRoom;
class Event_RoomSay; class Event_RoomSay;
class ProtocolResponse; class ProtocolResponse;
class TabRoom; class GameSelector;
class GameSelector : public QGroupBox {
Q_OBJECT
private slots:
void showFullGamesChanged(int state);
void actCreate();
void actJoin();
void checkResponse(ResponseCode response);
signals:
void gameJoined(int gameId);
private:
AbstractClient *client;
TabRoom *room;
QTreeView *gameListView;
GamesModel *gameListModel;
GamesProxyModel *gameListProxyModel;
QPushButton *createButton, *joinButton, *spectateButton;
QCheckBox *showFullGamesCheckBox;
public:
GameSelector(AbstractClient *_client, TabRoom *_room, QWidget *parent = 0);
void retranslateUi();
void processGameInfo(ServerInfo_Game *info);
};
class TabRoom : public Tab { class TabRoom : public Tab {
Q_OBJECT Q_OBJECT

View file

@ -101,15 +101,14 @@ void TabSupervisor::retranslateUi()
int TabSupervisor::myAddTab(Tab *tab) int TabSupervisor::myAddTab(Tab *tab)
{ {
connect(tab, SIGNAL(userEvent()), this, SLOT(tabUserEvent())); connect(tab, SIGNAL(userEvent(bool)), this, SLOT(tabUserEvent(bool)));
return addTab(tab, tab->getTabText()); return addTab(tab, tab->getTabText());
} }
void TabSupervisor::start(AbstractClient *_client, ServerInfo_User *userInfo) void TabSupervisor::start(AbstractClient *_client, ServerInfo_User *_userInfo)
{ {
client = _client; client = _client;
userName = userInfo->getName(); userInfo = new ServerInfo_User(_userInfo);
userLevel = userInfo->getUserLevel();
connect(client, SIGNAL(roomEventReceived(RoomEvent *)), this, SLOT(processRoomEvent(RoomEvent *))); connect(client, SIGNAL(roomEventReceived(RoomEvent *)), this, SLOT(processRoomEvent(RoomEvent *)));
connect(client, SIGNAL(gameEventContainerReceived(GameEventContainer *)), this, SLOT(processGameEventContainer(GameEventContainer *))); connect(client, SIGNAL(gameEventContainerReceived(GameEventContainer *)), this, SLOT(processGameEventContainer(GameEventContainer *)));
@ -135,8 +134,8 @@ void TabSupervisor::start(AbstractClient *_client, ServerInfo_User *userInfo)
} else } else
tabDeckStorage = 0; tabDeckStorage = 0;
if (userInfo->getUserLevel() & ServerInfo_User::IsAdmin) { if (userInfo->getUserLevel() & ServerInfo_User::IsModerator) {
tabAdmin = new TabAdmin(this, client); tabAdmin = new TabAdmin(this, client, (userInfo->getUserLevel() & ServerInfo_User::IsAdmin));
myAddTab(tabAdmin); myAddTab(tabAdmin);
} else } else
tabAdmin = 0; tabAdmin = 0;
@ -146,6 +145,7 @@ void TabSupervisor::start(AbstractClient *_client, ServerInfo_User *userInfo)
void TabSupervisor::startLocal(const QList<AbstractClient *> &_clients) void TabSupervisor::startLocal(const QList<AbstractClient *> &_clients)
{ {
userInfo = new ServerInfo_User;
localClients = _clients; localClients = _clients;
for (int i = 0; i < localClients.size(); ++i) for (int i = 0; i < localClients.size(); ++i)
connect(localClients[i], SIGNAL(gameEventContainerReceived(GameEventContainer *)), this, SLOT(processGameEventContainer(GameEventContainer *))); connect(localClients[i], SIGNAL(gameEventContainerReceived(GameEventContainer *)), this, SLOT(processGameEventContainer(GameEventContainer *)));
@ -192,6 +192,9 @@ void TabSupervisor::stop()
while (messageIterator.hasNext()) while (messageIterator.hasNext())
messageIterator.next().value()->deleteLater(); messageIterator.next().value()->deleteLater();
messageTabs.clear(); messageTabs.clear();
delete userInfo;
userInfo = 0;
} }
void TabSupervisor::updatePingTime(int value, int max) void TabSupervisor::updatePingTime(int value, int max)
@ -221,7 +224,7 @@ void TabSupervisor::addCloseButtonToTab(Tab *tab, int tabIndex)
void TabSupervisor::gameJoined(Event_GameJoined *event) void TabSupervisor::gameJoined(Event_GameJoined *event)
{ {
TabGame *tab = new TabGame(this, QList<AbstractClient *>() << client, event->getGameId(), event->getGameDescription(), event->getPlayerId(), event->getSpectator(), event->getSpectatorsCanTalk(), event->getSpectatorsSeeEverything(), event->getResuming()); TabGame *tab = new TabGame(this, QList<AbstractClient *>() << client, event->getGameId(), event->getGameDescription(), event->getPlayerId(), userInfo, event->getSpectator(), event->getSpectatorsCanTalk(), event->getSpectatorsSeeEverything(), event->getResuming());
connect(tab, SIGNAL(gameClosing(TabGame *)), this, SLOT(gameLeft(TabGame *))); connect(tab, SIGNAL(gameClosing(TabGame *)), this, SLOT(gameLeft(TabGame *)));
connect(tab, SIGNAL(openMessageDialog(const QString &, bool)), this, SLOT(addMessageTab(const QString &, bool))); connect(tab, SIGNAL(openMessageDialog(const QString &, bool)), this, SLOT(addMessageTab(const QString &, bool)));
int tabIndex = myAddTab(tab); int tabIndex = myAddTab(tab);
@ -232,7 +235,7 @@ void TabSupervisor::gameJoined(Event_GameJoined *event)
void TabSupervisor::localGameJoined(Event_GameJoined *event) void TabSupervisor::localGameJoined(Event_GameJoined *event)
{ {
TabGame *tab = new TabGame(this, localClients, event->getGameId(), event->getGameDescription(), event->getPlayerId(), event->getSpectator(), event->getSpectatorsCanTalk(), event->getSpectatorsSeeEverything(), event->getResuming()); TabGame *tab = new TabGame(this, localClients, event->getGameId(), event->getGameDescription(), event->getPlayerId(), userInfo, event->getSpectator(), event->getSpectatorsCanTalk(), event->getSpectatorsSeeEverything(), event->getResuming());
connect(tab, SIGNAL(gameClosing(TabGame *)), this, SLOT(gameLeft(TabGame *))); connect(tab, SIGNAL(gameClosing(TabGame *)), this, SLOT(gameLeft(TabGame *)));
int tabIndex = myAddTab(tab); int tabIndex = myAddTab(tab);
addCloseButtonToTab(tab, tabIndex); addCloseButtonToTab(tab, tabIndex);
@ -258,7 +261,7 @@ void TabSupervisor::gameLeft(TabGame *tab)
void TabSupervisor::addRoomTab(ServerInfo_Room *info, bool setCurrent) void TabSupervisor::addRoomTab(ServerInfo_Room *info, bool setCurrent)
{ {
TabRoom *tab = new TabRoom(this, client, userName, info); TabRoom *tab = new TabRoom(this, client, userInfo->getName(), info);
connect(tab, SIGNAL(roomClosing(TabRoom *)), this, SLOT(roomLeft(TabRoom *))); connect(tab, SIGNAL(roomClosing(TabRoom *)), this, SLOT(roomLeft(TabRoom *)));
connect(tab, SIGNAL(openMessageDialog(const QString &, bool)), this, SLOT(addMessageTab(const QString &, bool))); connect(tab, SIGNAL(openMessageDialog(const QString &, bool)), this, SLOT(addMessageTab(const QString &, bool)));
int tabIndex = myAddTab(tab); int tabIndex = myAddTab(tab);
@ -278,10 +281,10 @@ void TabSupervisor::roomLeft(TabRoom *tab)
TabMessage *TabSupervisor::addMessageTab(const QString &receiverName, bool focus) TabMessage *TabSupervisor::addMessageTab(const QString &receiverName, bool focus)
{ {
if (receiverName == userName) if (receiverName == userInfo->getName())
return 0; return 0;
TabMessage *tab = new TabMessage(this, client, userName, receiverName); TabMessage *tab = new TabMessage(this, client, userInfo->getName(), receiverName);
connect(tab, SIGNAL(talkClosing(TabMessage *)), this, SLOT(talkLeft(TabMessage *))); connect(tab, SIGNAL(talkClosing(TabMessage *)), this, SLOT(talkLeft(TabMessage *)));
int tabIndex = myAddTab(tab); int tabIndex = myAddTab(tab);
addCloseButtonToTab(tab, tabIndex); addCloseButtonToTab(tab, tabIndex);
@ -299,14 +302,15 @@ void TabSupervisor::talkLeft(TabMessage *tab)
removeTab(indexOf(tab)); removeTab(indexOf(tab));
} }
void TabSupervisor::tabUserEvent() void TabSupervisor::tabUserEvent(bool globalEvent)
{ {
Tab *tab = static_cast<Tab *>(sender()); Tab *tab = static_cast<Tab *>(sender());
if (tab != currentWidget()) { if (tab != currentWidget()) {
tab->setContentsChanged(true); tab->setContentsChanged(true);
setTabIcon(indexOf(tab), *tabChangedIcon); setTabIcon(indexOf(tab), *tabChangedIcon);
} }
QApplication::alert(this); if (globalEvent)
QApplication::alert(this);
} }
void TabSupervisor::processRoomEvent(RoomEvent *event) void TabSupervisor::processRoomEvent(RoomEvent *event)
@ -371,3 +375,8 @@ bool TabSupervisor::getAdminLocked() const
return true; return true;
return tabAdmin->getLocked(); return tabAdmin->getLocked();
} }
int TabSupervisor::getUserLevel() const
{
return userInfo->getUserLevel();
}

View file

@ -37,8 +37,7 @@ protected:
class TabSupervisor : public QTabWidget { class TabSupervisor : public QTabWidget {
Q_OBJECT Q_OBJECT
private: private:
QString userName; ServerInfo_User *userInfo;
int userLevel;
QIcon *tabChangedIcon; QIcon *tabChangedIcon;
AbstractClient *client; AbstractClient *client;
QList<AbstractClient *> localClients; QList<AbstractClient *> localClients;
@ -61,7 +60,7 @@ public:
int getGameCount() const { return gameTabs.size(); } int getGameCount() const { return gameTabs.size(); }
TabUserLists *getUserListsTab() const { return tabUserLists; } TabUserLists *getUserListsTab() const { return tabUserLists; }
bool getAdminLocked() const; bool getAdminLocked() const;
int getUserLevel() const { return userLevel; } int getUserLevel() const;
signals: signals:
void setMenu(QMenu *menu); void setMenu(QMenu *menu);
void localGameEnded(); void localGameEnded();
@ -78,7 +77,7 @@ private slots:
void processUserLeft(const QString &userName); void processUserLeft(const QString &userName);
void processUserJoined(const QString &userName); void processUserJoined(const QString &userName);
void talkLeft(TabMessage *tab); void talkLeft(TabMessage *tab);
void tabUserEvent(); void tabUserEvent(bool globalEvent);
void processRoomEvent(RoomEvent *event); void processRoomEvent(RoomEvent *event);
void processGameEventContainer(GameEventContainer *cont); void processGameEventContainer(GameEventContainer *cont);
void processMessageEvent(Event_Message *event); void processMessageEvent(Event_Message *event);

View file

@ -5,11 +5,59 @@
#include "pixmapgenerator.h" #include "pixmapgenerator.h"
#include "userinfobox.h" #include "userinfobox.h"
#include "protocol_items.h" #include "protocol_items.h"
#include "gameselector.h"
#include <QHeaderView> #include <QHeaderView>
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QMouseEvent> #include <QMouseEvent>
#include <QMenu> #include <QMenu>
#include <QInputDialog> #include <QInputDialog>
#include <QLabel>
#include <QSpinBox>
#include <QPlainTextEdit>
#include <QPushButton>
#include <QHBoxLayout>
BanDialog::BanDialog(QWidget *parent)
: QDialog(parent)
{
QLabel *durationLabel = new QLabel(tr("Please enter the duration of the ban (in minutes).\nEnter 0 for an indefinite ban."));
durationEdit = new QSpinBox;
durationEdit->setMinimum(0);
durationEdit->setValue(5);
QLabel *reasonLabel = new QLabel(tr("Please enter the reason for the ban.\nThis is only saved for moderators and cannot be seen by the banned person."));
reasonEdit = new QPlainTextEdit;
QPushButton *okButton = new QPushButton(tr("&OK"));
okButton->setAutoDefault(true);
connect(okButton, SIGNAL(clicked()), this, SLOT(accept()));
QPushButton *cancelButton = new QPushButton(tr("&Cancel"));
connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
QHBoxLayout *buttonLayout = new QHBoxLayout;
buttonLayout->addStretch();
buttonLayout->addWidget(okButton);
buttonLayout->addWidget(cancelButton);
QVBoxLayout *vbox = new QVBoxLayout;
vbox->addWidget(durationLabel);
vbox->addWidget(durationEdit);
vbox->addWidget(reasonLabel);
vbox->addWidget(reasonEdit);
vbox->addLayout(buttonLayout);
setLayout(vbox);
setWindowTitle(tr("Ban user from server"));
}
int BanDialog::getMinutes() const
{
return durationEdit->value();
}
QString BanDialog::getReason() const
{
return reasonEdit->toPlainText();
}
UserListItemDelegate::UserListItemDelegate(QObject *const parent) UserListItemDelegate::UserListItemDelegate(QObject *const parent)
: QStyledItemDelegate(parent) : QStyledItemDelegate(parent)
@ -59,6 +107,7 @@ UserList::UserList(TabSupervisor *_tabSupervisor, AbstractClient *_client, UserL
userTree->setRootIsDecorated(false); userTree->setRootIsDecorated(false);
userTree->setIconSize(QSize(20, 12)); userTree->setIconSize(QSize(20, 12));
userTree->setItemDelegate(itemDelegate); userTree->setItemDelegate(itemDelegate);
userTree->setAlternatingRowColors(true);
connect(userTree, SIGNAL(itemActivated(QTreeWidgetItem *, int)), this, SLOT(userClicked(QTreeWidgetItem *, int))); connect(userTree, SIGNAL(itemActivated(QTreeWidgetItem *, int)), this, SLOT(userClicked(QTreeWidgetItem *, int)));
QVBoxLayout *vbox = new QVBoxLayout; QVBoxLayout *vbox = new QVBoxLayout;
@ -163,6 +212,35 @@ void UserList::userClicked(QTreeWidgetItem *item, int /*column*/)
emit openMessageDialog(item->data(2, Qt::UserRole).toString(), true); emit openMessageDialog(item->data(2, Qt::UserRole).toString(), true);
} }
void UserList::gamesOfUserReceived(ProtocolResponse *resp)
{
Command_GetGamesOfUser *command = static_cast<Command_GetGamesOfUser *>(sender());
Response_GetGamesOfUser *response = qobject_cast<Response_GetGamesOfUser *>(resp);
if (!response)
return;
QMap<int, GameTypeMap> gameTypeMap;
QMap<int, QString> roomMap;
const QList<ServerInfo_Room *> roomList = response->getRoomList();
for (int i = 0; i < roomList.size(); ++i) {
roomMap.insert(roomList[i]->getRoomId(), roomList[i]->getName());
const QList<ServerInfo_GameType *> gameTypeList = roomList[i]->getGameTypeList();
GameTypeMap tempMap;
for (int j = 0; j < gameTypeList.size(); ++j)
tempMap.insert(gameTypeList[j]->getGameTypeId(), gameTypeList[j]->getDescription());
gameTypeMap.insert(roomList[i]->getRoomId(), tempMap);
}
GameSelector *selector = new GameSelector(client, 0, roomMap, gameTypeMap);
const QList<ServerInfo_Game *> gameList = response->getGameList();
for (int i = 0; i < gameList.size(); ++i)
selector->processGameInfo(gameList[i]);
selector->setWindowTitle(tr("%1's games").arg(command->getUserName()));
selector->setAttribute(Qt::WA_DeleteOnClose);
selector->show();
}
void UserList::showContextMenu(const QPoint &pos, const QModelIndex &index) void UserList::showContextMenu(const QPoint &pos, const QModelIndex &index)
{ {
const QString &userName = index.sibling(index.row(), 2).data(Qt::UserRole).toString(); const QString &userName = index.sibling(index.row(), 2).data(Qt::UserRole).toString();
@ -172,6 +250,7 @@ void UserList::showContextMenu(const QPoint &pos, const QModelIndex &index)
aUserName->setEnabled(false); aUserName->setEnabled(false);
QAction *aDetails = new QAction(tr("User &details"), this); QAction *aDetails = new QAction(tr("User &details"), this);
QAction *aChat = new QAction(tr("Direct &chat"), this); QAction *aChat = new QAction(tr("Direct &chat"), this);
QAction *aShowGames = new QAction(tr("Show this user's &games"), this);
QAction *aAddToBuddyList = new QAction(tr("Add to &buddy list"), this); QAction *aAddToBuddyList = new QAction(tr("Add to &buddy list"), this);
QAction *aRemoveFromBuddyList = new QAction(tr("Remove from &buddy list"), this); QAction *aRemoveFromBuddyList = new QAction(tr("Remove from &buddy list"), this);
QAction *aAddToIgnoreList = new QAction(tr("Add to &ignore list"), this); QAction *aAddToIgnoreList = new QAction(tr("Add to &ignore list"), this);
@ -182,6 +261,7 @@ void UserList::showContextMenu(const QPoint &pos, const QModelIndex &index)
menu->addAction(aUserName); menu->addAction(aUserName);
menu->addSeparator(); menu->addSeparator();
menu->addAction(aDetails); menu->addAction(aDetails);
menu->addAction(aShowGames);
menu->addAction(aChat); menu->addAction(aChat);
if ((userLevel & ServerInfo_User::IsRegistered) && (tabSupervisor->getUserLevel() & ServerInfo_User::IsRegistered)) { if ((userLevel & ServerInfo_User::IsRegistered) && (tabSupervisor->getUserLevel() & ServerInfo_User::IsRegistered)) {
menu->addSeparator(); menu->addSeparator();
@ -210,15 +290,18 @@ void UserList::showContextMenu(const QPoint &pos, const QModelIndex &index)
client->sendCommand(new Command_AddToList("buddy", userName)); client->sendCommand(new Command_AddToList("buddy", userName));
else if (actionClicked == aRemoveFromBuddyList) else if (actionClicked == aRemoveFromBuddyList)
client->sendCommand(new Command_RemoveFromList("buddy", userName)); client->sendCommand(new Command_RemoveFromList("buddy", userName));
else if (actionClicked == aAddToIgnoreList) else if (actionClicked == aShowGames) {
Command *cmd = new Command_GetGamesOfUser(userName);
connect(cmd, SIGNAL(finished(ProtocolResponse *)), this, SLOT(gamesOfUserReceived(ProtocolResponse *)));
client->sendCommand(cmd);
} else if (actionClicked == aAddToIgnoreList)
client->sendCommand(new Command_AddToList("ignore", userName)); client->sendCommand(new Command_AddToList("ignore", userName));
else if (actionClicked == aRemoveFromIgnoreList) else if (actionClicked == aRemoveFromIgnoreList)
client->sendCommand(new Command_RemoveFromList("ignore", userName)); client->sendCommand(new Command_RemoveFromList("ignore", userName));
else if (actionClicked == aBan) { else if (actionClicked == aBan) {
bool ok; BanDialog dlg(this);
int minutes = QInputDialog::getInt(this, tr("Duration"), tr("Please enter the duration of the ban (in minutes).\nEnter 0 for an indefinite ban."), 0, 0, 2147483647, 10, &ok); if (dlg.exec())
if (ok) client->sendCommand(new Command_BanFromServer(userName, dlg.getMinutes(), dlg.getReason()));
client->sendCommand(new Command_BanFromServer(userName, minutes));
} }
delete menu; delete menu;

View file

@ -1,6 +1,7 @@
#ifndef USERLIST_H #ifndef USERLIST_H
#define USERLIST_H #define USERLIST_H
#include <QDialog>
#include <QGroupBox> #include <QGroupBox>
#include <QTreeWidgetItem> #include <QTreeWidgetItem>
#include <QStyledItemDelegate> #include <QStyledItemDelegate>
@ -9,6 +10,20 @@ class QTreeWidget;
class ServerInfo_User; class ServerInfo_User;
class AbstractClient; class AbstractClient;
class TabSupervisor; class TabSupervisor;
class QSpinBox;
class QPlainTextEdit;
class ProtocolResponse;
class BanDialog : public QDialog {
Q_OBJECT
private:
QSpinBox *durationEdit;
QPlainTextEdit *reasonEdit;
public:
BanDialog(QWidget *parent = 0);
int getMinutes() const;
QString getReason() const;
};
class UserListItemDelegate : public QStyledItemDelegate { class UserListItemDelegate : public QStyledItemDelegate {
public: public:
@ -38,6 +53,7 @@ private:
void setUserOnline(QTreeWidgetItem *user, bool online); void setUserOnline(QTreeWidgetItem *user, bool online);
private slots: private slots:
void userClicked(QTreeWidgetItem *item, int column); void userClicked(QTreeWidgetItem *item, int column);
void gamesOfUserReceived(ProtocolResponse *resp);
signals: signals:
void openMessageDialog(const QString &userName, bool focus); void openMessageDialog(const QString &userName, bool focus);
void addBuddy(const QString &userName); void addBuddy(const QString &userName);

View file

@ -56,11 +56,18 @@ void MainWindow::processConnectionClosedEvent(Event_ConnectionClosed *event)
reasonStr = tr("There are too many concurrent connections from your address."); reasonStr = tr("There are too many concurrent connections from your address.");
else if (reason == "banned") else if (reason == "banned")
reasonStr = tr("Banned by moderator."); reasonStr = tr("Banned by moderator.");
else if (reason == "server_shutdown")
reasonStr = tr("Scheduled server shutdown.");
else else
reasonStr = tr("Unknown reason."); reasonStr = tr("Unknown reason.");
QMessageBox::critical(this, tr("Connection closed"), tr("The server has terminated your connection.\nReason: %1").arg(reasonStr)); QMessageBox::critical(this, tr("Connection closed"), tr("The server has terminated your connection.\nReason: %1").arg(reasonStr));
} }
void MainWindow::processServerShutdownEvent(Event_ServerShutdown *event)
{
QMessageBox::information(this, tr("Scheduled server shutdown"), tr("The server is going to be restarted in %n minute(s).\nAll running games will be lost.\nReason for shutdown: %1", "", event->getMinutes()).arg(event->getReason()));
}
void MainWindow::statusChanged(ClientStatus _status) void MainWindow::statusChanged(ClientStatus _status)
{ {
setClientStatusTitle(); setClientStatusTitle();
@ -290,6 +297,7 @@ MainWindow::MainWindow(QWidget *parent)
client = new RemoteClient(this); client = new RemoteClient(this);
connect(client, SIGNAL(connectionClosedEventReceived(Event_ConnectionClosed *)), this, SLOT(processConnectionClosedEvent(Event_ConnectionClosed *))); connect(client, SIGNAL(connectionClosedEventReceived(Event_ConnectionClosed *)), this, SLOT(processConnectionClosedEvent(Event_ConnectionClosed *)));
connect(client, SIGNAL(serverShutdownEventReceived(Event_ServerShutdown *)), this, SLOT(processServerShutdownEvent(Event_ServerShutdown *)));
connect(client, SIGNAL(serverError(ResponseCode)), this, SLOT(serverError(ResponseCode))); connect(client, SIGNAL(serverError(ResponseCode)), this, SLOT(serverError(ResponseCode)));
connect(client, SIGNAL(socketError(const QString &)), this, SLOT(socketError(const QString &))); connect(client, SIGNAL(socketError(const QString &)), this, SLOT(socketError(const QString &)));
connect(client, SIGNAL(serverTimeout()), this, SLOT(serverTimeout())); connect(client, SIGNAL(serverTimeout()), this, SLOT(serverTimeout()));

View file

@ -36,6 +36,7 @@ private slots:
void updateTabMenu(QMenu *menu); void updateTabMenu(QMenu *menu);
void statusChanged(ClientStatus _status); void statusChanged(ClientStatus _status);
void processConnectionClosedEvent(Event_ConnectionClosed *event); void processConnectionClosedEvent(Event_ConnectionClosed *event);
void processServerShutdownEvent(Event_ServerShutdown *event);
void serverTimeout(); void serverTimeout();
void serverError(ResponseCode r); void serverError(ResponseCode r);
void socketError(const QString &errorStr); void socketError(const QString &errorStr);

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -44,6 +44,7 @@ void ProtocolItem::initializeHash()
ProtocolResponse::initializeHash(); ProtocolResponse::initializeHash();
registerSerializableItem("respjoin_room", Response_JoinRoom::newItem); registerSerializableItem("respjoin_room", Response_JoinRoom::newItem);
registerSerializableItem("resplist_users", Response_ListUsers::newItem); registerSerializableItem("resplist_users", Response_ListUsers::newItem);
registerSerializableItem("respget_games_of_user", Response_GetGamesOfUser::newItem);
registerSerializableItem("respget_user_info", Response_GetUserInfo::newItem); registerSerializableItem("respget_user_info", Response_GetUserInfo::newItem);
registerSerializableItem("respdeck_list", Response_DeckList::newItem); registerSerializableItem("respdeck_list", Response_DeckList::newItem);
registerSerializableItem("respdeck_download", Response_DeckDownload::newItem); registerSerializableItem("respdeck_download", Response_DeckDownload::newItem);
@ -74,7 +75,7 @@ TopLevelProtocolItem::TopLevelProtocolItem()
bool TopLevelProtocolItem::readCurrentItem(QXmlStreamReader *xml) bool TopLevelProtocolItem::readCurrentItem(QXmlStreamReader *xml)
{ {
if (currentItem) { if (currentItem) {
if (currentItem->readElement(xml)) { if (currentItem->read(xml)) {
emit protocolItemReceived(currentItem); emit protocolItemReceived(currentItem);
currentItem = 0; currentItem = 0;
} }
@ -92,6 +93,8 @@ bool TopLevelProtocolItem::readElement(QXmlStreamReader *xml)
currentItem = dynamic_cast<ProtocolItem *>(getNewItem(childName + childSubType)); currentItem = dynamic_cast<ProtocolItem *>(getNewItem(childName + childSubType));
if (!currentItem) if (!currentItem)
currentItem = new ProtocolItem_Invalid; currentItem = new ProtocolItem_Invalid;
if (xml->attributes().value("comp").toString().toInt() == 1)
currentItem->setCompressed(true);
readCurrentItem(xml); readCurrentItem(xml);
} }
@ -254,6 +257,7 @@ void ProtocolResponse::initializeHash()
{ {
responseHash.insert(QString(), RespNothing); responseHash.insert(QString(), RespNothing);
responseHash.insert("ok", RespOk); responseHash.insert("ok", RespOk);
responseHash.insert("not_in_room", RespNotInRoom);
responseHash.insert("internal_error", RespInternalError); responseHash.insert("internal_error", RespInternalError);
responseHash.insert("invalid_command", RespInvalidCommand); responseHash.insert("invalid_command", RespInvalidCommand);
responseHash.insert("name_not_found", RespNameNotFound); responseHash.insert("name_not_found", RespNameNotFound);
@ -294,6 +298,34 @@ Response_DeckList::Response_DeckList(int _cmdId, ResponseCode _responseCode, Dec
insertItem(_root); insertItem(_root);
} }
Response_GetGamesOfUser::Response_GetGamesOfUser(int _cmdId, ResponseCode _responseCode, const QList<ServerInfo_Room *> &_roomList, const QList<ServerInfo_Game *> &_gameList)
: ProtocolResponse(_cmdId, _responseCode, "get_games_of_user")
{
roomList = _roomList;
for (int i = 0; i < _roomList.size(); ++i)
itemList.append(_roomList[i]);
gameList = _gameList;
for (int i = 0; i < _gameList.size(); ++i)
itemList.append(_gameList[i]);
}
void Response_GetGamesOfUser::extractData()
{
for (int i = 0; i < itemList.size(); ++i) {
ServerInfo_Room *room = dynamic_cast<ServerInfo_Room *>(itemList[i]);
if (room) {
roomList.append(room);
continue;
}
ServerInfo_Game *game = dynamic_cast<ServerInfo_Game *>(itemList[i]);
if (game) {
gameList.append(game);
continue;
}
}
}
Response_GetUserInfo::Response_GetUserInfo(int _cmdId, ResponseCode _responseCode, ServerInfo_User *_user) Response_GetUserInfo::Response_GetUserInfo(int _cmdId, ResponseCode _responseCode, ServerInfo_User *_user)
: ProtocolResponse(_cmdId, _responseCode, "get_user_info") : ProtocolResponse(_cmdId, _responseCode, "get_user_info")
{ {

View file

@ -42,13 +42,14 @@ enum ItemId {
ItemId_Event_Ping = ItemId_Other + 212, ItemId_Event_Ping = ItemId_Other + 212,
ItemId_Event_AddToList = ItemId_Other + 213, ItemId_Event_AddToList = ItemId_Other + 213,
ItemId_Response_ListUsers = ItemId_Other + 300, ItemId_Response_ListUsers = ItemId_Other + 300,
ItemId_Response_GetUserInfo = ItemId_Other + 301, ItemId_Response_GetGamesOfUser = ItemId_Other + 301,
ItemId_Response_DeckList = ItemId_Other + 302, ItemId_Response_GetUserInfo = ItemId_Other + 302,
ItemId_Response_DeckDownload = ItemId_Other + 303, ItemId_Response_DeckList = ItemId_Other + 303,
ItemId_Response_DeckUpload = ItemId_Other + 304, ItemId_Response_DeckDownload = ItemId_Other + 304,
ItemId_Response_DumpZone = ItemId_Other + 305, ItemId_Response_DeckUpload = ItemId_Other + 305,
ItemId_Response_JoinRoom = ItemId_Other + 306, ItemId_Response_DumpZone = ItemId_Other + 306,
ItemId_Response_Login = ItemId_Other + 307, ItemId_Response_JoinRoom = ItemId_Other + 307,
ItemId_Response_Login = ItemId_Other + 308,
ItemId_Invalid = ItemId_Other + 1000 ItemId_Invalid = ItemId_Other + 1000
}; };
@ -167,6 +168,15 @@ public:
void setGameId(int _gameId) { static_cast<SerializableItem_Int *>(itemMap.value("game_id"))->setData(_gameId); } void setGameId(int _gameId) { static_cast<SerializableItem_Int *>(itemMap.value("game_id"))->setData(_gameId); }
}; };
class ModeratorCommand : public Command {
Q_OBJECT
public:
ModeratorCommand(const QString &_cmdName)
: Command(_cmdName)
{
}
};
class AdminCommand : public Command { class AdminCommand : public Command {
Q_OBJECT Q_OBJECT
public: public:
@ -273,6 +283,21 @@ public:
QList<ServerInfo_User *> getUserList() const { return typecastItemList<ServerInfo_User *>(); } QList<ServerInfo_User *> getUserList() const { return typecastItemList<ServerInfo_User *>(); }
}; };
class Response_GetGamesOfUser : public ProtocolResponse {
Q_OBJECT
private:
QList<ServerInfo_Game *> gameList;
QList<ServerInfo_Room *> roomList;
protected:
void extractData();
public:
Response_GetGamesOfUser(int _cmdId = -1, ResponseCode _responseCode = RespOk, const QList<ServerInfo_Room *> &_roomList = QList<ServerInfo_Room *>(), const QList<ServerInfo_Game *> &_gameList = QList<ServerInfo_Game *>());
int getItemId() const { return ItemId_Response_GetGamesOfUser; }
static SerializableItem *newItem() { return new Response_GetGamesOfUser; }
QList<ServerInfo_Room *> getRoomList() const { return roomList; }
QList<ServerInfo_Game *> getGameList() const { return gameList; }
};
class Response_GetUserInfo : public ProtocolResponse { class Response_GetUserInfo : public ProtocolResponse {
Q_OBJECT Q_OBJECT
public: public:

View file

@ -40,14 +40,16 @@ ServerInfo_UserList::ServerInfo_UserList(const QString &_itemType, const QList<S
itemList.append(_userList[i]); itemList.append(_userList[i]);
} }
ServerInfo_Game::ServerInfo_Game(int _gameId, const QString &_description, bool _hasPassword, int _playerCount, int _maxPlayers, const QList<GameTypeId *> &_gameTypes, ServerInfo_User *_creatorInfo, bool _onlyBuddies, bool _onlyRegistered, bool _spectatorsAllowed, bool _spectatorsNeedPassword, int _spectatorCount) ServerInfo_Game::ServerInfo_Game(int _roomId, int _gameId, const QString &_description, bool _hasPassword, int _playerCount, int _maxPlayers, bool _started, const QList<GameTypeId *> &_gameTypes, ServerInfo_User *_creatorInfo, bool _onlyBuddies, bool _onlyRegistered, bool _spectatorsAllowed, bool _spectatorsNeedPassword, int _spectatorCount)
: SerializableItem_Map("game") : SerializableItem_Map("game")
{ {
insertItem(new SerializableItem_Int("room_id", _roomId));
insertItem(new SerializableItem_Int("game_id", _gameId)); insertItem(new SerializableItem_Int("game_id", _gameId));
insertItem(new SerializableItem_String("description", _description)); insertItem(new SerializableItem_String("description", _description));
insertItem(new SerializableItem_Bool("has_password", _hasPassword)); insertItem(new SerializableItem_Bool("has_password", _hasPassword));
insertItem(new SerializableItem_Int("player_count", _playerCount)); insertItem(new SerializableItem_Int("player_count", _playerCount));
insertItem(new SerializableItem_Int("max_players", _maxPlayers)); insertItem(new SerializableItem_Int("max_players", _maxPlayers));
insertItem(new SerializableItem_Bool("started", _started));
if (!_creatorInfo) if (!_creatorInfo)
_creatorInfo = new ServerInfo_User; _creatorInfo = new ServerInfo_User;
insertItem(_creatorInfo); insertItem(_creatorInfo);

View file

@ -8,7 +8,7 @@
class DeckList; class DeckList;
enum ResponseCode { RespNothing, RespOk, RespInternalError, RespInvalidCommand, RespInvalidData, RespNameNotFound, RespLoginNeeded, RespFunctionNotAllowed, RespGameNotStarted, RespGameFull, RespContextError, RespWrongPassword, RespSpectatorsNotAllowed, RespOnlyBuddies, RespUserLevelTooLow, RespInIgnoreList, RespWouldOverwriteOldSession, RespChatFlood }; enum ResponseCode { RespNothing, RespOk, RespNotInRoom, RespInternalError, RespInvalidCommand, RespInvalidData, RespNameNotFound, RespLoginNeeded, RespFunctionNotAllowed, RespGameNotStarted, RespGameFull, RespContextError, RespWrongPassword, RespSpectatorsNotAllowed, RespOnlyBuddies, RespUserLevelTooLow, RespInIgnoreList, RespWouldOverwriteOldSession, RespChatFlood };
// PrivateZone: Contents of the zone are always visible to the owner, // PrivateZone: Contents of the zone are always visible to the owner,
// but not to anyone else. // but not to anyone else.
@ -69,13 +69,15 @@ public:
class ServerInfo_Game : public SerializableItem_Map { class ServerInfo_Game : public SerializableItem_Map {
public: public:
ServerInfo_Game(int _gameId = -1, const QString &_description = QString(), bool _hasPassword = false, int _playerCount = -1, int _maxPlayers = -1, const QList<GameTypeId *> &_gameTypes = QList<GameTypeId *>(), ServerInfo_User *creatorInfo = 0, bool _onlyBuddies = false, bool _onlyRegistered = false, bool _spectatorsAllowed = false, bool _spectatorsNeedPassword = false, int _spectatorCount = -1); ServerInfo_Game(int _roomId = -1, int _gameId = -1, const QString &_description = QString(), bool _hasPassword = false, int _playerCount = -1, int _maxPlayers = -1, bool _started = false, const QList<GameTypeId *> &_gameTypes = QList<GameTypeId *>(), ServerInfo_User *creatorInfo = 0, bool _onlyBuddies = false, bool _onlyRegistered = false, bool _spectatorsAllowed = false, bool _spectatorsNeedPassword = false, int _spectatorCount = -1);
static SerializableItem *newItem() { return new ServerInfo_Game; } static SerializableItem *newItem() { return new ServerInfo_Game; }
int getRoomId() const { return static_cast<SerializableItem_Int *>(itemMap.value("room_id"))->getData(); }
int getGameId() const { return static_cast<SerializableItem_Int *>(itemMap.value("game_id"))->getData(); } int getGameId() const { return static_cast<SerializableItem_Int *>(itemMap.value("game_id"))->getData(); }
QString getDescription() const { return static_cast<SerializableItem_String *>(itemMap.value("description"))->getData(); } QString getDescription() const { return static_cast<SerializableItem_String *>(itemMap.value("description"))->getData(); }
bool getHasPassword() const { return static_cast<SerializableItem_Bool *>(itemMap.value("has_password"))->getData(); } bool getHasPassword() const { return static_cast<SerializableItem_Bool *>(itemMap.value("has_password"))->getData(); }
int getPlayerCount() const { return static_cast<SerializableItem_Int *>(itemMap.value("player_count"))->getData(); } int getPlayerCount() const { return static_cast<SerializableItem_Int *>(itemMap.value("player_count"))->getData(); }
int getMaxPlayers() const { return static_cast<SerializableItem_Int *>(itemMap.value("max_players"))->getData(); } int getMaxPlayers() const { return static_cast<SerializableItem_Int *>(itemMap.value("max_players"))->getData(); }
bool getStarted() const { return static_cast<SerializableItem_Bool *>(itemMap.value("started"))->getData(); }
QList<GameTypeId *> getGameTypes() const { return typecastItemList<GameTypeId *>(); } QList<GameTypeId *> getGameTypes() const { return typecastItemList<GameTypeId *>(); }
ServerInfo_User *getCreatorInfo() const { return static_cast<ServerInfo_User *>(itemMap.value("user")); } ServerInfo_User *getCreatorInfo() const { return static_cast<ServerInfo_User *>(itemMap.value("user")); }
bool getOnlyBuddies() const { return static_cast<SerializableItem_Bool *>(itemMap.value("only_buddies"))->getData(); } bool getOnlyBuddies() const { return static_cast<SerializableItem_Bool *>(itemMap.value("only_buddies"))->getData(); }

View file

@ -3,81 +3,85 @@ ItemId_Command_Ping = 1001,
ItemId_Command_Login = 1002, ItemId_Command_Login = 1002,
ItemId_Command_Message = 1003, ItemId_Command_Message = 1003,
ItemId_Command_ListUsers = 1004, ItemId_Command_ListUsers = 1004,
ItemId_Command_GetUserInfo = 1005, ItemId_Command_GetGamesOfUser = 1005,
ItemId_Command_AddToList = 1006, ItemId_Command_GetUserInfo = 1006,
ItemId_Command_RemoveFromList = 1007, ItemId_Command_AddToList = 1007,
ItemId_Command_DeckList = 1008, ItemId_Command_RemoveFromList = 1008,
ItemId_Command_DeckNewDir = 1009, ItemId_Command_DeckList = 1009,
ItemId_Command_DeckDelDir = 1010, ItemId_Command_DeckNewDir = 1010,
ItemId_Command_DeckDel = 1011, ItemId_Command_DeckDelDir = 1011,
ItemId_Command_DeckDownload = 1012, ItemId_Command_DeckDel = 1012,
ItemId_Command_ListRooms = 1013, ItemId_Command_DeckDownload = 1013,
ItemId_Command_JoinRoom = 1014, ItemId_Command_ListRooms = 1014,
ItemId_Command_LeaveRoom = 1015, ItemId_Command_JoinRoom = 1015,
ItemId_Command_RoomSay = 1016, ItemId_Command_LeaveRoom = 1016,
ItemId_Command_JoinGame = 1017, ItemId_Command_RoomSay = 1017,
ItemId_Command_KickFromGame = 1018, ItemId_Command_JoinGame = 1018,
ItemId_Command_LeaveGame = 1019, ItemId_Command_KickFromGame = 1019,
ItemId_Command_Say = 1020, ItemId_Command_LeaveGame = 1020,
ItemId_Command_Shuffle = 1021, ItemId_Command_Say = 1021,
ItemId_Command_Mulligan = 1022, ItemId_Command_Shuffle = 1022,
ItemId_Command_RollDie = 1023, ItemId_Command_Mulligan = 1023,
ItemId_Command_DrawCards = 1024, ItemId_Command_RollDie = 1024,
ItemId_Command_UndoDraw = 1025, ItemId_Command_DrawCards = 1025,
ItemId_Command_FlipCard = 1026, ItemId_Command_UndoDraw = 1026,
ItemId_Command_AttachCard = 1027, ItemId_Command_FlipCard = 1027,
ItemId_Command_CreateToken = 1028, ItemId_Command_AttachCard = 1028,
ItemId_Command_CreateArrow = 1029, ItemId_Command_CreateToken = 1029,
ItemId_Command_DeleteArrow = 1030, ItemId_Command_CreateArrow = 1030,
ItemId_Command_SetCardAttr = 1031, ItemId_Command_DeleteArrow = 1031,
ItemId_Command_SetCardCounter = 1032, ItemId_Command_SetCardAttr = 1032,
ItemId_Command_IncCardCounter = 1033, ItemId_Command_SetCardCounter = 1033,
ItemId_Command_ReadyStart = 1034, ItemId_Command_IncCardCounter = 1034,
ItemId_Command_Concede = 1035, ItemId_Command_ReadyStart = 1035,
ItemId_Command_IncCounter = 1036, ItemId_Command_Concede = 1036,
ItemId_Command_CreateCounter = 1037, ItemId_Command_IncCounter = 1037,
ItemId_Command_SetCounter = 1038, ItemId_Command_CreateCounter = 1038,
ItemId_Command_DelCounter = 1039, ItemId_Command_SetCounter = 1039,
ItemId_Command_NextTurn = 1040, ItemId_Command_DelCounter = 1040,
ItemId_Command_SetActivePhase = 1041, ItemId_Command_NextTurn = 1041,
ItemId_Command_DumpZone = 1042, ItemId_Command_SetActivePhase = 1042,
ItemId_Command_StopDumpZone = 1043, ItemId_Command_DumpZone = 1043,
ItemId_Command_RevealCards = 1044, ItemId_Command_StopDumpZone = 1044,
ItemId_Event_Say = 1045, ItemId_Command_RevealCards = 1045,
ItemId_Event_Leave = 1046, ItemId_Event_ConnectionStateChanged = 1046,
ItemId_Event_GameClosed = 1047, ItemId_Event_Say = 1047,
ItemId_Event_Kicked = 1048, ItemId_Event_Leave = 1048,
ItemId_Event_Shuffle = 1049, ItemId_Event_GameClosed = 1049,
ItemId_Event_RollDie = 1050, ItemId_Event_Kicked = 1050,
ItemId_Event_MoveCard = 1051, ItemId_Event_Shuffle = 1051,
ItemId_Event_FlipCard = 1052, ItemId_Event_RollDie = 1052,
ItemId_Event_DestroyCard = 1053, ItemId_Event_MoveCard = 1053,
ItemId_Event_AttachCard = 1054, ItemId_Event_FlipCard = 1054,
ItemId_Event_CreateToken = 1055, ItemId_Event_DestroyCard = 1055,
ItemId_Event_DeleteArrow = 1056, ItemId_Event_AttachCard = 1056,
ItemId_Event_SetCardAttr = 1057, ItemId_Event_CreateToken = 1057,
ItemId_Event_SetCardCounter = 1058, ItemId_Event_DeleteArrow = 1058,
ItemId_Event_SetCounter = 1059, ItemId_Event_SetCardAttr = 1059,
ItemId_Event_DelCounter = 1060, ItemId_Event_SetCardCounter = 1060,
ItemId_Event_SetActivePlayer = 1061, ItemId_Event_SetCounter = 1061,
ItemId_Event_SetActivePhase = 1062, ItemId_Event_DelCounter = 1062,
ItemId_Event_DumpZone = 1063, ItemId_Event_SetActivePlayer = 1063,
ItemId_Event_StopDumpZone = 1064, ItemId_Event_SetActivePhase = 1064,
ItemId_Event_RemoveFromList = 1065, ItemId_Event_DumpZone = 1065,
ItemId_Event_ServerMessage = 1066, ItemId_Event_StopDumpZone = 1066,
ItemId_Event_ConnectionClosed = 1067, ItemId_Event_RemoveFromList = 1067,
ItemId_Event_Message = 1068, ItemId_Event_ServerMessage = 1068,
ItemId_Event_GameJoined = 1069, ItemId_Event_ServerShutdown = 1069,
ItemId_Event_UserLeft = 1070, ItemId_Event_ConnectionClosed = 1070,
ItemId_Event_LeaveRoom = 1071, ItemId_Event_Message = 1071,
ItemId_Event_RoomSay = 1072, ItemId_Event_GameJoined = 1072,
ItemId_Context_ReadyStart = 1073, ItemId_Event_UserLeft = 1073,
ItemId_Context_Concede = 1074, ItemId_Event_LeaveRoom = 1074,
ItemId_Context_DeckSelect = 1075, ItemId_Event_RoomSay = 1075,
ItemId_Context_UndoDraw = 1076, ItemId_Context_ReadyStart = 1076,
ItemId_Context_MoveCard = 1077, ItemId_Context_Concede = 1077,
ItemId_Context_Mulligan = 1078, ItemId_Context_DeckSelect = 1078,
ItemId_Command_UpdateServerMessage = 1079, ItemId_Context_UndoDraw = 1079,
ItemId_Command_BanFromServer = 1080, ItemId_Context_MoveCard = 1080,
ItemId_Other = 1081 ItemId_Context_Mulligan = 1081,
ItemId_Command_UpdateServerMessage = 1082,
ItemId_Command_ShutdownServer = 1083,
ItemId_Command_BanFromServer = 1084,
ItemId_Other = 1085
}; };

View file

@ -21,6 +21,11 @@ Command_ListUsers::Command_ListUsers()
: Command("list_users") : Command("list_users")
{ {
} }
Command_GetGamesOfUser::Command_GetGamesOfUser(const QString &_userName)
: Command("get_games_of_user")
{
insertItem(new SerializableItem_String("user_name", _userName));
}
Command_GetUserInfo::Command_GetUserInfo(const QString &_userName) Command_GetUserInfo::Command_GetUserInfo(const QString &_userName)
: Command("get_user_info") : Command("get_user_info")
{ {
@ -255,6 +260,11 @@ Command_RevealCards::Command_RevealCards(int _gameId, const QString &_zoneName,
insertItem(new SerializableItem_Int("card_id", _cardId)); insertItem(new SerializableItem_Int("card_id", _cardId));
insertItem(new SerializableItem_Int("player_id", _playerId)); insertItem(new SerializableItem_Int("player_id", _playerId));
} }
Event_ConnectionStateChanged::Event_ConnectionStateChanged(int _playerId, bool _connected)
: GameEvent("connection_state_changed", _playerId)
{
insertItem(new SerializableItem_Bool("connected", _connected));
}
Event_Say::Event_Say(int _playerId, const QString &_message) Event_Say::Event_Say(int _playerId, const QString &_message)
: GameEvent("say", _playerId) : GameEvent("say", _playerId)
{ {
@ -398,6 +408,12 @@ Event_ServerMessage::Event_ServerMessage(const QString &_message)
{ {
insertItem(new SerializableItem_String("message", _message)); insertItem(new SerializableItem_String("message", _message));
} }
Event_ServerShutdown::Event_ServerShutdown(const QString &_reason, int _minutes)
: GenericEvent("server_shutdown")
{
insertItem(new SerializableItem_String("reason", _reason));
insertItem(new SerializableItem_Int("minutes", _minutes));
}
Event_ConnectionClosed::Event_ConnectionClosed(const QString &_reason) Event_ConnectionClosed::Event_ConnectionClosed(const QString &_reason)
: GenericEvent("connection_closed") : GenericEvent("connection_closed")
{ {
@ -467,11 +483,18 @@ Command_UpdateServerMessage::Command_UpdateServerMessage()
: AdminCommand("update_server_message") : AdminCommand("update_server_message")
{ {
} }
Command_BanFromServer::Command_BanFromServer(const QString &_userName, int _minutes) Command_ShutdownServer::Command_ShutdownServer(const QString &_reason, int _minutes)
: AdminCommand("ban_from_server") : AdminCommand("shutdown_server")
{
insertItem(new SerializableItem_String("reason", _reason));
insertItem(new SerializableItem_Int("minutes", _minutes));
}
Command_BanFromServer::Command_BanFromServer(const QString &_userName, int _minutes, const QString &_reason)
: ModeratorCommand("ban_from_server")
{ {
insertItem(new SerializableItem_String("user_name", _userName)); insertItem(new SerializableItem_String("user_name", _userName));
insertItem(new SerializableItem_Int("minutes", _minutes)); insertItem(new SerializableItem_Int("minutes", _minutes));
insertItem(new SerializableItem_String("reason", _reason));
} }
void ProtocolItem::initializeHashAuto() void ProtocolItem::initializeHashAuto()
{ {
@ -479,6 +502,7 @@ void ProtocolItem::initializeHashAuto()
itemNameHash.insert("cmdlogin", Command_Login::newItem); itemNameHash.insert("cmdlogin", Command_Login::newItem);
itemNameHash.insert("cmdmessage", Command_Message::newItem); itemNameHash.insert("cmdmessage", Command_Message::newItem);
itemNameHash.insert("cmdlist_users", Command_ListUsers::newItem); itemNameHash.insert("cmdlist_users", Command_ListUsers::newItem);
itemNameHash.insert("cmdget_games_of_user", Command_GetGamesOfUser::newItem);
itemNameHash.insert("cmdget_user_info", Command_GetUserInfo::newItem); itemNameHash.insert("cmdget_user_info", Command_GetUserInfo::newItem);
itemNameHash.insert("cmdadd_to_list", Command_AddToList::newItem); itemNameHash.insert("cmdadd_to_list", Command_AddToList::newItem);
itemNameHash.insert("cmdremove_from_list", Command_RemoveFromList::newItem); itemNameHash.insert("cmdremove_from_list", Command_RemoveFromList::newItem);
@ -519,6 +543,7 @@ void ProtocolItem::initializeHashAuto()
itemNameHash.insert("cmddump_zone", Command_DumpZone::newItem); itemNameHash.insert("cmddump_zone", Command_DumpZone::newItem);
itemNameHash.insert("cmdstop_dump_zone", Command_StopDumpZone::newItem); itemNameHash.insert("cmdstop_dump_zone", Command_StopDumpZone::newItem);
itemNameHash.insert("cmdreveal_cards", Command_RevealCards::newItem); itemNameHash.insert("cmdreveal_cards", Command_RevealCards::newItem);
itemNameHash.insert("game_eventconnection_state_changed", Event_ConnectionStateChanged::newItem);
itemNameHash.insert("game_eventsay", Event_Say::newItem); itemNameHash.insert("game_eventsay", Event_Say::newItem);
itemNameHash.insert("game_eventleave", Event_Leave::newItem); itemNameHash.insert("game_eventleave", Event_Leave::newItem);
itemNameHash.insert("game_eventgame_closed", Event_GameClosed::newItem); itemNameHash.insert("game_eventgame_closed", Event_GameClosed::newItem);
@ -541,6 +566,7 @@ void ProtocolItem::initializeHashAuto()
itemNameHash.insert("game_eventstop_dump_zone", Event_StopDumpZone::newItem); itemNameHash.insert("game_eventstop_dump_zone", Event_StopDumpZone::newItem);
itemNameHash.insert("generic_eventremove_from_list", Event_RemoveFromList::newItem); itemNameHash.insert("generic_eventremove_from_list", Event_RemoveFromList::newItem);
itemNameHash.insert("generic_eventserver_message", Event_ServerMessage::newItem); itemNameHash.insert("generic_eventserver_message", Event_ServerMessage::newItem);
itemNameHash.insert("generic_eventserver_shutdown", Event_ServerShutdown::newItem);
itemNameHash.insert("generic_eventconnection_closed", Event_ConnectionClosed::newItem); itemNameHash.insert("generic_eventconnection_closed", Event_ConnectionClosed::newItem);
itemNameHash.insert("generic_eventmessage", Event_Message::newItem); itemNameHash.insert("generic_eventmessage", Event_Message::newItem);
itemNameHash.insert("generic_eventgame_joined", Event_GameJoined::newItem); itemNameHash.insert("generic_eventgame_joined", Event_GameJoined::newItem);
@ -554,5 +580,6 @@ void ProtocolItem::initializeHashAuto()
itemNameHash.insert("game_event_contextmove_card", Context_MoveCard::newItem); itemNameHash.insert("game_event_contextmove_card", Context_MoveCard::newItem);
itemNameHash.insert("game_event_contextmulligan", Context_Mulligan::newItem); itemNameHash.insert("game_event_contextmulligan", Context_Mulligan::newItem);
itemNameHash.insert("cmdupdate_server_message", Command_UpdateServerMessage::newItem); itemNameHash.insert("cmdupdate_server_message", Command_UpdateServerMessage::newItem);
itemNameHash.insert("cmdshutdown_server", Command_ShutdownServer::newItem);
itemNameHash.insert("cmdban_from_server", Command_BanFromServer::newItem); itemNameHash.insert("cmdban_from_server", Command_BanFromServer::newItem);
} }

View file

@ -2,6 +2,7 @@
0:login:s,username:s,password 0:login:s,username:s,password
0:message:s,user_name:s,text 0:message:s,user_name:s,text
0:list_users 0:list_users
0:get_games_of_user:s,user_name
0:get_user_info:s,user_name 0:get_user_info:s,user_name
0:add_to_list:s,list:s,user_name 0:add_to_list:s,list:s,user_name
0:remove_from_list:s,list:s,user_name 0:remove_from_list:s,list:s,user_name
@ -42,6 +43,7 @@
2:dump_zone:i,player_id:s,zone_name:i,number_cards 2:dump_zone:i,player_id:s,zone_name:i,number_cards
2:stop_dump_zone:i,player_id:s,zone_name 2:stop_dump_zone:i,player_id:s,zone_name
2:reveal_cards:s,zone_name:i,card_id:i,player_id 2:reveal_cards:s,zone_name:i,card_id:i,player_id
3:connection_state_changed:b,connected
3:say:s,message 3:say:s,message
3:leave 3:leave
3:game_closed 3:game_closed
@ -64,6 +66,7 @@
3:stop_dump_zone:i,zone_owner_id:s,zone 3:stop_dump_zone:i,zone_owner_id:s,zone
4:remove_from_list:s,list:s,user_name 4:remove_from_list:s,list:s,user_name
4:server_message:s,message 4:server_message:s,message
4:server_shutdown:s,reason:i,minutes
4:connection_closed:s,reason 4:connection_closed:s,reason
4:message:s,sender_name:s,receiver_name:s,text 4:message:s,sender_name:s,receiver_name:s,text
4:game_joined:i,game_id:s,game_description:i,player_id:b,spectator:b,spectators_can_talk:b,spectators_see_everything:b,resuming 4:game_joined:i,game_id:s,game_description:i,player_id:b,spectator:b,spectators_can_talk:b,spectators_see_everything:b,resuming
@ -77,4 +80,5 @@
6:move_card 6:move_card
6:mulligan:i,number 6:mulligan:i,number
7:update_server_message 7:update_server_message
7:ban_from_server:s,user_name:i,minutes 7:shutdown_server:s,reason:i,minutes
8:ban_from_server:s,user_name:i,minutes:s,reason

View file

@ -35,6 +35,14 @@ public:
static SerializableItem *newItem() { return new Command_ListUsers; } static SerializableItem *newItem() { return new Command_ListUsers; }
int getItemId() const { return ItemId_Command_ListUsers; } int getItemId() const { return ItemId_Command_ListUsers; }
}; };
class Command_GetGamesOfUser : public Command {
Q_OBJECT
public:
Command_GetGamesOfUser(const QString &_userName = QString());
QString getUserName() const { return static_cast<SerializableItem_String *>(itemMap.value("user_name"))->getData(); };
static SerializableItem *newItem() { return new Command_GetGamesOfUser; }
int getItemId() const { return ItemId_Command_GetGamesOfUser; }
};
class Command_GetUserInfo : public Command { class Command_GetUserInfo : public Command {
Q_OBJECT Q_OBJECT
public: public:
@ -389,6 +397,14 @@ public:
static SerializableItem *newItem() { return new Command_RevealCards; } static SerializableItem *newItem() { return new Command_RevealCards; }
int getItemId() const { return ItemId_Command_RevealCards; } int getItemId() const { return ItemId_Command_RevealCards; }
}; };
class Event_ConnectionStateChanged : public GameEvent {
Q_OBJECT
public:
Event_ConnectionStateChanged(int _playerId = -1, bool _connected = false);
bool getConnected() const { return static_cast<SerializableItem_Bool *>(itemMap.value("connected"))->getData(); };
static SerializableItem *newItem() { return new Event_ConnectionStateChanged; }
int getItemId() const { return ItemId_Event_ConnectionStateChanged; }
};
class Event_Say : public GameEvent { class Event_Say : public GameEvent {
Q_OBJECT Q_OBJECT
public: public:
@ -598,6 +614,15 @@ public:
static SerializableItem *newItem() { return new Event_ServerMessage; } static SerializableItem *newItem() { return new Event_ServerMessage; }
int getItemId() const { return ItemId_Event_ServerMessage; } int getItemId() const { return ItemId_Event_ServerMessage; }
}; };
class Event_ServerShutdown : public GenericEvent {
Q_OBJECT
public:
Event_ServerShutdown(const QString &_reason = QString(), int _minutes = -1);
QString getReason() const { return static_cast<SerializableItem_String *>(itemMap.value("reason"))->getData(); };
int getMinutes() const { return static_cast<SerializableItem_Int *>(itemMap.value("minutes"))->getData(); };
static SerializableItem *newItem() { return new Event_ServerShutdown; }
int getItemId() const { return ItemId_Event_ServerShutdown; }
};
class Event_ConnectionClosed : public GenericEvent { class Event_ConnectionClosed : public GenericEvent {
Q_OBJECT Q_OBJECT
public: public:
@ -706,12 +731,22 @@ public:
static SerializableItem *newItem() { return new Command_UpdateServerMessage; } static SerializableItem *newItem() { return new Command_UpdateServerMessage; }
int getItemId() const { return ItemId_Command_UpdateServerMessage; } int getItemId() const { return ItemId_Command_UpdateServerMessage; }
}; };
class Command_BanFromServer : public AdminCommand { class Command_ShutdownServer : public AdminCommand {
Q_OBJECT Q_OBJECT
public: public:
Command_BanFromServer(const QString &_userName = QString(), int _minutes = -1); Command_ShutdownServer(const QString &_reason = QString(), int _minutes = -1);
QString getReason() const { return static_cast<SerializableItem_String *>(itemMap.value("reason"))->getData(); };
int getMinutes() const { return static_cast<SerializableItem_Int *>(itemMap.value("minutes"))->getData(); };
static SerializableItem *newItem() { return new Command_ShutdownServer; }
int getItemId() const { return ItemId_Command_ShutdownServer; }
};
class Command_BanFromServer : public ModeratorCommand {
Q_OBJECT
public:
Command_BanFromServer(const QString &_userName = QString(), int _minutes = -1, const QString &_reason = QString());
QString getUserName() const { return static_cast<SerializableItem_String *>(itemMap.value("user_name"))->getData(); }; QString getUserName() const { return static_cast<SerializableItem_String *>(itemMap.value("user_name"))->getData(); };
int getMinutes() const { return static_cast<SerializableItem_Int *>(itemMap.value("minutes"))->getData(); }; int getMinutes() const { return static_cast<SerializableItem_Int *>(itemMap.value("minutes"))->getData(); };
QString getReason() const { return static_cast<SerializableItem_String *>(itemMap.value("reason"))->getData(); };
static SerializableItem *newItem() { return new Command_BanFromServer; } static SerializableItem *newItem() { return new Command_BanFromServer; }
int getItemId() const { return ItemId_Command_BanFromServer; } int getItemId() const { return ItemId_Command_BanFromServer; }
}; };

View file

@ -80,6 +80,13 @@ while (<file>) {
$parentConstructorCall = "$baseClass(\"$name1\")"; $parentConstructorCall = "$baseClass(\"$name1\")";
$constructorParamsH = ""; $constructorParamsH = "";
$constructorParamsCpp = ""; $constructorParamsCpp = "";
} elsif ($type == 8) {
$type = 'cmd';
$namePrefix = 'Command';
$baseClass = 'ModeratorCommand';
$parentConstructorCall = "$baseClass(\"$name1\")";
$constructorParamsH = "";
$constructorParamsCpp = "";
} }
$className = $namePrefix . '_' . $name2; $className = $namePrefix . '_' . $name2;
$itemEnum .= "ItemId_$className = " . ++$itemId . ",\n"; $itemEnum .= "ItemId_$className = " . ++$itemId . ",\n";

View file

@ -1,7 +1,8 @@
#include "serializable_item.h" #include "serializable_item.h"
#include <QXmlStreamReader> #include <QXmlStreamReader>
#include <QXmlStreamWriter> #include <QXmlStreamWriter>
#include <QDebug> #include <QBuffer>
QHash<QString, SerializableItem::NewItemFunction> SerializableItem::itemNameHash; QHash<QString, SerializableItem::NewItemFunction> SerializableItem::itemNameHash;
SerializableItem *SerializableItem::getNewItem(const QString &name) SerializableItem *SerializableItem::getNewItem(const QString &name)
@ -16,6 +17,32 @@ void SerializableItem::registerSerializableItem(const QString &name, NewItemFunc
itemNameHash.insert(name, func); itemNameHash.insert(name, func);
} }
bool SerializableItem::read(QXmlStreamReader *xml)
{
if (!compressed)
return readElement(xml);
if (xml->isEndElement() && (xml->name() == itemType)) {
QByteArray uncompressedData = "<d>" + qUncompress(QByteArray::fromBase64(compressedData)) + "</d>";
compressedData.clear();
QBuffer compressedBuffer(&uncompressedData);
compressedBuffer.open(QIODevice::ReadOnly);
QXmlStreamReader *xml2 = new QXmlStreamReader(&compressedBuffer);
while (!xml2->atEnd()) {
xml2->readNext();
if (xml2->name() == "d")
continue;
readElement(xml2);
}
delete xml2;
compressedBuffer.close();
return readElement(xml);
} else {
compressedData.append(xml->text().toString());
return false;
}
}
bool SerializableItem::readElement(QXmlStreamReader *xml) bool SerializableItem::readElement(QXmlStreamReader *xml)
{ {
if (xml->isEndElement() && (xml->name() == itemType)) if (xml->isEndElement() && (xml->name() == itemType))
@ -31,7 +58,19 @@ void SerializableItem::write(QXmlStreamWriter *xml)
xml->writeStartElement(itemType); xml->writeStartElement(itemType);
if (!itemSubType.isEmpty()) if (!itemSubType.isEmpty())
xml->writeAttribute("type", itemSubType); xml->writeAttribute("type", itemSubType);
writeElement(xml); if (compressed) {
xml->writeAttribute("comp", "1");
QBuffer compressBuffer;
compressBuffer.open(QIODevice::WriteOnly);
QXmlStreamWriter *xml2 = new QXmlStreamWriter(&compressBuffer);
writeElement(xml2);
delete xml2;
compressBuffer.close();
xml->writeCharacters(qCompress(compressBuffer.data()).toBase64());
} else
writeElement(xml);
xml->writeEndElement(); xml->writeEndElement();
} }
@ -47,7 +86,7 @@ SerializableItem_Map::~SerializableItem_Map()
bool SerializableItem_Map::readElement(QXmlStreamReader *xml) bool SerializableItem_Map::readElement(QXmlStreamReader *xml)
{ {
if (currentItem) { if (currentItem) {
if (currentItem->readElement(xml)) if (currentItem->read(xml))
currentItem = 0; currentItem = 0;
return false; return false;
} else if (firstItem) } else if (firstItem)
@ -57,6 +96,7 @@ bool SerializableItem_Map::readElement(QXmlStreamReader *xml)
else if (xml->isStartElement()) { else if (xml->isStartElement()) {
QString childName = xml->name().toString(); QString childName = xml->name().toString();
QString childSubType = xml->attributes().value("type").toString(); QString childSubType = xml->attributes().value("type").toString();
bool childCompressed = xml->attributes().value("comp").toString().toInt() == 1;
currentItem = itemMap.value(childName); currentItem = itemMap.value(childName);
if (!currentItem) { if (!currentItem) {
currentItem = getNewItem(childName + childSubType); currentItem = getNewItem(childName + childSubType);
@ -64,7 +104,8 @@ bool SerializableItem_Map::readElement(QXmlStreamReader *xml)
if (!currentItem) if (!currentItem)
currentItem = new SerializableItem_Invalid(childName); currentItem = new SerializableItem_Invalid(childName);
} }
if (currentItem->readElement(xml)) currentItem->setCompressed(childCompressed);
if (currentItem->read(xml))
currentItem = 0; currentItem = 0;
} }
return SerializableItem::readElement(xml); return SerializableItem::readElement(xml);

View file

@ -15,6 +15,10 @@ class QXmlStreamWriter;
class SerializableItem : public QObject { class SerializableItem : public QObject {
Q_OBJECT Q_OBJECT
private:
bool compressed;
QByteArray compressedData;
QXmlStreamReader *compressedReader;
protected: protected:
typedef SerializableItem *(*NewItemFunction)(); typedef SerializableItem *(*NewItemFunction)();
static QHash<QString, NewItemFunction> itemNameHash; static QHash<QString, NewItemFunction> itemNameHash;
@ -23,7 +27,7 @@ protected:
bool firstItem; bool firstItem;
public: public:
SerializableItem(const QString &_itemType, const QString &_itemSubType = QString()) SerializableItem(const QString &_itemType, const QString &_itemSubType = QString())
: QObject(), itemType(_itemType), itemSubType(_itemSubType), firstItem(true) { } : QObject(), compressed(false), itemType(_itemType), itemSubType(_itemSubType), firstItem(true) { }
static void registerSerializableItem(const QString &name, NewItemFunction func); static void registerSerializableItem(const QString &name, NewItemFunction func);
static SerializableItem *getNewItem(const QString &name); static SerializableItem *getNewItem(const QString &name);
const QString &getItemType() const { return itemType; } const QString &getItemType() const { return itemType; }
@ -31,6 +35,8 @@ public:
virtual bool readElement(QXmlStreamReader *xml); virtual bool readElement(QXmlStreamReader *xml);
virtual void writeElement(QXmlStreamWriter *xml) = 0; virtual void writeElement(QXmlStreamWriter *xml) = 0;
virtual bool isEmpty() const = 0; virtual bool isEmpty() const = 0;
void setCompressed(bool _compressed) { compressed = _compressed; }
bool read(QXmlStreamReader *xml);
void write(QXmlStreamWriter *xml); void write(QXmlStreamWriter *xml);
}; };

View file

@ -23,6 +23,7 @@
#include "server_room.h" #include "server_room.h"
#include "server_protocolhandler.h" #include "server_protocolhandler.h"
#include "protocol_datastructures.h" #include "protocol_datastructures.h"
#include <QCoreApplication>
#include <QDebug> #include <QDebug>
Server::Server(QObject *parent) Server::Server(QObject *parent)
@ -51,7 +52,7 @@ AuthenticationResult Server::loginUser(Server_ProtocolHandler *session, QString
QMutexLocker locker(&serverMutex); QMutexLocker locker(&serverMutex);
if (name.size() > 35) if (name.size() > 35)
name = name.left(35); name = name.left(35);
AuthenticationResult authState = checkUserPassword(name, password); AuthenticationResult authState = checkUserPassword(session, name, password);
if (authState == PasswordWrong) if (authState == PasswordWrong)
return authState; return authState;
@ -73,6 +74,7 @@ AuthenticationResult Server::loginUser(Server_ProtocolHandler *session, QString
session->setUserInfo(data); session->setUserInfo(data);
users.insert(name, session); users.insert(name, session);
qDebug() << "Server::loginUser: name=" << name;
Event_UserJoined *event = new Event_UserJoined(new ServerInfo_User(data, false)); Event_UserJoined *event = new Event_UserJoined(new ServerInfo_User(data, false));
for (int i = 0; i < clients.size(); ++i) for (int i = 0; i < clients.size(); ++i)
@ -102,8 +104,9 @@ void Server::removeClient(Server_ProtocolHandler *client)
delete event; delete event;
users.remove(data->getName()); users.remove(data->getName());
qDebug() << "Server::removeClient: name=" << data->getName();
} }
qDebug() << "Server::removeClient: " << clients.size() << "clients; " << users.size() << "users left"; qDebug() << "Server::removeClient:" << clients.size() << "clients; " << users.size() << "users left";
} }
void Server::broadcastRoomUpdate() void Server::broadcastRoomUpdate()

View file

@ -40,10 +40,10 @@ public:
virtual int getMaxMessageCountPerInterval() const { return 0; } virtual int getMaxMessageCountPerInterval() const { return 0; }
virtual int getMaxMessageSizePerInterval() const { return 0; } virtual int getMaxMessageSizePerInterval() const { return 0; }
virtual int getMaxGamesPerUser() const { return 0; } virtual int getMaxGamesPerUser() const { return 0; }
virtual bool getThreaded() const = 0;
virtual QMap<QString, ServerInfo_User *> getBuddyList(const QString &name) = 0; virtual QMap<QString, ServerInfo_User *> getBuddyList(const QString &name) = 0;
virtual QMap<QString, ServerInfo_User *> getIgnoreList(const QString &name) = 0; virtual QMap<QString, ServerInfo_User *> getIgnoreList(const QString &name) = 0;
virtual bool getUserBanned(Server_ProtocolHandler * /*client*/, const QString & /*userName*/) const { return false; }
protected: protected:
void prepareDestroy(); void prepareDestroy();
QList<Server_ProtocolHandler *> clients; QList<Server_ProtocolHandler *> clients;
@ -51,7 +51,7 @@ protected:
QMap<int, Server_Room *> rooms; QMap<int, Server_Room *> rooms;
virtual bool userExists(const QString &user) = 0; virtual bool userExists(const QString &user) = 0;
virtual AuthenticationResult checkUserPassword(const QString &user, const QString &password) = 0; virtual AuthenticationResult checkUserPassword(Server_ProtocolHandler *handler, const QString &user, const QString &password) = 0;
virtual ServerInfo_User *getUserData(const QString &name) = 0; virtual ServerInfo_User *getUserData(const QString &name) = 0;
int getUsersCount() const; int getUsersCount() const;
int getGamesCount() const; int getGamesCount() const;

View file

@ -19,8 +19,8 @@
***************************************************************************/ ***************************************************************************/
#include "server_card.h" #include "server_card.h"
Server_Card::Server_Card(QString _name, int _id, int _coord_x, int _coord_y) Server_Card::Server_Card(QString _name, int _id, int _coord_x, int _coord_y, Server_CardZone *_zone)
: id(_id), coord_x(_coord_x), coord_y(_coord_y), name(_name), tapped(false), attacking(false), facedown(false), color(QString()), power(-1), toughness(-1), annotation(QString()), destroyOnZoneChange(false), doesntUntap(false), parentCard(0) : zone(_zone), id(_id), coord_x(_coord_x), coord_y(_coord_y), name(_name), tapped(false), attacking(false), facedown(false), color(QString()), power(-1), toughness(-1), annotation(QString()), destroyOnZoneChange(false), doesntUntap(false), parentCard(0)
{ {
} }
@ -39,8 +39,8 @@ void Server_Card::resetState()
counters.clear(); counters.clear();
setTapped(false); setTapped(false);
setAttacking(false); setAttacking(false);
power = 0; power = -1;
toughness = 0; toughness = -1;
setAnnotation(QString()); setAnnotation(QString());
setDoesntUntap(false); setDoesntUntap(false);
} }

View file

@ -46,7 +46,7 @@ private:
Server_Card *parentCard; Server_Card *parentCard;
QList<Server_Card *> attachedCards; QList<Server_Card *> attachedCards;
public: public:
Server_Card(QString _name, int _id, int _coord_x, int _coord_y); Server_Card(QString _name, int _id, int _coord_x, int _coord_y, Server_CardZone *_zone = 0);
~Server_Card(); ~Server_Card();
Server_CardZone *getZone() const { return zone; } Server_CardZone *getZone() const { return zone; }

View file

@ -52,10 +52,12 @@ int Server_CardZone::removeCard(Server_Card *card)
int index = cards.indexOf(card); int index = cards.indexOf(card);
cards.removeAt(index); cards.removeAt(index);
card->setZone(0);
return index; return index;
} }
Server_Card *Server_CardZone::getCard(int id, bool remove, int *position) Server_Card *Server_CardZone::getCard(int id, int *position)
{ {
QMutexLocker locker(&player->getGame()->gameMutex); QMutexLocker locker(&player->getGame()->gameMutex);
@ -65,10 +67,6 @@ Server_Card *Server_CardZone::getCard(int id, bool remove, int *position)
while (CardIterator.hasNext()) { while (CardIterator.hasNext()) {
Server_Card *tmp = CardIterator.next(); Server_Card *tmp = CardIterator.next();
if (tmp->getId() == id) { if (tmp->getId() == id) {
if (remove) {
cards.removeAt(i);
tmp->setZone(0);
}
if (position) if (position)
*position = i; *position = i;
return tmp; return tmp;
@ -80,10 +78,6 @@ Server_Card *Server_CardZone::getCard(int id, bool remove, int *position)
if ((id >= cards.size()) || (id < 0)) if ((id >= cards.size()) || (id < 0))
return NULL; return NULL;
Server_Card *tmp = cards[id]; Server_Card *tmp = cards[id];
if (remove) {
cards.removeAt(id);
tmp->setZone(0);
}
if (position) if (position)
*position = id; *position = id;
return tmp; return tmp;

Some files were not shown because too many files have changed in this diff Show more