From 3029eaf4850f4eb00735d98ef98327e1414abe3f Mon Sep 17 00:00:00 2001 From: Anton Laktionov Date: Mon, 25 May 2026 15:44:45 +0300 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D0=BE=D1=82=D0=BE=D0=B2?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B8=D0=B3=D1=80=D1=8B=20=D1=82=D0=B0=D0=BD?= =?UTF-8?q?=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/coinBronze.png | Bin 0 -> 2568 bytes assets/coinGold.png | Bin 0 -> 2370 bytes assets/coinSilver.png | Bin 0 -> 2586 bytes assets/gold_1.png | Bin 0 -> 3596 bytes assets/gold_2.png | Bin 0 -> 3283 bytes assets/gold_3.png | Bin 0 -> 2877 bytes assets/laserBlue01.png | Bin 0 -> 669 bytes assets/laserRed01.png | Bin 0 -> 735 bytes assets/star.png | Bin 0 -> 1616 bytes assets/tankBlue_barrel1.png | Bin 0 -> 139 bytes assets/tankBlue_barrel1_outline.png | Bin 0 -> 238 bytes assets/tankBlue_barrel2.png | Bin 0 -> 135 bytes assets/tankBlue_barrel2_outline.png | Bin 0 -> 235 bytes assets/tankBlue_barrel3.png | Bin 0 -> 135 bytes assets/tankBlue_barrel3_outline.png | Bin 0 -> 235 bytes assets/tankBody_bigRed.png | Bin 0 -> 319 bytes assets/tankBody_bigRed_outline.png | Bin 0 -> 592 bytes assets/tankBody_blue.png | Bin 0 -> 267 bytes assets/tankBody_blue_outline.png | Bin 0 -> 464 bytes assets/tankBody_dark.png | Bin 0 -> 309 bytes assets/tankBody_darkLarge.png | Bin 0 -> 352 bytes assets/tankBody_darkLarge_outline.png | Bin 0 -> 649 bytes assets/tankBody_dark_outline.png | Bin 0 -> 545 bytes assets/tankBody_green.png | Bin 0 -> 342 bytes assets/tankBody_green_outline.png | Bin 0 -> 541 bytes assets/tankBody_huge.png | Bin 0 -> 432 bytes assets/tankBody_huge_outline.png | Bin 0 -> 679 bytes assets/tankBody_red.png | Bin 0 -> 229 bytes assets/tankBody_red_outline.png | Bin 0 -> 428 bytes assets/tankBody_sand.png | Bin 0 -> 294 bytes assets/tankBody_sand_outline.png | Bin 0 -> 487 bytes assets/tankDark_barrel1.png | Bin 0 -> 139 bytes assets/tankDark_barrel1_outline.png | Bin 0 -> 238 bytes assets/tankDark_barrel2.png | Bin 0 -> 135 bytes assets/tankDark_barrel2_outline.png | Bin 0 -> 235 bytes assets/tankDark_barrel3.png | Bin 0 -> 135 bytes assets/tankDark_barrel3_outline.png | Bin 0 -> 235 bytes assets/tankGreen_barrel1.png | Bin 0 -> 139 bytes assets/tankGreen_barrel1_outline.png | Bin 0 -> 238 bytes assets/tankGreen_barrel2.png | Bin 0 -> 135 bytes assets/tankGreen_barrel2_outline.png | Bin 0 -> 235 bytes assets/tankGreen_barrel3.png | Bin 0 -> 135 bytes assets/tankGreen_barrel3_outline.png | Bin 0 -> 235 bytes assets/tankRed_barrel1.png | Bin 0 -> 139 bytes assets/tankRed_barrel1_outline.png | Bin 0 -> 237 bytes assets/tankRed_barrel2.png | Bin 0 -> 135 bytes assets/tankRed_barrel2_outline.png | Bin 0 -> 237 bytes assets/tankRed_barrel3.png | Bin 0 -> 135 bytes assets/tankRed_barrel3_outline.png | Bin 0 -> 237 bytes assets/tankSand_barrel1.png | Bin 0 -> 139 bytes assets/tankSand_barrel1_outline.png | Bin 0 -> 238 bytes assets/tankSand_barrel2.png | Bin 0 -> 135 bytes assets/tankSand_barrel2_outline.png | Bin 0 -> 235 bytes assets/tankSand_barrel3.png | Bin 0 -> 135 bytes assets/tankSand_barrel3_outline.png | Bin 0 -> 235 bytes assets/tank_blue.png | Bin 0 -> 497 bytes assets/tank_dark.png | Bin 0 -> 539 bytes assets/tank_green.png | Bin 0 -> 491 bytes assets/tank_red.png | Bin 0 -> 471 bytes assets/tank_sand.png | Bin 0 -> 533 bytes assets/tileGrass1.png | Bin 0 -> 705 bytes assets/tileGrass2.png | Bin 0 -> 691 bytes assets/tileGrass_roadCornerLL.png | Bin 0 -> 1371 bytes assets/tileGrass_roadCornerLR.png | Bin 0 -> 1373 bytes assets/tileGrass_roadCornerUL.png | Bin 0 -> 1425 bytes assets/tileGrass_roadCornerUR.png | Bin 0 -> 1383 bytes assets/tileGrass_roadCrossing.png | Bin 0 -> 491 bytes assets/tileGrass_roadCrossingRound.png | Bin 0 -> 1303 bytes assets/tileGrass_roadEast.png | Bin 0 -> 404 bytes assets/tileGrass_roadNorth.png | Bin 0 -> 494 bytes assets/tileGrass_roadSplitE.png | Bin 0 -> 558 bytes assets/tileGrass_roadSplitN.png | Bin 0 -> 477 bytes assets/tileGrass_roadSplitS.png | Bin 0 -> 477 bytes assets/tileGrass_roadSplitW.png | Bin 0 -> 556 bytes assets/tileGrass_roadTransitionE.png | Bin 0 -> 895 bytes assets/tileGrass_roadTransitionE_dirt.png | Bin 0 -> 1223 bytes assets/tileGrass_roadTransitionN.png | Bin 0 -> 928 bytes assets/tileGrass_roadTransitionN_dirt.png | Bin 0 -> 1168 bytes assets/tileGrass_roadTransitionS.png | Bin 0 -> 970 bytes assets/tileGrass_roadTransitionS_dirt.png | Bin 0 -> 1226 bytes assets/tileGrass_roadTransitionW.png | Bin 0 -> 912 bytes assets/tileGrass_roadTransitionW_dirt.png | Bin 0 -> 1186 bytes assets/tileGrass_transitionE.png | Bin 0 -> 1183 bytes assets/tileGrass_transitionN.png | Bin 0 -> 1148 bytes assets/tileGrass_transitionS.png | Bin 0 -> 1138 bytes assets/tileGrass_transitionW.png | Bin 0 -> 1190 bytes assets/tileSand1.png | Bin 0 -> 717 bytes assets/tileSand2.png | Bin 0 -> 709 bytes assets/tileSand_roadCornerLL.png | Bin 0 -> 1233 bytes assets/tileSand_roadCornerLR.png | Bin 0 -> 1244 bytes assets/tileSand_roadCornerUL.png | Bin 0 -> 1308 bytes assets/tileSand_roadCornerUR.png | Bin 0 -> 1280 bytes assets/tileSand_roadCrossing.png | Bin 0 -> 556 bytes assets/tileSand_roadCrossingRound.png | Bin 0 -> 1218 bytes assets/tileSand_roadEast.png | Bin 0 -> 473 bytes assets/tileSand_roadNorth.png | Bin 0 -> 570 bytes assets/tileSand_roadSplitE.png | Bin 0 -> 630 bytes assets/tileSand_roadSplitN.png | Bin 0 -> 548 bytes assets/tileSand_roadSplitS.png | Bin 0 -> 537 bytes assets/tileSand_roadSplitW.png | Bin 0 -> 630 bytes assets/tracksDouble.png | Bin 0 -> 134 bytes assets/tracksLarge.png | Bin 0 -> 132 bytes assets/tracksSmall.png | Bin 0 -> 131 bytes assets/treeBrown_large.png | Bin 0 -> 2290 bytes assets/treeBrown_small.png | Bin 0 -> 1359 bytes assets/treeGreen_large.png | Bin 0 -> 2272 bytes assets/treeGreen_small.png | Bin 0 -> 1303 bytes bonus.py | 24 ++++++ bullet.py | 26 +++++++ main.py | 57 ++++++++++++++ map.py | 86 ++++++++++++++++++++++ tank.py | 85 +++++++++++++++++++++ view.py | 0 113 files changed, 278 insertions(+) create mode 100644 assets/coinBronze.png create mode 100644 assets/coinGold.png create mode 100644 assets/coinSilver.png create mode 100644 assets/gold_1.png create mode 100644 assets/gold_2.png create mode 100644 assets/gold_3.png create mode 100644 assets/laserBlue01.png create mode 100644 assets/laserRed01.png create mode 100644 assets/star.png create mode 100644 assets/tankBlue_barrel1.png create mode 100644 assets/tankBlue_barrel1_outline.png create mode 100644 assets/tankBlue_barrel2.png create mode 100644 assets/tankBlue_barrel2_outline.png create mode 100644 assets/tankBlue_barrel3.png create mode 100644 assets/tankBlue_barrel3_outline.png create mode 100644 assets/tankBody_bigRed.png create mode 100644 assets/tankBody_bigRed_outline.png create mode 100644 assets/tankBody_blue.png create mode 100644 assets/tankBody_blue_outline.png create mode 100644 assets/tankBody_dark.png create mode 100644 assets/tankBody_darkLarge.png create mode 100644 assets/tankBody_darkLarge_outline.png create mode 100644 assets/tankBody_dark_outline.png create mode 100644 assets/tankBody_green.png create mode 100644 assets/tankBody_green_outline.png create mode 100644 assets/tankBody_huge.png create mode 100644 assets/tankBody_huge_outline.png create mode 100644 assets/tankBody_red.png create mode 100644 assets/tankBody_red_outline.png create mode 100644 assets/tankBody_sand.png create mode 100644 assets/tankBody_sand_outline.png create mode 100644 assets/tankDark_barrel1.png create mode 100644 assets/tankDark_barrel1_outline.png create mode 100644 assets/tankDark_barrel2.png create mode 100644 assets/tankDark_barrel2_outline.png create mode 100644 assets/tankDark_barrel3.png create mode 100644 assets/tankDark_barrel3_outline.png create mode 100644 assets/tankGreen_barrel1.png create mode 100644 assets/tankGreen_barrel1_outline.png create mode 100644 assets/tankGreen_barrel2.png create mode 100644 assets/tankGreen_barrel2_outline.png create mode 100644 assets/tankGreen_barrel3.png create mode 100644 assets/tankGreen_barrel3_outline.png create mode 100644 assets/tankRed_barrel1.png create mode 100644 assets/tankRed_barrel1_outline.png create mode 100644 assets/tankRed_barrel2.png create mode 100644 assets/tankRed_barrel2_outline.png create mode 100644 assets/tankRed_barrel3.png create mode 100644 assets/tankRed_barrel3_outline.png create mode 100644 assets/tankSand_barrel1.png create mode 100644 assets/tankSand_barrel1_outline.png create mode 100644 assets/tankSand_barrel2.png create mode 100644 assets/tankSand_barrel2_outline.png create mode 100644 assets/tankSand_barrel3.png create mode 100644 assets/tankSand_barrel3_outline.png create mode 100644 assets/tank_blue.png create mode 100644 assets/tank_dark.png create mode 100644 assets/tank_green.png create mode 100644 assets/tank_red.png create mode 100644 assets/tank_sand.png create mode 100644 assets/tileGrass1.png create mode 100644 assets/tileGrass2.png create mode 100644 assets/tileGrass_roadCornerLL.png create mode 100644 assets/tileGrass_roadCornerLR.png create mode 100644 assets/tileGrass_roadCornerUL.png create mode 100644 assets/tileGrass_roadCornerUR.png create mode 100644 assets/tileGrass_roadCrossing.png create mode 100644 assets/tileGrass_roadCrossingRound.png create mode 100644 assets/tileGrass_roadEast.png create mode 100644 assets/tileGrass_roadNorth.png create mode 100644 assets/tileGrass_roadSplitE.png create mode 100644 assets/tileGrass_roadSplitN.png create mode 100644 assets/tileGrass_roadSplitS.png create mode 100644 assets/tileGrass_roadSplitW.png create mode 100644 assets/tileGrass_roadTransitionE.png create mode 100644 assets/tileGrass_roadTransitionE_dirt.png create mode 100644 assets/tileGrass_roadTransitionN.png create mode 100644 assets/tileGrass_roadTransitionN_dirt.png create mode 100644 assets/tileGrass_roadTransitionS.png create mode 100644 assets/tileGrass_roadTransitionS_dirt.png create mode 100644 assets/tileGrass_roadTransitionW.png create mode 100644 assets/tileGrass_roadTransitionW_dirt.png create mode 100644 assets/tileGrass_transitionE.png create mode 100644 assets/tileGrass_transitionN.png create mode 100644 assets/tileGrass_transitionS.png create mode 100644 assets/tileGrass_transitionW.png create mode 100644 assets/tileSand1.png create mode 100644 assets/tileSand2.png create mode 100644 assets/tileSand_roadCornerLL.png create mode 100644 assets/tileSand_roadCornerLR.png create mode 100644 assets/tileSand_roadCornerUL.png create mode 100644 assets/tileSand_roadCornerUR.png create mode 100644 assets/tileSand_roadCrossing.png create mode 100644 assets/tileSand_roadCrossingRound.png create mode 100644 assets/tileSand_roadEast.png create mode 100644 assets/tileSand_roadNorth.png create mode 100644 assets/tileSand_roadSplitE.png create mode 100644 assets/tileSand_roadSplitN.png create mode 100644 assets/tileSand_roadSplitS.png create mode 100644 assets/tileSand_roadSplitW.png create mode 100644 assets/tracksDouble.png create mode 100644 assets/tracksLarge.png create mode 100644 assets/tracksSmall.png create mode 100644 assets/treeBrown_large.png create mode 100644 assets/treeBrown_small.png create mode 100644 assets/treeGreen_large.png create mode 100644 assets/treeGreen_small.png create mode 100644 bonus.py create mode 100644 bullet.py create mode 100644 main.py create mode 100644 map.py create mode 100644 tank.py create mode 100644 view.py diff --git a/assets/coinBronze.png b/assets/coinBronze.png new file mode 100644 index 0000000000000000000000000000000000000000..cf346cb0c1abaebb2f07863be0a42e0902b7fe94 GIT binary patch literal 2568 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 W%)EFq-spgh09&gosJcrx68-}`?0w?^ literal 0 HcmV?d00001 diff --git a/assets/coinSilver.png b/assets/coinSilver.png new file mode 100644 index 0000000000000000000000000000000000000000..dc36564eeb21982870aa4d6999b69474c63a0941 GIT binary patch literal 2586 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 D*K{4P literal 0 HcmV?d00001 diff --git a/assets/laserRed01.png b/assets/laserRed01.png new file mode 100644 index 0000000000000000000000000000000000000000..5e467b65ba82babe205a227f0ba2ef5912d6839b GIT binary patch literal 735 zcmV<50wDc~P)0D5BJyC%g?&H zexk`bMJ;O|O8NYslX97V6^kdjlQW%%^6@c)?lP2x-=z|R?lQCk&S@BQCp!?>f}=u# zL3g>k4LID}W6+)AmbD6{T#i9^a&~qZeq^%@x|1CYrr;oxVbEPJd=9>EZ!_pFTQCdX z(rE_WW#~Q>Ha8h`m!WC+y0*rkyWHJ9__Dgnpu2q1D12U7VbGnN$8{L;OG^y8%g`Oj zrBV#Klk>pehTZvj2HnZ|W%R?RWRgL5`C5A5qdRKcshJ_g-srn1rxFME0zbf;;r z_cFZb?q<-PqF(PMc;4B`pgToE++0ek? zI`p`{p22nKQC%H_>(Im6S_aplL`_ZcK`6w+btqm{)tjiUW_i{9F9;-mPg1X)a{vGU zEp$a#bW?9;ba!ELWdLG%E@EtNZ)9Y7E@N_eaCC1jX>DO=WiC)oM=~@;Zewp`Wpbzn Rf9?PP002ovPDHLkV1hx$V`BgS literal 0 HcmV?d00001 diff --git a/assets/star.png b/assets/star.png new file mode 100644 index 0000000000000000000000000000000000000000..20f5dd1b62af211d263193c1a1a57e3466fa329f GIT binary patch literal 1616 zcmah~i#HQ`9RF?e=-8M_9`mYP$(=~9RKyfvvaPsOOv}>hUR`YERcbwugp^d8tiqC| zd1P@tGgg+VRK(Ui=aF6GYV*jtyMIC7b3WhiIp1@>pY!>g^F7~hIsxaStAo-30Ook(ixxK|Vbt&DdHNAcwBJ!9|d4F+e&#*-ruUUvZT!G)iCgxWwreC9Dvu*6d zMX)QE3QR4Uw>j3dIai zS{RVE9`I<^qfjA%^SQTu&CPNhdh(XDtBs+g<&fU6)XuRZ`T(&zE^+o)6zrO3k4CdF zGfdM-4>M?Dpb|A!a6k%cRM&(n;Fh;<<{dcY4W>kL(2fK8?38Skc(zKPofpqpEq-qh zcNR>&Y(w0c3hq`)ZAeuedEWENzhxzFZ^%+hIKwct8b=0nQnZjmT>%iRx(BvX<6!Fe z;%pURkuqI?E$a`_BEB_SKNX7Kd`1H&_O>k{Ujs&&1C>>XOpiwFc<`)(gpX=t{jxfGB z-oZRhlNmqs-?0J2sb-l4rj1q4-z+Kikpm>**fP14KVIe(cVadxd8Ttfg`Cn_tptiz zmFlzK)=RN$6LH;#OEC{v)Z%CNA6aFd?4hCbk`KjF4QF26P}uC180p@Bvojq|C%(9| z&NmZ64$W3zQz%DZJ&*UmK+L$^9OH4E0Fh^#^d@(rspim0ScvroFc?{2-gf6*zNzM) za_N#(PqY_+EJj+8IDB)4<3ZZ@KABX{49S9##vG6lGUMKTn;Sm5{JJZ4d%X}DobTaR z1p&V1aJ1(ldGo}f&<3r_gfF=ZazR>W;fOfK9ypJE6K@T9>Dusu*SKRj7|O9WPi2m2 z%=7<Vf1sa*wL8>ayVMt3$= zrlyM}N<>kzd|6I=BK8lF>0xXw6*eu{`P#)G=f8wAr_bO;C<+wFhb*$MJ%~eMjOo=) z<~q?$9xdl!qzu<-c>}AIvE65?*kg#lla6iVA0XW=+@gG`u^StN%R=nqi zZb{!NDvg0&UP*y*sJHjNCTmUFX>(h&wSSmd+W4R6eYUwgcR0d1Qe<~8Af`r5pbIb( zO^ZXSrfs=vUBV8?%J>ri6k$cckZiFBO)VEL-C`gyyI9aM_4ES3Y+FO}doQSFI4tLQ zX@KUcYb)Ia?WfZ>F6Zzxm_JsP^BD=+%cGLf^(i zD22q(yo@uT6B`7ImJR6kEO2VOCR1ST06q=w5o~j-LESI{C(!DaEg<3`<5cy+$JV~1 zCPq2`Vh`Sj;~MP;mNn`~n2=EDU zHE-VqWSV#EHLO~teE05MAcv_W$S=5nA#%-@b3mSqr;B3<$Mxin|No~p3ccByrPzFJ hl_<~Zu(gNU8E?L`FbWpGw+X0@!PC{xWt~$(69B$qD*ylh literal 0 HcmV?d00001 diff --git a/assets/tankBlue_barrel1_outline.png b/assets/tankBlue_barrel1_outline.png new file mode 100644 index 0000000000000000000000000000000000000000..bec4e4b6659ee3f9c54293e4cb01316fdca3cb96 GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRs!3-pY)bo^q6id3JuOkD)#(wTUiL5}rS%6Q7 zt8#pca$JjQLK_fCN7ac%RIA0esU@}}Bc<48pmM#U`Q{ya4XaiGrJ975P5_1YN`m}? zQ(|sk_pqt>{QdR&-ysZTi8q!3WjsAy977~7KRw~e*I*#P?6^6tROtWz%^W684_Rea zM4O)|oj6lnDCLrFyt94g8YID7$VnfIS1rPc)B=-a9mIBh&tsU^y&YJg#Yai d|JSeKV2DXpifLQ<*Bz*a!PC{xWt~$(69CxvC}jWu literal 0 HcmV?d00001 diff --git a/assets/tankBlue_barrel2_outline.png b/assets/tankBlue_barrel2_outline.png new file mode 100644 index 0000000000000000000000000000000000000000..ee170db7bc2f751277e8f1d6356a71dbe9bae909 GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eR!3-qzxAMCJDVB6cUq=Rpjs4tz5?O(KvjCqE zSLOH?>8Lu@gf<{jj%yK%s8)+_Q%h_|MoO{GK;?Qx^9`$3nRo03O5KPy`vVl>D+%%o zPVu;YJI1Es^Y_>9e}^zAcfGO$%D8#DIEF}EzIuEoV}pSJv*X8K){?9Lr&;nWV`fsj z#cFxB=(Jap&#NN&mj##Vj~|oR$a?kJsxHO5wXtni4g8YID7$VnfIS1rPc)B=-a9mIBh&t8K_Q&4n#{a}0 d|L60tFnr|H3F=zj@)oFu!PC{xWt~$(69CWsC>#I) literal 0 HcmV?d00001 diff --git a/assets/tankBlue_barrel3_outline.png b/assets/tankBlue_barrel3_outline.png new file mode 100644 index 0000000000000000000000000000000000000000..9d813fa64f7eb42c8272339c9e8a5018b75ee53b GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eR!3-qzxAMCJDVB6cUq=Rpjs4tz5?O(KvjCqE zSLOH?)r2WiQLPr=rk2=_jFe)Vfy(uY<{MV60*ae=>@D|j=mZM!l?3?( zr`-0q9%EDS`TP6Vze5>wGr}vxFHAVExzw{gK PAR|3p{an^LB{Ts5Wp7bG literal 0 HcmV?d00001 diff --git a/assets/tankBody_bigRed.png b/assets/tankBody_bigRed.png new file mode 100644 index 0000000000000000000000000000000000000000..fd774be0a2bb1112f22c4cc15d89d7bb283067fc GIT binary patch literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDB3?!H8JlO)ISkfJR9T^xl_H+M9WCilo1AIbU z?XC5nd0RjAw7lSG1Qd&o42p^fbgjN$!y@rFyA2dYli@A3&a>T3;;9e&c&Yxzo z!dB$+zPlw0V|S$qSFE~xzC`V%2G>fhMc*gCYFnH9%*^AZ7}IH)7|&dp0|gz7J7&&$ z{%}!_+#3M_W0@<*_Ot%|t*|!u!mLvt4&3<8`G#RT%ML&J3GCMKQl0FYZ|$8gCkP&E zV1D<$Ve$d44=gf_%Kzsw8p^%U_6fFNk63PyxwdCUf9xe*-+I*w#=5enS#A2-+kviU N@O1TaS?83{1ONrkbj1Jw literal 0 HcmV?d00001 diff --git a/assets/tankBody_bigRed_outline.png b/assets/tankBody_bigRed_outline.png new file mode 100644 index 0000000000000000000000000000000000000000..b11914a399ba95b947f5312fa3cf16068fc8bf3e GIT binary patch literal 592 zcmeAS@N?(olHy`uVBq!ia0vp^CLqkg3?x4-dwml~v7|ftIx;Y9?C1WI$O`1o4DbnY zoo=WyU0+>KQ(jM7353+;bTt)#Xr{i}41IN5TMK(Ivb8mvs;4}|KxLMpI#3Eo_G?Jb zG*Aa2eKn988w&${9f)EeX=iH+RMV>_HbqAX$N(asg_fpT#~h6J*cxoI(u>IN*+76bp#1*y63<uvHx;;r#IbFgGbBkOBp0|ph z;|$sv_C~DOkgZeZy~HAkc9uuq7Ou;&UUcPb*@_>RtGfgrc&oEat!9weI6FhfOYN6w zl(YB$%Mt4oKeucZG@L5s;;KE{^;>@UDcuiRd^dv?%U;wk{Pr}DP1eEdLf0%&M@<>2 z5|#cTc3mDT7rL>n3dyn4;)6+i7ci=&uRZ z_FtoKM2a*`%5*Q?Jhd%u{oD(azE+ngRvW)|eZJYQxbo@yzYGEwABQ*c3g-Yro59o7 K&t;ucLK6Vh1Lpt$ literal 0 HcmV?d00001 diff --git a/assets/tankBody_blue.png b/assets/tankBody_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..9c56dd5b05c69114cc960432b1a7e0fa7ebf340c GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^Y9P$Q3?!q3zsv!lvI6;X0X`wF zF7}2l_QpV-{j6(tGcLP18k=|Qb+FO5o^;xA{#|q5M^!*M=8_=4;DQMZ_m8Pf0dhM% zT^vI+&L;;11-*JPgOgcS*1?Y1%&_%BfXK!R0cvbvJR2F>0y-k3I2?{RZS0yly?jAO z>6Gcg&OGnL?j$|cNP7C?s2X!=yK<7&KldMljzHc?)zDgQu&X J%Q~loCIG$CS||Vj literal 0 HcmV?d00001 diff --git a/assets/tankBody_blue_outline.png b/assets/tankBody_blue_outline.png new file mode 100644 index 0000000000000000000000000000000000000000..55294da5bfe4eabec7ba04f93671f99fbde2da3a GIT binary patch literal 464 zcmeAS@N?(olHy`uVBq!ia0vp^S|H593?x6vT4n+%mUKs7M+SzC{oH>NS%LhD0G|+7 zT}^q}#D1OpSvq+$b+wh`WF>)YJuM|5S1Wg_o~FF6mZFxrqK>wbp1Pc_rh*=jp{)c` zpFKk-cP2=&wvwc{sD_3jTncEmjfIY-sh0h$Yj!g(yEz&Im6>cZP~9-lu^IZ+W^n zhFF|_dNq^3$$*FLLFN7Ji|+8e{`3F;h2BF6eTEliWYp}Ru*ToZ$iuryXRl+{nUc1) z2aD&MrRcoO;IQd=zRq<{*Q*rG7dM%$S-%Sj=qaB{UbaZ8(7Q}Scgk&D#syq^PiahH zDp_nUckIj*L&bd)UrqmNY_n-{$1_n+ELn ref-^9r_G)JX!=*Kqvx`^`jq&eME-bK!SU%X(3cFJu6{1-oD!MQ!VDzEZ--6;QY`6?zK#qG8~eHcB(eheS^+*G zt|38QF80R3L0+N3J}&l#K;fu}!05;zQzLaZN8><$PX`mGoJ6 zLHo#p11`<4Vm&x^zul%$W_-EqQ^>8lf^%;z+XNQp?U^8#qHDZ+rL3T(vD=+P>o#d8 zr2e>UbMZvSAC<-ZUzfTS-{_vH-?}xa|6Yz*=8Zm+`}J;9FUph&?GpbcVlDpt#JvOl zM!!F&XtF0q&t}!#%*Qu%t;uBHwAuN7vBondRWsKv{?$G8@lAQ4dl@`k{an^LB{Ts5 Dzn5_w literal 0 HcmV?d00001 diff --git a/assets/tankBody_darkLarge.png b/assets/tankBody_darkLarge.png new file mode 100644 index 0000000000000000000000000000000000000000..14e232a7bde49a1a88839d9cd07629e6884c9cd2 GIT binary patch literal 352 zcmeAS@N?(olHy`uVBq!ia0vp^20(1V!VDxm>(g!mDVB6cUq=Rpjs4tz5?O(Kl>na* z*WRxBkYFDddt(=SL!el6WKdK@pqry{Ur&RBjeb~&Z+vX%>L2l|fpV-RL4Lsn6DAZe zgj_v#2PkmO)5S5w;`G%kihRumB5V)T)yf()O*q9B4)R?K-XLwjzDVrnIs?mtE`JU7 z-nsSNi#=C0^3ZyzeSaF&`q>Y;WFMKlAVzTOHui{w6bttQqQM;rC9M4Bnp2e)Wvrbt zWoe@pYcoTzM}y8nufq(N4(hWM`B%(pNtpkZyF*byPQvcglX(r-4v8>}t`KrKZQy!9 z{=o8NCVuDR;x+EUM#eUeKE8}mY`Q5b_T%{fz={p}-!C{%Zj*7D*mN(aO^wx3f2P2n vZ#M-u>F%+)61}5B;HK1y2MgkuMURNz+M#*wY^E$II2b%#{an^LB{Ts5;J<-2 literal 0 HcmV?d00001 diff --git a/assets/tankBody_darkLarge_outline.png b/assets/tankBody_darkLarge_outline.png new file mode 100644 index 0000000000000000000000000000000000000000..7666110a4299bedc88efacd48199277758bde165 GIT binary patch literal 649 zcmeAS@N?(olHy`uVBq!ia0vp^CO~Y%!3-qjzGiL#QY`6?zK#qG8~eHcB(eheD*}8% zT}@Q7q=CMUovkU5p{uQ=tEH%`DGy|5sVmCKO6sZ0*;|_frEIOubTt+1Y|QPf z%<}S53i4AkGown1GqST|fwCn<8G71E5Cq~DXXt6l>u4+4TbbM2nCIms14SgoMKv@O zA!jtq*52n4DD>IEurb2RSjX>hR74-4^)j}4tOV_!8;gH}n9 zU-0eg?>%B(UvJ5|9pjPF@HwZYB_|-p=C;T0>#yH`|NgmPLcxTP-!>tie>3pz3|Y&- zz!>J~;uzv_{Oz@qL5B@^*b+9s|IHWMAQq*bE36%G@Bi5iGN(fyE%{ck(BQAXWaRy$ z^8!_toW0g|>11i%dezf+nXi5D$qDwoaJ)}x3O_q{@#WK;D}DJjzb^f}&^Yncs_Fh4 z+S0vr9esG)mS#G+?`Gi1d>SOx&A`XUxwm&gm)I$(_JluiO1aBg&&9Mmim!Pn`OT+S z=$y;KAkOqh69OMi^ijF=%9BCF^omFuSHo5J`DThPwe_qImD>cqt-0v6@aCN~vHm%Q zT0JuqMO{RbLj^u^Kiq2itM&-HcUbKmojj@3d7YApk#}9r?p>2s^X30Pe`OCTfmj!2 zuLa6|jUh5#4Ch+kOzv{JW%GEJvlg3VvY6J|f`wd)n*$bVhHwAtrz7?L>a-&USvPd* z8~j3d$t+#|L7`#S&t literal 0 HcmV?d00001 diff --git a/assets/tankBody_dark_outline.png b/assets/tankBody_dark_outline.png new file mode 100644 index 0000000000000000000000000000000000000000..62f58fafa65a00949279b37dccb93dd9d74065dd GIT binary patch literal 545 zcmeAS@N?(olHy`uVBq!ia0vp^T0pG9!3-q#U!9Qzq*&4&eH|GXHuiJ>Nn{1`rv>uD+IXv*8$SQzN**w~ob*_r|s0FkYYv97j~oU9~})YDed zQdb0$b~Yd>dut0bBORa?AR8zsDK4s^0g?qGpd}_oS_ZnRRu+av1{!WI_CW!jHWoUb z?v9qGTG5d~Q4xV|j>bTZf&QLA^$s@rVIjWpv7tqu*X{*sRwxPb3x1u`GNGU$=ekEg z%8=kGQlzdtj4x&POgfq{|B)5S5w;`G_8H_MtFc-S6nyc)LF zJNxeT!o)y{!yo?XUvFWI8kt z;CJe(6;J*QgD%U=x2uGw?N@g(ueLcPsp`G8dfBf$ZPruW{TEY1g14{Sb>?l7 z&6rcw`Q?@VwbLhF-F{RrzHL44g*PW2WSlHnxum+F=u4S@pVbC2`Gg$PQU)uhZ7-)j z%(!W@b!{@sz03pKuT@xSq~7emvTcghg$s4w*N-LHJ>GsSXP-ungywSZj~wBrU&{Vr ZTzyx|bVt~$Y+wj7c)I$ztaD0e0su-k(nA0M literal 0 HcmV?d00001 diff --git a/assets/tankBody_green.png b/assets/tankBody_green.png new file mode 100644 index 0000000000000000000000000000000000000000..473a19e63c4e077add7b52352eb6267e34b077c0 GIT binary patch literal 342 zcmeAS@N?(olHy`uVBq!ia0vp^YCx>Q!3-oXY44a0q*&4&eH|GXHuiJ>Nn{1`odSG9 zTwUx9UF?m4JoOEUx+n6q_M~fWN!H$%sdG3-dw-_R(Ok`KDOx+zw05QGp3K+Sn5elk zO?hF2o1?LVjlSNQLiP0t2^BtiK>f@mL4Lsn6BzCvQ=0q+3#3Xna1seFzHh&2A!K~zHHB7FkO(tX7*To z)3K_h>$c~w&8@DANQykN-u=J&vJl?jDD7F6r8|tcxnd@&PQB9^JAboX)4pFyk4<|v mw_Wb3uWPp4{a4rf4eNiVl=UCpx3>V@&fw|l=d#Wzp$P!*NQI>U literal 0 HcmV?d00001 diff --git a/assets/tankBody_green_outline.png b/assets/tankBody_green_outline.png new file mode 100644 index 0000000000000000000000000000000000000000..17f44bbd050ebc850497cc8ca41e76dc47d8af35 GIT binary patch literal 541 zcmeAS@N?(olHy`uVBq!ia0vp^T0pG9!3-q#U!9Qzq*&4&eH|GXHuiJ>Nn{1`=LGnK zxJp&K@Dy0-YAZ=qxyZ>%idQ%Q89+fjEhRlod0kC;AX}osMORBvyxa-M)>2p0(N@w^ zm($f$&;v4n8i9(nl_bSQH8d0AENKbdKh# zZ%EYMmuX|6V`-|Tdoo{RW1{BHH06a6ZjQzfqa1AX_0ANkuTOZx^rrx5mTXCoU+`;> z>(@PEZoj`@kn_2sCFOU_gp8Kg@4tVy3Hkk*VY~0w{R|9@%$_ceAr`04UcFh?WFWxy zAY}E{wPCw=HcD^uWLW;}@BOvH&W{$#7=3j6eP3Y4do`bPEkB>zl=QEC`F%>_)yEkp zCok-mJ-~5>Q`zUs>@|F9lg`;L(9{vPbFS1d+!fLPM{70vmN(v>O^g1fF)ZcQWn8z| ze#U9HSs@&nc^;cncKaHM?|NKxvfPAsXVm8jOB&y0I|QxMRL}gpW6P!9Y0{I{nZ#bS z&t7{id%D=0WW`5&qmwsloO)Lo^N;atari88*LQA#QrXMXSFW8JwrNv+Ms13S+LMxv z0sKMYvkvvtHf$=J#Z+VTUova)4$siPv3x(KOZrY%F3#O^Yh7>V+qTNt+fIKBm>Ivo X#C*?#r;B$2!;Qhy)z4*}Q$iB}F&x(@ literal 0 HcmV?d00001 diff --git a/assets/tankBody_huge.png b/assets/tankBody_huge.png new file mode 100644 index 0000000000000000000000000000000000000000..9da775e2b7b7c3e13eb5e168ab8bfd71c13d520f GIT binary patch literal 432 zcmV;h0Z;ykP)R4hetdC` zjDUG}ZDwR#Ks+y2R85+jR9gT500eYWPE&AjkO2K0BuoGR0ToF^K~zY`?bp!~f*=qD zP(%rh5d8n24Fq8kF;KH{^1d{Kdm0~LaZx=_HK>G3dZmgA(V|?Su??tD8Ow%e5VNMA zUYsK7B812Dm}kCLK_H8$1oF|Vq@cmN;^D26Jdbi`5o7v?H9Vx9aOpzI8zY#dN(K~2 zXD7-VK=~L*;fwnf zolGCKQ@fzKhmOX*iRMx2dlOz98{%OlYHJwPcpJs35h*pUWK35(DIChaN$rrEp!0!v a2YmwyH`W<|8H_ss0000ZLygE literal 0 HcmV?d00001 diff --git a/assets/tankBody_huge_outline.png b/assets/tankBody_huge_outline.png new file mode 100644 index 0000000000000000000000000000000000000000..a18e8cadb0b48532dcb8cd9ac9c25810aa8ae7bb GIT binary patch literal 679 zcmeAS@N?(olHy`uVBq!ia0vp^c0laG!3-p4rfgdUq*&4&eH|GXHuiJ>Nn{1`rv>&4v1}I0n(za1Y`qk$jOZLbazaS54JSbiiz?|PmMG))`*V{i;WKP z_jNZlQU@xlt10a3X#i@eEYD3#iE*&e4-4__3J>7~>X$DG@(T_LC}_!PnUL|?nX3_S9}k#`TRS^K>!Tzw!er{9keH`&z5K+$8m6d)~gO9a8pQFB5;>6`r#4dC{B0%FpwK zGma)q*a87=onaoY~z>BFhg>6t(%K|Krw-zWGM~|3{YZQGd5% zb#G&InK<8_UAtfWyKi0hCpLAOt8bb3#BGcFl)v9~Z83jx^wQ(qb{p!xMm^tMD8If` zm_s{Saj)RzX{Q9(p0I7mKjhq?{b;Ups&q!y(GM@O@3qA7-TL^kbt&sK^94o6`F63& zi}mhne6G*B%6n)jXia21cI+g2AbU_3H-y85}S Ib4q9e0G}8d#Q*>R literal 0 HcmV?d00001 diff --git a/assets/tankBody_red.png b/assets/tankBody_red.png new file mode 100644 index 0000000000000000000000000000000000000000..aa497275f190a97719fe0e9b90695486c10c37cd GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^N>IS&#cMTJ%aPbQ(xYGc$P!3-pqzN~lyq*&4&eH|GXHuiJ>Nn{1`D*}8% zTy?dT`Zc6y8LG?4N&?BLddgbriZcz=^|X{gq^7*Cru=k$bzLpR8Tx87_0?wRs{@tk zXe$9pJ#{%e!uv;K1=%>ZefVGh!lzMWno7mwO>dm}W|p5&ynJNRJ)Ny- zMnR5MUxMA+RHX$bcov=X{bchwCcp7z#7)(f*@`=iI=gx{8Ye3imIOUbd35fR-sNLF zA1rr!zwueV|3utn-D#meH^1Mw?(c+OR{J*}Tf2RefTy(ggUgJsVsse$judNJ9ofpN z6SOH}xwY=q*7zN2%d{eQ!3-oXY44a0q*&4&eH|GXHuiJ>Nn{1`EdzW) zTwUx9UF?m4yw^9@KEJZ^!`%(ddBvNXK<=t%S5`i`wBr4p4UaD_b8|F4yLXy{ zjsBwx%f3F`@`~$XI8YmNNswP~!32i;$JC|(xt*Rajv*GO?_RMKYEa;D2n>jEaC!Wf zUwgH2-=rlQ0_xc-MVUL)*!G>>F4G!%!?*Zg>Y<;nbbM^Px)SuXyDashlS`*P%TIXz z@9dg+YPp(bPB}*+*?01#t}n=#>qeW~-g^FL4J p#n(>tJoj9|RXJ1b=Y56lx2iQE52MyIumc^%;OXk;vd$@?2>|7sd|dzl literal 0 HcmV?d00001 diff --git a/assets/tankBody_sand_outline.png b/assets/tankBody_sand_outline.png new file mode 100644 index 0000000000000000000000000000000000000000..fe4d5dc40026f7d9be7d9511b2eac89aaf4df4e7 GIT binary patch literal 487 zcmeAS@N?(olHy`uVBq!ia0vp^T0pG9!3-q#U!9Qzq*&4&eH|GXHuiJ>Nn{1`CkOb1 zxGtDjuxf6NuC~(3IW=;!l0Y_)p{J#^Y*wY7ro67EJV<1AwXT-piaAw4wwAi0j<%AX zx}2`2f*z2etppSVl9J-08XAfa5un*0?rwN~Wz~~QE8g5(`|Qff*EiNazq0b_`je*+F?wtnI=wPG&=)$tE54Y?}+j0tMgltKWU$DpP>(@Qr z-@YGHkn_2sCFOU_gp8Kg@4tVy3Hkk*!MgqYH=x36o-U3d7N?(HJ;~Q(Akgq|*ZbW~ zn@+_Y*tqZi<(olXPCl8wHW`2PS)N%l&Qw~?#p{*%I5YRh((p2qtQQ;jO`NJPL;-^v3Yf|9(^@kv`F$*O_Pe6ieKHo^I7YA!nN+| z$zEv-Nf%t2u*kOHwr_9)b5YuY&0UGd#s1t03C_MMBi+3&`EbTugKTF#bML%)XTGR( URUO)R0_Z~qPgg&ebxsLQ0CvpORsaA1 literal 0 HcmV?d00001 diff --git a/assets/tankDark_barrel1.png b/assets/tankDark_barrel1.png new file mode 100644 index 0000000000000000000000000000000000000000..7f5b62b24c20cd6d42e2db850d73a679cbfe08e4 GIT binary patch literal 139 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eP#0(_=O$q%3q*&4&eH|GXHuiJ>Nn`~n2=EDU zb+I=DGTj`F9c=W^%zm8$;4`2`m+M6TI#4#<=7ba4#fxSrhc|NqoRp*LHz6q~QD h66IMPw)Rjvwvv{*B9N4mm6Q}0)zel&Mj9H5K;@RET5gWU4mSEgDehf`bAdv9B|(0{ zDHYdaZhP2#|NQ&?>kx+A0!tsDjHjoIV~E7%rzbr58Vm%O9XF?y3jP1TnZu;%A*;-a zX!8@f(;~%%QZDMoJ4?C!y1$|>B&k2^uF2A_PhTpHmb~+b?_DvSf#rUt6+_+}nHhhz Sr>zGX%HZkh=d#Wzp$PzNDn=9l literal 0 HcmV?d00001 diff --git a/assets/tankDark_barrel2.png b/assets/tankDark_barrel2.png new file mode 100644 index 0000000000000000000000000000000000000000..e2f5222c524d9e41a7257be39cdd391512ba1355 GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^96&6^#0(_A*MIE*QY`6?zK#qG8~eHcB(eheJOMr- zt}gb5K&FF@zMG?QchKWBAcv_W$S=5nA#%-@b3mSir;B3<$Mxins8bF?pZ=dn_}~8U dfBhN`hL~ifn6{OF-GOQtJYD@<);T3K0RU3rCXE09 literal 0 HcmV?d00001 diff --git a/assets/tankDark_barrel2_outline.png b/assets/tankDark_barrel2_outline.png new file mode 100644 index 0000000000000000000000000000000000000000..5acc557f6a08848e626f88ab073b201d3d715832 GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eR!3-qzxAMCJDVB6cUq=Rpjs4tz5?O(KvjCqE zS6y{ET@86TSxH@OB_PsLSCkYN)zel&Mj9H5K;@RES`Ie)ZjQ!4Df3=|l|UiBk|4j} zlnRgQw_|L+fByacbqK??>#glT88=TC#}J9jSC8*xY%maDcKrCuT5|ROG)tak%uH&x zSS|I7Ub{8vyeg7^S#YWT_%Vr%?pL3!nzZmvZEV{Wxl7Z9zj8T9%v~n@P+8O}Z_6|f Ppot8gu6{1-oD!M9UxzTX%zM-ZlyUQPaSV~TeE0ZH#s&icX2*}etR;8;PqXA%#^9uO zi*@IjqT60gINn`~n2=EDU zRh%CQWGXL=P?#K0B(I;4`2`m+M6TI#4#<=7ba4#fxSrhc|NqoRp*LHz6q~QD h66IMPw)RjvM@d8`XJX@YD10X{z-tSb5xY(JMu4bQ%b)NR Ppot8gu6{1-oD!M<@p(#L literal 0 HcmV?d00001 diff --git a/assets/tankGreen_barrel3.png b/assets/tankGreen_barrel3.png new file mode 100644 index 0000000000000000000000000000000000000000..2dd1b172b5cfefcf3553805a15483bb007e33469 GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^96&6^#0(_A*MIE*QY`6?zK#qG8~eHcB(eheJOMr- zu8Q*`flP(T0m=&_xQ#zg0&M(L7u60ubWKG7!tRWy{nQFR(*KV!5_Jrsn%Hnt)1BLiXg8YJ0 zVs2mesId9|`TgtPAq>7>1T}y%Zk{fVArhDG9^c8>U?9Nk`0Nn`~n2=EDU zJz%d7WFE3N++wBsHSh9UAcv_W$S=5nA#%-@b3mSqr;B3<$Mxin|No~p3ccByrPzFJ hl_<~Zu(gNU8E?L`FbWpGw+X0@!PC{xWt~$(69AzuDw_ZR literal 0 HcmV?d00001 diff --git a/assets/tankRed_barrel1_outline.png b/assets/tankRed_barrel1_outline.png new file mode 100644 index 0000000000000000000000000000000000000000..5182b4f5a5a66dfea4d8d0ef6333bdaca3cd0b13 GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRs!3-pY)bo^q6id3JuOkD)#(wTUiL5}rS%6Q7 zYon}WkB)Mejy#CeQml~>?bcBQvXN1zh9Xe;5>u^1_J&)mbb(UJ$(i4PLVP7be!(8s zQ*OuDRJ{KD{`>C`hUnkZHGnc6o-U3d5|^KzI4;;=z{B7uI9Fx%>-~|3G7f|sX#RV* zb0*J@OuJJ$1>V;i&K~^V_RZOMnn&)sppZkCpL;T`WsdJX;XTdpd+asYu-h^-9E4J~ Q1I=XcboFyt=akR{08SrJHUIzs literal 0 HcmV?d00001 diff --git a/assets/tankRed_barrel2.png b/assets/tankRed_barrel2.png new file mode 100644 index 0000000000000000000000000000000000000000..7535233fc7ac0a390fae4a150ef53180d76ac3dc GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^96&6^#0(_A*MIE*QY`6?zK#qG8~eHcB(eheJOMr- zt_SS(fy^ydx`*ry4;wt|19F&3g8YID7$VnfIS1rPc)B=-a9mIBh&tsU^y&YJg#Yai d|JSeKV2DXpifLQ<*Bz*a!PC{xWt~$(69C9tC@=s3 literal 0 HcmV?d00001 diff --git a/assets/tankRed_barrel2_outline.png b/assets/tankRed_barrel2_outline.png new file mode 100644 index 0000000000000000000000000000000000000000..6f76326f4a1d0a66876e2d90f67fd9d91df8ef61 GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eR!3-qzxAMCJDVB6cUq=Rpjs4tz5?O(KvjCqE z*B%|^Mp?-&9r-RTMIgIILbO{4#6U)!8j3*WOH8%4Sm_?JHv~#`*MB|&6yhrh@(aH1 zkrH#;rsDPI_uqeqFf?wMat0{l;pyTSB60cZ`JIdn1_I2EAAea(uKu59$+L`^N$pY_ zlci%`tj7e$*jI|Oe!uc>a42tEaVsX&u%$YF>Yw^*k9fB$+R5jVr~hR+FDz>HX_l8i P&`btTS3j3^P6zopr0EUxHxc~qF literal 0 HcmV?d00001 diff --git a/assets/tankSand_barrel1.png b/assets/tankSand_barrel1.png new file mode 100644 index 0000000000000000000000000000000000000000..91cb835d7f109fdde90d515856977cf74ae3f3f8 GIT binary patch literal 139 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eP#0(_=O$q%3q*&4&eH|GXHuiJ>Nn`~n2=EDU zJ+*5pka>3Rv>mJ3Rn~vl1mrN41o;IQFhs7|at_Fo@pN$v;kcgM@&EtSMxi%bvlN@J htrF!~9k%vRJLAoF7DmD1_dvQBJYD@<);T3K0RTGKER+BM literal 0 HcmV?d00001 diff --git a/assets/tankSand_barrel1_outline.png b/assets/tankSand_barrel1_outline.png new file mode 100644 index 0000000000000000000000000000000000000000..811b308839d8c0a0c8d9d2ef3591259b45cb908a GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRs!3-pY)bo^q6id3JuOkD)#(wTUiL5}rS%6Q7 z>-@<@v%9nAPbpadM)M~Y%<0WuIJFcR&FjwtD&Mlakx(?d>bzUWjsAy977~7KRw~e*I*#P?6^6tROtWz%^W684_Rea zM4O+eofv5@lyXrw-dW1+*ZmcBAxT_WcTJXdefm;qwB(&feD8wk94_}W?HCF-%FH-B Szgre)D1)b~pUXO@geCwZD_a@> literal 0 HcmV?d00001 diff --git a/assets/tankSand_barrel2.png b/assets/tankSand_barrel2.png new file mode 100644 index 0000000000000000000000000000000000000000..8a2e622c3e6a312c798b78f22405c305a714c6cb GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^96&6^#0(_A*MIE*QY`6?zK#qG8~eHcB(eheJOMr- zuBUcQ1u}Q6YCpSoT7`~eIgrCt666ZoG d_`iM)2SZG=_?Fxaf!*a?(z^K@|xk+^*I_)f+K0|92okH4%XSN~75*UXpP3+gnn<*zNsRtHOj&IRZmjfyTO6g?J0Fsj8qChUt z46W>`mVHMpx(`}UJgJe=ZDXOMk=CbIG~d!x%dl#do1-yMG0;r&j=ezj4mSGMlTJI% zzkAC$`6E!XXi1P?@b};MujhPz?Qz|s;Co8O>(43QZ9X&DW}CM$Ffg)tx;TbdoPK-t zHeZtg58H#46?WWBOkG>geXn=f?K@3&PQ@;RWB=Py{$3I=ikf!f3wwJ4TW#u$sxN%y zmoAswaO7G(XKzPvU@kvv?9m%OhHmymM=!*lB}UJ)Kq7v#-2(5peV7!czD4Q!}n;?seR~;BxMQ h$%VSdg_oBw&gcB;xV9u`Jut`^JYD@<);T3K0RUWh%%T7Q literal 0 HcmV?d00001 diff --git a/assets/tank_dark.png b/assets/tank_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..202b092b913f0ce61caeecbe021cdf117a36d6c7 GIT binary patch literal 539 zcmeAS@N?(olHy`uVBq!ia0vp^T0pGF!3-obd#dY!6id3JuOkD)#(wTUiL5|=V}MVH ztG%s-y^RHsw6n1=Gt#lQw$Rm-*U^;M)08*R*RioNg(%R~R?=0MlarOy(^di^NpVpi z2{a=((9=*))!)~}Kv&hoNXyJvE70HF$Uwu&!Z0Yn)6K=+NMFsyLdVnH(b7~4XjGuT zr<PZ4*C> z{YjRy%#I(cFuKy-;{CPxVal7i20guOOMFiz9Es?jwd0ER*S?@1T(yqdCr-V1O}myU YeSy$~=>f*7zyM|NboFyt=akR{0EN@f6aWAK literal 0 HcmV?d00001 diff --git a/assets/tank_green.png b/assets/tank_green.png new file mode 100644 index 0000000000000000000000000000000000000000..7be97cb4a249c39f41fa928e0da4a362f6ebd095 GIT binary patch literal 491 zcmeAS@N?(olHy`uVBq!ia0vp^T0pGF!3-obd#dY!6id3JuOkD)#(wTUiL5|=dw@@f ztDd$J2x%$lYAcBs*ooxZ0!c9-S?(lN?E*x)n(|UrAO=r?m7J`ko~FE>x*SjqP?w~* zD3Ao2BvtFGu_;-)-c4qn07CM%uS~6{33X=oe9F2iS z0ktbHi~#C&u+i5$Q>eZ^K{GygG0-6Kk|4j}@4xR~|D5u>BIWbJZr~Ta*|ke|Nzf~wrCL9aE%%*%xwF5j>z_)3%Hx(vhm-zH@lW2A zqqC%KlC1HOC49aD@r%`8eN*l?@!k33viZv#zAGhx&3Ovh(alV6G#lP8TDW9k-@0iV ztb?p0+NE|0PP)CejY(#GYW#2MEgOvHUD)(C$hEfT)dh}PGnd5GnJpG6jqN`}|Fm@N zJTCsH;bms>f_1#kae|dv=X(zEUN%3y@}_=3=)8Nqc759%O)p(I=W#0UeO?LUqbEuM UrP((>0sYP3>FVdQ&MBb@0IFlYQ2+n{ literal 0 HcmV?d00001 diff --git a/assets/tank_red.png b/assets/tank_red.png new file mode 100644 index 0000000000000000000000000000000000000000..431cb882f8b052e754eeab8f23145a941bf55ab4 GIT binary patch literal 471 zcmeAS@N?(olHy`uVBq!ia0vp^YCx>V!3-peH_ZMBq*&4&eH|GXHuiJ>Nn{1`O9OmD zT=le+bhVZAz-X4C`V4*b>H6wGM!$x%oUG(b19e?Zc|9Ofm+R3{?$VJ5l0e0h;-Wwj zXvSG*(@U;q6ZKS1I+;w?SM9RYU1F+bX{u#oq2uOg3^Zqpl`ce!gN^ zw~3bc0X2)31o;KuzyACC_nd;)9v;_o3Nk*Ye1C28nc=C~llwpgZ#-QbLo80ey>eQp z$$-b<;;&~5l>%G>x;h{HuV2I|ro$JK9%J#iLOj+a{i3h3%F~Lc8S@T1eb}g_yVj&w zy(4_pGObm%uV>{8ww~7Mx_Hi@Z;3)_P}UsHQYCe#urN10k&aiQ!C&@mzu794Zu8gm z+I#0|Qx<3obDv(Iz1g5)Gv9;r|9p%eTk~&djITGix$tIPCcKLdOVBYp zu`cnZ^TyLA+5+ZI>oPAUp5s|ywCMW9)N_|j^+W5+%AI?zUb(Ivr8hhE&zV`Lm%cIE zIi>rj!EF5{Cuhx@Y52?Pw$u8z9NcBgZm}MF!Nzs|L9EHbcf3GS!zJ zsmtkVDlD8@I)8GJ9+0c8G=EA7kPA|#tt2Tfs-d9>{bR zVg1sX71xi=TQR$8`K-!YC+6E&=xkZuVri%%RJ zqIIl*1}T*U`2~MY$*K7L+QZ}e_4_fm-xsvROvq^Yobvv4#qaOmZ9=~P{>-p&@eW_0 z>Q|mFjv*GO-(Ec~)MOyg@bE_Ud(n;BD|Td8{x>gn_ECG`Qn07s!+wL5{mkNKXTF^l zJ9q4qYT}HFlymZ{G-jPvE?xTWitEw)KQ!lyy`IyTF5!1^){UMg7Z;zI;@_VV>3>4N zYujmoy&6}X|McDab0*}>V~^&ebJksR(A_Thg742aL5%~QOg}E$|DDJde$3i5PuxA| zdGEOkS6|jJv;Rw%Pk8v^%2C1WMH~Eg2~WDc*Ddyl*yhzM)+aISH2kwZbhU(Z%|Uhd zhgVju%x*rZ?X>(;j>L{cA!lRXV=8FUuGEd*t|k7R_3Hst^?2 N44$rjF6*2UngG~I?%@Cc literal 0 HcmV?d00001 diff --git a/assets/tileGrass1.png b/assets/tileGrass1.png new file mode 100644 index 0000000000000000000000000000000000000000..57e4b71d89229c0470cc6ff4677a86474cab2a0f GIT binary patch literal 705 zcmV;y0zUnTP)B|hb3@I2HMVOx!g9n@n0^2N0q#jeK~z}7)tA?n zf-n$<-D($5ks<^FDZ~4};1Z%7#Q-V07n?gcnUBn5%Fm*iTIlr^8$2%>$MvfKv~UAl zD!8}+G61NM1AuH>!ncbH8RRR)4tCWJqE{<6#0eh|+Jl1rHC}nUm;(R{z|IJO$nXe; zE))P|P^|msFKn2~k@$jsO1%QA4nXVyojurBW8K+D8m5^VK!UObg!A?kN_q$2!{8KD zBZlHTR03koW8)$c#hc3$97VEWQ$QW&P)NW*0Iue(B&FmQgZ2o=na`!u*La-{0gYhk z(v_*`bs7LRx+iZ5*(`v4jK;BmJgjE{C(h3!dk9VEYvC;Ja>K0W!k%|4VU_?U?MI!M zKLJjJ{mEfAGT*=fFH_~gPP?E;n^;tliP`}yM9<1Sdx0U_F0}@%WZO-x0YPUUI%uRz z@GyDoL>4LDbo&9@f4ay#ENU#a2b?qtWD;I)KF4=K%X>J#aXiL$HMeXw zx@|zpdOpZ_J;ruH%6dP^c{aIiIKFT=z;QjtcQvRobwbR1H@j{&xNJAP zZaKhlJH&K2y>B+RY&pSkI>U2A&3!etYdOMlavXYN0005zNklvDoH5QS;0 z)p|wc5+Edmkof*@SQ4BOb2E_6*fzfq+z07?PKo&Xl6%&T~~$c*u0K+@P&(2XaKy=`KJ#c zmjGaBWk7r~pfY|p-xCW7xC8+9LTwo4$|)&cW$S+l(8cc|fJXReIUjJanV>J==EI%a zV`4ktX2h{`o2%|Q>KY6=oE-7%@lFvLchSREO(7Y}EZ%Umm+^E|qbYjaHrMxfzeXbc z2-f2pt7c*+id_VUv@+y5bOHcy12B2gNWIy%^##u#rdoO(oez-l{Q5e;VE6TWKw9Uj z-A^B9n&Ka`wEqJ@iS5a_=5_$?+uL&N@dH5F9B?)O42Kai8$e`y>n|c>9}lPcVL;Io z0AtE&M4fP2H~^gn5N7-+A>uW$0>o}mJ^9+!BJ+ifPh~( ZjoJ+5v+u5mQ5 zXnLlbc&C|CtA04VZ#TJZQLBA6xokPWadxMeIlpi>y>BV^{U8;sQxow1>p)|Bf}5R%prVPRr8BT-IKOZ+uxB{EZ#chkG_z@nrl^ajsezlF zHMVOuxNJ4GYLKn3jHjuOtF4Tvs(_iBhoPf5zHok}o;0y&hM}W=n3|BRu7H}Hg`c50 z!E%eHsE(?vh@zy3qop;kXf?EIf}Ea&o}h-HqLHq!ilwK6ou7V}nSYp?lCQCSmY6fI zXF0-hiKM1EivBME00V1DL_t(o!|j*nTN*(S#!2tJ_ugadH8HXGE(&5rB}!9z5sr4Z z%lz4y1*6CA0mu0*Pv#qZ_&x8;yfZsz%2$eTzG|5ACyf7qe*=(Uab~-Fa{R$c*a(2C zV?WV5?hT&+P>5xVV@*HAw8x@;sG+g_TIZF6BgpSHy#OeQs}0w09#Zxl>$(6k3wLlU znGJd31;}DkUvrV6M}~>0Bj-*^W(FA!M2hCu*kku$>r zI%?7&0D?pYxP+z_k}#z)b^^{hSELdkE)y#(-pA<{0LpRfM0d;kftBGUCc#gpDU-?A zH(hhlK$z#?yPUI3M;RG1$wJQ~K>}CA-5Ep#G*zTXE)G8gM+;rZ zL=h3yBDhHsMz9JWtF_S{z&tVS?w8AZiI6C1Q9$-QZ zY!V&>S&cGAg(}A38KuYXq-lP>&U9*|_y7rnU1dj@NFQ{m+i-ZPwtWDQ*xnTSz>Sm@ z+kk87wQ%Yl^sy5AZ5-hX@1-otY^QWweeR#VyuFHu31)Rku=4dtrS8 z2}9Ta@gd@A%^3$ zr*_iOCr>w}=L!P3Hl+0eyp%Sh(Z;wU@Bk=U(W3FuMd@iYT8;-OJb(bGy?hMVr<66) dIKW~I@CO%+Dv9tQzy1IK002ovPDHLkV1o56dD{R0 literal 0 HcmV?d00001 diff --git a/assets/tileGrass_roadCornerLR.png b/assets/tileGrass_roadCornerLR.png new file mode 100644 index 0000000000000000000000000000000000000000..e8a1af6b794c87eadcee418e632ce31250e7fe37 GIT binary patch literal 1373 zcmV-j1)}(nNX~Jgq@#-rK2{lX*RZNdZwFjr;|Od zZc?j$IKOdGt9>@NY&N)UH@$B(vuZfKa5S`Ok*%+esjEY+b7`oKHMMJprKD`AkV>q0 zc&3?Ps)%)`mvN_*gr%ZKt#&xTaW%JVRjYtDxou3Wc~+}|Gq7h(ta^i-o&#vuZcGZdt2?U8;sNuxO90 zu8paylCH2mu5W~&p@*WRiKC^6q@{VLnuVaEH@t5+y>B$LX*s}gil(TGr>TLPoqm{_ zIKFTTOQoq(B}ex;s=p`(VOqmZnwHMD9pv1ovroHe#TN*(WhDq{UKw$xq zy35XRes<2FkK)V%3tlGYl85g-eP-5>FJ~k9ie|{4(f$MeS%BmmoayciH|#R24lrW9 z8=l^y#ik$7VF~Y3(ewhgJ{?Qa*ZMBE)HhBv?=aH^aE5;$X|LaCyb7mG2Vn3h^7hfz zm4YVWPsvGp$d_YQ5wLYAe?2?Nw9E0NPa(xt0bpG(MBev`IX2l3wTjOx$5R1+j9FQL z6fVfSUZVUUS1C(|FoN@EY=bpI9zsn3od5JH zEGv5A*8+UT1TF&PNC;{JU3;DV>0)S|bq2sOnh7IlvPB0&tKu z(SJtGL@E!`Fgpbfh(lAK)iH^f!7A7_W?-SD{uIDk$Uq^>{GS$8HKJ!1@FJMS41^)F zsj6GoGEGzZ1BXD!AgH=@ZKKpn)6Z}X_%+&8)vPXnlhS(-BZ?S6RNr|p!%C1ML;MJp z4WJm%N$CUV7fLX$j%zAorex^!3uT&3K}cA{CCwI^rouHJ1sA0Wdw!HyYRp!B`?$+Lerh`-7~J~#00000NkvXXu0mjfe#(n6 literal 0 HcmV?d00001 diff --git a/assets/tileGrass_roadCornerUL.png b/assets/tileGrass_roadCornerUL.png new file mode 100644 index 0000000000000000000000000000000000000000..ceaea03d6560ebef4190c987151399ee3db63417 GIT binary patch literal 1425 zcmV;C1#bF@P)!hoz)ps)%Y;raA~NHb*Gnbr;}Ezfn}+T zgrA{#rkZ@FoJOs6L9TIyo}fjobT_YRS*n9Iw`+l=pg6s6fTf>csfd4>n>V^{U8;sP zwre!AX*RfRG_z_pw``55s*0wlkF2hZsjGgao`t2OgPfjnr!E%eIseqcC zf}5R(p`(eTr8Tc;H@j{*z;TbOtv0V|h@_>5qNFvnYLKn3kgTqZr>Tgdq=uoRewdmy zwQGW$o;0v%j;gGMpP`7OrG%cKi>9c7nw*B9qLHq!G_h!Ymzj#Cr+=85gPos}ud#iW zm@}_uIl^*@q^4>gqe=h(1D;7lK~z}7?UwmN6Gs%sqqVkbPjBtv(Q4~`Td#V92ZDki z0wPC9AR!4M3Aqn8$;@}&f8DnmDm%NIu!+C={R!UA_mg>V-W&n-zt#bwh9tYfBn0U) zcm%Ni$rkwZR}Raq&zf8S*$yxVoaN6AeR$nJ;4ZL@QgXrxsOf>QG-v?$;07E5c2Ges z=;O;yK#J%15=giJks06$Wo1bpKQEF#0q=mrL>U>^$G;a*J&=|`IuAT@03z(id8*3$ zj*{g?UJq2|By9(7Yk=7&Ircv^yTFkFJs16Yz^u|aV0aU-zHYjKX`-fc5s7MIUJo>7 zlXd}1n*hs=q2Gy0QdY^;26a8MAPaO6IARAZe|2%tVl$kaHC%B-f-+6JfsdPjjSnLY z4?jhnHRN6|(sf`?1H`M@jFiTR%g-fP)dNLt#Mq*(lT|>rlsO%C`{%{qPmMSFm^%2fj|@fwsJp$ad;Yv8Cqz_@D-xQ21M28{UvJQL0mQixma z+hydGFF?{gfhITdAh6~O(C@AQ-RBZa0}uQF%EHw|6z49WAt2%dP_MZY;0z||8~b_I z9>D%u-4)Hq5&9SSb!$MG{jLIV8)k^k+ILbrzUkl=UtaU7$SmDk#LOR^0A z`<3M5Jg{j}Hi~o!n2GcT;3GdxQ~v;es-6IR<=mhFKFy!1o&d+JD}#G5H`Wv2XUos$ zi0ww~22hdaoqdY^eX0jQsA1-Bo&v5G@&(}XXVMhA#r}75-2>A6^OYhE>|}q!+usQg z;_QvfL{md;=idoXWxLFVDRzl>p#3uR1t^wy@^T?XboFbt=ay7AfOK}kyt12Y|NcAP ze|S8q`~r&UQpGTz3&8^acW0WrA2Y*BZ3!r*LWNSc(rCRkvQ_i3ab>@mJl4ikXMof+ zk-coaRqyS+X}#VOvr72^7>$X_t5P9lO(!<^`X|f%+uCupr5r`Pdg0c-#n#jDmnWl2 z`31yY1}>a?_~z!1*wE9rv&x?Wa4DB~Fsgh@2jm|2Eqzp7i67gn4~ezg!%KG~s(S_0 fXX*>!3&7NWFYP-pow>tT00000NkvXXu0mjfqfNN1 literal 0 HcmV?d00001 diff --git a/assets/tileGrass_roadCornerUR.png b/assets/tileGrass_roadCornerUR.png new file mode 100644 index 0000000000000000000000000000000000000000..8aafa7d40141fc5c94125c8e16aa3e00134ac7eb GIT binary patch literal 1383 zcmV-t1(^DYP)TIYN(H1s)seTYB{fKN3C{O zs)B>1p;fDZhoz*0o}hiEok^^BW2uWhu5LB6YB#%XQ>%Y9w`(}SadfAaHn(d?t#&rH zYjLNPHM41Csf#$gZ#A`Rgq@#_s;rW(u#v5=X{e5Hr;}Ezfj_QrWvProu5opzmszTV zMy+)>uWE#!p?s#CMXhv&o}hWAnqaAjfTf>-rJ#SAn>M&@IK6LOs)jSLXE?oZg`lF1 zsH%#lsE@3!jj5}CrJjYQql28DLalOgr%t0 zh@_=9uW5puo;0#)H@t6Ja*3p-49fr(000Aq zNkl=U*B@5Qa_fz4xBjdyF;q8e>F7R76o)L`8Z(Zs+D7&+J*?c27CTSLfsX zhKJdA-kqHq?KrXkh>T%rtfQ);G4hlFkUjZX&6xm{0X)M8p$Y&w;|GQ9VFN%|1_S^m zsK9k&entd1SQIY-^vi&KfN`BK0FuTJYb=d70A5=K1l48ZhcsKkE&!Wd0&D;@<0=(s z2#@;5_+gXf5#InTnE@`~3QHLCBWgsDwU@=Q8HivP09ydHbi%kXeOMhu@eB&$01-lc z2L`||fXi551!MZMnh^k`6Xh%bk5D#S1pEc4$2eOvX6Ga$V1iL2@ZFS-fFj@k;2K8R zs*t`Ts)$skUgvcEMPDf(4A6uzuCbt^2Tcf$W3h_>Ed)+4Sutiz-jzi_9Lh7M6ruuv zoHS2H5c-H;MJwso^s}2$C&f14oXHt%3?+9JR`T+f?$;iw9a$|D#V+a1Z70jLD$Jo#C+HvJO&}89+tJMLtPek~@-(ho4mj{HGfKLXlgW{?NpxJ5Tf)+1E z-DR6$4$$mmX}B_hu@n^%tpad(im7?Tc6z^3uF3)W&IG2WVU52e{pV zxVJ_KB^|32pdD~2opw9Xu-@yz~7I1=qCo|Jt{ZIGe>B*Es$y)`` zwBHCFGMtZE>N>Cz4T@!K2jD1fblWHMVPhn3{l@n=`OyIK6K-yKaG-ojJjBf0&wxqNInS zq==)XG_Yuanw&JUX*98DHMD9ouV;Ohn3AutIl^*@q^5|(c^Loz0T@X{K~z}7?bpX{ zgfI{WV5j$NU-|+r1AhM(jDr*>LrmNbS*<*hB@E1WurL3R@vBxsNC_Zu4a4lkllnu5 zd)-F#)3qA_6L4n$Dj%RS03&q=*k}T{JHY=PphlqcIK*cIQ25-!mcKB@=)QO*tIgHa zpLagMcM-K1;hcVMLIGVt0Q%ax04>^MpoHEA^iW~|P#qc@&>V0F2976b1LWz50r_|R z24>;a!U9)@!t;@(W zi+RyOQ>{$p=4~*rFK(x>y~zRr9rqu+0H(sd==l3v;K1=1Ir7|`>C{Fer?x7K9DQ@2 hYs?M6+6P$cwhzg(fpF%ej<5g#002ovPDHLkV1kKE*~b6? literal 0 HcmV?d00001 diff --git a/assets/tileGrass_roadCrossingRound.png b/assets/tileGrass_roadCrossingRound.png new file mode 100644 index 0000000000000000000000000000000000000000..298e1b086d4e9281456242d8a6372b33a6e926e9 GIT binary patch literal 1303 zcmV+y1?c*TP)IlGqNI?lt~9Y|ewUeqo}iAZtb?7O zi>9c5n3{^Er;)C(lCQCSmY6fIXF0-hiKM1nbC6U300VnTL_t(o!=;z!TiY-Y#@)U5 z-arRsw?Kh13Soup1&)J55|7x@_5T0QJvp?EB@;~ie)6M7{ynGDNqSHF{a0-OM9#5a z6=V#<>d*{;_P^h>fdEtiV#XM(TmayO2fF+OZv!l-fR6x|D8T*jd|w7^^Fv$(c&-AD z0geK`1aQLxS#IGDz>6~h2jTfG)(j6=JcEw_=GPTK3E(>F6ktdutAz&+cn9$%z=i_& z39yA3ZiMIC%$CxcqbXm32NJSb01l0LOt!rRnbgpV8rO z!_!^nO90A~gE$F7EA6%heVRgp@19o(Smz?l@h821LV!6u~_=CyU$^`+m2;WTv@OO3KQyXg%Jpj6nDP0EH@C{_cE=93yNvruzm zuf%S!|I+%t8+I{n9L<8+TIvBj&#N|T1-li5wrRQ-TvJ~Tsx@;{#8Dg;AXF4-Zn?t) zM4CmtBmmG-s9qXg0)Tju&p!Y0N?Dv=BiRulSWZ1Yz*8S2D{v9JWy@Im(sR|qq3GprCy|6-%ERvPPA+6g_+N*T z`xd#Co6^W3&ym|ToUE>IcX|M_Cv|IAn5Mc)@R@WuR1_C?nuCg!=88Lta>}Bin3>s0 zjc;AO(gTc)ENh=f>8l(;D6)n$BJBLresg;2ROem?8D3NO!IS$91E(SY@McG(I4wJ@ zCApRy3iB?&_vupU_*0uicK^nd-n|FWZq#{NF*mks z)iZbl;HTX7Eo=ZRBc}Nm`AFvFLeNFOQd0WH^?87MYQxf$kHZP|D@OpwYU4>Q(_|2! zv<-e-zy!c8Y8P^H!{V!@cp2bhMC%K1lM1a9r*|IEe0TZqfKS5#{s4GQfldJ5;-vrp N002ovPDHLkV1f}CXUPBn literal 0 HcmV?d00001 diff --git a/assets/tileGrass_roadEast.png b/assets/tileGrass_roadEast.png new file mode 100644 index 0000000000000000000000000000000000000000..076d8b7d891e1c1f0dc6796155d6d1bac0ec4508 GIT binary patch literal 404 zcmV;F0c-w=P)xotPRZaBSfIKFQ-xokMUaW=PXHMMFsxNJGVaW}ecH@j{* z!ErXYZ8*MgH@a>$wQD%Pa5J!IG_q+oyl*tKX*INJG_Ytn!E!aWYc#QFlCQCSmY6fI zXF0-hiKM3Ky^U`G007)cL_t(o!|j({4}u^RhAA~aQ$YkgmiqsHWsoj0x4JlOwRYai zhqDKUUc9jJRnFtvun`#&{F)$)lHMjcR31FlTw18&w)6gvW2`Kcygo4qX4VyIctjV= zbOkHy%VjrFnw2uUzyUxv!zPWkkoQ|SNDD!35F3zT6Eb+g6&bwX`*%PB5|H3Sf(tTu z0euA$kl=3w)KDgT(R3x)#yl?=M|b0U$e^8{W}@DdZ85j<)-T&pc(34HkoslYYxY$t yZRKuMDLk0v+Ku<%*Zr;qcMzlVjNVKnaJd0?WA0s0)oMck0000uxB;3Yc;lOG_hzjuxK>0X*INJlCQCSmY6fI zXF0-hiKM1e2U}qP00A~hL_t(o!_C&&uEHP`1<*QAouvby(EtC+o118i?(=YVXrnwe zO<4iXP_pnGd4|GOqC{7Q!Wm?*x2Zm)K1yS5P@6| kcHUb+r%u43+zbKA3D~`qowxuJ zC&0v85cn1BA^ZVI5SS1MtWe+y1OftqHx$^TK#Br1Iv`OXL4g$td=3HsM7xzAP+*20 zCQ+aTB_F+{WuyNAItKz>#zz!TAh19W(<=(7(JRvRifX)BTN@15dm&yAv^c&aa45Gs z>kyXCooZ~KgE^s%X3lJNrIbYnxZ?oDvpDbnsBN~Zi@_a;bg$ia?b6Obu5EyF2b2}a wP#{48ADx4cu?oTh1e|4@S%4c3aNneT0lp~C7{RJ`hX4Qo07*qoM6N<$f;-dgfdBvi literal 0 HcmV?d00001 diff --git a/assets/tileGrass_roadSplitN.png b/assets/tileGrass_roadSplitN.png new file mode 100644 index 0000000000000000000000000000000000000000..46a6004e3950fc09e8f3c73f1f5dbe65e183f1c2 GIT binary patch literal 477 zcmV<30V4j1P)) z!ErdfZ-}F%ft#Iynw)-^nt+*`Hn?nvqNInSq&dKGH@a;&zi>CZZZxxLGq7kkyl*tJ zX*ITMIl*!?uxK^3YBaHElCQCSmY6fIXF0-hiKM1y4=)!0009k2L_t(o!|m7Ej)Wi( z1yE*Rdf!`ZK|q%O|H2WHQA)`u^3a_LH!+ctIvRWdq<*uIQfnbJOkMX1W`>lnZ5wLu zo40=VABD1cK~|<8nB2T9v~0-3pZA9&N0b9(PH^z``0uC=z^My zBgU{9%mv!a0>IPF6kr3!5ZH>{7_bvt2ndkKtMDZ7J~s!C!$gtF_!1!g4y{{r{{c_nX) T-}iUE00000NkvXXu0mjfC8x?h literal 0 HcmV?d00001 diff --git a/assets/tileGrass_roadSplitS.png b/assets/tileGrass_roadSplitS.png new file mode 100644 index 0000000000000000000000000000000000000000..fc6646c102116f2459b120af8aefa9a2e07cbcf1 GIT binary patch literal 477 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 literal 0 HcmV?d00001 diff --git a/assets/tileGrass_roadTransitionS_dirt.png b/assets/tileGrass_roadTransitionS_dirt.png new file mode 100644 index 0000000000000000000000000000000000000000..7ed7f2dcd7a228de474a17eb1d6e634ee32f0e69 GIT binary patch literal 1226 zcmV;*1U37KP)NGJv4hyLd_==`rl*w1s(e$m zZ?LD0wWx{Gta-qxg2AbRKf`pnsE3=(k<`+oIlyt4rJc&Ee7vcJx2TB0(4C~Fl$oZS zuBVQvr;*93e7UHG!l{A0sDAIl*$Irj?cR9gvHn(gwvuRJn zdAq2E#i@VKs(9wor>Ccr*S3VoseG5Eo#oW1rKgm#sEfv_e%ZQ-;>w-f!jspvgxtT7 z+r5p`t$EU{c!kP}+PjM7&!bAjcjV2XH@R)js(Fv4qsXaz#HoLZq^6anpV+sCoTi$~ zs(X6LhvCVajisdL)Tr6Hh}E%v*R_K+v}!c5Xpp6%$EkfcyKXhMYc#THGq7jBse;U^ zdeg3Zj-{iLrJ#(YrIDqf*0X^%wQDr6Xr88-*|B?)ud%q6XnmHLGp}bk!gA--sfnbf z(W-WL6OJVS00OE>L_t(o!>!e2d+IP00AQ}WySuyly>oYW_YE5xurXwULzz_ab8p)< zZ6PV^d00M`lJh<%ImxMoQ$}MY%L>BIj*vaJwsKxbGg!8=5yx5Z!zv2_*i`~pg8^#< zunq&(319;TY!Cno1K9n~px`|yxC#ZIgDM6BFjWM=l|q10js%KSAhVF%3n-!h9D{)n zLhS=z`fG!R0K?G$KL(I8z8eC5Dv(xyBnF&@Ksqll|K#(c6yGfX0l%&aiTO-tp8#A! zza@#*%a{e&G9T`r)GkvU z0W@hqw*tg5kn9gfq!%F#Xd-}S4G4>K+uK?%s6Y(o6jOm_0$?j4rBqh>!pmXR}5QPfB@2D84;>q*adoe zk~u(H4?J#Zxy2o$0Vr}w2HM2OMaP+Pn+m8$(K0jnrkCgWv&Rn~P=JIEK$m48qWrSO z%S%e^hmNxBa~1f-E5mif5)%Pubx04~ye8;!s`K{IlSA{**YuQC4O} zS!45tSh`?%0OueB2zj18b-Ue@KYDo$=x9*?)&rZ@6Y}OcKDHyl+41mat3(291EMA6%G7nHcEK3vS ofeG5D%>yZ;hXPDNfGIWXKe>J+*N;2Cp#T5?07*qoM6N<$f(!Ce-T(jq literal 0 HcmV?d00001 diff --git a/assets/tileGrass_roadTransitionW.png b/assets/tileGrass_roadTransitionW.png new file mode 100644 index 0000000000000000000000000000000000000000..e243b9bdf361015b92c7c3a81aa63c30cb9da2a2 GIT binary patch literal 912 zcmV;B18@9^P)UfXaz-$b_KHlSjmNxTuHT!NrQgMt7ZO*EBHn(h~r<63aY1OfRc*%w}v}!rPapuyd*tdn_&7jw{gNVwD z-oupAta;Y6fsCZ3&#HLh%A7a6Z#TMa)2@4srKB{nX*95C(5iRm)Tq*|csapxHMVQn zx{1`Ud^E9W*|B?)ud#iWn7Ec`Gp}bk!gA--sfnbf(W-U@Qecw+00Fp3L_t(o!^PKE zQ^HUX1>o3w@4ffld+)u2y?}}chL#u=NcN{2V8rM{)|vC*dAxJ?n?p8?0_qqF45Gj#3iP2s?VkbP&dTkpp4+WC!+fzz5*0-`KYb2-PnA}lp6iQZ zO;xoZJAKiOH}{Vek8SBDW;*5c&{q_T5F1ahc;bs8fyg~C%d*W+KjL527t7t0mJ%{V zl=O(kl?Y&(Fke_sLrO6Pz>2MEwO3Q!LUPz4H55ej&-(Z9AFtf2&hxmZKdgEbWX z7r_EqC{XZ+qUqKf_QUVNhe+=xD*L%zZ`jH&U}Ir1+N>-48rVkqhx$xvrT5$7nc=o!W*`U<3s& mQNWG@$0)En3j*po2Ydpq&A*1V(<+$&0000a=@!~IKFSSmTRzNfug3C=hLW?rJ$Rpnx3Ya zyQzh*r;cUEfYQ>UfXaz-$b_KHlenmexu}Pvrkvtw9lF2 z%%I=Jme;j}*0h4$)22$qcb%r1+rEz6zK`Y6rQ*w;+r5t9#+c&NsGH1@-ousEvVhpP zhT_VdM8kH+(VyJEklMS7Hn?rds(iYrhNY*Jm8G9Hw`?@CX~L<2yQqbsrkBI1fYq^o ztf!C3seHewf|{nAilnA^$%Z+=aW%AR#;JaY%8SyhdDgRm-oupU(x&6hpx3p7*tdnC zrkCQ%oHx90H@a=pu6v)Rn9Ztr$fJa_7{kiKM2{s&*Lg4A1}o0&_`3K~z}7rI%-O+CUJ7mEL>rz4zYZ^xmuE zxc8p8fFTsyUv%;5IK?wj^&; zD1!>wM>s&Jg?Wi&fW;t@1n>={fSgc^{>mf)tds-9OGu@OJz(FdfXx+Cn4VSyaADf7 z#y~vC^T(L4`L+YVDGXyge;gk=8~~1C80YzI_z+VCoWP}HXv6eQj9KL#WRC(I!HE5= z#n7t^V21%3FhsGLrKP9=aMBSBE`YnGW~u>F0IiJqZUWqiGuEmOXatCbXWyXFa7?|4 zQNpXt>zjZCh`Yp_>5oKv_ss|;0krI&kx0CR=0iX_4-QTN32-0=G=Tj$OHVlfU` ACIA2c literal 0 HcmV?d00001 diff --git a/assets/tileGrass_transitionE.png b/assets/tileGrass_transitionE.png new file mode 100644 index 0000000000000000000000000000000000000000..7bd0c79c669f14f64870782d1d4f7c98f27081ea GIT binary patch literal 1183 zcmV;Q1YrA#P)B(QZ0OagddY{4%Z=a7qvX-1;m@Tvx^CUeqV3wP#L%8SzHvsvbvVCpZ^(mB#d)61 zlHSasSH^rl!*t%uqC(4ij?0a%&zDEUcSOT>JjQmv(45!Pq)EhhKFD}=$c1FbfZWrj zmdua5(3@Jue9zLMa>#`2*{ndxdE(Tlq0N)D&zVBZe5uZr;t~kDMWygTs%b~f@n`*~`uFjX#(xc$bqo&T4qs^3?&5_5^pXJi1-^`=w)~n3X zp*_ZSIKOe_)2QOmrQyz`KgoGY#CJHraec{$@7%9E#dS8hZ9&Res6{y>C0jbT_+hnu~K~z}7 zrIvSln=lZ@)4liJd+)uo)9lg4@kkoG@rYf=djpn$Z(bzqSRers+&?yc^#079UfpR( zcMD0^KWo-#*`9}VkGSzqa}7^`{kO3G%fCjCvD6nELVp*a~xF6}qY5h?Mq0-^l#v_N>39KmwVVDDu zJ#~p?A5BX_CCOo=7~}l);#it2qO|Tn@HmURfU?@GORi_Jw|C19fVSa*5DPGET|Nil z)JkNT0)&tY**V;_0PaE*-zh+DETdjv1O6_M00jd&3@cZQA*Y>KBuaqwida9;^)Cbe zV!$m?z@w+TfEAR(oG3v5K`PRziZI|=ptg=8C}1ZjU_%ffuYR&a*m7fta&&4a^)8`1{LQ)?0rd zCj|}IG~`>4aSHDTf1e}(d2&=RwlVR%SAg4}`ltB30>cEMMvNLaBR%LZ3L8i8BAG-Z z&*j9dr4gmYtvpyY3YF0{H$b(@0xS&%S<1smaib|W<2f7Pg~kykpsAvuCd&dh0P9t{ zr7s2q==y6ufQ0o;Rw3uP0PD?+0f;lZ*(~35Mgu-4+|Iaq;!ZZ`ZT(45z&GE3`UL)X zLyORa^#-jlijtBLGcImelExi_476(V;xXc00v&lgy9m*R0;mqNdK2 z;?$^y%8J_4r9H=YvCo)o$bwhJe1*!2o6M0lw`@Mhc;nHg-O8a%#CXZkpx(=(=+&t> zzi>~)dA!h@-^`;y!*$%#ra#GfHo9%<*Q@2ysB*}JO2l{F%b`5Qbw9&&J;rvw(40iW zc8JQ087H@t2_%zW(Gt>De1-_4_C$AC%1ckJ1$ zo6V8w)~Z0tdN#Rj<a#tlY|>I>U4D-LON=ecQ>PHMVQ#)TuebawHAS`2YX{o=HSO zR9M5+m1UpWKoEyh_x9>;S9h0l?Oo4}1CGNfM{y5<$cFvo-Hky)AhPX?{@=~~W}fWq z&P=GbnWo!)RWaC9n^1oh;17@i_E@k-0yql*VEqJuT^11-k`g?C^_aa|%l0LnX_^ES z(!7Cy4hrl)V}eJj5CD=GkZ=U>FYC+}@3e#n0BiHN?rL^8>9CdG;xB;5?q`9O0L$(H zQa*4$jZGQCYW)&w3WZ_${xfyX*4?#9H05Jxo$F@qAh){DO*p zY}o-^I(>pVbo?*|T-4`7xc$VKP^;B`>j2-ce^6WvQLGmy zVzJl+GCBarK~sHEOMb0-$|6!GC>s>C)E$}dPIJ^TKrGq@z^8Ky?H4PW`Ao_ebM^rS z{gm?ep=$t~!H5|G0D6b=J!liaZQdLlFc?r;6a-=2J>WpVT67QiBmo4@HGq==o9^#G zt|99lu#VCXUb-&ELPj`TGXgumU0suXN2*E*tIX(V?5XzRi zODKvNxdb|I4oIORR#Oet45=NeU1FJ57hbh&#;8hbgjP+V2hhFnye0s7kLjA+v=4^x z!iAOqgebi-1vK_Yv~|}lTFS55>O^nD1dy+05Fka?%5=W*PiNu31^fXJVB_R*E54rq O0000Jza5ubeHMeZw&7|VcrsmVB;m@TwzHc|ZZ#TSe-OHim(x>Cmrr*t^mdlUf&ZN`N zp~TRhw$Ga0%c3~HaqZfzN5prV%#n4-g_g{aKf`qD*Q?*mqqNVNo6V8I(4Bk9hsn{P zj?0aB$cE$4r9Q}bO2l`}(V^YTqHxHAh02Oj#d^NboSw~+?AfeA%X{O{ra#Dd>DH>@ z&ZR%edDPOQSH*l(#d|``eB{xm(bA%2$ACn`cHh&d;?$_u)1;Wpk?Pm1JjQln$A31u zZLZFj>)5Q^)22DWayh|qH@a@T(3{`Qqc*v1*V3eh%8ES0bKcCN-O8cp)u}zlcQ&_d zIKOc3+^_E2t~R)AH@j}&&ZOnis654WJH&K2zHl|SYvRwP>DH@H#Ch%7t~kJPIlyt{ z(x*DZb2zw@0_%fjLgh0>SXXn_u>uWlniz&Tz7+hPxpU$$f+GV~DNBN9MPmUFH@5&pbIlEEe(w!B+FEl>n$ z0$9d?w)<7$6YF{pPzsw4*ZJ(9v2EW1F$^y8Y-JJeItD;?222?7Q-zLE4Ti9_VsR#%45(eTSd|`@y{~&_%TAMH|j|JVal~R=B z$BV8xV!LtkdPOr#Jen5_&%H_+MrI<=qJ=pl{<&^ysA{J)9t;M@(V-83 zElAa~UdgX}mW+zj86^h+I_euCyfh3Q3{XqV0Qhxwt~BYkD5S-Qpl1M_ zeu@Co8~_NjnJ8og#Fwh}4)%cZJw-v|;Tcd>u&Ukx>l#35c?PryVBLEUNDV3PfG4;G zOL6Z2nEKv=JkQ9WKA^-080x5Jc>w3}ia5ssknoZiwR4mt(=n+eQ{}-DN@&dy#|9k` zMJaxaX8QnrLX9S#k$Ma7a)!o;4Xz;w@qopt&xmUoq5#MqGYvU)4zA#CLPr2XjFhQ> zY^bANqxDdWk1H>pr8vHC-OHgjx^Cprr{B$_H@t7y(WG3)eWT2i-Or@t(WbG^n9|asgUX3O%6hKO zm+aZB-pisy!*+AXgxAuftIn26#CPh~tK!tCfXa#5)1__5f}6~dc*%x8!*pWDf0N9Q z?b@wn$AG-go9Wi7$I+k4(V$YrdRoSOTE>0c)255djONp+;?Sn#(x*Sjcs<5;-^`=n z&7|Ydro7ObXvcx&(x^YldELvR;m)MC&zgqHiaf@4RK?d&!4#$b>e!Z8f)SIKXi^!E!dZZ13E!=+&v~*sS2rq}S7=-O8cv+pgu*s6NPe zIKFV=&!siDYd5@Z;m@TvyKX_lbv(m!J;!(7)2HdytL4(CLd<+S#B@BxbvCzbIl*x` zz;W%`t~kAKIKOZ@!*l4>s@%$<=F_M{&3*9Qur;=8+sU9g!gA--siN~gU;qFD$Vo&& zR9M5Mmv?*GFc8M+-h0n<@4egXq}ff{>;PevO$jq#FjyX+yq3(6Eg4Jp{e%5HcRx#~ zS9ga`quFl%@tJD2rsdtIIoPd#>OgY@Xg|BI<-9w<@s4Ljk}9qM#|+0MNw=~az|r0U zBq{FzNK)d(Bjbi=o*It>rdrAfd7wd`G-kNQmj)*>qbN#i*b1nFgOYTj$#RVCmQFZp zi4TE8aPK7wVgICc3rVGAO@au(0SK5S;~Q1EVNK#>n@B<7FpR%L#wTQ1uI@7&fHExgarnAHUP7EjNDsPB zf_?=9_$J26OiIl4ykHlp@k<%6rK#*dK$}|9zxErM;2@+`y(rJE&R77CR0cBuQ3V>Y zjAdp3idV>zzUUF4X+PKiZ4@7+C31raP>jOfc#m4m*4eri5>_i|pR^*3Gt zuUrG>r_j%PG6;59XFySxHynHJy9G=lafBCCmjE<6E6Vk6ZUIRY-@2x<>HvUXOvC_l z2rz$@0|0<&2{$Hmz!lSw*cbp134or4OnBNf+{yvL7EsXRgJdRd;=XV`66}Q}7Cw@I zY3pAEUMWZL>FPpCzRZ0WOugAJ__+aZRgd)`;!qCM|5;b$RhS)god5s;07*qoM6N<$ Ef}f>boB#j- literal 0 HcmV?d00001 diff --git a/assets/tileSand1.png b/assets/tileSand1.png new file mode 100644 index 0000000000000000000000000000000000000000..c88544eace360f1c3ff861f6ed00c9a911c410cc GIT binary patch literal 717 zcmV;;0y6!HP)es90)2ZUnrr^z_)5Q~&!y(msO8e9=+&y+%AxSxu-nO?=hUg8e%{3Z00Hqy zL_t(o!_}ABc7iYvhV7=-on1gcmV_+4|MQgq+KLHeX)l^P&dGc*lYb^Zi-xy?M!3-E zdC?fIUj;zh3=m-&nE;lQQVb0M8{86rNeUswA@AHO=^}1x&W55SBSQP3RQ?z}(k^5G z$Qi&>0>JFyu_CG|IF#-Wm(~5*&lRP7W^bS$`n`ZVK&B7q;;DW&)?NHgBGeTC4*M36 z&c_29gBu_}jUcu}TgH9sFhD`bNx6w!*1Y`}R7`AzDxgj=b$Y;&0etmQVu8(2gJ-oq zz0R6G#%ekNdq-bPrZO1HH3tx1CQRJnEC7|BXpcj2TF(L!Le_#k8(_`%g3r$K6KUTI zotOwIktP83@#L!g1$o(}U~o60L?MB9m!|`t^umLR}-68tY_!#B;YF1Ad`ThN0ByQXwpi*27L~R zKH$Vka10F0cH*JNIadcOkr^2KPm~v2K-PMv zS6&Uf_*hDbF3%^|G3Fas6)D5I{^LK_e+u{lM69wFnTwJY00000NkvXXu0mjfbuwmv literal 0 HcmV?d00001 diff --git a/assets/tileSand2.png b/assets/tileSand2.png new file mode 100644 index 0000000000000000000000000000000000000000..a2fe6d5b728ba7e3b57e1255f37ed147ea579229 GIT binary patch literal 709 zcmV;$0y_PPP)x3G-OHim z(x>3gq}|J+-pr!i%Ax4hso>3|;?Skv%%kPfsNv70;m)M$*R1Z_uIksT>DH>^&!ywg zrsB}1a#tmxIM=F_O$%AxSxu-nO?=hUee@pPd800HSq zL_t(o!`+r?bAuodhSN4_?$aZhctu4y{QtkNfa#1PC`xD2c0U;j&$#dIzA&p~ajBG1 z3cqKSVT=G|z8N6H_-+F5F^#|gaA$yG01(Pl&!4*r>Ha1lLL}}MG{-otAJYL5uY?e^ z5Z52<%WtJl86l#Cxv*Sd9=U`7V=;x0AW?*}-v6CMGZI7+QA7)Ni=XopBwx-Fh8kro zKjaB)S;C=KA8cgpLu*D*q}fP{63jtUL2 zZKwxj(*fLu@nbsR>BD8e#}sP7(};_KWA3ijpw8jevwz(@DQ41B^x=zll&J9>G>-~N z8E9{&2g9vfc0g> zo(u@Pmyv!EsnND>^+yiy#sDyGt$aG-gu~AsK-mE>Gj2=hkzK3=WbCleuvS~$NM#oE r?~kOSj%a1@h9shnngtlbUpS3lFrl&xn;DMZ00000NkvXXu0mjf5*}qB literal 0 HcmV?d00001 diff --git a/assets/tileSand_roadCornerLL.png b/assets/tileSand_roadCornerLL.png new file mode 100644 index 0000000000000000000000000000000000000000..41181bae0f28bf9ab149ea3aad6e47a223886c08 GIT binary patch literal 1233 zcmV;?1TOoDP)T zsCB%WYu2xM(yDgTu6xz7f7rH!+`f+F&7jh(dDysz)v${&+PjP1!II&}ncTmR=hUd)#FgXBpx?xm*tUh+yo}twkK)Uo)2({evVg;%Z_TH4 z#i4M=qHx8bZ^NE$$)j<>o^8^rcGIkQ)vb8evw_&RhS#=*)UbWz&Y|Ygrrf`fw-l&7k7SoWGoG(5ZFLsCCGr zamS)@y_##jn`_FYa@eqY)U9~Zta#S6g6Gqy!JTcwo^H^ocEzA?zME{+ta#I`cgCS` z%cXO>m}=0fcFd-8%A|6-m}$?cb>`Bi$)s|;nQFtIZquuG)USNRpl{c;gV(Qm*syxe zsC2oPY1XcJyP0azt9RM4d$^Wp=hUgus&)~^@G<}Z0|H4zK~z}7?U(0U;y@6Gx!!y4 z&FgozQ%^m67gP{XK$@sDF(48Wvg7{mm)!(Nc7ufQ?Vg)26Gor+nVtFV?yT$dEQ?x) zdko*M(=P2l;NJk85PLHBc6w>yQ^5%U8|~iC{L)OJ3jnpq{fCQ%ZU7WAzR?{(wPVk$ zEkKP}a5q*=`m=`&TS zuB3LP|Ja%89DwmT0U+knzF!p_0C1+f47IGDL%{(+EoTiRzpl$3Cjjj80_ zAxp8$;s_*qK8&~Nf-GQ&FQ@A;MBGQygd%v0 zfvP1z<~Btcio|*N2_+cF@PIvpm`DzG>C|DGQ2KKHUP--2b37r0Qs%%d$P@R2tAX#l zIuImntRW9{?wI0>n23XZZiAr<`}OOiX(I^THAjYlUbXKn+t>?fA43ok zb5JL>g+4Qm`_C8Ly67*}Z_$R`L1A+s0CD1`nfJo%n0{i^I5Em>AFmKM$38d;JNk){ zWe>L%b~jKVxVab0n}{|FTxO-jY=^3rTKs1Xj!mkcfNA v1ETcrlGFx(0nEo@^VN2&Rna+M!WrN%i7<`D?tXC)00000NkvXXu0mjfsbYjr literal 0 HcmV?d00001 diff --git a/assets/tileSand_roadCornerLR.png b/assets/tileSand_roadCornerLR.png new file mode 100644 index 0000000000000000000000000000000000000000..13701175c300fc9df628aa78981c3ad14e5fcfc1 GIT binary patch literal 1244 zcmV<21S9*2P)oNd>zdcT`&&8BqD zsCCq=ch;|Y(yDgTt$Nd~dD5(T)v|xqvVhmNh1Rrz)v|!ou6o+KiQK-9+rEw0wS?fs zm)g3D*|~|}$eQ28mgLT&-oupR%bw-XquacU;mDih&!gPGkmk{);>w)i$eP%=hr^$5 z&8Kw7qHx8bZ^NE$$)j=7t9H|@c-5_V)vz$D(n?pl`mLY}BlH z)2w&r)TqXxaLJ@{%cXO}pKi~ob=0qX$fI%0rgPJ)ch|LpyqRjcm}$hIZ_cQ6xtD3s zs&?0}df2df)~~A-_3mA4IDL&rKOOnZa-_B0SY<#tL;f@b23zSF?LOmzR%ue0LB-w z2ZG;Cd=_I51b>?N681vyWuK)F;0N|Z!0O*8LmYb|7^3Qc1moBfL7II%Vh~+w2P>qe zwMs=bgeRD*2Vmm({BLU&bR-->nno}XJvIRajo~U!UenuWVWaNA1re^R#>RDIR28*|fF44jf_)(k5X~x71*;wvsk(h7`sofPEoz{GLb`)erhTl)aFsXeL#W`S z7oN}w1daQ(lDL5>N8K2q+mwKBqh5q`M+C#q8Cp=}YZB!c1z>z1O+{U~=B6vrqsnCh4SVSdbWGG?~!*ra&WUKK_gnBr*3i zSy*7sCAm*9QaSu$v}NS@T1RRe60PQI=mtlSfhzM~-w1y)ANR+I@)Dm#O(?@Eh2T7Nkjt=0K&K)Awjq##9-I8037Exx?SusDP1qrVY@A(R`jVso0000^dOP)9f)2w&PrE|!mamAo-yO?UbnQGUsdbyWq#Gr4}t9RJ2db*ft)~VX_hOb^Mk%vw${q;> z0wIHtJ)LP?`Bzu6GLY;fPWsAuIr5e67e~^yREP7*Dnv0*cp;=(eIX#JBeI3GxZw8a)-$QU4lmc&p1wy8}R z0+1J27D8t5P_tu0fD2+J(kbYm_SF#JKsy796&9%7Hv&i^v@gc?AYh`tX#gPmG`pDY zcD0s2;K~3wg?zFm8e`SgR~eA>=}Z9m-b7XZRS{rAD5d><)t{M<(0yt%1?OXc!c8g$vWG`-Bk~tV{8PFj-8+O&n#>UAL!w6Tv4U>!N9GbNe5uR{ooBYEFR!|_v!P98&@N8*(RDibgg|ExHpQcR~`OOod8Y%RQ~{X5LK2M SHlp4D0000b!<$)j@B zt$5X~dD5$P*0h1rta;kHirc=9+`o_E$eZ56l;Fmh-oupM!jt69q1wBPV*QY{sE*(5iOAo^H>mb;_l3zME{*ta#V3de*Ob(yDgVvVhsS zh}E%v+PjM7(4^hKk;kHNznpB&r*zM$b;F--)vkHeta#L|c+#wR;K!Nf(x=z8gUqIL zyqRjysddn)cFw4D%A|6=nrqmwd(*6U*0h4-%%A7esJobI)2(^SrE|!mak`jkxtD3g zpl`dGYS*uNxtD0gpl{Qwci6Cc)~67RugxBq0Py2-$lN>!iQDmPLpqnZz+)dA}$=y?K7} zolbHSuBc2@0T5mYX~XnMAg4LXCx2@)2dIiUVhsS6`9KDa=rAS&)@VEhhrGXt6h7bw zHyysnfCC+04=C_~cG#lBx>-OL1^K`hw9~=$Q39;e_&mgU{}S5e1HT}pm1I030)}b$ zH~4se3GE1Jy$lI$3~dO2KQ!74-MoDlWd%Sdc-XFpJqmMx7c`iMJZ}%8fB=||Lb~$% zLAhK7Jfo2W^z!y)B-WAm0H&%>RX~_N#$ld_briBlNE&qOtODNB$5}`cF^fyYfZ)F= z0dS0MMLTbHO5LF9b`qc`ANTTr5ZeeosT&q#!r`qbs2a#*bbyC+#vztLeTN&wNOS4F z0hOTxJY{9r7K{bC4tnVTS{ZDR5-p3UWDXE<(SV1wt4<3wm!JdS`!vucB|+`TYvur2 zH}r#_$XVDm1sJ6PZ%RB82-!j6v0@Auim{GPORgdcC?){xOz}ZRaw!2+R7?Q&v``eT z5`#1Z3iSbz7;BZEvQH@@~i%?dn2Y9K)W{j4g)dKA(wE=jL#yV0` zOR_|$i$JA9O#n;d6=*h2xpPrP6idO=0eD60_N2U@D~Ie7qFOB72`cxD0G|kJ>fEK% zw%)R{6hKvp0Cp~sR`7Uh^susUx0Ed!1HNjG*(kIUQ<4B|FOaqz{ICevFCX8+`s)v|xrwS?crm*dQ!)2@5nz>&_Vbi0{q&Zl&}nrqLg zb-VDPv&p+MI&0e%;X6H14hLly(x zDc%Fm9Pn8+qbYkk17Ir+`lCOVw~N^4=>jh4;%~Z$kVn5?*Hhi ujd1Y1#DE|oY+`@_6IF8xcN8GZ+g<_H9dUka7|Ij?0000tSP)gbG(^r#i4M(oNU9NZ@ijn!k=!%pm4yPZONl@%cXME ztarVdYSpfIzng5*ta;kIi`KJ(;mMoi&!gJBjO5Ou+q{h0yNcqr*zM#b-9;l!JTc!qHxNka@VkW(yMmTta#I{dD*#% z*0h4uuzlOTjn=Y&<VoZ`H1OzME{up>Wi#c-OUq&ZuG>gvWLc{VaE0t zT)w8r0mgDXmTv$!WDP^;)8VTK*r4_ToU;BVvRFeB_UQ0d1oT{dH$YIqTm-EpA)yT)3=ma)2#r zeFz=ay^C}XFb4@IDwhBLq=25SmCX7NYK+4!>#m_12WX_AI{N);Fi_a1=MWPDfjdWB z0{1jIKpEPYKSypCF|GnM{Q%QY;JgiVhCK+$r``Y(ibd9t6S9HmNde$_vmB*>p{;f- zdn>Xt)gb3s5;h?x5{mH@5FHGM3b-{qQe4X$twG0LnyyLnaFb)(g2zi2pLuY09JK^IMXHvkQV2cuX-TAloNAclIwHM#b{>e7Qk3%N-FRL|0M zDeB|^G7mdm0ssg?N4~iy8OmMX+>^}(wT5a|5CF|Rb1?{j-a&dG0KGx-fdIIE^(Rdt z8`DyYP_F!*ny!#mML#l|cX;_-hLcgzPR(fj# zB2wr`zK%x3p(D zpAq`T%_VBzg-3iSap}-^CfO4k&yUUokN9*jWdWa^Ks&ys^({J~xFG_z?dO$>T<`4L gd=FuAz}jSh|F)lsU^5}*lmGw#07*qoM6N<$f}hG_FaQ7m literal 0 HcmV?d00001 diff --git a/assets/tileSand_roadEast.png b/assets/tileSand_roadEast.png new file mode 100644 index 0000000000000000000000000000000000000000..5a7cb32a8867489d4a02cb7b74966826ec92c66b GIT binary patch literal 473 zcmV;~0Ve*5P)(`i#Ff>tf8)%c*0h4*$eP%R+<`)nsR_Ola-0<8Hnih zXW>td^qq9?znG*ci(pl+uY<5@5vB2x5R&G!m3+=hH*S|SIT3P7S{0&#=>gy_7;(TK zJVXEh001@MCKz!5yafON01O2Tr3HwYH($C37goj}%A_P)C*S3V_(x&3d zo!7O4=hUdyvw_pDd*R8O(yVydxroxMci6Xv(yV#av3}XHd$^Wp=hUgus&<64yH5ZB z0b5B#K~z}7&D7ay!!Qs9P-oxw-LW0-k`n9xe=mhLg?8@4T%1DZ$q4HpG@2VUUo|cL zM?D_?XWj3=7C!$dr>}j%>*MMfz+VMWaX=*i#{o_NH3!rJ@EqXZe}dL`(7Fq)-$85{ zz{Ub-1`IH0B#T`42M#z0V9fz*0ay;O?+?}1K*#~101O8h0n9jHCV)N%^yMrV1~6cl zb_}osz^T>)^$7*aMGstHB1L*2g1}G@3?XpS12+gbJ>U=!Gi{6kuw;NG03rs6B(UdZ zVK0CV2Xq9m<$$dKat_GCekWBP(i@x0Rw?d4`c{POFdAg04SI?764ck07*qo IM6N<$f|cU^DgXcg literal 0 HcmV?d00001 diff --git a/assets/tileSand_roadSplitE.png b/assets/tileSand_roadSplitE.png new file mode 100644 index 0000000000000000000000000000000000000000..c9d44a41e84d2d0b492ea3404588dc795ee96420 GIT binary patch literal 630 zcmV-+0*U>JP)w9kf77pg)v|!s zwS?WllHI|P)UbWz&Y{`5iQ&ka+`o|B!jt6Bqvg+|*R+D$yp7YXdg95P*0h4tt$E(V zl-s?H*tmz+du1Np@0b5B#K~z}7)z)WogD?yRV7m9-dt^@_2^)g_|Nm5zHbANEt90*&UiFFN ztmnY8e6qwU`o3I5p38d7=RaOFKUetuBF`!wCXxoMRy->}!UK8=5c7bU0%SZuDu6@* z_zReOaDY}}gq{QWuuKXrk`m~KJRoz^^l*_=0^*Jb6j1?VYA1WxCenV2?Bc{FpWT9AVFXU1x6?kqJaE!AVL8T1x`@l z+64R(RWEob&_TN~$j}RA9|hVdaE<~g3dA7LMawuufi?)dqs?@Q0!Jt?`#+beZMC!m z#uE{+Hw+_=O9Y&Jy`lYu7b4Ki*YtZZW{$e*QI46TZWKjX4Y=X}*>SKON_HpJuq|#l zz)&dT{?}O~0;fU;q;w$F0tpIuDB#k8SO-jfMil}LFyNH2qXFJHKvJfC0ItLS07iK} Qg#Z8m07*qoM6N<$f-qz;w*UYD literal 0 HcmV?d00001 diff --git a/assets/tileSand_roadSplitN.png b/assets/tileSand_roadSplitN.png new file mode 100644 index 0000000000000000000000000000000000000000..258d3c4bcda2e1aff5fdbc0a32985af2b83c2082 GIT binary patch literal 548 zcmV+<0^9wGP)w)g#FgR5o7uRBz3<1D*qomk1<4Rc9BraDx!?{7D_W ztQ&0pGtdEe0KMEPgr0m^4aiv51qOJS|1Av81KkmB=K*az>IwiB((2^_y_Ps30-Zj| z14zFk0wg=90Lk113s}Gcmjfchm;=Nx7O;Q?t_Hw{F$ZpA7hHO74$=z&ExIS|w1`r` z%vrF*_IN$z)z`_G6&KDdG5r1&vY)Guhg|~TzYgVM$=lMC{N}#Ni}7j>5ADb=guJ+P m{KJFn;Cz(;{uT?|1h5Bznt%l?rwvK~0000g5k-V(yV#q&!oVeZMm0dyO?UbnQGd+jMlS&)2@5r$eP)? ziRRL#(yVyfzK+?sh}gG<E)I89<3^(2M_SelRZxQEet=LdpkBwBoh{=yB&%j}06)^``V^)00000NkvXXu0mjfXh0Sh literal 0 HcmV?d00001 diff --git a/assets/tileSand_roadSplitW.png b/assets/tileSand_roadSplitW.png new file mode 100644 index 0000000000000000000000000000000000000000..6324b0183d40a440694909c710d6bd988e43c581 GIT binary patch literal 630 zcmV-+0*U>JP)w9kf77pg)v|!s zwS?WllHI|P)UbWz&Y{`5iQ&ka+`o|B!jt6Bqvg+|*R+D$yp7YXdg95P*0h4tt$E(V zl-s?H*tmz+du1Np@0b5B#K~z}7#nxwU!Y~j9;B@c3_kgl#2xJfJ`~QEcO$DTB4sqs1>U~KR z*^iQQY`vDARL7_9Qi{qo9{+hz{~6(Trt_@n%`?e>$%tVEXqy2^1#r!PxB`$Fkf8vr z{tXV$9`u)8h2$d0uMf2Be?Sx-rm2&e0b%PG!1Z_$aHn}-Q`Kd_Cl73GtAPjzbpfbS zebhw2<2+zslL%<*IX$Qr54@tlEehPD0G*-09tuPw5TGs!?4Up&1ws^{e+MEI@KE4n z28iKxVGkk)=S2sU*lR*q3>g@7hy9o~);fV~E7%mdKI;Vst09EuSTL1t6 literal 0 HcmV?d00001 diff --git a/assets/tracksLarge.png b/assets/tracksLarge.png new file mode 100644 index 0000000000000000000000000000000000000000..c14c6bf190646bc5e4c53c977a549e2521429edb GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^nm}yA$P6TPpEZ8~QY`6?zK#qG8~eHcB(eheYymzY zu0}>iKxVGkk)=S2sU*lR*q3>g@7hy9p0uZnV~E7%#^CAd=d#Wzp$P!ZQ6)V9 literal 0 HcmV?d00001 diff --git a/assets/tracksSmall.png b/assets/tracksSmall.png new file mode 100644 index 0000000000000000000000000000000000000000..fd4b68bb92b335265f9c6b34e263ff11cb73d007 GIT binary patch literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^sz7YQ$P6USZzb0ODVB6cUq=Rpjs4tz5?O(Kwg8_H zS0f`MATw9&$WkE1R1)MD?905$ckL-4Ps-E9F+}2Wa>9@Q|Jj+D)qeiB?>MC5eznTk&w}Gk{JYD@<);T3K0RU)6Bd`Df literal 0 HcmV?d00001 diff --git a/assets/treeBrown_large.png b/assets/treeBrown_large.png new file mode 100644 index 0000000000000000000000000000000000000000..ce03d16dd0c8f7b12a1d4fae581f88f2e95c881f GIT binary patch literal 2290 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 JJv5^y{~uR|06_o% literal 0 HcmV?d00001 diff --git a/assets/treeBrown_small.png b/assets/treeBrown_small.png new file mode 100644 index 0000000000000000000000000000000000000000..bca54d75e8f77a3f9cf716d097e534ccf28eec1e GIT binary patch literal 1359 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k3?#4J%UA`ZSkfJR9T^xl_H+M9WMyDrG70br zaqV-Endqh3VJtY=TWyl3$`oI`-F)<6bGZ@-)J1W%QTZc3AU)F*nWPw`Wq?5hscGQ|(1 z9-?N7uf}9wpkj>)UdmH_)qy5V_Ew$Xt_(DMvX|;acO{@XK$Vlc!P>o4fhIr=0qdIR zt_ZXdXbZ$8lf2Y`T7ZTC4Fn^wfnaw|@zaPfld z^#a>RWeyL3Mitnd&$hmtYqLCDZ@Rzcu0)gV@x}*I%uZ)nUd^|?QDA#H&t^x0@&07f zqv_@+GcC_#S)I$an&z)@KF4}blF6w|%Z)LH$1^NWXIdUfGk;p{2n@7Csb&{)tj%=i z9RLPjNJ)@ia7qo!c7Ya-ipL2hJdb%+A2&F>|GkFBb`}i*7L_Ri3Y#rN=7fB2*zA*1 z5CW8oQBbkaSbg}oLybkwl-Dt*6IgieO9)KQsJOpB!QuCH37+Q)=NlNpezA7|(`TBe zi(`nz>Dno&$+ryz+HBLF_062QFgDXyDrSv=*K5Jrufj#_#W zd+XtSb$MTG95%A)n!4{YRns#5TJ-s$^5&_|uM6TBg*sg#5})|(3OQtZkdbe#E9+L_ zPYS9lK5NdAiE6et>6@b{r9G`F%=ksVnn?NuMbT4{oo-G`d{*>Nu#PZjcieWfpn9|0 zq!&xiCH`XJ@;#RMEn9bHz>L2MqHa9m#~!LATRqk3GJ3_qqA0F7>8V@%{w>?LpR(H} z>a>nw!xF>)-yIf&CO3I5)0_F0u_>~7pW*jtzP~AMx7kIFxcQ#$u!{`aSG&0N*VI2h zehPatS#q@-$Sr^IYNJm1pJf-S|DL_!EPvb}aT06#i%sTQ_TPUu>&NYrI$(0Km&->+ zb4S`OW!@I`&!)X%S5!A2Gfvj3p7xXPim*`nyYeqbJQ5dcl;?gSOAUvF~Dwd1<%0X_82Y^N-4AtyZ^7uQG+#ZCYY_T=k`7y@_X+xpDm3 zF#mPBJFYFxZ&AyOTX&dk?b4ndb*lr@CF?FG^BlMl__ON0{avq1_k@iyCIeG6gQu&X%Q~loCIE3bLCXLD literal 0 HcmV?d00001 diff --git a/assets/treeGreen_large.png b/assets/treeGreen_large.png new file mode 100644 index 0000000000000000000000000000000000000000..ef8aa7fb713354c0ce1014bfedcc6cddd08ca6df GIT binary patch literal 2272 zcmX9;2|Sc*7awcFSW3(cVi>Z0;aXW+vNJ=>MjG3VD3mQ(qHbhgl4Xzx zg}y>JZ5PFtC?%y^(bs*Z`~KedJmC z7_gPyY45-y9*%RvK_Kn|EZYvq0OZhk+kIRtoP&ij zZT7K*!hi-ChX5Q<9nK{xv+>F-JjjJ{fF3JElD&|hgBRLlpcW5f*#oI6pduH%B*Iys z7a#x+bSiV~_r}|RTw#Me0w@72V1@~i07Lv&k8l)hyh;)lz=Q%o$icyq>;VbT4+%2^ zcsR>mmI{!CY$La&2$AsSg^WRAOGO_0ucZ-c7C1{Hzo z=`MN~12j)lvVl zt!~HL+(}eTam3tWq6KmIsT7OuXp62W%uu}jI2%>qW!@Eqn@qOsjjr5muK^pRFsP24OT)1S6TH)WnLQPP!6t97R-nAehY4 zM;h)yyX)+~r+CQ@8Ckzccy2Pi z!tHJ3W=S`d&^BpDbXLu_H>V-q4@3+MS(||dJ2#{-TQ?N>`r#w(H_1=gZQZPTMg*Ch zthA(U=;e_wI%T)_@taopOq5k}5yLeh#MV)yELGXBc(<|54lyZsaH*S0+!_c@Z9CV` zl&S1vBa=$hnENNlPcNgPS>}(1oo0XNhCRrE#Gz@>*p|04s}IARzRIW&A%DM8fA&Om z=D>mVert_6692$Mipt_RsT3Q27#oWyYE#cA@$1@h%{j-H7&4M4qmF$|`}}kK%q7R6 z3jwYO%L!|9$qZaRq9y}oG~Ok;7+*At+;S92^%s*>$Y7fuf*1`;ZqB)tZ`)N?`Zh1u z^Jvo&DAS?%HZKRMQEi@@v^pkDR1W=eVMD6kEM}{>;d37UXiib2xQXJ( z=2z_|dWQ0CkJ$g;L79b{Sj{WU6;u*Rm!%Q4@qb9>M7|KYTd3hUt!h^eS({4P|K+9J zu;FIF42s)%ZSa_BsPTL3qk_7?>%GP0jM-3)2A!}|A&fXR)`dEf5ma2%y8FD76FmX@ z!d*dR!z5l;vi|2S2=k(zHwD-Iy$l_muzO1WRF1|XJ@;<>c*rj9=D7S5(o{$LF1C^1 z!+V&es)y=4Hp>HP8aLgxEe=Fs6`~Pw=R%G|db`7huvojw} z-KL&>fp%~luOyrmJ3Y-$uqYQKuG0x9n%s0hH8aOZ>ppJK_VS%F`;QxZrq{Nkv4Mzt z7+-Y*KA>9vEIFV+G2N}pTtY_KYzVJ>e&<=n&x==2uGY^fUf3e}>6Sd%Q%k(`u5IRs znv=4aZEn}{LTeO%%mn*ha!-i;<7l^#^!B$N1c~h;M1(#If4k0MtQRx#A=F zR43zZR>$n_DAb%Uth$YU)Opxv_t{OIonVroe>T5Y zAD=L*Uh+L6ZhrS{@r>gqtAM^$i$md5*qUNXgUm4c&l{%$0$zQ)-$#T0uxB{;Arqda zKFOAc)zmporpS;RcMywC+ySPln&BvI=&$+t_g^-HNAEvfeLWEOa|qiSU}bb-QTO<0 zLXM&a%W(2c)kf{(?JH4*#{BWx=xb!}_6E&{>gqozE7x$xPh5v`Lg;_8rbma)tY^_& zX7+WieP1K*+Ver9`5n1$&ChGr_w~~lOPTV{;xLP9pSb$A=j)?K#l{5Cc7wUM#$>1RTj%C9cmp*cB?W#n!tFL;0PDE3`& tKASJ#p)Wy?jh(wPrtiGp6v=A+37HFgDTf{E(geR{h>N2;u>~KJ{ttN_!eamc literal 0 HcmV?d00001 diff --git a/assets/treeGreen_small.png b/assets/treeGreen_small.png new file mode 100644 index 0000000000000000000000000000000000000000..7ff861346f6e389121434aa51638433dadc5dbb5 GIT binary patch literal 1303 zcmXX^2~bl<7=9I@gd{doki3^r$Vd#qavvd_$pZoeW8?@z5NQxZ5QHGP19FdAQBYW}Dnft+QG~&YFdHe$TFSPT zuK556IM_&0SQfit2Chn4?xhzb@~96$sr zCAbd*5Qrd+jY>A)VDp*45cnX#ToFoAhl2?uAajr>AQR?Ydi$0OJDs&jZu+#%r{e9)xgLge&(=LI&8g&Kj%V8*`^sp#R_J{#i*lIf zbT-koIhAsVN7D$ru4dA;Nggd3o-G-S?i~Lg3(zrD@Q9o}stg*IQBTBeIu^6JHr`Dy za%tK{J{Uneo$yszlvjJEU1_9;VYk~Q5u-cTw>y{FFJ=yi8NGQSKs%=L>CAS&vfKUp zG-sXA_2M^nC6Qac+v#V@WA^9!4<2BGSH{(>QRUYSDFH);fj>!thh^jF&Qr1g~W-aIGxB(jid>=PtM=`b=36BXB%T8ueQKu+{Z~<xU|{g7ZJ)@%=w{t{hS!ZRB6o9ii&DpTS%rqtR4~XE!S+l;87xggmw%ghZo08K(Sv_@6aS#$l_tgs^K!6km))ZqgR7A^|8ri>T~saA@z2riugyI*`u=zZs!=)oj}Dr<2G-#WSLQ& zii8dIi1oX{(Y6)u*4atim3@^ZA7@TF;Nya|ABGn1%Fo2wA7z>9gH4_ei>99Gx0{gT;%5=)mekLqwWr!1#9*E1$%OvcJJyP#oguBM9LLB}}Ge-Yaq>AqZ0 zP4Mb~zlF{D&nsV)dq)XdZ}v=PRkWKD_}agHqHU{4wq4sEYTK;N2X*!pa6ZtYjr8AA zm$1(arIUdpsc;2*f5mbSwyyeQPidWV1*t(oNym+oQy2?NO=jusaR&?&B>sR)$p*<_ z!4PTX)tAM(YVw`#ygI>S+lc+=N8$^&&@74>vex1GE5?Z%stvt&$L#C&-D9N-gNH?9|q5iZEGj%2rxA3?NbT!1~@Wb0eMdkkj&c+wD literal 0 HcmV?d00001 diff --git a/bonus.py b/bonus.py new file mode 100644 index 0000000..40ab2b5 --- /dev/null +++ b/bonus.py @@ -0,0 +1,24 @@ +import arcade + +class Bonus(arcade.Sprite): + ls = arcade.SpriteList() + def __init__(self,x,y,type='star'): + super().__init__( + './assets/star.png', + scale=0.5) + self.type = type + self.center_x = x + self.center_y = y + Bonus.ls.append(self) + def destroy(self): + Bonus.ls.remove(self) + @classmethod + def get_colls(cls,sprite): + return arcade.check_for_collision_with_list(sprite, cls.ls) + @classmethod + def update_list(cls,time_delta): + Bonus.ls.update() + + @classmethod + def draw(cls): + cls.ls.draw() diff --git a/bullet.py b/bullet.py new file mode 100644 index 0000000..5556348 --- /dev/null +++ b/bullet.py @@ -0,0 +1,26 @@ +import arcade +import math + +class Bullet(arcade.Sprite): + ls = arcade.SpriteList() + def __init__(self,x,y,a,shift=0): + super().__init__( + './assets/laserBlue01.png', + scale=0.7) + self.angle = a + self.center_x = x + math.sin(self.angle * math.pi / 180) * shift + self.center_y = y + math.cos(self.angle * math.pi / 180) * shift + self.speed = 10 + Bullet.ls.append(self) + + @classmethod + def update_list(cls): + for bullet in cls.ls: + bullet.change_x = math.sin(bullet.angle * math.pi / 180) * bullet.speed + bullet.change_y = math.cos(bullet.angle * math.pi / 180) * bullet.speed + bullet.update() + + @classmethod + def draw(cls): + cls.ls.draw() + diff --git a/main.py b/main.py new file mode 100644 index 0000000..fe16715 --- /dev/null +++ b/main.py @@ -0,0 +1,57 @@ +import arcade +import math +from tank import Tank +from map import Map +from bullet import Bullet +from bonus import Bonus + +SCREEN_WIDTH = 768 +SCREEN_HEIGHT = 576 + +class MainView(arcade.View): + def __init__(self): + super().__init__() + self.background_color = (100,100,200) + self.map = Map(SCREEN_WIDTH,SCREEN_HEIGHT,64,64) + self.player = list(filter(lambda tank: tank.type=='player', Tank.ls))[0] + + def on_draw(self): + self.clear() + self.map.draw() + Tank.draw() + Bonus.draw() + Bullet.draw() + + def on_update(self,time_delta): + Tank.update() + Bonus.update_list(time_delta) + Bullet.update_list() + + def on_mouse_motion(self,x,y,dx,dy): + self.player.gun_to_xy(x,y) + + def on_key_press(self,key,mod): + if key == arcade.key.A: + self.last_key = key + self.player.move(-1,0) + elif key == arcade.key.D: + self.last_key = key + self.player.move(1,0) + elif key == arcade.key.W: + self.last_key = key + self.player.move(0,1) + elif key == arcade.key.S: + self.last_key = key + self.player.move(0,-1) + def on_key_release(self,key,mod): + if self.last_key == key: + self.player.move(0,0) + def on_mouse_press(self,x,y,but,mod): + if but == 1: + self.player.shoot() + +if __name__ == '__main__': + window = arcade.Window(SCREEN_WIDTH,SCREEN_HEIGHT,"Моя игра") + view = MainView() + window.show_view(view) + arcade.run() diff --git a/map.py b/map.py new file mode 100644 index 0000000..dca897a --- /dev/null +++ b/map.py @@ -0,0 +1,86 @@ +import arcade +from tank import Tank +from bonus import Bonus +from random import randint + +class Map(): + ground_tiles = arcade.SpriteList() + object_tiles = arcade.SpriteList() + def __init__(self,width,height,tw,th): + self.height = height + self.width = width + self.tilew = tw + self.tileh = th + self.ground = [ + ' ........ ', + ' . ', + ' . ', + ' . ', + ' . ', + ' . ', + ' . ', + ' . ', + ' ', + ] + self.objects = [ + ' ', + ' e e ', + ' s ', + ' ', + ' p ', + ' ', + ' e ', + ' ', + ' s e ', + ] + self.setup() + def init_ground(self): + for i in range(len(self.ground)): + for j in range(len(self.ground[i])): + if self.ground[i][j] == ' ': + tile = arcade.Sprite( + './assets/tileGrass1.png', + scale=1 + ) + elif self.ground[i][j] == '.': + tile = arcade.Sprite( + './assets/tileSand1.png', + scale=1 + ) + tile.center_x = self.tilew//2 + j * self.tilew + tile.center_y = self.height - (self.tileh//2 + i * self.tileh) + Map.ground_tiles.append(tile) + def init_objects(self): + for i in range(len(self.objects)): + for j in range(len(self.objects[i])): + if self.objects[i][j] == 'p': + Tank( + self.tilew//2 + j * self.tilew, + self.height - (self.tileh//2 + i * self.tileh), + 'player') + elif self.objects[i][j] == 'e': + Tank( + self.tilew//2 + j * self.tilew, + self.height - (self.tileh//2 + i * self.tileh) + ) + elif self.objects[i][j] == 's': + Bonus( + self.tilew//2 + j * self.tilew, + self.height - (self.tileh//2 + i * self.tileh) + ) + #tile.center_x = self.tilew//2 + j * self.tilew + #tile.center_y = self.height - (self.tileh//2 + i * self.tileh) + #Map.object_tiles.append(tile) + def setup(self): + self.init_ground() + self.init_objects() + def update(self): + if self.coin_timer >= 1: + for i in range(len(self.objects)): + for j in range(len(self.objects[i])): + if self.objects[i][j] == ' ' and randint(0,1) == 1: + self.objects[i][j] = 's' + + def draw(self): + Map.ground_tiles.draw() + #Map.object_tiles.draw() diff --git a/tank.py b/tank.py new file mode 100644 index 0000000..c165569 --- /dev/null +++ b/tank.py @@ -0,0 +1,85 @@ +import arcade +import math +from bullet import Bullet +from bonus import Bonus + +class Tank(): + ls = list() + def __init__(self,x,y,type='enemy'): + self.sp_body = arcade.SpriteList() + self.sp_gun = arcade.SpriteList() + self.type = type + self.gun_angle = 0 + self.speed = 5 + if type == 'player': + body = arcade.Sprite( + './assets/tankBody_blue.png', + scale=1 + ) + gun = arcade.Sprite() + gun.append_texture(arcade.load_texture('./assets/tankBlue_barrel2.png')) + gun.append_texture(arcade.load_texture('./assets/tankBlue_barrel3.png')) + gun.append_texture(arcade.load_texture('./assets/tankBlue_barrel1.png')) + gun.cur = 0 + gun.set_texture(gun.cur) + else: + body = arcade.Sprite( + './assets/tankBody_dark.png', + scale=1 + ) + gun = arcade.Sprite( + './assets/tankBlue_barrel2.png', + scale=1 + ) + body.center_x = x + body.center_y = y + self.sp_body.append(body) + gun.center_x = x + gun.center_y = y + self.sp_gun.append(gun) + + Tank.ls.append(self) + def gun_to_xy(self,x,y): + for gun in self.sp_gun: + gun.angle = math.atan2(x-gun.center_x,y-gun.center_y) * 180 / math.pi + def move(self,dx,dy): + for body in self.sp_body: + body.change_x = dx*self.speed + body.change_y = dy*self.speed + if dx != 0 or dy != 0: + body.angle = math.atan2(dx,dy) * 180 / math.pi + for gun in self.sp_gun: + gun.change_x = dx*self.speed + gun.change_y = dy*self.speed + def shoot(self): + for gun in self.sp_gun: + Bullet( + gun.center_x, + gun.center_y, + gun.angle, + shift = 25 + ) + @classmethod + def update(cls): + for tank in cls.ls: + tank.sp_body.update() + tank.sp_gun.update() + colls = Bonus.get_colls(tank.sp_body[0]) + for bonus in colls: + if bonus.type == 'star': + for gun in tank.sp_gun: + print(gun.cur) + if gun.cur > len(gun.textures): + gun.cur = 0 + gun.set_texture(gun.cur) + else: + gun.cur += 1 + gun.set_texture(gun.cur) + bonus.destroy() + + @classmethod + def draw(cls): + for tank in cls.ls: + tank.sp_body.draw() + tank.sp_gun.draw() + diff --git a/view.py b/view.py new file mode 100644 index 0000000..e69de29