| summaryrefslogtreecommitdiff | 
diff options
25 files changed, 1755 insertions, 124 deletions
| diff --git a/src/asset/www/svg/damage_type/abort.svg b/src/asset/www/svg/damage_type/abort.svg new file mode 100644 index 0000000..a60628d --- /dev/null +++ b/src/asset/www/svg/damage_type/abort.svg @@ -0,0 +1,75 @@ +<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" +   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" +   width="32mm" +   height="32mm" +   viewBox="0 0 32 32" +   version="1.1" +   id="svg8" +   inkscape:version="0.92.4 5da689c313, 2019-01-14" +   sodipodi:docname="abort.svg"> +  <defs +     id="defs2" /> +  <sodipodi:namedview +     id="base" +     pagecolor="#ffffff" +     bordercolor="#666666" +     borderopacity="1.0" +     inkscape:pageopacity="0.0" +     inkscape:pageshadow="2" +     inkscape:zoom="5.6568542" +     inkscape:cx="79.366109" +     inkscape:cy="53.777319" +     inkscape:document-units="mm" +     inkscape:current-layer="g829" +     showgrid="false" +     inkscape:window-width="1908" +     inkscape:window-height="1078" +     inkscape:window-x="11" +     inkscape:window-y="1" +     inkscape:window-maximized="0" +     inkscape:pagecheckerboard="true" +     inkscape:snap-global="false" /> +  <metadata +     id="metadata5"> +    <rdf:RDF> +      <cc:Work +         rdf:about=""> +        <dc:format>image/svg+xml</dc:format> +        <dc:type +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> +        <dc:title></dc:title> +      </cc:Work> +    </rdf:RDF> +  </metadata> +  <g +     inkscape:groupmode="layer" +     id="layer2" +     inkscape:label="Layer 2" +     style="display:inline" /> +  <g +     inkscape:label="Layer 1" +     inkscape:groupmode="layer" +     id="layer1" +     transform="translate(0,-265)" +     style="display:inline"> +    <g +       id="g829" +       transform="rotate(45,13.546346,299.58838)" +       style="stroke:#483e37;stroke-opacity:1;fill:#e9ddaf;fill-opacity:1;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;paint-order:stroke fill markers"> +      <path +         style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e9ddaf;fill-opacity:1;fill-rule:evenodd;stroke:#483e37;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" +         d="m -13.362707,287.89595 a 1.7735781,1.7735781 0 0 0 1.56128,0.54261 L 0.06025368,286.81895 -1.5602163,298.6815 a 1.7735781,1.7735781 0 0 0 -0.016,0.35381 1.7735781,1.7735781 0 0 0 3.53038,0.12702 l 1.75266,-12.84062 12.8410493,-1.75309 a 1.7737541,1.7737541 0 1 0 -0.4804,-3.51483 l -11.8625393,1.62047 1.61917,-11.86125 a 1.7735781,1.7735781 0 1 0 -3.51181,-0.47997 l -1.75393002,12.83932 -12.83975068,1.75439 a 1.7735781,1.7735781 0 0 0 -1.55653,1.84943 1.7735781,1.7735781 0 0 0 0.47521,1.11977 z" +         id="path1060" +         inkscape:connector-curvature="0" /> +    </g> +  </g> +</svg> diff --git a/src/asset/www/svg/damage_type/attack.svg b/src/asset/www/svg/damage_type/attack.svg new file mode 100644 index 0000000..003407c --- /dev/null +++ b/src/asset/www/svg/damage_type/attack.svg @@ -0,0 +1,75 @@ +<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" +   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" +   width="32mm" +   height="32mm" +   viewBox="0 0 32 32" +   version="1.1" +   id="svg8" +   inkscape:version="0.92.4 5da689c313, 2019-01-14" +   sodipodi:docname="attack.svg"> +  <defs +     id="defs2" /> +  <sodipodi:namedview +     id="base" +     pagecolor="#ffffff" +     bordercolor="#666666" +     borderopacity="1.0" +     inkscape:pageopacity="0.0" +     inkscape:pageshadow="2" +     inkscape:zoom="5.6568542" +     inkscape:cx="79.366109" +     inkscape:cy="53.777319" +     inkscape:document-units="mm" +     inkscape:current-layer="g829" +     showgrid="false" +     inkscape:window-width="1908" +     inkscape:window-height="1078" +     inkscape:window-x="11" +     inkscape:window-y="1" +     inkscape:window-maximized="0" +     inkscape:pagecheckerboard="true" +     inkscape:snap-global="false" /> +  <metadata +     id="metadata5"> +    <rdf:RDF> +      <cc:Work +         rdf:about=""> +        <dc:format>image/svg+xml</dc:format> +        <dc:type +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> +        <dc:title></dc:title> +      </cc:Work> +    </rdf:RDF> +  </metadata> +  <g +     inkscape:groupmode="layer" +     id="layer2" +     inkscape:label="Layer 2" +     style="display:inline" /> +  <g +     inkscape:label="Layer 1" +     inkscape:groupmode="layer" +     id="layer1" +     transform="translate(0,-265)" +     style="display:inline"> +    <g +       id="g829" +       transform="rotate(45,13.546346,299.58838)" +       style="stroke:#483e37;stroke-opacity:1;fill:#e9ddaf;fill-opacity:1;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;paint-order:stroke fill markers"> +      <path +         style="fill:#e9ddaf;fill-opacity:1;stroke:#483e37;stroke-width:0.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" +         d="m 2.1373716,266.22556 c -1.0082739,7.39401 -3.5267984,13.35008 -3.02506678,22.18206 -0.40722122,1.79401 -2.74550642,1.62171 -5.04113742,1.97141 1.9799477,0.74807 3.1089118,2.91493 6.04965312,2.06169 -0.4823705,1.72399 -0.5931491,4.19118 0,8.06621 -0.7484427,1.21223 2.01655088,1.00803 2.01655088,1.00803 0,0 2.7649931,0.2042 2.0165511,-1.00803 0.5931489,-3.87503 0.4823703,-6.34222 -2e-7,-8.06621 2.9407413,0.85324 4.0697056,-1.31362 6.0496537,-2.06169 -2.2956317,-0.3497 -4.6339165,-0.1774 -5.041138,-1.97141 0.5017318,-8.83198 -2.0167928,-14.78805 -3.0250664,-22.18206 z" +         id="path823" +         inkscape:connector-curvature="0" /> +    </g> +  </g> +</svg> diff --git a/src/asset/www/svg/damage_type/endturn.svg b/src/asset/www/svg/damage_type/endturn.svg new file mode 100644 index 0000000..738f271 --- /dev/null +++ b/src/asset/www/svg/damage_type/endturn.svg @@ -0,0 +1,75 @@ +<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" +   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" +   width="32mm" +   height="32mm" +   viewBox="0 0 32 32" +   version="1.1" +   id="svg8" +   inkscape:version="0.92.4 5da689c313, 2019-01-14" +   sodipodi:docname="endturn.svg"> +  <defs +     id="defs2" /> +  <sodipodi:namedview +     id="base" +     pagecolor="#ffffff" +     bordercolor="#666666" +     borderopacity="1.0" +     inkscape:pageopacity="0.0" +     inkscape:pageshadow="2" +     inkscape:zoom="5.6568542" +     inkscape:cx="79.366109" +     inkscape:cy="53.777319" +     inkscape:document-units="mm" +     inkscape:current-layer="g829" +     showgrid="false" +     inkscape:window-width="1908" +     inkscape:window-height="1078" +     inkscape:window-x="11" +     inkscape:window-y="1" +     inkscape:window-maximized="0" +     inkscape:pagecheckerboard="true" +     inkscape:snap-global="false" /> +  <metadata +     id="metadata5"> +    <rdf:RDF> +      <cc:Work +         rdf:about=""> +        <dc:format>image/svg+xml</dc:format> +        <dc:type +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> +        <dc:title></dc:title> +      </cc:Work> +    </rdf:RDF> +  </metadata> +  <g +     inkscape:groupmode="layer" +     id="layer2" +     inkscape:label="Layer 2" +     style="display:inline" /> +  <g +     inkscape:label="Layer 1" +     inkscape:groupmode="layer" +     id="layer1" +     transform="translate(0,-265)" +     style="display:inline"> +    <g +       id="g829" +       transform="rotate(45,13.546346,299.58838)" +       style="stroke:#483e37;stroke-opacity:1;fill:#e9ddaf;fill-opacity:1;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;paint-order:stroke fill markers"> +      <path +         style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e9ddaf;fill-opacity:1;fill-rule:evenodd;stroke:#483e37;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" +         d="m 5.0019037,270.4961 a 2.0002,2.0002 0 0 0 -2.0878907,1.9082 l -1.0957031,18.45703 -5.7773437,0.99024 a 2.0002,2.0002 0 1 0 0.6738281,3.94141 l 7.34375,-1.25586 a 2.0002,2.0002 0 0 0 1.6582031,-1.85352 l 1.1914063,-20.04102 a 2.0002,2.0002 0 0 0 -1.90625,-2.14648 z" +         id="path1107" +         inkscape:connector-curvature="0" /> +    </g> +  </g> +</svg> diff --git a/src/asset/www/svg/damage_type/move.svg b/src/asset/www/svg/damage_type/move.svg new file mode 100644 index 0000000..2db3eb4 --- /dev/null +++ b/src/asset/www/svg/damage_type/move.svg @@ -0,0 +1,106 @@ +<?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="32mm" +   height="32mm" +   viewBox="0 0 32 32" +   version="1.1" +   id="svg8" +   inkscape:version="0.92.4 5da689c313, 2019-01-14" +   sodipodi:docname="move.svg"> +  <defs +     id="defs2" /> +  <sodipodi:namedview +     id="base" +     pagecolor="#ffffff" +     bordercolor="#666666" +     borderopacity="1.0" +     inkscape:pageopacity="0.0" +     inkscape:pageshadow="2" +     inkscape:zoom="3.959798" +     inkscape:cx="52.570979" +     inkscape:cy="25.817924" +     inkscape:document-units="mm" +     inkscape:current-layer="layer1" +     showgrid="false" +     inkscape:window-width="953" +     inkscape:window-height="1078" +     inkscape:window-x="11" +     inkscape:window-y="1" +     inkscape:window-maximized="0" +     inkscape:pagecheckerboard="true" /> +  <metadata +     id="metadata5"> +    <rdf:RDF> +      <cc:Work +         rdf:about=""> +        <dc:format>image/svg+xml</dc:format> +        <dc:type +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> +        <dc:title></dc:title> +      </cc:Work> +    </rdf:RDF> +  </metadata> +  <g +     inkscape:label="Layer 1" +     inkscape:groupmode="layer" +     id="layer1" +     transform="translate(0,-265)" +     style="display:inline"> +    <g +       id="g947" +       transform="matrix(1.4243746,1.4284288,-1.4284288,1.4243746,413.49171,-143.56743)" +       style="fill:#e9ddaf;fill-opacity:1;stroke:#483e37;stroke-opacity:1;stroke-width:0.24786358;stroke-miterlimit:4;stroke-dasharray:none;stroke-linejoin:round;stroke-linecap:square;paint-order:stroke fill markers"> +      <ellipse +         transform="rotate(-15.269049)" +         ry="2.3185458" +         rx="1.656104" +         cy="278.6438" +         cx="-71.76931" +         id="path815" +         style="opacity:1;fill:#e9ddaf;fill-opacity:1;stroke:#483e37;stroke-width:0.24786358;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" /> +      <use +         transform="rotate(7.6119885,30.142915,310.98335)" +         height="100%" +         width="100%" +         id="use817" +         xlink:href="#path815" +         y="0" +         x="0" +         style="fill:#e9ddaf;stroke:#483e37;stroke-width:0.24786358;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1;stroke-linejoin:round;stroke-linecap:square;paint-order:stroke fill markers" /> +      <use +         transform="rotate(15.442031,10.627428,301.73172)" +         height="100%" +         width="100%" +         id="use819" +         xlink:href="#use817" +         y="0" +         x="0" +         style="fill:#e9ddaf;stroke:#483e37;stroke-width:0.24786358;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1;stroke-linejoin:round;stroke-linecap:square;paint-order:stroke fill markers" /> +      <use +         transform="rotate(12.50903,-1.4011846,303.06723)" +         height="100%" +         width="100%" +         id="use821" +         xlink:href="#use819" +         y="0" +         x="0" +         style="fill:#e9ddaf;stroke:#483e37;stroke-width:0.24786358;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1;stroke-linejoin:round;stroke-linecap:square;paint-order:stroke fill markers" /> +      <path +         sodipodi:nodetypes="zzszzz" +         inkscape:connector-curvature="0" +         id="path823" +         d="m 6.0960684,290.24753 c -1.7586733,1.55556 -0.00849,5.24544 1.9137203,4.19544 1.9221629,-1.04998 2.0472473,-1.13722 3.6066263,4e-5 1.335557,0.974 3.77909,-2.55093 2.428952,-3.90107 -1.350138,-1.35014 -0.987055,-3.26954 -3.895296,-3.33636 -2.9082424,-0.0667 -2.2953294,1.48638 -4.0540026,3.04195 z" +         style="fill:#e9ddaf;stroke:#483e37;stroke-width:0.24786358;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1;paint-order:stroke fill markers" /> +    </g> +  </g> +</svg> diff --git a/src/asset/www/svg/damage_type/skill.svg b/src/asset/www/svg/damage_type/skill.svg new file mode 100644 index 0000000..15aa91d --- /dev/null +++ b/src/asset/www/svg/damage_type/skill.svg @@ -0,0 +1,154 @@ +<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" +   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" +   width="32mm" +   height="32mm" +   viewBox="0 0 32 32" +   version="1.1" +   id="svg8" +   inkscape:version="0.92.4 5da689c313, 2019-01-14" +   sodipodi:docname="skill.svg" +   inkscape:export-filename="/home/nsensfel/bitmap.png" +   inkscape:export-xdpi="100" +   inkscape:export-ydpi="100"> +  <defs +     id="defs2"> +    <marker +       inkscape:stockid="Arrow2Mend" +       orient="auto" +       refY="0.0" +       refX="0.0" +       id="marker1123" +       style="overflow:visible;" +       inkscape:isstock="true"> +      <path +         id="path1121" +         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1" +         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " +         transform="scale(0.6) rotate(180) translate(0,0)" /> +    </marker> +    <marker +       inkscape:stockid="Arrow2Send" +       orient="auto" +       refY="0.0" +       refX="0.0" +       id="Arrow2Send" +       style="overflow:visible;" +       inkscape:isstock="true"> +      <path +         id="path882" +         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1" +         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " +         transform="scale(0.3) rotate(180) translate(-2.3,0)" /> +    </marker> +    <marker +       inkscape:stockid="Arrow1Send" +       orient="auto" +       refY="0.0" +       refX="0.0" +       id="Arrow1Send" +       style="overflow:visible;" +       inkscape:isstock="true"> +      <path +         id="path864" +         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " +         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" +         transform="scale(0.2) rotate(180) translate(6,0)" /> +    </marker> +    <marker +       inkscape:stockid="Arrow2Mend" +       orient="auto" +       refY="0.0" +       refX="0.0" +       id="Arrow2Mend" +       style="overflow:visible;" +       inkscape:isstock="true"> +      <path +         id="path876" +         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1" +         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " +         transform="scale(0.6) rotate(180) translate(0,0)" /> +    </marker> +    <marker +       inkscape:stockid="Arrow2Lend" +       orient="auto" +       refY="0.0" +       refX="0.0" +       id="Arrow2Lend" +       style="overflow:visible;" +       inkscape:isstock="true"> +      <path +         id="path870" +         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1" +         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " +         transform="scale(1.1) rotate(180) translate(1,0)" /> +    </marker> +    <marker +       inkscape:stockid="Arrow1Lend" +       orient="auto" +       refY="0.0" +       refX="0.0" +       id="Arrow1Lend" +       style="overflow:visible;" +       inkscape:isstock="true"> +      <path +         id="path852" +         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " +         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" +         transform="scale(0.8) rotate(180) translate(12.5,0)" /> +    </marker> +  </defs> +  <sodipodi:namedview +     id="base" +     pagecolor="#ffffff" +     bordercolor="#666666" +     borderopacity="1.0" +     inkscape:pageopacity="0.0" +     inkscape:pageshadow="2" +     inkscape:zoom="5.6" +     inkscape:cx="61.300185" +     inkscape:cy="70.063765" +     inkscape:document-units="mm" +     inkscape:current-layer="layer1" +     showgrid="false" +     inkscape:window-width="1908" +     inkscape:window-height="1078" +     inkscape:window-x="11" +     inkscape:window-y="1" +     inkscape:window-maximized="0" +     inkscape:pagecheckerboard="true" +     inkscape:snap-global="false" /> +  <metadata +     id="metadata5"> +    <rdf:RDF> +      <cc:Work +         rdf:about=""> +        <dc:format>image/svg+xml</dc:format> +        <dc:type +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> +        <dc:title></dc:title> +      </cc:Work> +    </rdf:RDF> +  </metadata> +  <g +     inkscape:label="Layer 1" +     inkscape:groupmode="layer" +     id="layer1" +     transform="translate(0,-265)" +     style="display:inline"> +    <path +       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e9ddaf;fill-opacity:1;fill-rule:evenodd;stroke:#483e37;stroke-width:0.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" +       d="m 17.801705,268.85076 c -6.919987,0.11498 -12.8799161,5.82544 -12.7128907,12.88476 0.1477264,6.24366 5.3256287,11.61749 11.7128907,11.41016 5.56699,-0.1807 10.353656,-4.82899 10.103516,-10.54492 -0.213992,-4.88989 -4.333245,-9.09168 -9.378907,-8.79493 -4.21219,0.24774 -7.8299711,3.84174 -7.480468,8.21875 0.282166,3.53373 3.357368,6.57329 7.068359,6.16016 2.854421,-0.31777 5.323025,-2.88621 4.824219,-5.93555 -0.177925,-1.0877 -0.761933,-2.06646 -1.613281,-2.74218 -0.851349,-0.67573 -2.033508,-1.03481 -3.230469,-0.71485 -0.756588,0.20225 -1.402912,0.67097 -1.841797,1.3418 -0.438885,0.67083 -0.613326,1.68462 -0.123047,2.54102 0.353345,0.6172 0.760413,0.80546 1.341797,0.93164 0.290692,0.0631 0.679984,0.0928 1.091797,-0.14844 0.411813,-0.24122 0.652572,-0.7631 0.671875,-1.17383 0.0432,-0.70716 -0.642322,-1.23378 -1.314453,-1.00977 0.01165,-0.0188 -0.0083,-0.0233 0.0059,-0.0449 0.142025,-0.21708 0.466135,-0.44577 0.683594,-0.5039 0.545379,-0.14579 1.027411,-0.006 1.472656,0.34765 0.445245,0.3534 0.790304,0.93448 0.882812,1.5 0.294938,1.80303 -1.270834,3.42229 -3.074218,3.62305 -2.49713,0.27799 -4.653999,-1.85588 -4.851563,-4.33008 -0.254188,-3.18334 2.457924,-5.87945 5.603516,-6.06445 3.865598,-0.22735 7.096603,3.0671 7.263672,6.88476 0.198925,4.54562 -3.679647,8.31324 -8.169922,8.45899 -5.224248,0.16957 -9.528226,-4.29374 -9.6503909,-9.45703 -0.1396832,-5.902 4.9113779,-10.74289 10.7480059,-10.83987 1.392143,0.0373 1.356935,-2.08158 -0.0332,-1.99804 z" +       id="path1225" +       inkscape:connector-curvature="0" +       sodipodi:nodetypes="cssscsssccscccccccccsscsscccc" /> +  </g> +</svg> diff --git a/src/asset/www/svg/damage_type/skip.svg b/src/asset/www/svg/damage_type/skip.svg new file mode 100644 index 0000000..489ff31 --- /dev/null +++ b/src/asset/www/svg/damage_type/skip.svg @@ -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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" +   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" +   width="32mm" +   height="32mm" +   viewBox="0 0 32 32" +   version="1.1" +   id="svg8" +   inkscape:version="0.92.4 5da689c313, 2019-01-14" +   sodipodi:docname="skip.svg"> +  <defs +     id="defs2"> +    <marker +       inkscape:stockid="Arrow2Mend" +       orient="auto" +       refY="0.0" +       refX="0.0" +       id="marker1123" +       style="overflow:visible;" +       inkscape:isstock="true"> +      <path +         id="path1121" +         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1" +         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " +         transform="scale(0.6) rotate(180) translate(0,0)" /> +    </marker> +    <marker +       inkscape:stockid="Arrow2Send" +       orient="auto" +       refY="0.0" +       refX="0.0" +       id="Arrow2Send" +       style="overflow:visible;" +       inkscape:isstock="true"> +      <path +         id="path882" +         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1" +         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " +         transform="scale(0.3) rotate(180) translate(-2.3,0)" /> +    </marker> +    <marker +       inkscape:stockid="Arrow1Send" +       orient="auto" +       refY="0.0" +       refX="0.0" +       id="Arrow1Send" +       style="overflow:visible;" +       inkscape:isstock="true"> +      <path +         id="path864" +         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " +         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" +         transform="scale(0.2) rotate(180) translate(6,0)" /> +    </marker> +    <marker +       inkscape:stockid="Arrow2Mend" +       orient="auto" +       refY="0.0" +       refX="0.0" +       id="Arrow2Mend" +       style="overflow:visible;" +       inkscape:isstock="true"> +      <path +         id="path876" +         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1" +         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " +         transform="scale(0.6) rotate(180) translate(0,0)" /> +    </marker> +    <marker +       inkscape:stockid="Arrow2Lend" +       orient="auto" +       refY="0.0" +       refX="0.0" +       id="Arrow2Lend" +       style="overflow:visible;" +       inkscape:isstock="true"> +      <path +         id="path870" +         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1" +         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " +         transform="scale(1.1) rotate(180) translate(1,0)" /> +    </marker> +    <marker +       inkscape:stockid="Arrow1Lend" +       orient="auto" +       refY="0.0" +       refX="0.0" +       id="Arrow1Lend" +       style="overflow:visible;" +       inkscape:isstock="true"> +      <path +         id="path852" +         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " +         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" +         transform="scale(0.8) rotate(180) translate(12.5,0)" /> +    </marker> +  </defs> +  <sodipodi:namedview +     id="base" +     pagecolor="#ffffff" +     bordercolor="#666666" +     borderopacity="1.0" +     inkscape:pageopacity="0.0" +     inkscape:pageshadow="2" +     inkscape:zoom="3.959798" +     inkscape:cx="52.570979" +     inkscape:cy="25.817924" +     inkscape:document-units="mm" +     inkscape:current-layer="layer1" +     showgrid="false" +     inkscape:window-width="1908" +     inkscape:window-height="1078" +     inkscape:window-x="11" +     inkscape:window-y="1" +     inkscape:window-maximized="0" +     inkscape:pagecheckerboard="true" +     inkscape:snap-global="false" /> +  <metadata +     id="metadata5"> +    <rdf:RDF> +      <cc:Work +         rdf:about=""> +        <dc:format>image/svg+xml</dc:format> +        <dc:type +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> +        <dc:title></dc:title> +      </cc:Work> +    </rdf:RDF> +  </metadata> +  <g +     inkscape:label="Layer 1" +     inkscape:groupmode="layer" +     id="layer1" +     transform="translate(0,-265)" +     style="display:inline"> +    <g +       id="g1156" +       transform="translate(0.16833649,-4.5568563)"> +      <ellipse +         ry="3.3222518" +         rx="8.6503906" +         cy="290.05096" +         cx="16" +         id="path845" +         style="opacity:1;vector-effect:none;fill:#e9ddaf;fill-opacity:1;stroke:#483e37;stroke-width:0.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers" /> +      <path +         sodipodi:nodetypes="ccccccccccccccccccc" +         style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e9ddaf;fill-opacity:1;fill-rule:evenodd;stroke:#483e37;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" +         d="m 16.26552,277.74332 c -0.339326,0.006 1.29e-4,-6.6e-4 -1.015535,0.0351 -5.3967113,0.28741 -11.9029875,5.13871 -14.65609291,9.22597 l 0.58942831,0.39725 c 2.58202,-3.83326 9.2539916,-8.56812 14.5068646,-8.84788 4.515927,-0.60177 10.750157,2.19322 13.394037,6.62816 -0.395511,0.13828 -0.825746,0.18254 -1.257503,0.11194 l 2.570333,2.37591 c 0.0063,0.0127 0.0097,0.0222 0.01621,0.035 l 0.01398,-0.007 0.658591,0.6089 -0.107338,-0.89136 0.0014,-5.8e-4 c -7.99e-4,-8.2e-4 -0.0016,-0.003 -0.0022,-0.006 l -0.422705,-3.50976 c -0.210602,0.40845 -0.51705,0.74296 -0.879949,0.98604 -0.02483,-0.0269 -0.04189,-0.0503 -0.06823,-0.0779 -2.235266,-4.11288 -8.251317,-7.14683 -13.341206,-7.06497 z" +         id="path847" +         inkscape:connector-curvature="0" /> +    </g> +  </g> +</svg> diff --git a/src/asset/www/svg/damage_type/snow.svg b/src/asset/www/svg/damage_type/snow.svg new file mode 100644 index 0000000..00cb5fd --- /dev/null +++ b/src/asset/www/svg/damage_type/snow.svg @@ -0,0 +1,204 @@ +<?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="32mm" +   height="32mm" +   viewBox="0 0 32 32" +   version="1.1" +   id="svg8" +   inkscape:version="0.92.4 5da689c313, 2019-01-14" +   sodipodi:docname="snow.svg"> +  <defs +     id="defs2" /> +  <sodipodi:namedview +     id="base" +     pagecolor="#ffffff" +     bordercolor="#666666" +     borderopacity="1.0" +     inkscape:pageopacity="0.0" +     inkscape:pageshadow="2" +     inkscape:zoom="1.9799" +     inkscape:cx="-2.79719" +     inkscape:cy="-27.270931" +     inkscape:document-units="mm" +     inkscape:current-layer="layer1" +     showgrid="false" +     inkscape:window-width="1918" +     inkscape:window-height="1059" +     inkscape:window-x="1" +     inkscape:window-y="20" +     inkscape:window-maximized="0" +     inkscape:snap-global="false" +     inkscape:pagecheckerboard="true" /> +  <metadata +     id="metadata5"> +    <rdf:RDF> +      <cc:Work +         rdf:about=""> +        <dc:format>image/svg+xml</dc:format> +        <dc:type +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> +        <dc:title></dc:title> +      </cc:Work> +    </rdf:RDF> +  </metadata> +  <g +     inkscape:label="Layer 1" +     inkscape:groupmode="layer" +     id="layer1" +     transform="translate(0,-265)"> +    <g +       id="g2845" +       transform="matrix(0.94365958,0,0,1.2287968,-1.0221484,-67.39265)"> +      <g +         transform="matrix(1.5089401,0,0,1.3066241,-7.3386872,-78.018841)" +         id="g2735"> +        <g +           id="g2395" +           style="fill:#ececec"> +          <ellipse +             style="opacity:1;vector-effect:none;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" +             id="path2712" +             cx="15.802302" +             cy="280.0618" +             rx="5.846518" +             ry="5.9801526" /> +          <path +             style="fill:#ffffff;fill-rule:evenodd;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" +             d="m 10.490324,280.4293 c 1.192094,-4.3654 4.718661,-2.71724 5.679474,-5.87993 -1.554348,-0.467 -6.115914,1.224 -5.679474,5.87993 z" +             id="path2714" +             inkscape:connector-curvature="0" +             sodipodi:nodetypes="ccc" /> +        </g> +        <path +           style="fill:#e6e6e6;fill-rule:evenodd;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" +           d="m 12.609714,284.74301 c 4.198875,2.44997 9.863597,-0.84636 8.485803,-6.54811 -0.685723,9.08788 -7.184992,6.5694 -8.485803,6.54811 z" +           id="path2714-6" +           inkscape:connector-curvature="0" +           sodipodi:nodetypes="ccc" /> +      </g> +      <path +         sodipodi:nodetypes="ccccccc" +         inkscape:connector-curvature="0" +         id="path2799" +         d="m 11.819955,279.51007 c -0.06306,-0.61681 -0.06317,-1.12912 0.534539,-1.41988 l -2.7336493,-3.34871 -0.7531274,-1.70268 0.1971788,1.02164 -1.3876166,-1.69983 z" +         style="fill:#6c5353;fill-rule:evenodd;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> +      <g +         transform="matrix(0.98350745,0,0,0.85164049,1.2716509,42.055716)" +         id="g2735-0"> +        <g +           id="g2395-6" +           style="fill:#ececec"> +          <ellipse +             style="opacity:1;vector-effect:none;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" +             id="path2712-2" +             cx="15.802302" +             cy="280.0618" +             rx="5.846518" +             ry="5.9801526" /> +          <path +             style="fill:#ffffff;fill-rule:evenodd;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" +             d="m 10.428677,281.28361 c 1.192094,-4.3654 2.499371,-4.14109 5.741121,-6.73424 -1.554348,-0.467 -6.177561,0.65446 -5.741121,6.73424 z" +             id="path2714-61" +             inkscape:connector-curvature="0" +             sodipodi:nodetypes="ccc" /> +        </g> +        <path +           style="fill:#e6e6e6;fill-rule:evenodd;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" +           d="m 14.397476,285.09897 c 2.842642,2.23639 8.445717,-2.69736 6.266512,-7.33122 0.300629,4.46038 -2.376529,7.4949 -6.266512,7.33122 z" +           id="path2714-6-8" +           inkscape:connector-curvature="0" +           sodipodi:nodetypes="ccc" /> +      </g> +      <g +         transform="matrix(0.64120079,0,0,0.5552297,6.7557454,119.13807)" +         id="g2735-0-7"> +        <g +           id="g2395-6-9" +           style="fill:#ececec"> +          <ellipse +             style="opacity:1;vector-effect:none;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" +             id="path2712-2-2" +             cx="15.802302" +             cy="280.0618" +             rx="5.846518" +             ry="5.9801526" /> +          <path +             style="fill:#ffffff;fill-rule:evenodd;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" +             d="m 10.428677,281.28361 c 2.02967,-6.19246 3.523074,-5.96815 7.6024,-6.19687 -2.484987,-1.75669 -8.2249679,-0.20533 -7.6024,6.19687 z" +             id="path2714-61-0" +             inkscape:connector-curvature="0" +             sodipodi:nodetypes="ccc" /> +        </g> +        <path +           style="fill:#e6e6e6;fill-rule:evenodd;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" +           d="m 16.444883,284.02423 c 1.725875,1.59155 6.39831,-1.62262 4.219105,-6.25648 0.300629,4.46038 -1.538953,6.31269 -4.219105,6.25648 z" +           id="path2714-6-8-2" +           inkscape:connector-curvature="0" +           sodipodi:nodetypes="ccc" /> +      </g> +      <ellipse +         ry="0.60135615" +         rx="0.56794745" +         cy="278.65686" +         cx="15.825232" +         id="path2791" +         style="opacity:1;vector-effect:none;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" /> +      <use +         height="100%" +         width="100%" +         transform="translate(-0.7363817,2.2636835)" +         id="use2793" +         xlink:href="#path2791" +         y="0" +         x="0" /> +      <use +         height="100%" +         width="100%" +         transform="translate(-0.28348201,2.2818631)" +         id="use2795" +         xlink:href="#use2793" +         y="0" +         x="0" /> +      <use +         height="100%" +         width="100%" +         transform="translate(-0.42522301,2.6497658)" +         id="use2797" +         xlink:href="#use2795" +         y="0" +         x="0" /> +      <path +         sodipodi:nodetypes="cccccccccc" +         inkscape:connector-curvature="0" +         id="path2799-3" +         d="m 20.8515,280.97262 c 0.392671,-0.64155 0.46655,-0.72602 0.08101,-1.27014 l 2.995338,-0.72815 1.832255,-0.9846 -1.235133,0.92544 3.874634,-0.92554 -5.272149,2.08354 0.856053,0.95913 -1.417372,-0.77805 z" +         style="fill:#6c5353;fill-rule:evenodd;stroke:none;stroke-width:0.32966301px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> +      <ellipse +         transform="rotate(11.426916)" +         cx="69.382751" +         cy="265.62054" +         rx="0.69689327" +         ry="0.93208516" +         id="path2818" +         style="opacity:1;vector-effect:none;fill:#333333;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" /> +      <use +         height="100%" +         width="100%" +         transform="translate(2.5978896,0.18493484)" +         id="use2820" +         xlink:href="#path2818" +         y="0" +         x="0" /> +    </g> +  </g> +</svg> diff --git a/src/asset/www/svg/damage_type/swapwp.svg b/src/asset/www/svg/damage_type/swapwp.svg new file mode 100644 index 0000000..8dad702 --- /dev/null +++ b/src/asset/www/svg/damage_type/swapwp.svg @@ -0,0 +1,123 @@ +<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" +   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" +   width="32mm" +   height="32mm" +   viewBox="0 0 32 32" +   version="1.1" +   id="svg8" +   inkscape:version="0.92.4 5da689c313, 2019-01-14" +   sodipodi:docname="swapwp.svg"> +  <defs +     id="defs2"> +    <marker +       inkscape:stockid="Arrow1Mend" +       orient="auto" +       refY="0.0" +       refX="0.0" +       id="Arrow1Mend" +       style="overflow:visible;" +       inkscape:isstock="true"> +      <path +         id="path858" +         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " +         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" +         transform="scale(0.4) rotate(180) translate(10,0)" /> +    </marker> +    <marker +       inkscape:stockid="Arrow2Mend" +       orient="auto" +       refY="0.0" +       refX="0.0" +       id="Arrow2Mend" +       style="overflow:visible;" +       inkscape:isstock="true"> +      <path +         id="path876" +         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1" +         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " +         transform="scale(0.6) rotate(180) translate(0,0)" /> +    </marker> +  </defs> +  <sodipodi:namedview +     id="base" +     pagecolor="#ffffff" +     bordercolor="#666666" +     borderopacity="1.0" +     inkscape:pageopacity="0.0" +     inkscape:pageshadow="2" +     inkscape:zoom="5.6568542" +     inkscape:cx="44.5411" +     inkscape:cy="53.777319" +     inkscape:document-units="mm" +     inkscape:current-layer="g829" +     showgrid="false" +     inkscape:window-width="1908" +     inkscape:window-height="1078" +     inkscape:window-x="11" +     inkscape:window-y="1" +     inkscape:window-maximized="0" +     inkscape:pagecheckerboard="true" +     inkscape:snap-global="false" /> +  <metadata +     id="metadata5"> +    <rdf:RDF> +      <cc:Work +         rdf:about=""> +        <dc:format>image/svg+xml</dc:format> +        <dc:type +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> +        <dc:title></dc:title> +      </cc:Work> +    </rdf:RDF> +  </metadata> +  <g +     inkscape:groupmode="layer" +     id="layer2" +     inkscape:label="Layer 2" +     style="display:inline" /> +  <g +     inkscape:label="Layer 1" +     inkscape:groupmode="layer" +     id="layer1" +     transform="translate(0,-265)" +     style="display:inline"> +    <g +       id="g829" +       transform="rotate(45,13.546346,299.58838)" +       style="stroke:#483e37;stroke-opacity:1;fill:#e9ddaf;fill-opacity:1;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;paint-order:stroke fill markers"> +      <g +         id="g2286" +         transform="translate(-0.00326371,-0.17138667)"> +        <path +           inkscape:connector-curvature="0" +           id="path823" +           d="m -11.466274,283.34273 c 2.7078673,3.56298 4.1655548,7.15662 8.1235046,10.68906 0.5880662,0.93343 -0.4765467,1.85191 -1.3017122,2.97366 1.15681,-0.52238 2.554403,-0.0823 3.4396019,-1.6911 0.52650766,0.93561 1.52574616,2.0288 3.4204736,3.42048 0.196669,0.83142 1.2825695,-0.42766 1.2825695,-0.42766 0,0 1.2590848,-1.08591 0.4276633,-1.28257 -1.3916788,-1.89473 -2.4848683,-2.89397 -3.42047359,-3.42048 1.60883789,-0.8852 1.16871709,-2.28279 1.69109689,-3.4396 -1.1217547,0.82517 -2.04023684,1.88978 -2.97366664,1.30171 -3.53243206,-3.95795 -7.12607506,-5.41563 -10.68905736,-8.1235 z" +           style="fill:#e9ddaf;fill-opacity:1;stroke:#483e37;stroke-width:0.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" /> +        <path +           inkscape:connector-curvature="0" +           id="path823-3" +           d="m 15.57289,286.24423 c -3.56298,-2.70787 -7.1566208,-4.16556 -10.6890608,-8.12351 -0.93343,-0.58806 -1.85191,0.47655 -2.97366,1.30171 0.52238,-1.15681 0.0823,-2.5544 1.6911,-3.4396 -0.93561,-0.5265 -2.0288,-1.52574 -3.42047994,-3.42047 -0.8314201,-0.19667 0.42766,-1.28257 0.42766,-1.28257 0,0 1.08590994,-1.25909 1.28256994,-0.42766 1.89473,1.39168 2.89397,2.48486 3.42048,3.42047 0.8852,-1.60884 2.28279,-1.16872 3.4396,-1.6911 -0.82517,1.12176 -1.88978,2.04024 -1.30171,2.97367 3.9579508,3.53243 5.4156308,7.12607 8.1235008,10.68906 z" +           style="display:inline;fill:#e9ddaf;fill-opacity:1;stroke:#483e37;stroke-width:0.5;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" /> +        <path +           inkscape:connector-curvature="0" +           id="path1902" +           d="m -4.1855598,274.95159 c 0.3639264,0.30289 0.6246242,0.69257 0.7688174,1.11815 -1.2263949,0.45705 -2.3695102,1.02822 -3.3149774,1.79853 -1.5821735,1.28906 -2.5906716,3.15456 -2.4533463,5.81802 l 0.5996338,-0.0311 c -0.1290289,-2.50253 0.7688826,-4.12988 2.2322748,-5.32216 0.851985,-0.69414 1.9074371,-1.2283 3.0580958,-1.66516 0.028162,0.36178 -0.022826,0.73187 -0.1633372,1.08343 l 2.71388214,-1.88294 c 0.012725,-0.003 0.025272,-0.007 0.038002,-0.0102 l -0.00329,-0.0135 0.69500518,-0.48234 -0.84372608,-0.0829 -3.654e-4,-0.001 c -7.446e-4,2e-4 -0.00145,5.4e-4 -0.00219,7.4e-4 z" +           style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e9ddaf;fill-opacity:1;fill-rule:evenodd;stroke:#483e37;stroke-width:0.49999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> +        <path +           id="path1902-6" +           d="m 8.4087245,294.86821 c -0.3639293,-0.30289 -0.6246303,-0.69257 -0.7688198,-1.11815 1.2263901,-0.45705 2.3695103,-1.02822 3.3149793,-1.79853 1.582169,-1.28906 2.590668,-3.15456 2.453338,-5.81802 l -0.599629,0.0311 c 0.12903,2.50253 -0.76888,4.12988 -2.232279,5.32216 -0.8519793,0.69414 -1.9074292,1.2283 -3.0580894,1.66516 -0.0282,-0.36178 0.0228,-0.73187 0.1633401,-1.08343 l -2.7138902,1.88294 c -0.0127,0.003 -0.0253,0.007 -0.038,0.0102 l 0.003,0.0135 -0.6949986,0.48234 0.843719,0.083 3.6e-4,10e-4 c 7.5e-4,-1.8e-4 0.001,-5.4e-4 0.002,-7.3e-4 z" +           style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e9ddaf;fill-opacity:1;fill-rule:evenodd;stroke:#483e37;stroke-width:0.49999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" +           inkscape:connector-curvature="0" /> +      </g> +    </g> +  </g> +</svg> diff --git a/src/asset/www/svg/damage_type/warning.svg b/src/asset/www/svg/damage_type/warning.svg new file mode 100644 index 0000000..21d9a0b --- /dev/null +++ b/src/asset/www/svg/damage_type/warning.svg @@ -0,0 +1,111 @@ +<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" +   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" +   width="16mm" +   height="16mm" +   viewBox="0 0 16 16" +   version="1.1" +   id="svg8" +   inkscape:version="0.92.2 2405546, 2018-03-11" +   sodipodi:docname="warning.svg"> +  <defs +     id="defs2" /> +  <sodipodi:namedview +     id="base" +     pagecolor="#ffffff" +     bordercolor="#666666" +     borderopacity="1.0" +     inkscape:pageopacity="0.0" +     inkscape:pageshadow="2" +     inkscape:zoom="8.00001" +     inkscape:cx="14.351411" +     inkscape:cy="12.958916" +     inkscape:document-units="mm" +     inkscape:current-layer="layer1" +     showgrid="false" +     inkscape:snap-global="false" +     inkscape:snap-bbox="true" +     inkscape:bbox-nodes="false" +     inkscape:window-width="1918" +     inkscape:window-height="1059" +     inkscape:window-x="1" +     inkscape:window-y="20" +     inkscape:window-maximized="0" +     inkscape:pagecheckerboard="true" /> +  <metadata +     id="metadata5"> +    <rdf:RDF> +      <cc:Work +         rdf:about=""> +        <dc:format>image/svg+xml</dc:format> +        <dc:type +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> +        <dc:title></dc:title> +      </cc:Work> +    </rdf:RDF> +  </metadata> +  <g +     inkscape:label="Layer 1" +     inkscape:groupmode="layer" +     id="layer1" +     transform="translate(0,-281)"> +    <g +       id="g4664" +       transform="matrix(1.6696653,0,0,1.6696653,24.324249,-201.75405)"> +      <path +         transform="rotate(0.52710602,-9.7321153,295.0994)" +         inkscape:transform-center-y="-1.1757876" +         inkscape:transform-center-x="0.044922833" +         d="m -5.5893155,297.23151 c -0.3660441,0.65475 -7.9499495,0.75964 -8.3339615,0.11526 -0.384012,-0.64438 3.317101,-7.26468 4.0671571,-7.27505 0.7500565,-0.0104 4.6328486,6.50503 4.2668044,7.15979 z" +         inkscape:randomized="0" +         inkscape:rounded="0.09" +         inkscape:flatsided="true" +         sodipodi:arg2="1.5569663" +         sodipodi:arg1="0.50976873" +         sodipodi:r2="2.4060376" +         sodipodi:r1="4.8120751" +         sodipodi:cy="294.88333" +         sodipodi:cx="-9.7895708" +         sodipodi:sides="3" +         id="path4598" +         style="opacity:1;vector-effect:none;fill:#e9ddaf;fill-opacity:1;stroke:#483e37;stroke-width:0.5;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" +         sodipodi:type="star" /> +      <g +         transform="translate(-0.02302298)" +         id="g4656"> +        <g +           aria-label="!" +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:125%;font-family:Arial;-inkscape-font-specification:Arial;letter-spacing:0px;word-spacing:0px;fill:#483e37;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" +           id="text4609" +           transform="matrix(1.4304927,0,0,1,4.2936198,1.0748705)"> +          <path +             d="m -10.034195,294.30502 c -0.01163,-0.16423 -0.208428,-1.88619 -0.208428,-1.88619 v -1.23162 c 0,-0.34124 0.8450819,-0.37017 0.8450819,0 v 1.23162 c 0,0 -0.1878496,1.73688 -0.1970595,1.88619 -0.00921,0.14931 -0.4279694,0.16423 -0.4395944,0 z" +             style="font-size:7.76111126px;fill:#483e37;fill-opacity:1;stroke-width:0.26458332px" +             id="path4611" +             inkscape:connector-curvature="0" +             sodipodi:nodetypes="zczzczz" /> +        </g> +        <g +           aria-label="!" +           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:125%;font-family:Arial;-inkscape-font-specification:Arial;letter-spacing:0px;word-spacing:0px;fill:#483e37;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" +           id="text4609-0" +           transform="matrix(1.1127557,0,0,0.77788279,1.1734158,66.226774)"> +          <path +             d="m -10.212306,296.74277 c -0.184003,-0.184 -0.184003,-0.59287 0,-0.77687 0.184003,-0.184 0.6004449,-0.184 0.784448,0 0.1840031,0.184 0.1840031,0.59287 0,0.77687 -0.1840031,0.184 -0.600445,0.184 -0.784448,0 z" +             style="font-size:7.76111126px;fill:#483e37;fill-opacity:1;stroke-width:0.26458332px" +             id="path4611-6" +             inkscape:connector-curvature="0" +             sodipodi:nodetypes="zzzzz" /> +        </g> +      </g> +    </g> +  </g> +</svg> diff --git a/src/battle/src/ElmModule/Update.elm b/src/battle/src/ElmModule/Update.elm index cc9b9b8..5e9d4ca 100644 --- a/src/battle/src/ElmModule/Update.elm +++ b/src/battle/src/ElmModule/Update.elm @@ -22,7 +22,10 @@ import Update.Character.DisplayNavigator  import Update.CharacterTurn.AbortTurn  import Update.CharacterTurn.Attack  import Update.CharacterTurn.EndTurn +import Update.CharacterTurn.Move  import Update.CharacterTurn.RequestDirection +import Update.CharacterTurn.Skill +import Update.CharacterTurn.Skip  import Update.CharacterTurn.SwitchWeapon  import Update.CharacterTurn.UndoAction @@ -55,6 +58,15 @@ update event model =        Struct.Event.AttackRequest ->           (Update.CharacterTurn.Attack.apply_to model) +      Struct.Event.SkillRequest -> +         (Update.CharacterTurn.Skill.apply_to model) + +      Struct.Event.SkipRequest -> +         (Update.CharacterTurn.Skip.apply_to model) + +      Struct.Event.MoveRequest -> +         (Update.CharacterTurn.Move.apply_to model) +        Struct.Event.AnimationEnded ->           (Update.Puppeteer.apply_to model) diff --git a/src/battle/src/Struct/CharacterTurn.elm b/src/battle/src/Struct/CharacterTurn.elm index 514803d..1a64cce 100644 --- a/src/battle/src/Struct/CharacterTurn.elm +++ b/src/battle/src/Struct/CharacterTurn.elm @@ -43,6 +43,7 @@ module Struct.CharacterTurn exposing        clear_path,        -- Other +      is_aiming_at_something,        encode,        new     ) @@ -71,6 +72,7 @@ import Struct.Navigator  --------------------------------------------------------------------------------  type Action =     None +   | Skipping     | Attacking     | SwitchingWeapons     | UsingSkill @@ -113,6 +115,7 @@ encode_action : Type -> (Json.Encode.Value)  encode_action ct =     case ct.action of        None -> (Json.Encode.null) +      Skipping -> (Json.Encode.null)        Attacking ->           case (List.head (Set.toList ct.targets)) of @@ -267,6 +270,11 @@ override_path path ct = {ct | path = path}  clear_path : Type -> Type  clear_path ct = {ct | path = []} +---- Other --------------------------------------------------------------------- +is_aiming_at_something : Type -> Bool +is_aiming_at_something ct = +   (not ((Set.isEmpty ct.targets) && (Set.isEmpty ct.locations))) +  ---- Encode/Decode -------------------------------------------------------------  encode : Type -> (Json.Encode.Value)  encode ct = diff --git a/src/battle/src/Struct/Event.elm b/src/battle/src/Struct/Event.elm index 950b00d..7b91ae9 100644 --- a/src/battle/src/Struct/Event.elm +++ b/src/battle/src/Struct/Event.elm @@ -20,6 +20,9 @@ type Type =     AbortTurnRequest     | AnimationEnded     | AttackRequest +   | SkillRequest +   | SkipRequest +   | MoveRequest     | CharacterOrTileSelected BattleMap.Struct.Location.Ref     | CharacterSelected Int     | CharacterCardSelected Int diff --git a/src/battle/src/Struct/Navigator.elm b/src/battle/src/Struct/Navigator.elm index 537351a..be2f460 100644 --- a/src/battle/src/Struct/Navigator.elm +++ b/src/battle/src/Struct/Navigator.elm @@ -173,7 +173,7 @@ unlock_path navigator =              navigator.attack_dist              (navigator.cost_and_danger_fun)           ), -      locked_path = True +      locked_path = False     }  lock_path_with_new_attack_ranges : Int -> Int -> Type -> Type diff --git a/src/battle/src/Update/CharacterTurn/Move.elm b/src/battle/src/Update/CharacterTurn/Move.elm new file mode 100644 index 0000000..a8b6a27 --- /dev/null +++ b/src/battle/src/Update/CharacterTurn/Move.elm @@ -0,0 +1,34 @@ +module Update.CharacterTurn.Move exposing (apply_to) + +-- Battle Characters ----------------------------------------------------------- + +-- Local module ---------------------------------------------------------------- +import Struct.CharacterTurn +import Struct.Error +import Struct.Event +import Struct.Model +import Struct.Navigator + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +apply_to : Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type)) +apply_to model = +   case (Struct.CharacterTurn.maybe_get_navigator model.char_turn) of +      (Just nav) -> +            ( +               {model | +                  char_turn = +                     (Struct.CharacterTurn.set_navigator +                        (Struct.Navigator.lock_path nav) +                        (Struct.CharacterTurn.store_path model.char_turn) +                     ) +               }, +               Cmd.none +            ) + +      _ -> (model, Cmd.none) diff --git a/src/battle/src/Update/CharacterTurn/ResetPath.elm b/src/battle/src/Update/CharacterTurn/ResetPath.elm new file mode 100644 index 0000000..f6fb97c --- /dev/null +++ b/src/battle/src/Update/CharacterTurn/ResetPath.elm @@ -0,0 +1,73 @@ +module Update.CharacterTurn.ResetPath exposing (apply_to) + +-- Battle Map ------------------------------------------------------------------ +import BattleMap.Struct.Direction +import BattleMap.Struct.Location +import BattleMap.Struct.Map + +-- Battle Characters ----------------------------------------------------------- +import BattleCharacters.Struct.Character + +-- Local Module ---------------------------------------------------------------- +import Struct.Battle +import Struct.Character +import Struct.CharacterTurn +import Struct.Error +import Struct.Event +import Struct.Model +import Struct.Navigator + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +apply_to : Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type)) +apply_to model = +   case +      ( +         (Struct.CharacterTurn.maybe_get_active_character model.char_turn), +         (Struct.CharacterTurn.maybe_get_navigator model.char_turn) +      ) +   of +      ((Just char), (Just nav)) -> +         let +            new_location = (Struct.Navigator.get_starting_location nav) +         in +            ( +               {model | +                  char_turn = +                     (Struct.CharacterTurn.set_navigator +                        (Struct.Navigator.clear_path +                           (Struct.Navigator.unlock_path nav) +                        ) +                        (Struct.CharacterTurn.set_active_character +                           (Struct.Character.set_location +                              new_location +                              (BattleMap.Struct.Map.get_omnimods_at +                                 new_location +                                 model.map_data_set +                                 (Struct.Battle.get_map model.battle) +                              ) +                              char +                           ) +                           (Struct.CharacterTurn.clear_path model.char_turn) +                        ) +                     ) +               }, +               Cmd.none +            ) + +      _ -> +         ( +            (Struct.Model.invalidate +               (Struct.Error.new +                  Struct.Error.IllegalAction +                  "This can only be done while controlling a character." +               ) +               model +            ), +            Cmd.none +         ) diff --git a/src/battle/src/Update/CharacterTurn/Skill.elm b/src/battle/src/Update/CharacterTurn/Skill.elm new file mode 100644 index 0000000..ee3baf2 --- /dev/null +++ b/src/battle/src/Update/CharacterTurn/Skill.elm @@ -0,0 +1,37 @@ +module Update.CharacterTurn.Skill exposing (apply_to) + +-- Battle Characters ----------------------------------------------------------- + +-- Local module ---------------------------------------------------------------- +import Struct.CharacterTurn +import Struct.Error +import Struct.Event +import Struct.Model +import Struct.Navigator + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +apply_to : Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type)) +apply_to model = +   case (Struct.CharacterTurn.maybe_get_navigator model.char_turn) of +      (Just nav) -> +            ( +               {model | +                  char_turn = +                     (Struct.CharacterTurn.set_action +                        Struct.CharacterTurn.UsingSkill +                        (Struct.CharacterTurn.set_navigator +                           (Struct.Navigator.lock_path nav) +                           (Struct.CharacterTurn.store_path model.char_turn) +                        ) +                     ) +               }, +               Cmd.none +            ) + +      _ -> (model, Cmd.none) diff --git a/src/battle/src/Update/CharacterTurn/Skip.elm b/src/battle/src/Update/CharacterTurn/Skip.elm new file mode 100644 index 0000000..b61db05 --- /dev/null +++ b/src/battle/src/Update/CharacterTurn/Skip.elm @@ -0,0 +1,42 @@ +module Update.CharacterTurn.Skip exposing (apply_to) + +-- Shared ---------------------------------------------------------------------- +import Shared.Update.Sequence + +-- Local module ---------------------------------------------------------------- +import Struct.CharacterTurn +import Struct.Error +import Struct.Event +import Struct.Model +import Struct.Navigator + +import Update.CharacterTurn.ResetPath + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- +set_action : Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type)) +set_action model = +   ( +      {model | +         char_turn = +            (Struct.CharacterTurn.set_action +               Struct.CharacterTurn.Skipping +               model.char_turn +            ) +      }, +      Cmd.none +   ) + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +apply_to : Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type)) +apply_to model = +   (Shared.Update.Sequence.sequence +      [ +         (Update.CharacterTurn.ResetPath.apply_to), +         (set_action) +      ] +      model +   ) diff --git a/src/battle/src/Update/CharacterTurn/UndoAction.elm b/src/battle/src/Update/CharacterTurn/UndoAction.elm index 6a9d7f8..0187752 100644 --- a/src/battle/src/Update/CharacterTurn/UndoAction.elm +++ b/src/battle/src/Update/CharacterTurn/UndoAction.elm @@ -21,8 +21,9 @@ import Struct.Event  import Struct.Model  import Struct.Navigator -import Util.Navigator +import Update.CharacterTurn.ResetPath +import Util.Navigator  --------------------------------------------------------------------------------  -- LOCAL -----------------------------------------------------------------------  -------------------------------------------------------------------------------- @@ -57,27 +58,46 @@ handle_undo_attacking char_turn =        )     ) +handle_undo_skipping : Struct.CharacterTurn.Type -> Struct.CharacterTurn.Type +handle_undo_skipping char_turn = +   case (Struct.CharacterTurn.maybe_get_navigator char_turn) of +      Nothing -> char_turn +      (Just nav) -> +         (Struct.CharacterTurn.clear_action +            (Struct.CharacterTurn.set_navigator +               (Struct.Navigator.unlock_path nav) +               char_turn +            ) +         ) +  --------------------------------------------------------------------------------  -- EXPORTED --------------------------------------------------------------------  --------------------------------------------------------------------------------  apply_to : Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type))  apply_to model = -   ( -      {model | -         char_turn = -         ( -            case (Struct.CharacterTurn.get_action model.char_turn) of -               Struct.CharacterTurn.Attacking -> -                  (handle_undo_attacking model.char_turn) +   let action = (Struct.CharacterTurn.get_action model.char_turn) in +   if (action == Struct.CharacterTurn.None) +   then (Update.CharacterTurn.ResetPath.apply_to model) +   else +      ( +         {model | +            char_turn = +            ( +               case action of +                  Struct.CharacterTurn.Attacking -> +                     (handle_undo_attacking model.char_turn) -               Struct.CharacterTurn.UsingSkill -> -                  (handle_undo_attacking model.char_turn) +                  Struct.CharacterTurn.UsingSkill -> +                     (handle_undo_attacking model.char_turn) -               Struct.CharacterTurn.SwitchingWeapons -> -                  (handle_undo_switching_weapons model.char_turn) +                  Struct.CharacterTurn.SwitchingWeapons -> +                     (handle_undo_switching_weapons model.char_turn) -               _ -> model.char_turn -         ) -      }, -      Cmd.none -   ) +                  Struct.CharacterTurn.Skipping -> +                     (handle_undo_skipping model.char_turn) + +                  Struct.CharacterTurn.None -> model.char_turn +            ) +         }, +         Cmd.none +      ) diff --git a/src/battle/src/Util/Navigator.elm b/src/battle/src/Util/Navigator.elm new file mode 100644 index 0000000..c5a8136 --- /dev/null +++ b/src/battle/src/Util/Navigator.elm @@ -0,0 +1,87 @@ +module Util.Navigator exposing +   ( +      get_character_navigator, +      get_character_attack_navigator +   ) + +-- Elm ------------------------------------------------------------------------- +import Array +import List + +-- Battle ---------------------------------------------------------------------- +import Battle.Struct.Attributes + +-- Battle Characters ----------------------------------------------------------- +import BattleCharacters.Struct.Character +import BattleCharacters.Struct.Weapon + +-- Battle Map ------------------------------------------------------------------ +import BattleMap.Struct.Map + +-- Local Module ---------------------------------------------------------------- +import Struct.Battle +import Struct.Character +import Struct.Navigator + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +get_character_navigator : ( +      Struct.Battle.Type -> +      Struct.Character.Type -> +      Struct.Navigator.Type +   ) +get_character_navigator battle char = +   let +      base_char = (Struct.Character.get_base_character char) +      weapon = (BattleCharacters.Struct.Character.get_active_weapon base_char) +   in +      (Struct.Navigator.new +         (Struct.Character.get_location char) +         (Battle.Struct.Attributes.get_movement_points +            (BattleCharacters.Struct.Character.get_attributes base_char) +         ) +         (BattleCharacters.Struct.Weapon.get_defense_range weapon) +         (BattleCharacters.Struct.Weapon.get_attack_range weapon) +         (BattleMap.Struct.Map.get_tile_data_function +            (Struct.Battle.get_map battle) +            (List.map +               (Struct.Character.get_location) +               (Array.toList +                  (Struct.Battle.get_characters battle) +               ) +            ) +            (Struct.Character.get_location char) +         ) +      ) + +get_character_attack_navigator : ( +      Struct.Battle.Type -> +      Struct.Character.Type -> +      Struct.Navigator.Type +   ) +get_character_attack_navigator battle char = +   let +      base_char = (Struct.Character.get_base_character char) +      weapon = (BattleCharacters.Struct.Character.get_active_weapon base_char) +   in +      (Struct.Navigator.new +         (Struct.Character.get_location char) +         0 +         (BattleCharacters.Struct.Weapon.get_defense_range weapon) +         (BattleCharacters.Struct.Weapon.get_attack_range weapon) +         (BattleMap.Struct.Map.get_tile_data_function +            (Struct.Battle.get_map battle) +            (List.map +               (Struct.Character.get_location) +               (Array.toList +                  (Struct.Battle.get_characters battle) +               ) +            ) +            (Struct.Character.get_location char) +         ) +      ) diff --git a/src/battle/src/View/Controlled.elm b/src/battle/src/View/Controlled.elm index 0293770..8f78fd9 100644 --- a/src/battle/src/View/Controlled.elm +++ b/src/battle/src/View/Controlled.elm @@ -19,102 +19,214 @@ import View.Controlled.ManualControls  --------------------------------------------------------------------------------  -- LOCAL -----------------------------------------------------------------------  -------------------------------------------------------------------------------- -has_a_path : Struct.CharacterTurn.Type -> Bool -has_a_path char_turn = -   case (Struct.CharacterTurn.maybe_get_navigator char_turn) of -      (Just nav) -> ((Struct.Navigator.get_path nav) /= []) -      Nothing -> False - +action_to_class : ( +      Struct.CharacterTurn.Action -> +      (Html.Attribute Struct.Event.Type) +   ) +action_to_class action = +   (Html.Attributes.class +      ( +         case action of +            Struct.CharacterTurn.None -> "no-action" +            Struct.CharacterTurn.Skipping -> "skipping" +            Struct.CharacterTurn.Attacking -> "attacking" +            Struct.CharacterTurn.SwitchingWeapons -> "switching-weapons" +            Struct.CharacterTurn.UsingSkill -> "using-skill" +      ) +   ) -skill_button : Struct.CharacterTurn.Type -> (Html.Html Struct.Event.Type) -skill_button char_turn = +action_or_undo_button : ( +      Struct.CharacterTurn.Action -> +      Struct.CharacterTurn.Action -> +      Struct.Event.Type -> +      (Html.Html Struct.Event.Type) +   ) +action_or_undo_button current_action relevant_action event =     (Html.button -      [ (Html.Events.onClick Struct.Event.AttackRequest) ] +      ( +         if (current_action == Struct.CharacterTurn.None) +         then +            [ +               (Html.Attributes.class "action-button"), +               (action_to_class relevant_action), +               (Html.Attributes.class "action"), +               (Html.Events.onClick event) +            ] +         else if (current_action == relevant_action) +         then +            [ +               (Html.Attributes.class "action-button"), +               (action_to_class relevant_action), +               (Html.Events.onClick Struct.Event.UndoActionRequest), +               (Html.Attributes.class "undo") +            ] +         else +            [ +               (Html.Attributes.class "action-button"), +               (action_to_class relevant_action), +               (Html.Attributes.class "disabled") +            ] +      )        [ -         (Html.text -            ( -               if (has_a_path char_turn) -               then ("Go & Select Skill Target(s)") -               else ("Select Skill Target(s)") -            ) -         )        ]     ) +inventory_button : Struct.CharacterTurn.Type -> (Html.Html Struct.Event.Type) +inventory_button char_turn = +   (action_or_undo_button +      (Struct.CharacterTurn.get_action char_turn) +      Struct.CharacterTurn.SwitchingWeapons +      Struct.Event.WeaponSwitchRequest +   ) + +  attack_button : Struct.CharacterTurn.Type -> (Html.Html Struct.Event.Type)  attack_button char_turn = -   (Html.button -      [ (Html.Events.onClick Struct.Event.AttackRequest) ] -      [ -         (Html.text -            ( -               if (has_a_path char_turn) -               then ("Go & Select Attack Target") -               else ("Select Attack Target") -            ) -         ) -      ] +   (action_or_undo_button +      (Struct.CharacterTurn.get_action char_turn) +      Struct.CharacterTurn.Attacking +      Struct.Event.AttackRequest     ) -abort_button : (Html.Html Struct.Event.Type) -abort_button = -   (Html.button -      [ (Html.Events.onClick Struct.Event.AbortTurnRequest) ] -      [ (Html.text "Abort") ] +skip_button : Struct.CharacterTurn.Type -> (Html.Html Struct.Event.Type) +skip_button char_turn = +   (action_or_undo_button +      (Struct.CharacterTurn.get_action char_turn) +      Struct.CharacterTurn.Skipping +      Struct.Event.SkipRequest     ) -undo_button : (Html.Html Struct.Event.Type) -undo_button = -   (Html.button -      [ (Html.Events.onClick Struct.Event.UndoActionRequest) ] -      [ (Html.text "Undo") ] +skill_button : Struct.CharacterTurn.Type -> (Html.Html Struct.Event.Type) +skill_button char_turn = +   (action_or_undo_button +      (Struct.CharacterTurn.get_action char_turn) +      Struct.CharacterTurn.UsingSkill +      Struct.Event.SkillRequest     ) -end_turn_button : (Html.Html Struct.Event.Type) -end_turn_button = +abort_button : (Html.Html Struct.Event.Type) +abort_button =     (Html.button        [ -         (Html.Events.onClick Struct.Event.TurnEnded), -         (Html.Attributes.class "end-turn-button") +         (Html.Attributes.class "action-button"), +         (Html.Events.onClick Struct.Event.AbortTurnRequest), +         (Html.Attributes.class "abort-button") +      ] +      [        ] -      [ (Html.text ("Confirm Turn")) ]     ) -inventory_button : Bool -> (Html.Html Struct.Event.Type) -inventory_button go_prefix = + +path_button : Struct.CharacterTurn.Type -> (Html.Html Struct.Event.Type) +path_button char_turn =     (Html.button -      [ (Html.Events.onClick Struct.Event.WeaponSwitchRequest) ] -      [ -         (Html.text +      ( +         if +         ( +            ( +               (Struct.CharacterTurn.get_action char_turn) +               == Struct.CharacterTurn.None +            ) +            &&              ( -               if (go_prefix) -               then ("Go & Switch Weapon") -               else ("Switch Weapon") +               case (Struct.CharacterTurn.maybe_get_navigator char_turn) of +                  Nothing -> False +                  (Just nav) -> ((Struct.Navigator.get_path nav) /= [])              )           ) +         then +            if ((Struct.CharacterTurn.get_path char_turn) == []) +            then +               [ +                  (Html.Attributes.class "action-button"), +                  (Html.Attributes.class "path-button"), +                  (Html.Events.onClick Struct.Event.MoveRequest) +               ] +            else +               [ +                  (Html.Attributes.class "action-button"), +                  (Html.Attributes.class "path-button"), +                  (Html.Events.onClick Struct.Event.UndoActionRequest), +                  (Html.Attributes.class "undo") +               ] +         else +            [ +               (Html.Attributes.class "action-button"), +               (Html.Attributes.class "path-button"), +               (Html.Attributes.class "disabled"), +               (Html.Attributes.class +                  ( +                     if ((Struct.CharacterTurn.get_path char_turn) == []) +                     then "" +                     else "undo" +                  ) +               ) +            ] +      ) +      [        ]     ) +end_turn_button : Struct.CharacterTurn.Type -> (Html.Html Struct.Event.Type) +end_turn_button char_turn = +   let +      registered_path = (Struct.CharacterTurn.get_path char_turn) +      action =  (Struct.CharacterTurn.get_action char_turn) +      temporary_path = +         case (Struct.CharacterTurn.maybe_get_navigator char_turn) of +            Nothing -> [] +            (Just nav) -> (Struct.Navigator.get_path nav) +   in +      (Html.button +         [ +            ( +               if +               ( +                  (temporary_path /= registered_path) +                  || +                  ( +                     (Struct.CharacterTurn.is_aiming_at_something char_turn) +                     && (action /= Struct.CharacterTurn.Attacking) +                     && (action /= Struct.CharacterTurn.UsingSkill) +                  ) +                  || +                  ( +                     (registered_path == []) +                     && (action == Struct.CharacterTurn.None) +                  ) +               ) +               then (Html.Attributes.class "disabled") +               else (Html.Events.onClick Struct.Event.TurnEnded) +            ), +            (Html.Attributes.class "action-button"), +            (Html.Attributes.class "end-turn-button"), +            (Html.Attributes.class +               ( +                  if (registered_path == []) +                  then "no-path-was-queued" +                  else "path-was-queued" +               ) +            ), +            (action_to_class (Struct.CharacterTurn.get_action char_turn)) +         ] +         [ +         ] +      ) +  get_available_actions : (        Struct.CharacterTurn.Type ->        (List (Html.Html Struct.Event.Type))     )  get_available_actions char_turn = -   if ((Struct.CharacterTurn.get_action char_turn) == Struct.CharacterTurn.None) -   then -         [ -            (attack_button char_turn), -            (skill_button char_turn), -            (inventory_button (has_a_path char_turn)), -            (end_turn_button), -            (abort_button) -         ] -   else -         [ -            (end_turn_button), -            (undo_button), -            (abort_button) -         ] +   [ +      (abort_button), +      (skip_button char_turn), +      (path_button char_turn), +      (attack_button char_turn), +      (skill_button char_turn), +      (inventory_button char_turn), +      (end_turn_button char_turn) +   ]  --------------------------------------------------------------------------------  -- EXPORTED -------------------------------------------------------------------- @@ -133,19 +245,26 @@ get_html char_turn player_ix =                    player_ix                    char                 ), -               ( -                  if -                  ( -                     (Struct.CharacterTurn.get_action char_turn) -                     == -                     Struct.CharacterTurn.None -                  ) -                  then (View.Controlled.ManualControls.get_html) -                  else (Shared.Util.Html.nothing) -               ),                 (Html.div -                  [(Html.Attributes.class "controlled-actions")] -                  (get_available_actions char_turn) +                  [ +                     (Html.Attributes.class "controlled-controls") +                  ] +                  [ +                     (Html.div +                        [(Html.Attributes.class "controlled-actions")] +                        (get_available_actions char_turn) +                     ), +                     ( +                        if +                        ( +                           (Struct.CharacterTurn.get_action char_turn) +                           == +                           Struct.CharacterTurn.None +                        ) +                        then (View.Controlled.ManualControls.get_html) +                        else (Shared.Util.Html.nothing) +                     ) +                  ]                 )              ]           ) diff --git a/src/battle/src/View/Controlled/ManualControls.elm b/src/battle/src/View/Controlled/ManualControls.elm index 8c8c802..cb53c59 100644 --- a/src/battle/src/View/Controlled/ManualControls.elm +++ b/src/battle/src/View/Controlled/ManualControls.elm @@ -31,18 +31,6 @@ direction_button dir label =        []     ) -go_button : (Html.Html Struct.Event.Type) -go_button = -   (Html.button -      [ -         (Html.Attributes.class "manual-controls-go"), -         (Html.Events.onClick Struct.Event.AttackRequest) -      ] -      [ -         (Html.text "Go") -      ] -   ) -  --------------------------------------------------------------------------------  -- EXPORTED --------------------------------------------------------------------  -------------------------------------------------------------------------------- @@ -56,7 +44,6 @@ get_html =           (direction_button BattleMap.Struct.Direction.Left "left"),           (direction_button BattleMap.Struct.Direction.Down "down"),           (direction_button BattleMap.Struct.Direction.Up "up"), -         (direction_button BattleMap.Struct.Direction.Right "right"), -         (go_button) +         (direction_button BattleMap.Struct.Direction.Right "right")        ]     ) diff --git a/src/css/src/battle/controlled-panel.scss b/src/css/src/battle/controlled-panel.scss index 2a52fe6..6001d39 100644 --- a/src/css/src/battle/controlled-panel.scss +++ b/src/css/src/battle/controlled-panel.scss @@ -19,16 +19,22 @@     display: flex;     flex-flow: column; -   justify-content: space-between; +   justify-content: space-evenly;  } -.controlled-actions +.controlled-controls  {     display: flex; -   flex-flow: row wrap; +   flex-flow: row; +} -   align-items: center; -   justify-content: center; +.controlled-actions +{ +   width: 50%; +   display: grid; +   grid-template-columns: 33% 33% 33%; +   grid-gap: 2px; +   justify-content: space-evenly;  }  .end-turn-button @@ -39,3 +45,4 @@  }  @import 'controlled-panel/manual-control'; +@import 'controlled-panel/buttons'; diff --git a/src/css/src/battle/controlled-panel/buttons.scss b/src/css/src/battle/controlled-panel/buttons.scss new file mode 100644 index 0000000..fb55a61 --- /dev/null +++ b/src/css/src/battle/controlled-panel/buttons.scss @@ -0,0 +1,115 @@ +.action-button +{ +   width: 42px; +   height: 42px; +   background-size: 97%; +   background-position: center; +} + +.action-button.disabled +{ +   opacity: 0.1; +   pointer-events:none; +} + +.action-button + .action-button +{ +   margin: 0; +} + +.action-button.abort-button +{ +   background-image: url(/asset/svg/damage_type/abort.svg); +} + +.action-button.skipping +{ +   --bg-first-act: url(/asset/svg/damage_type/skip.svg); +   --bg-second-act: var(--bg-first-act); +   background-image: var(--bg-first-act); +} + +.action-button.path-button +{ +   --bg-first-act: url(/asset/svg/damage_type/move.svg); +   background-image: var(--bg-first-act); +} + +.action-button.attacking +{ +   --bg-second-act: url(/asset/svg/damage_type/attack.svg); +   background-image: var(--bg-second-act); +} + +.action-button.using-skill +{ +   --bg-second-act: url(/asset/svg/damage_type/skill.svg); +   background-image: var(--bg-second-act); +} + +.action-button.switching-weapons +{ +   --bg-second-act: url(/asset/svg/damage_type/swapwp.svg); +   background-image: var(--bg-second-act); +} + +.action-button.end-turn-button +{ +   grid-column: span 3; +   width: calc(100% - 2px); +   --bg-end-turn: url(/asset/svg/damage_type/endturn.svg); +} + +.action-button.end-turn-button.disabled +{ +   animation: none; +} + +.action-button.end-turn-button.no-path-was-queued +{ +   background-image: var(--bg-second-act), var(--bg-end-turn); +   background-size: 42px, 42px; +   background-repeat: no-repeat, no-repeat; +   background-position: left center, right center; +} + +.action-button.end-turn-button.path-was-queued +{ +   background-size: 42px, 42px, 42px; +   background-repeat: no-repeat, no-repeat, no-repeat; +   background-position: left center, center, right center; +   background-image: +      url(/asset/svg/damage_type/move.svg), +      var(--bg-second-act), +      var(--bg-end-turn); +} + +.action-button.end-turn-button.no-path-was-queued, +.action-button.end-turn-button.path-was-queued.no-action +{ +   background-size: 42px, 42px; +   background-repeat: no-repeat, no-repeat; +   background-position: left center, right center; +   background-image: +      var(--bg-first-act), +      var(--bg-end-turn); +} + +.action-button.undo +{ +   border-bottom-width: 1px; +   filter: brightness(0.8); + +} +.action-button.end-turn-button.no-path-was-queued +{ +   background-image: var(--bg-second-act), var(--bg-end-turn); +} + +.action-button.end-turn-button.path-was-queued.no-action +{ +   background-image: +      url(/asset/svg/damage_type/move.svg), +      var(--bg-end-turn); +} + diff --git a/src/css/src/battle/controlled-panel/manual-control.scss b/src/css/src/battle/controlled-panel/manual-control.scss index 7ab41b6..f4f5d99 100644 --- a/src/css/src/battle/controlled-panel/manual-control.scss +++ b/src/css/src/battle/controlled-panel/manual-control.scss @@ -5,7 +5,7 @@     display: grid;     grid-template:        '.    top .' -      'left  go  right' +      'left  .  right'        '.   bottom .';     margin: auto;  } @@ -25,15 +25,6 @@     opacity: 1;  } -.manual-controls-go -{ -   margin: auto; -   width: 28px; -   height: 28px; -   border-radius: 100em; -   grid-area: go; -} -  .manual-controls-up  {     transform: rotate(-90deg); diff --git a/src/shared/elm/Shared/Util/Set.elm b/src/shared/elm/Shared/Util/Set.elm new file mode 100644 index 0000000..d9368cd --- /dev/null +++ b/src/shared/elm/Shared/Util/Set.elm @@ -0,0 +1,11 @@ +module Shared.Util.Set exposing (..) + +import Set + +import List + +toggle : comparable -> (Set.Set comparable) -> (Set.Set comparable) +toggle e set = +   if (Set.member e set) +   then (Set.remove e set) +   else (Set.insert e set) | 


