add projectiles
This commit is contained in:
parent
de460abd29
commit
ef8d4c3ad2
BIN
assets/basic_projectile.pdf
Normal file
BIN
assets/basic_projectile.pdf
Normal file
Binary file not shown.
765
assets/basic_projectile.svg
Normal file
765
assets/basic_projectile.svg
Normal file
@ -0,0 +1,765 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
width="5"
|
||||
height="5"
|
||||
viewBox="0 0 5 4.9999998"
|
||||
sodipodi:docname="basic_projectile.svg"
|
||||
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#000000"
|
||||
bordercolor="#999999"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="71.026432"
|
||||
inkscape:cx="6.152639"
|
||||
inkscape:cy="6.3849469"
|
||||
inkscape:window-width="1918"
|
||||
inkscape:window-height="1038"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="20"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g1">
|
||||
<inkscape:page
|
||||
x="0"
|
||||
y="0"
|
||||
inkscape:label="1"
|
||||
id="page1"
|
||||
width="5"
|
||||
height="5"
|
||||
margin="0"
|
||||
bleed="0" />
|
||||
</sodipodi:namedview>
|
||||
<g
|
||||
id="g1"
|
||||
inkscape:groupmode="layer"
|
||||
inkscape:label="1">
|
||||
<g
|
||||
id="g143"
|
||||
transform="matrix(0.13064905,0,0,0.13056588,-49.567112,-70.542334)">
|
||||
<path
|
||||
id="path2"
|
||||
d="m 110,148.5 -0.002,0.12668 -0.005,0.1266 -0.008,0.12644 -0.0112,0.1262 -0.0144,0.12587 -0.0176,0.12546 -0.0208,0.12498 -0.0239,0.12441 -0.0271,0.12377 -0.0302,0.12304 -0.0333,0.12223 -0.0364,0.12135 -0.0395,0.12039 -0.0425,0.11935 -0.0455,0.11824 -0.0485,0.11705 -0.0514,0.11578 -0.0544,0.11444 -0.0572,0.11302 -0.0601,0.11154 -0.0629,0.10998 -0.0657,0.10835 -0.0684,0.10666 -0.0711,0.10488 -0.0737,0.10306 -0.0763,0.10115 -0.0788,0.0992 -0.0813,0.0972 -0.0837,0.0951 -0.0861,0.0929 -0.0884,0.0907 -0.0907,0.0884 -0.0929,0.0861 -0.0951,0.0837 -0.0972,0.0813 -0.0992,0.0788 -0.10117,0.0763 -0.10307,0.0737 -0.10491,0.071 -0.10667,0.0683 -0.10836,0.0656 -0.11,0.0629 -0.11155,0.0601 -0.11304,0.0572 -0.11445,0.0543 -0.1158,0.0514 -0.11705,0.0485 -0.11825,0.0455 -0.11936,0.0425 -0.1204,0.0394 -0.12136,0.0364 -0.12225,0.0333 -0.12304,0.0302 -0.12377,0.0271 -0.12442,0.0239 -0.12498,0.0207 -0.12547,0.0176 -0.12588,0.0144 -0.12619,0.0112 -0.12644,0.008 -0.12661,0.005 -0.12668,0.002 -0.12668,-0.002 -0.1266,-0.005 -0.12644,-0.008 -0.12619,-0.0112 -0.12587,-0.0145 -0.12546,-0.0176 -0.12497,-0.0208 -0.12441,-0.024 -0.12376,-0.0271 -0.12303,-0.0302 -0.12223,-0.0333 -0.12134,-0.0364 -0.12038,-0.0395 -0.11934,-0.0425 -0.11823,-0.0455 -0.11703,-0.0485 -0.11577,-0.0515 -0.11443,-0.0544 -0.11301,-0.0573 -0.11152,-0.0601 -0.10997,-0.0629 -0.10834,-0.0657 -0.10663,-0.0684 -0.10487,-0.0711 -0.10304,-0.0737 -0.10113,-0.0763 -0.0992,-0.0788 -0.0971,-0.0813 -0.0951,-0.0838 -0.0929,-0.0862 -0.0907,-0.0885 -0.0884,-0.0907 -0.0861,-0.093 -0.0837,-0.0951 -0.0813,-0.0972 -0.0788,-0.0992 -0.0762,-0.10119 -0.0736,-0.10309 -0.071,-0.10492 -0.0683,-0.10669 -0.0656,-0.10838 -0.0628,-0.11001 -0.06,-0.11157 -0.0572,-0.11305 -0.0543,-0.11447 -0.0514,-0.1158 -0.0484,-0.11707 -0.0455,-0.11826 -0.0424,-0.11937 -0.0394,-0.12041 -0.0363,-0.12137 -0.0332,-0.12225 -0.0302,-0.12305 -0.027,-0.12378 -0.0239,-0.12442 -0.0207,-0.12499 -0.0175,-0.12547 -0.0144,-0.12588 -0.0112,-0.1262 -0.008,-0.12644 -0.005,-0.12661 -0.002,-0.12668 0.002,-0.12668 0.005,-0.1266 0.008,-0.12643 0.0113,-0.12619 0.0145,-0.12587 0.0177,-0.12545 0.0208,-0.12497 0.024,-0.1244 0.0271,-0.12375 0.0303,-0.12303 0.0334,-0.12222 0.0365,-0.12133 0.0395,-0.12037 0.0426,-0.11934 0.0456,-0.11821 0.0485,-0.11703 0.0515,-0.11575 0.0544,-0.11442 0.0573,-0.11299 0.0601,-0.11151 0.0629,-0.10995 0.0657,-0.10833 0.0684,-0.10662 0.0711,-0.10485 0.0738,-0.10302 0.0763,-0.10112 0.0789,-0.0991 0.0814,-0.0971 0.0838,-0.095 0.0862,-0.0929 0.0885,-0.0907 0.0908,-0.0884 0.093,-0.0861 0.0951,-0.0837 0.0972,-0.0812 0.0992,-0.0787 0.1012,-0.0762 0.10311,-0.0736 0.10493,-0.071 0.10671,-0.0683 0.1084,-0.0656 0.11002,-0.0628 0.11158,-0.06 0.11307,-0.0572 0.11447,-0.0543 0.11582,-0.0513 0.11708,-0.0484 0.11827,-0.0454 0.11938,-0.0424 0.12042,-0.0394 0.12138,-0.0363 0.12226,-0.0332 0.12306,-0.0301 0.12378,-0.027 0.12443,-0.0239 0.12499,-0.0207 0.12548,-0.0175 0.12588,-0.0143 0.1262,-0.0111 0.12645,-0.008 0.1266,-0.005 0.12669,-0.002 0.12668,0.002 0.1266,0.005 0.12643,0.008 0.12618,0.0113 0.12587,0.0145 0.12545,0.0177 0.12496,0.0209 0.1244,0.024 0.12374,0.0272 0.12302,0.0303 0.12221,0.0334 0.12133,0.0365 0.12036,0.0395 0.11932,0.0426 0.11821,0.0456 0.11701,0.0486 0.11574,0.0515 0.1144,0.0544 0.11299,0.0573 0.11149,0.0602 0.10994,0.063 0.1083,0.0657 0.10661,0.0685 0.10484,0.0711 0.103,0.0738 0.1011,0.0764 0.0991,0.0789 0.0971,0.0814 0.095,0.0838 0.0928,0.0862 0.0906,0.0885 0.0884,0.0908 0.086,0.093 0.0836,0.0951 0.0812,0.0972 0.0787,0.0993 0.0762,0.10122 0.0736,0.10312 0.071,0.10496 0.0683,0.10672 0.0656,0.10841 0.0628,0.11004 0.06,0.1116 0.0571,0.11308 0.0542,0.11449 0.0513,0.11582 0.0484,0.1171 0.0454,0.11828 0.0424,0.11939 0.0393,0.12043 0.0363,0.12138 0.0332,0.12227 0.0301,0.12307 0.027,0.12379 0.0238,0.12443 0.0207,0.125 0.0175,0.12548 0.0143,0.12588 0.0111,0.12621 0.008,0.12645 0.005,0.1266 z"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path3"
|
||||
d="m 101.09084,151.61745 -0.96548,-4.23005"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path4"
|
||||
d="m 100.12536,147.3874 2.70522,-3.39225"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path5"
|
||||
d="m 102.83058,143.99515 h 4.33884"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path6"
|
||||
d="m 107.16942,143.99515 2.70522,3.39225"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path7"
|
||||
d="m 109.87464,147.3874 -0.96548,4.23005"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path8"
|
||||
d="M 108.90916,151.61745 105,153.5"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path9"
|
||||
d="m 105,153.5 -3.90916,-1.88255"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path10"
|
||||
d="m 106.95458,152.55872 h -3.90916"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path11"
|
||||
d="m 103.04542,152.55872 -2.43732,-3.0563"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path12"
|
||||
d="m 100.6081,149.50242 0.86987,-3.81115"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path13"
|
||||
d="M 101.47797,145.69127 105,143.99515"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path14"
|
||||
d="m 105,143.99515 3.52203,1.69612"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path15"
|
||||
d="m 108.52203,145.69127 0.86987,3.81115"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path16"
|
||||
d="m 109.3919,149.50242 -2.43732,3.0563"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path17"
|
||||
d="m 105,152.55872 -3.17324,-1.52815"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path18"
|
||||
d="m 101.82676,151.03057 -0.78372,-3.43372"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path19"
|
||||
d="m 101.04304,147.59685 2.19595,-2.75364"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path20"
|
||||
d="m 103.23899,144.84321 h 3.52202"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path21"
|
||||
d="m 106.76101,144.84321 2.19595,2.75364"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path22"
|
||||
d="m 108.95696,147.59685 -0.78372,3.43372"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path23"
|
||||
d="M 108.17324,151.03057 105,152.55872"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path24"
|
||||
d="m 103.41338,151.79465 -1.97848,-2.48094"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path25"
|
||||
d="m 101.4349,149.31371 0.70611,-3.09368"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path26"
|
||||
d="M 102.14101,146.22003 105,144.84321"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path27"
|
||||
d="m 105,144.84321 2.85899,1.37682"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path28"
|
||||
d="m 107.85899,146.22003 0.70611,3.09368"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path29"
|
||||
d="m 108.5651,149.31371 -1.97848,2.48094"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path30"
|
||||
d="m 106.58662,151.79465 h -3.17324"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path31"
|
||||
d="m 105,151.79465 -2.57586,-1.24047"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path32"
|
||||
d="m 102.42414,150.55418 -0.63619,-2.78731"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path33"
|
||||
d="m 101.78795,147.76687 1.78255,-2.23525"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path34"
|
||||
d="m 103.5705,145.53162 h 2.85899"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path35"
|
||||
d="m 106.42949,145.53162 1.78256,2.23525"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path36"
|
||||
d="m 108.21205,147.76687 -0.63619,2.78731"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path37"
|
||||
d="M 107.57586,150.55418 105,151.79465"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path38"
|
||||
d="m 107.32077,146.64925 0.57318,2.51127"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path39"
|
||||
d="m 107.89395,149.16052 -1.60602,2.01389"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path40"
|
||||
d="m 106.28793,151.17441 h -2.57586"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path41"
|
||||
d="m 103.71207,151.17441 -1.60602,-2.01389"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path42"
|
||||
d="m 102.10605,149.16052 0.57318,-2.51127"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path43"
|
||||
d="M 102.67923,146.64925 105,145.53162"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path44"
|
||||
d="m 105,145.53162 2.32077,1.11763"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path45"
|
||||
d="m 102.90906,150.16747 -0.51642,-2.26258"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path46"
|
||||
d="m 102.39264,147.90489 1.44698,-1.81445"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path47"
|
||||
d="m 103.83962,146.09044 h 2.32076"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path48"
|
||||
d="m 106.16038,146.09044 1.44698,1.81445"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path49"
|
||||
d="m 107.60736,147.90489 -0.51642,2.26258"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path50"
|
||||
d="M 107.09094,150.16747 105,151.17441"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path51"
|
||||
d="m 105,151.17441 -2.09094,-1.00694"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path52"
|
||||
d="m 106.04547,150.67094 h -2.09094"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path53"
|
||||
d="m 103.95453,150.67094 -1.30368,-1.63476"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path54"
|
||||
d="m 102.65085,149.03618 0.46528,-2.03852"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path55"
|
||||
d="M 103.11613,146.99766 105,146.09044"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path56"
|
||||
d="m 105,146.09044 1.88387,0.90722"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path57"
|
||||
d="m 106.88387,146.99766 0.46528,2.03852"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path58"
|
||||
d="m 107.34915,149.03618 -1.30368,1.63476"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path59"
|
||||
d="M 106.69731,149.85356 105,150.67094"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path60"
|
||||
d="m 105,150.67094 -1.69731,-0.81738"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path61"
|
||||
d="m 103.30269,149.85356 -0.4192,-1.83664"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path62"
|
||||
d="m 102.88349,148.01692 1.17457,-1.47287"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path63"
|
||||
d="m 104.05806,146.54405 h 1.88388"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path64"
|
||||
d="m 105.94194,146.54405 1.17457,1.47287"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path65"
|
||||
d="m 107.11651,148.01692 -0.4192,1.83664"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path66"
|
||||
d="m 104.15134,150.26225 -1.05825,-1.32701"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path67"
|
||||
d="m 103.09309,148.93524 0.37768,-1.65476"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path68"
|
||||
d="M 103.47077,147.28048 105,146.54405"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path69"
|
||||
d="m 105,146.54405 1.52922,0.73643"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path70"
|
||||
d="m 106.52922,147.28048 0.37769,1.65476"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path71"
|
||||
d="m 106.90691,148.93524 -1.05825,1.32701"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path72"
|
||||
d="m 105.84866,150.26225 h -1.69732"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path73"
|
||||
d="m 105,150.26225 -1.37778,-0.66351"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path74"
|
||||
d="m 103.62222,149.59874 -0.34029,-1.49088"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path75"
|
||||
d="m 103.28193,148.10786 0.95346,-1.19559"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path76"
|
||||
d="m 104.23539,146.91227 h 1.52922"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path77"
|
||||
d="m 105.76461,146.91227 0.95346,1.19559"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path78"
|
||||
d="m 106.71807,148.10786 -0.34029,1.49088"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path79"
|
||||
d="M 106.37778,149.59874 105,150.26225"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path80"
|
||||
d="m 106.54793,148.8533 -0.85904,1.0772"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path81"
|
||||
d="m 105.68889,149.9305 h -1.37778"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path82"
|
||||
d="m 104.31111,149.9305 -0.85904,-1.0772"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path83"
|
||||
d="m 103.45207,148.8533 0.30659,-1.34324"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path84"
|
||||
d="M 103.75866,147.51006 105,146.91227"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path85"
|
||||
d="m 105,146.91227 1.24134,0.59779"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path86"
|
||||
d="m 106.24134,147.51006 0.30659,1.34324"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path87"
|
||||
d="m 106.39463,148.18168 -0.27622,1.21022"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path88"
|
||||
d="M 106.11841,149.3919 105,149.9305"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path89"
|
||||
d="m 105,149.9305 -1.11841,-0.5386"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path90"
|
||||
d="m 103.88159,149.3919 -0.27622,-1.21022"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path91"
|
||||
d="m 103.60537,148.18168 0.77396,-0.97052"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path92"
|
||||
d="m 104.37933,147.21116 h 1.24134"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path93"
|
||||
d="m 105.62067,147.21116 0.77396,0.97052"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path94"
|
||||
d="m 105.5592,149.6612 h -1.1184"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path95"
|
||||
d="m 104.4408,149.6612 -0.69732,-0.87441"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path96"
|
||||
d="m 103.74348,148.78679 0.24887,-1.09037"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path97"
|
||||
d="M 103.99235,147.69642 105,147.21116"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path98"
|
||||
d="m 105,147.21116 1.00765,0.48526"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path99"
|
||||
d="m 106.00765,147.69642 0.24887,1.09037"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path100"
|
||||
d="m 106.25652,148.78679 -0.69732,0.87441"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path101"
|
||||
d="m 104.49617,147.45379 h 1.00766"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path102"
|
||||
d="m 105.50383,147.45379 0.62826,0.78782"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path103"
|
||||
d="m 106.13209,148.24161 -0.22423,0.98239"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path104"
|
||||
d="M 105.90786,149.224 105,149.6612"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path105"
|
||||
d="m 105,149.6612 -0.90786,-0.4372"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path106"
|
||||
d="m 104.09214,149.224 -0.22423,-0.98239"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path107"
|
||||
d="m 103.86791,148.24161 0.62826,-0.78782"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path108"
|
||||
d="m 105,147.45379 0.81796,0.39391"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path109"
|
||||
d="m 105.81796,147.8477 0.20201,0.8851"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path110"
|
||||
d="m 106.01997,148.7328 -0.56604,0.7098"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path111"
|
||||
d="m 105.45393,149.4426 h -0.90786"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path112"
|
||||
d="m 104.54607,149.4426 -0.56604,-0.7098"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path113"
|
||||
d="m 103.98003,148.7328 0.20201,-0.8851"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path114"
|
||||
d="M 104.18204,147.8477 105,147.45379"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path115"
|
||||
d="m 104.59102,147.65075 h 0.81796"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path116"
|
||||
d="m 105.40898,147.65075 0.50999,0.6395"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path117"
|
||||
d="m 105.91897,148.29025 -0.18202,0.79745"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path118"
|
||||
d="M 105.73695,149.0877 105,149.4426"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path119"
|
||||
d="m 105,149.4426 -0.73695,-0.3549"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path120"
|
||||
d="m 104.26305,149.0877 -0.18202,-0.79745"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path121"
|
||||
d="m 104.08103,148.29025 0.50999,-0.6395"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path122"
|
||||
d="m 104.17204,148.68898 0.16399,-0.71848"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path123"
|
||||
d="M 104.33603,147.9705 105,147.65075"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path124"
|
||||
d="m 105,147.65075 0.66397,0.31975"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path125"
|
||||
d="m 105.66397,147.9705 0.16399,0.71848"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path126"
|
||||
d="m 105.82796,148.68898 -0.45948,0.57617"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path127"
|
||||
d="m 105.36848,149.26515 h -0.73696"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path128"
|
||||
d="m 104.63152,149.26515 -0.45948,-0.57617"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path129"
|
||||
d="m 105,149.26515 -0.59822,-0.28809"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path130"
|
||||
d="m 104.40178,148.97706 -0.14775,-0.64732"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path131"
|
||||
d="m 104.25403,148.32974 0.41398,-0.51912"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path132"
|
||||
d="m 104.66801,147.81062 h 0.66398"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path133"
|
||||
d="m 105.33199,147.81062 0.41398,0.51912"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path134"
|
||||
d="m 105.74597,148.32974 -0.14775,0.64732"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path135"
|
||||
d="M 105.59822,148.97706 105,149.26515"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path136"
|
||||
d="m 105.29911,149.1211 h -0.59822"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path137"
|
||||
d="m 104.70089,149.1211 -0.37298,-0.4677"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path138"
|
||||
d="m 104.32791,148.6534 0.13311,-0.58322"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path139"
|
||||
d="M 104.46102,148.07018 105,147.81062"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path140"
|
||||
d="m 105,147.81062 0.53897,0.25956"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path141"
|
||||
d="m 105.53897,148.07018 0.13312,0.58322"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path142"
|
||||
d="m 105.67209,148.6534 -0.37298,0.4677"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
<path
|
||||
id="path143"
|
||||
d="m 105.62111,148.5 -0.0129,0.12582 -0.0381,0.1206 -0.0617,0.11038 -0.0828,0.0956 -0.10046,0.0768 -0.11395,0.0549 -0.1227,0.0307 -0.12637,0.005 -0.1248,-0.0205 -0.11805,-0.0454 -0.10641,-0.0684 -0.0904,-0.0885 -0.0705,-0.10497 -0.0478,-0.11708 -0.0231,-0.12435 0.003,-0.12645 0.0281,-0.12331 0.0525,-0.11506 0.0747,-0.10204 0.0938,-0.0848 0.10908,-0.064 0.11978,-0.0406 0.12553,-0.0155 0.12606,0.0103 0.12136,0.0356 0.11165,0.0594 0.0973,0.0808 0.0789,0.0988 0.0572,0.11278 0.0332,0.12204 0.008,0.10119 z"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.13;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(3.7775238,0,0,-3.7799327,1.8887619,1120.75)" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 50 KiB |
7770
misc/basic_projectile.dxf
Normal file
7770
misc/basic_projectile.dxf
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,13 +1,9 @@
|
||||
#pragma once
|
||||
#include <SDL3/SDL_stdinc.h>
|
||||
|
||||
#ifndef CONST_NS
|
||||
#define CONST_NS
|
||||
|
||||
constexpr int SCREEN_WIDTH = 1600;
|
||||
constexpr int SCREEN_HEIGHT = 1200;
|
||||
constexpr int WORLD_WIDTH = 20000;
|
||||
constexpr int WORLD_HEIGHT = 200000;
|
||||
constexpr int TARGET_FPS = 120;
|
||||
constexpr Uint64 TARGET_FRAME_TIME_NS = 1'000'000'000 / TARGET_FPS;
|
||||
|
||||
#endif
|
3
src/macro.hpp
Normal file
3
src/macro.hpp
Normal file
@ -0,0 +1,3 @@
|
||||
#pragma once
|
||||
|
||||
#define FIND_CENTER(rect) {rect.x + (rect.w / 2), rect.y + (rect.h / 2)}
|
118
src/main.cpp
118
src/main.cpp
@ -1,21 +1,28 @@
|
||||
#include "const.hpp"
|
||||
#include "projectiles.hpp"
|
||||
#include "types.hpp"
|
||||
#include <SDL3/SDL.h>
|
||||
#include <SDL3/SDL_events.h>
|
||||
#include <SDL3/SDL_iostream.h>
|
||||
#include <SDL3/SDL_mouse.h>
|
||||
#include <SDL3/SDL_render.h>
|
||||
#include <SDL3/SDL_scancode.h>
|
||||
#include <SDL3/SDL_stdinc.h>
|
||||
#include <SDL3/SDL_surface.h>
|
||||
#include <SDL3/SDL_timer.h>
|
||||
#include <SDL3/SDL_video.h>
|
||||
#include <SDL3_image/SDL_image.h>
|
||||
#include <cstddef>
|
||||
#include <cstring>
|
||||
#include <vector>
|
||||
|
||||
sdl_session main_sdl_session;
|
||||
SDL_DisplayMode *mode;
|
||||
|
||||
#define WIDTH_RATIO 15
|
||||
#define HEIGHT_RATIO 41.53846153846154
|
||||
#define MIN_INPUT_DELAY 0
|
||||
#define MIN_INPUT_DELAY_MOVEMENT 0
|
||||
#define MIN_INPUT_DELAY_FIRE 200
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
SDL_Init(SDL_INIT_VIDEO);
|
||||
@ -29,35 +36,36 @@ int main(int argc, char *argv[]) {
|
||||
main_sdl_session.renderer =
|
||||
SDL_CreateRenderer(main_sdl_session.window, "gpu,vulcan");
|
||||
|
||||
SDL_Texture *player_ship_texture = nullptr;
|
||||
{
|
||||
SDL_IOStream *texture_file = SDL_IOFromFile("assets/player_ship.svg", "r");
|
||||
SDL_Surface *player_ship_surface = IMG_LoadSizedSVG_IO(
|
||||
texture_file,
|
||||
static_cast<int>(static_cast<double>(mode->w) /
|
||||
static_cast<double>(WIDTH_RATIO)),
|
||||
static_cast<int>(static_cast<double>(mode->h) /
|
||||
static_cast<double>(HEIGHT_RATIO)));
|
||||
player_ship_type player_ship = [&mode]() -> player_ship_type {
|
||||
SDL_Texture *player_ship_texture = nullptr;
|
||||
|
||||
SDL_IOStream *texture_file = SDL_IOFromFile("assets/player_ship.svg", "r");
|
||||
|
||||
float ship_width = static_cast<float>(static_cast<double>(mode->w) /
|
||||
static_cast<double>(WIDTH_RATIO));
|
||||
float ship_height = static_cast<float>(static_cast<double>(mode->h) /
|
||||
static_cast<double>(HEIGHT_RATIO));
|
||||
|
||||
SDL_Surface *player_ship_surface =
|
||||
IMG_LoadSizedSVG_IO(texture_file, ship_width, ship_height);
|
||||
SDL_CloseIO(texture_file);
|
||||
|
||||
player_ship_texture = SDL_CreateTextureFromSurface(
|
||||
main_sdl_session.renderer, player_ship_surface);
|
||||
SDL_DestroySurface(player_ship_surface);
|
||||
}
|
||||
|
||||
SDL_FRect player_ship_rect = {
|
||||
0, 0,
|
||||
static_cast<float>(static_cast<double>(mode->w) /
|
||||
static_cast<double>(WIDTH_RATIO)),
|
||||
static_cast<float>(static_cast<double>(mode->h) /
|
||||
static_cast<double>(HEIGHT_RATIO))};
|
||||
SDL_FRect player_ship_rect = {0, 0, ship_width, ship_height};
|
||||
|
||||
SDL_FPoint gun_offset = {ship_width * 0.9f, ship_height * 0.9f};
|
||||
|
||||
return {player_ship_rect, gun_offset, player_ship_texture};
|
||||
}();
|
||||
bool running = true;
|
||||
Uint64 lastFrameTime = SDL_GetTicksNS();
|
||||
float deltaTime = 0.0f;
|
||||
|
||||
Uint8 player_ship_speed = 1;
|
||||
std::vector<projectile> projectiles;
|
||||
while (running) {
|
||||
const Uint64 frameStart = SDL_GetTicksNS();
|
||||
|
||||
@ -72,35 +80,61 @@ int main(int argc, char *argv[]) {
|
||||
}
|
||||
}
|
||||
|
||||
const bool *keystate = SDL_GetKeyboardState(NULL);
|
||||
static Uint32 last_toggle_direction[4];
|
||||
std::memset(last_toggle_direction, 0, sizeof(last_toggle_direction));
|
||||
if ((keystate[SDL_SCANCODE_DOWN] || keystate[SDL_SCANCODE_S]) &&
|
||||
(SDL_GetTicks() - last_toggle_direction[0] > MIN_INPUT_DELAY)) {
|
||||
player_ship_rect.y += player_ship_speed;
|
||||
last_toggle_direction[0] = SDL_GetTicks();
|
||||
}
|
||||
if ((keystate[SDL_SCANCODE_UP] || keystate[SDL_SCANCODE_W]) &&
|
||||
(SDL_GetTicks() - last_toggle_direction[1] > MIN_INPUT_DELAY)) {
|
||||
player_ship_rect.y -= player_ship_speed;
|
||||
last_toggle_direction[1] = SDL_GetTicks();
|
||||
}
|
||||
if ((keystate[SDL_SCANCODE_RIGHT] || keystate[SDL_SCANCODE_D]) &&
|
||||
(SDL_GetTicks() - last_toggle_direction[2] > MIN_INPUT_DELAY)) {
|
||||
player_ship_rect.x += player_ship_speed;
|
||||
last_toggle_direction[2] = SDL_GetTicks();
|
||||
}
|
||||
if ((keystate[SDL_SCANCODE_LEFT] || keystate[SDL_SCANCODE_A]) &&
|
||||
(SDL_GetTicks() - last_toggle_direction[3] > MIN_INPUT_DELAY)) {
|
||||
player_ship_rect.x -= player_ship_speed;
|
||||
last_toggle_direction[3] = SDL_GetTicks();
|
||||
{
|
||||
const bool *keystate = SDL_GetKeyboardState(NULL);
|
||||
static Uint32 last_toggle_direction[4];
|
||||
std::memset(last_toggle_direction, 0, sizeof(last_toggle_direction));
|
||||
if ((keystate[SDL_SCANCODE_DOWN] || keystate[SDL_SCANCODE_S]) &&
|
||||
(SDL_GetTicks() - last_toggle_direction[0] >
|
||||
MIN_INPUT_DELAY_MOVEMENT)) {
|
||||
player_ship.rect.y += player_ship_speed;
|
||||
last_toggle_direction[0] = SDL_GetTicks();
|
||||
}
|
||||
if ((keystate[SDL_SCANCODE_UP] || keystate[SDL_SCANCODE_W]) &&
|
||||
(SDL_GetTicks() - last_toggle_direction[1] >
|
||||
MIN_INPUT_DELAY_MOVEMENT)) {
|
||||
player_ship.rect.y -= player_ship_speed;
|
||||
last_toggle_direction[1] = SDL_GetTicks();
|
||||
}
|
||||
if ((keystate[SDL_SCANCODE_RIGHT] || keystate[SDL_SCANCODE_D]) &&
|
||||
(SDL_GetTicks() - last_toggle_direction[2] >
|
||||
MIN_INPUT_DELAY_MOVEMENT)) {
|
||||
player_ship.rect.x += player_ship_speed;
|
||||
last_toggle_direction[2] = SDL_GetTicks();
|
||||
}
|
||||
if ((keystate[SDL_SCANCODE_LEFT] || keystate[SDL_SCANCODE_A]) &&
|
||||
(SDL_GetTicks() - last_toggle_direction[3] >
|
||||
MIN_INPUT_DELAY_MOVEMENT)) {
|
||||
player_ship.rect.x -= player_ship_speed;
|
||||
last_toggle_direction[3] = SDL_GetTicks();
|
||||
}
|
||||
|
||||
const SDL_MouseButtonFlags mousestate =
|
||||
SDL_GetMouseState(nullptr, nullptr);
|
||||
static Uint32 last_fire = 0;
|
||||
if ((mousestate & SDL_BUTTON_LMASK || keystate[SDL_SCANCODE_SPACE]) &&
|
||||
SDL_GetTicks() - last_fire > MIN_INPUT_DELAY_FIRE) {
|
||||
projectiles.push_back(
|
||||
spawn_projectile({player_ship.rect.x + player_ship.gun_offset.x,
|
||||
player_ship.rect.y + player_ship.gun_offset.y},
|
||||
1, 0, 3, "assets/basic_projectile.svg", nullptr));
|
||||
last_fire = SDL_GetTicks();
|
||||
}
|
||||
}
|
||||
|
||||
SDL_SetRenderDrawColor(main_sdl_session.renderer, 0, 0, 0, 255);
|
||||
SDL_RenderClear(main_sdl_session.renderer);
|
||||
|
||||
SDL_RenderTexture(main_sdl_session.renderer, player_ship_texture, nullptr,
|
||||
&player_ship_rect);
|
||||
for (projectile &p : projectiles) {
|
||||
if (p.rect.x > mode->w || p.rect.y > mode->h) {
|
||||
projectiles.erase(projectiles.begin() + (&p - projectiles.data()));
|
||||
} else { // TODO colision detection
|
||||
step_projectile(p);
|
||||
}
|
||||
}
|
||||
|
||||
SDL_RenderTexture(main_sdl_session.renderer, player_ship.texture, nullptr,
|
||||
&player_ship.rect);
|
||||
|
||||
SDL_RenderPresent(main_sdl_session.renderer);
|
||||
|
||||
@ -118,7 +152,7 @@ int main(int argc, char *argv[]) {
|
||||
lastFrameTime = SDL_GetTicksNS();
|
||||
}
|
||||
|
||||
SDL_DestroyTexture(player_ship_texture);
|
||||
SDL_DestroyTexture(player_ship.texture);
|
||||
SDL_DestroyRenderer(main_sdl_session.renderer);
|
||||
SDL_DestroyWindow(main_sdl_session.window);
|
||||
SDL_Quit();
|
||||
|
3
src/main.hpp
Normal file
3
src/main.hpp
Normal file
@ -0,0 +1,3 @@
|
||||
#pragma once
|
||||
#include "types.hpp"
|
||||
extern sdl_session main_sdl_session;
|
29
src/meth.cpp
Normal file
29
src/meth.cpp
Normal file
@ -0,0 +1,29 @@
|
||||
#pragma once
|
||||
|
||||
#include "types.hpp"
|
||||
#include <cmath>
|
||||
|
||||
SDL_FPoint find_dst_point_with_angle_and_distance(SDL_FPoint start, Angle angle,
|
||||
float distance) {
|
||||
float angle_rad = (angle - 90) * M_PI / 180.0f;
|
||||
|
||||
float dx = std::cos(angle_rad) * distance;
|
||||
float dy = std::sin(angle_rad) * distance;
|
||||
|
||||
float calculated_distance = std::sqrt(dx * dx + dy * dy);
|
||||
|
||||
SDL_FPoint result;
|
||||
|
||||
if (calculated_distance > 0) {
|
||||
dx /= calculated_distance;
|
||||
dy /= calculated_distance;
|
||||
|
||||
result.x = start.x + dx * distance;
|
||||
result.y = start.y + dy * distance;
|
||||
} else {
|
||||
result.x = start.x;
|
||||
result.y = start.y;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
5
src/meth.hpp
Normal file
5
src/meth.hpp
Normal file
@ -0,0 +1,5 @@
|
||||
#pragma once
|
||||
#include "types.hpp"
|
||||
#include <SDL3/SDL_rect.h>
|
||||
SDL_FPoint find_dst_point_with_angle_and_distance(SDL_FPoint start, Angle angle,
|
||||
float distance);
|
63
src/projectiles.cpp
Normal file
63
src/projectiles.cpp
Normal file
@ -0,0 +1,63 @@
|
||||
#include "macro.hpp"
|
||||
#include "main.hpp"
|
||||
#include "meth.hpp"
|
||||
#include "types.hpp"
|
||||
#include <SDL3/SDL.h>
|
||||
#include <SDL3/SDL_rect.h>
|
||||
#include <SDL3/SDL_render.h>
|
||||
#include <SDL3/SDL_surface.h>
|
||||
#include <SDL3_image/SDL_image.h>
|
||||
#include <array>
|
||||
void step_projectile(projectile p);
|
||||
|
||||
projectile spawn_projectile(SDL_FPoint position, float size_multiplier,
|
||||
Angle angle, float speed, char *texture_file_name,
|
||||
SDL_FRect *target) {
|
||||
|
||||
projectile p;
|
||||
SDL_IOStream *texture_file = SDL_IOFromFile(texture_file_name, "r");
|
||||
std::array<int, 2> texture_base_size;
|
||||
{
|
||||
SDL_Surface *tmp_surface = IMG_LoadSVG_IO(texture_file);
|
||||
texture_base_size = {tmp_surface->w, tmp_surface->h};
|
||||
SDL_DestroySurface(tmp_surface);
|
||||
}
|
||||
SDL_SeekIO(texture_file, 0, SDL_IO_SEEK_SET); // reset to top of the file
|
||||
SDL_Surface *projectile_surface =
|
||||
IMG_LoadSizedSVG_IO(texture_file, texture_base_size[0] * size_multiplier,
|
||||
texture_base_size[1] * size_multiplier);
|
||||
|
||||
SDL_CloseIO(texture_file);
|
||||
|
||||
p.texture = SDL_CreateTextureFromSurface(main_sdl_session.renderer,
|
||||
projectile_surface);
|
||||
SDL_DestroySurface(projectile_surface);
|
||||
|
||||
p.angle = angle;
|
||||
p.rect = {position.x, position.y, static_cast<float>(p.texture->w),
|
||||
static_cast<float>(p.texture->h)};
|
||||
p.speed = speed;
|
||||
if (target == nullptr) {
|
||||
p.target = nullptr;
|
||||
p.guided = false;
|
||||
} else {
|
||||
p.target = target;
|
||||
p.guided = true;
|
||||
}
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
void step_projectile(projectile &p) {
|
||||
SDL_FPoint center = FIND_CENTER(p.rect);
|
||||
|
||||
SDL_FPoint dst =
|
||||
find_dst_point_with_angle_and_distance(center, p.angle, p.speed);
|
||||
|
||||
p.rect.x = dst.x - (p.rect.w / 2);
|
||||
p.rect.y = dst.y - (p.rect.h / 2);
|
||||
center = FIND_CENTER(p.rect);
|
||||
SDL_RenderTexture(main_sdl_session.renderer, p.texture, nullptr, &p.rect);
|
||||
// SDL_RenderTextureRotated(main_sdl_session.renderer, p.texture, nullptr,
|
||||
// &p.rect, p.angle, ¢er, SDL_FLIP_NONE);
|
||||
}
|
7
src/projectiles.hpp
Normal file
7
src/projectiles.hpp
Normal file
@ -0,0 +1,7 @@
|
||||
#pragma once
|
||||
#include "types.hpp"
|
||||
#include <SDL3/SDL_rect.h>
|
||||
projectile spawn_projectile(SDL_FPoint position, float size_multiplier,
|
||||
Angle angle, float speed, char *texture_file_name,
|
||||
SDL_FRect *target);
|
||||
void step_projectile(projectile &p);
|
104
src/types.hpp
104
src/types.hpp
@ -1,12 +1,9 @@
|
||||
#include "const.hpp"
|
||||
#pragma once
|
||||
#include <SDL3/SDL.h>
|
||||
#include <SDL3/SDL_rect.h>
|
||||
#include <SDL3_image/SDL_image.h>
|
||||
#include <cmath>
|
||||
#include <iostream>
|
||||
#include <optional>
|
||||
|
||||
#ifndef TYPES_NS
|
||||
#define TYPES_NS
|
||||
|
||||
struct Angle {
|
||||
private:
|
||||
@ -41,9 +38,61 @@ public:
|
||||
normalize();
|
||||
return *this;
|
||||
}
|
||||
// Binary operators for int
|
||||
Angle operator+(int rhs) const {
|
||||
return Angle(static_cast<int>(value) + rhs);
|
||||
}
|
||||
|
||||
Angle operator-(int rhs) const {
|
||||
return Angle(static_cast<int>(value) - rhs);
|
||||
}
|
||||
|
||||
Angle operator*(int rhs) const {
|
||||
return Angle(static_cast<int>(value * rhs));
|
||||
}
|
||||
|
||||
Angle operator/(int rhs) const {
|
||||
return Angle(static_cast<int>(value / rhs));
|
||||
}
|
||||
|
||||
// Binary operators for double
|
||||
Angle operator+(double rhs) const {
|
||||
return Angle(static_cast<int>(value + rhs));
|
||||
}
|
||||
|
||||
Angle operator-(double rhs) const {
|
||||
return Angle(static_cast<int>(value - rhs));
|
||||
}
|
||||
|
||||
Angle operator*(double rhs) const {
|
||||
return Angle(static_cast<int>(value * rhs));
|
||||
}
|
||||
|
||||
Angle operator/(double rhs) const {
|
||||
return Angle(static_cast<int>(value / rhs));
|
||||
}
|
||||
|
||||
// Binary operators for float
|
||||
Angle operator+(float rhs) const {
|
||||
return Angle(static_cast<int>(value + rhs));
|
||||
}
|
||||
|
||||
Angle operator-(float rhs) const {
|
||||
return Angle(static_cast<int>(value - rhs));
|
||||
}
|
||||
|
||||
Angle operator*(float rhs) const {
|
||||
return Angle(static_cast<int>(value * rhs));
|
||||
}
|
||||
|
||||
Angle operator/(float rhs) const {
|
||||
return Angle(static_cast<int>(value / rhs));
|
||||
}
|
||||
|
||||
// Type conversion
|
||||
operator int() const { return value; }
|
||||
operator int() const { return static_cast<int>(value); }
|
||||
operator double() const { return static_cast<double>(value); }
|
||||
operator float() const { return value; }
|
||||
|
||||
// Stream output
|
||||
friend std::ostream &operator<<(std::ostream &os, const Angle &a) {
|
||||
@ -51,35 +100,22 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
struct basic_cords {
|
||||
float x;
|
||||
float y;
|
||||
};
|
||||
|
||||
struct Entity {
|
||||
SDL_FRect position;
|
||||
SDL_FRect Tposition;
|
||||
bool gotoT = false;
|
||||
SDL_Texture *texture;
|
||||
SDL_Rect srcRect;
|
||||
float speed;
|
||||
Angle angle = 0;
|
||||
|
||||
basic_cords Central_position(std::optional<float> x = std::nullopt,
|
||||
std::optional<float> y = std::nullopt) {
|
||||
if (x != std::nullopt) {
|
||||
position.x = *x - position.w / 2;
|
||||
}
|
||||
if (y != std::nullopt) {
|
||||
position.y = *y - position.h / 2;
|
||||
}
|
||||
|
||||
return {position.x + position.w / 2, position.y + position.h / 2};
|
||||
}
|
||||
};
|
||||
|
||||
struct sdl_session {
|
||||
SDL_Window *window;
|
||||
SDL_Renderer *renderer;
|
||||
};
|
||||
#endif
|
||||
|
||||
struct player_ship_type {
|
||||
SDL_FRect rect;
|
||||
SDL_FPoint gun_offset;
|
||||
SDL_Texture *texture;
|
||||
};
|
||||
|
||||
struct projectile {
|
||||
SDL_FRect rect;
|
||||
SDL_Texture *texture;
|
||||
float speed;
|
||||
Angle angle = 0;
|
||||
bool guided;
|
||||
SDL_FRect *target;
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user