From a9cd00d29354f8a7c749d7be51a1d2fb514fadac Mon Sep 17 00:00:00 2001 From: koehr Date: Tue, 24 Apr 2018 01:13:16 +0200 Subject: [PATCH] textures! --- README.md | 11 +++++ src/Field.vue | 60 ++++++++++++++++++-------- src/assets/bedrock.png | Bin 0 -> 1202 bytes src/assets/grass01.png | Bin 0 -> 614 bytes src/assets/grass02.png | Bin 0 -> 253 bytes src/assets/rock.png | Bin 0 -> 1253 bytes src/assets/soil01.png | Bin 0 -> 586 bytes src/assets/soil_gravel01.png | Bin 0 -> 940 bytes src/assets/tree_crown_left.png | Bin 0 -> 719 bytes src/assets/tree_crown_left_mixed.png | Bin 0 -> 1457 bytes src/assets/tree_crown_middle.png | Bin 0 -> 1528 bytes src/assets/tree_crown_right.png | Bin 0 -> 1034 bytes src/assets/tree_crown_right_mixed.png | Bin 0 -> 1368 bytes src/assets/tree_root_left.png | Bin 0 -> 340 bytes src/assets/tree_root_left_mixed.png | Bin 0 -> 539 bytes src/assets/tree_root_middle.png | Bin 0 -> 938 bytes src/assets/tree_root_right.png | Bin 0 -> 280 bytes src/assets/tree_root_right_mixed.png | Bin 0 -> 539 bytes src/assets/tree_top_left.png | Bin 0 -> 139 bytes src/assets/tree_top_left_mixed.png | Bin 0 -> 257 bytes src/assets/tree_top_middle.png | Bin 0 -> 747 bytes src/assets/tree_top_right.png | Bin 0 -> 205 bytes src/assets/tree_top_right_mixed.png | Bin 0 -> 257 bytes src/assets/tree_trunk_left.png | Bin 0 -> 735 bytes src/assets/tree_trunk_left_mixed.png | Bin 0 -> 1150 bytes src/assets/tree_trunk_middle.png | Bin 0 -> 1210 bytes src/assets/tree_trunk_right.png | Bin 0 -> 750 bytes src/assets/tree_trunk_right_mixed.png | Bin 0 -> 1089 bytes src/level/def.js | 40 ++++++++++++++--- src/level/first-iteration.js | 11 +++-- src/level/second-iteration.js | 42 ++++++++++++++---- 31 files changed, 125 insertions(+), 39 deletions(-) create mode 100644 src/assets/bedrock.png create mode 100644 src/assets/grass01.png create mode 100644 src/assets/grass02.png create mode 100644 src/assets/rock.png create mode 100644 src/assets/soil01.png create mode 100644 src/assets/soil_gravel01.png create mode 100644 src/assets/tree_crown_left.png create mode 100644 src/assets/tree_crown_left_mixed.png create mode 100644 src/assets/tree_crown_middle.png create mode 100644 src/assets/tree_crown_right.png create mode 100644 src/assets/tree_crown_right_mixed.png create mode 100644 src/assets/tree_root_left.png create mode 100644 src/assets/tree_root_left_mixed.png create mode 100644 src/assets/tree_root_middle.png create mode 100644 src/assets/tree_root_right.png create mode 100644 src/assets/tree_root_right_mixed.png create mode 100644 src/assets/tree_top_left.png create mode 100644 src/assets/tree_top_left_mixed.png create mode 100644 src/assets/tree_top_middle.png create mode 100644 src/assets/tree_top_right.png create mode 100644 src/assets/tree_top_right_mixed.png create mode 100644 src/assets/tree_trunk_left.png create mode 100644 src/assets/tree_trunk_left_mixed.png create mode 100644 src/assets/tree_trunk_middle.png create mode 100644 src/assets/tree_trunk_right.png create mode 100644 src/assets/tree_trunk_right_mixed.png diff --git a/README.md b/README.md index 2b61522..5cbd5c7 100644 --- a/README.md +++ b/README.md @@ -16,3 +16,14 @@ npm run build ``` For detailed explanation on how things work, consult the [docs for vue-loader](http://vuejs.github.io/vue-loader). + +## Credits + +Textures all from [OpenGameArt](https://opengameart.org/). More specifically: + +* https://opengameart.org/content/nature-tileset +* https://opengameart.org/content/platform-tileset-nature +* https://opengameart.org/sites/default/files/tileset2.png +* https://opengameart.org/content/cave-tileset-2 + +and partially adapted to my needs. diff --git a/src/Field.vue b/src/Field.vue index 85fa318..6ec781d 100644 --- a/src/Field.vue +++ b/src/Field.vue @@ -95,26 +95,48 @@ export default { } .block { flex: 0 0 auto; - width: 30px; - height: 30px; - background-color: #6DA956; - border: 1px solid transparent; -} -.block.air { background-color: #56F; } -.block.grass { background-color: #56F; height: 28px; border-bottom: 2px solid #0A0; } -.block.leaves { background-color: #383; } -.block.wood { background-color: #876; } -.block.soil { background-color: #543; } -.block.gravel { background-color: #665; } -.block.stone { background-color: #555; } -.block.bedrock { background-color: #333; } -.block.cave { background-color: #000; } -.block.player { - background-image: url(./assets/dwarf.png); + width: 32px; + height: 32px; + background-color: #56F; + background-size: cover; background-position: center; background-repeat: no-repeat; } -.block:hover { - border-color: rgba(255,255,255,0.2); -} +.block.air { background-color: #56F; } +.block.grass { background-image: url(./assets/grass01.png); } + +.block.tree_top_left { background-image: url(./assets/tree_top_left.png); } +.block.tree_top_middle { background-image: url(./assets/tree_top_middle.png); } +.block.tree_top_right { background-image: url(./assets/tree_top_right.png); } + +.block.tree_crown_left { background-image: url(./assets/tree_crown_left.png); } +.block.tree_crown_middle { background-image: url(./assets/tree_crown_middle.png); } +.block.tree_crown_right { background-image: url(./assets/tree_crown_right.png); } + +.block.tree_trunk_left { background-image: url(./assets/tree_trunk_left.png); } +.block.tree_trunk_middle { background-image: url(./assets/tree_trunk_middle.png); } +.block.tree_trunk_right { background-image: url(./assets/tree_trunk_right.png); } + +.block.tree_root_left { background-image: url(./assets/tree_root_left.png); } +.block.tree_root_middle { background-image: url(./assets/tree_root_middle.png); } +.block.tree_root_right { background-image: url(./assets/tree_root_right.png); } + +.block.tree_top_left_mixed { background-image: url(./assets/tree_top_left_mixed.png); } +.block.tree_crown_left_mixed { background-image: url(./assets/tree_crown_left_mixed.png); } +.block.tree_trunk_left_mixed { background-image: url(./assets/tree_trunk_left_mixed.png); } +.block.tree_root_left_mixed { background-image: url(./assets/tree_root_left_mixed.png); } + +.block.tree_top_right_mixed { background-image: url(./assets/tree_top_right_mixed.png); } +.block.tree_crown_right_mixed { background-image: url(./assets/tree_crown_right_mixed.png); } +.block.tree_trunk_right_mixed { background-image: url(./assets/tree_trunk_right_mixed.png); } +.block.tree_root_right_mixed { background-image: url(./assets/tree_root_right_mixed.png); } + +.block.soil { background-image: url(./assets/soil01.png); } +.block.soil_gravel { background-image: url(./assets/soil_gravel01.png); } +.block.stone_gravel { background-color: #444; /* background-image: url(./assets/soil_gravel01.png) */; } +.block.stone { background-image: url(./assets/rock.png); } +.block.bedrock { background-image: url(./assets/bedrock.png); } +.block.cave { background-color: #000; } +.block.player { background-image: url(./assets/dwarf.png); } +.block:hover { filter: brightness(1.4); } diff --git a/src/assets/bedrock.png b/src/assets/bedrock.png new file mode 100644 index 0000000000000000000000000000000000000000..5fccb1af912153e8522051fadf787a2005d76dff GIT binary patch literal 1202 zcmV;j1Wo&iP)c{smGuyT;lt1u;>$>g*=Xu@>@%MFI?{#b#3RlLUa-SIE^7!|`ma=lb7(dDs=L2zh zmBOe4uJ`9IXIYkq{J{(T#j-4SxGc-^__s1d8SBcU5*@Gjb2KCjp~#3zd4I=-;9685 z$}=`NT6Y{r=%v9AvT({gpbW}R9u@a@=mlSc@7PPPWm#?{am85($8+>f{p|npY%zIlcmU0PR$GoCBuxopY6#PuC27Fj4KPv$i&@c289 zZ}bvY039?kv)@ueEo6mVIOmL#gD6)Of*qpd{a%hND#n!XEbb$Zo#%O%)m;u?Xk`!1 zIc<2I9l2Q5KG{Z!X}ct)5Q=%pL+^!~Vo6cqxUgUxuifgM&TISS@?a@N@g(qATp1Ctm6?L*%Q&JFl=V^ zQbmkx1Vc4HA1ov*DJqw4+h+T|%d(>Sp1ZjWg&s_tbzIT(LAke!;XE*i$PU9-)Bf_7x}fl6c3 z&4RO@w>!P)8l^|A zpo(R_9b){CLi0~UgRZIuQrW3==KG36qPvNx3%rNBk*l(SRELbBK0AZLD9jX#^T7;; z#H{vELL&G?c3;;ug<3^;ye`^z@QtK$t7>ZS<`M}CPq4Z(`=s7tU5Ag=Kbhl1x05&s zVB^(2TgLKPQTMoJW#OFljOW!=Q4|VMTzB!m^2m!bpQ}kmAazv~6@hB=tj4Oyj1OaE zO?gE~)!lK`^eAPkyJp;f{9o58xT|`H?!ANRjoah(PFh@0mKLF_g=!g>#OY(IkY#-@T15^K419-Z- z-o6TRIG#V;eitN^fn;E_ei$I;#{dQZ1R@HGg$Y)LjQY=yH|N6qFgC6I+@fiRU#K2?+!>YYH_^I~8&H&IS zrY=0PgA}tz{tV!#E|6V%b^}nm;_P&309628j;jEwOJ>x?4Pftpm|b?7tpbS84L}8u zEwkI&>L9BEh{XV^36I%9Q(f4gg&6~30963$wsm&lgaS}ETPgt7o&l(XN;N6U((BcP zOV?m%0IFeky85pGz@xEc0b~Vbm$ub|kg6X8r~*)rpV=U&3achux{uNfU^e+Un-=c^ zQ0^++iT zAiK%R0>}>LKNlsJ2QV98c6wAVHFp7Fx|Rp<2}Iyjg(1k2sQ>@~07*qoM6N<$g7Q%f AK>z>% literal 0 HcmV?d00001 diff --git a/src/assets/grass02.png b/src/assets/grass02.png new file mode 100644 index 0000000000000000000000000000000000000000..30821e3a4f6322643053170abd5822fd48f5d1b5 GIT binary patch literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=M?75|Ln>~)y>gNBkbwZ(gL8^M z9_jHt6>1XR+1(wY^<-&L%xo6X&$R{mOLuzzo8}`7)B^*1cHZg#95jDkb?uyIOIZxE z80>|QY+&5N_fGWAb-M%i*#o53vrlQ>&ZqZ!vBGz@JGLDUnLDJ?n-@J;RJxa`?-$2{ z>-r+HIob2y{JggB=D}6_|9oKFlDEZd#@^`>>+P5_cokN?`E=&qdfuwq$}o1r9EQ|` vKg%kvUSnRrdQHFCl(n~a_Zz8K$1^mln=iD`JE|(-338aHtDnm{r-UW|GX`f- literal 0 HcmV?d00001 diff --git a/src/assets/rock.png b/src/assets/rock.png new file mode 100644 index 0000000000000000000000000000000000000000..ba2d64a757a4b23c79dde5e06dba32fa384b7a89 GIT binary patch literal 1253 zcmVM zaU3_#i0DbiG)+WA)LL7|hGC%S!)p)`jpL}wFY<-^{k~3^=XsqdzxRE=&O^hbaLX8} z+$+YgJp5kJQdEv7%a=UGaYI;Mq_EUM&gXHKQ)}JGFF27O)LPeYskLtYM}}C&vhq@i zj8}ME8lr}fW<;bsKSM+0T&aL|&d^|OUTaPDQo#W)oIDR$26;O#73XKt3p__YLoe-X ztt*nS;wS{;S$k&v<_+N;#Y67NKm+Awv&=mUWGg)*v;&qg5EY7)k2Xne$nJ8vJmlev zPy^%88na{|ifD5^q~d2BHLC%5P&E&DcUce zll3iDETT~U@R;W{nc(4j7#`9~G6Tq<5fS~Q64pdin1v&$S#o5G5ha2dqQv#~!!Qv4 zc?zI#FYYyu&GWpb)maXZn}Xk2=fZim=3*=N@fNa}HcL_#LP-FSA^zulKL0%&4n#zB zJRa$GyHVG5)LNsi>q0j!%d-CNx{hwQ8-0C!ZIpX|e}977Wm!!5sOZPX2Yr5i(y}a1 z=d+-@IaDO6ScGDY%LDGkwMTvtg!5;2ysjxDoB&HqOc;Wb$dAyu} zp3rs$VbjZ(B4R}EAXMXcK_QmQGcFy+k)~;S%4xFiV>RcY(1wY%kV8y7G zL1qwyLk`&&yBryBYMlDor>3x@(4)7Ym2}#je%Dh2^${p4v z%-4#H7xCyC%fbwj-~|WIVaCmnTITr%g}mDoEhZ(rz1n5VWT_T;Z4NQMh~a`vY#EX* z1+7@d+aYU%P}ZiP@$SQ3#d?W4mSI-HW+|>Ec13fQ*O1C2eezukb-arek4Q0M3PPfn zdssp=_>`4i-}f%mdgUmFFRokgM$(FJtEiDTmy)354n}uoujE^(Yni4gZ0BWeCuKJS zjkoUEJeK#8y3I8!3fEv!;(2scq=kYO*IE3JJhGR<*$6y92zT05k(LBni+ed%L}s`d z#Vg9Sek2O{O+z;7P(*jla{cmK*I96vx!=m%J6N@Gy1kyg;IpoZw5rTQ6FJvA*b)h+ zY5JcFc}$DSSa(-e_W<)NO@0){p4W@2S&vq>|sLf`g62kuhdB$5ZB2XH? P00000NkvXXu0mjfg-lo| literal 0 HcmV?d00001 diff --git a/src/assets/soil01.png b/src/assets/soil01.png new file mode 100644 index 0000000000000000000000000000000000000000..3675f469fc17f1ef87f5ce87130516163bc910c8 GIT binary patch literal 586 zcmV-Q0=4~#P)xdQj^K_G1;j7INg#tBMZ;UbZ}_I_T^ys^ip_m{`d@AC2X z^i!(eug?#^%JKhNs(MwsqaXBKwx8;`RsB-{6dfP{RmWAmX#hvNb({#mS}y?DPfP{C z4xj>{0vTTd0kAY+U#JU!eLk9~b%_Lk3qW;;RXf(0A*09wKofD40O$&gE&x?HsQ^$3 zfNG$u^8+@@wJpkCSavFdtlvu$Q0J{OW^#kC)1E|~!J5bgQ z?gD_^Up1ZpK*5j-fZe7>z;-Xi0C0tn3!wXAU4az5}sE4Mm5mdLhx&Y1xBLN_8a$X8RR}!-uCjl_E1g3-#oAA&Da6TFffFS_v z_P6WS*rj$gH+VAuszXaR5uyv&P0?j1DgclG=^C9W0B*1q04jiK;c+bhC=C81gaSb9 z*cB$1+7=H0761xHT!}jcKm~0lO5QC1HfUf!H8shKJwQMDzC#MBEKUE?g@8oPA> YUtPXDzKLrc3IG5A07*qoM6N<$f-oKGDgXcg literal 0 HcmV?d00001 diff --git a/src/assets/soil_gravel01.png b/src/assets/soil_gravel01.png new file mode 100644 index 0000000000000000000000000000000000000000..5a7b218cef2a4083c5fbe0e06bd1075cba4ee17f GIT binary patch literal 940 zcmV;d15^BoP)!8H{t5QtSZ2pj^nO+^){CP)kw{el%>kOYNj(1aCOME_s~ z0{&pY?r`(`$tJ$ZO-X124nX=Y|WfB&(* z?Tf2lb`$sSZd)JN?|eTV=jZwU&NR&2Cy%1?mRwx(b*o2MrLNVSS-xUY%-bjj&u6_pz6XD!%7*;#$9^`YEyC1ELO$MFu0wBCnVbtw#NL zXGATM0YeXnk&f01rSQnRKdG%ElL5=>$h5*Edk)&;@ai(^02xEl2e7q4L8; zzwXcF8GF@Te}v;UvF$R0;3VHN6o7S0 zXLV_w=g(HyKTNWf;-Me0Y#Vsp9sr(_fWr0+(WAHs6DIWR}@zxkN*W^6lb$cw^ zMz-x(%>@yTI7ld2^VC`<+H{(28K!eVcEun;n@$<}QGUIk)-r#uLgFCFHVLck%Gn>l z*;XvTzio~4oe8~<2eT5r(O|S2W|xH3cIC|3Xh;SGBPtuUmU%r6{Hyn?4M~h+quo%d zqSx(REd&DCahudFolo!fP^aHGJf>t8@wz=6w<(`OkUXGp)ls|mdC2H%$nC}=ohK$y zd`jKYF^mF}@lWnKMf3&Zyazm7l;;5Yf^m5U(zh1sCVr|~$t=!jzgVkG75?Yei;X)H zFp5tBFpPqH-+sT3zF^GgKR~B*mwrEy-y25Zatx>fG6+uOkJTQ4jL+$aKc@$NKoNGcWZ*XUYXeg_yzfN1b@S%k(~el002ovPDHLkV1o4t BP!<3H literal 0 HcmV?d00001 diff --git a/src/assets/tree_crown_left_mixed.png b/src/assets/tree_crown_left_mixed.png new file mode 100644 index 0000000000000000000000000000000000000000..132d2c004c6b0c4fb89af908685f6df0604873ba GIT binary patch literal 1457 zcmV;i1y1^jP)WFU8GbZ8()Nlj2>E@cM*00k9EL_t(o!@ZY3Oj}nJ z#(%b-A$i7+0=5-n%h*in`DtqFXDqLtBX< z8)~bx%Frlk$q>6kTB@Y#AE;?DSQt}m3xnZF#%kQb+?)5Fov1^|S>EM7-*>+I-S2$o zVte)di*=5pQaBVt(u*5xFBff`VDwLf>h?#ybO%(<40`IEaM-6OLrhPGNGI3HuN349 z|A3dL5t4zKDwu}u( zC)WWudm+TVuU1ZU=l%gNZm$akIHujj%v6kIs(7NRmm)ttYGrLlClU7m@X_TvxC1Jc zoc_e=@1F?OV~KFH1~QpFQ|X;V@>V`0LIFsoic|`R$E8;QJoS?VA?ObVoDBd^D~vuP zK-f2PwU*R8=~(?fYcm1~2Api>YAB-gBt?(WfKkQ95B?w38)N3m2ms6XH&Di=`nkQZ zDwDedD%;DCUhE(6l3yvbd~XCL-uFf{wle!N>HOSMvlYh@;f4(d)F$Nq0Wbamul&H} zOM^{-MBfk&Cz_Z@ZjDT4k4$Ed%a;aGHgmP6A6)(LA^`8bbEj#3ZAUjz`R&&mEt*%s zv@VtiBg#FN2os5PO2c!Y)MrcCGNo*pvll|NceLRNx!66daWA#SK~YC@D{PnRXgyAD zE~KfHtIS*(A?j1{gk0SD<}VJ4I&M!x*$2f2NOxB|m2#DyzGv94JV4VNXqtoJbKRUD z>|||6$1dC{mIz~4?6|!y=I55kWcKKdX!J%jI)dE<15PrTJvxHjrrkw-syrTRscmKU z>5XWllk23D>)c*gB@*d0t#@4gI59i^QXgM_{tK_ab(R-KJkZs~_^6+s?rzKEkw_=Q z=ejBF>o~hKvRPg3Vt#H(HkVSi+!%XY929l7e%~cB)I+6QC6)-2&FYl)b!c-C^{Lpt z`1S2Nz}k*Z)YlN9aV)|*w|F;?@Q_#D=#%2I`bv6ngLCmS0CF>%xf+SMhp11*aeuWu z8+pDVpxwh7T`s45io{~>#;rW(2ahRibI=!3QBK+D>N*8Lxm-ol98~{xaHKcHUCQj? z33W7MD|{e$!ljrI9c;-e=OqpQ-JK8raO$5MYdqtnKIz6CVRI z?tFaI4{;BIN%0M_Yhg_8fJ%CC!)(#xeJDam*RE%!sI0XgZE-wCVMcu_Nsx@q&n+=F z)h~U(n9vByR0YP}8->NOVLZ;1T4`l7SL5e}KX35`a=A+K z$6bE-F2i!}h|<2!&``toZ`{hG^*CixqfzZ1)`XQI`T&}uf;BeC}WMk(z#?g9V&Emi;8yF;=%ZZE77ON99kchHw@&~fHS00000 LNkvXXu0mjfR64EP literal 0 HcmV?d00001 diff --git a/src/assets/tree_crown_middle.png b/src/assets/tree_crown_middle.png new file mode 100644 index 0000000000000000000000000000000000000000..7f6ffe183d409cf76fee3ed357d703bf437557c0 GIT binary patch literal 1528 zcmVD` z!**WYK5sgbweNdoe!rP{&wU>}nCsrWGl9tqLGV(n+Axd;OsfMmE+LbOv2g&BaP6{!!{ZLZgN~QsK?#S)9T#*o2LLNSRUk(sHul@oIt;4~yy15Y zQ$r|LZ5$qVP%hi9wSD)$&UATx#aIyeZGNp!(-ar)#j1^B)yC>( zg+afxT<$Rj06T=*qJey$Z>Q&@FpLHaqXC~dL48eAU>FT7Etk=%9ebkU6=XCfj*CK$ z2Ua&LJt;(om{#YNQ3>Yx509SX=A8-GVXK=JXqv*5deL~EL4iyvhSkkV&qgt&h@uDg zFZV>gzEO8&gqLDI7N~{*fRA#SCW(JuDNhj(HN^=(?xk2nBt0L68kdmQOX&OV$!A^O zYEnptQZ*En6ZDkVVg`5_BvwxVP9Zu^xj0ABOTrfw8t2cTSfV*KF2S@qFs%;qdI>kO zQ)dY18+E9031V8(Ci;ry_;qt+B;U^KB_z`q&k!IBsSFe3B2?!o5{(h}@kpt032Jr< zrqw~Kc8tn)&7pu#L&In=3PjFCBg8Mic6)OVL+XfYFA1R#8XZJH->5@>#hI8wULKoP z2W|5JL+Xep+~*-A8bOy)fHw1dn^wICeqLr$W1a|zhPBNDm~i^%Ra4*V_@tm={0ZEW zlJlh7-;Y-9nDNa^UN7OxFMdYfho4{V?ix+p$WHY{?OLwDBG!vbeoQn(3J>9>?X10g zZP;}l-Jr#)4d1TObftwCmwCO!#=MXq=!eu1>>5oBsUvtJD50`lb9tUjUu1hJ-u#hC zy-Vfj|z~ljUlg>(6VfV z#)5chchIieXjwLP%PmM@neE$e+Iad$8w=N?=$rZ|(FK5UO=gzv8chU?P3-lb70OUN z$h-gmb7>1vWdQZY3H#cUGFq06WM%@D?OG45B7LUSL7-(hQ0xK-7MlP7uWBAFHW5_@ z@JV9;E9+Z$|LqtaKdB(93;+O>o0p&fXj#vZUwzID_EO4!Sr)V`n|T~n25|3o3SlxkCiDB%Nk8tmH3bz(!QE!~MkVs!nS-jJPVW$cuXaBE@KX+LwGYxz~jb3&AtwOql|kxVLvz+CnU%XLB`xi|}RX^R=b z%g(bhrW33E1zjAY57BVpPOtMqL%p>(-<`J#5H`0KXua zzKFbDa-l#nuF0quO{}bMxu|&EjYrq|kGVXy&9h64zvlhPg^7n$q13np?P>&fK2{+| zB%J=&fh_ycY@K2-5(L5$4*ohoP&#$0W8;NWPXBJ<@M#r!>lpjxBfRsTgGf01CIFyN zXd@I;Aj^Jenu3MvQS3Jz1bpY+a{NDE0C+bQ!Kc|IhBGQ2KdE?nPlaqPS3o8eb3ITO e?9#JhvoW9rM6d590{3Nx)ct*#**Iybhe;e*`Z9Sf<#>UI10KE7vH{{R_d2hZO z=lHEixVgQ`=JqP1=4;KKdKRa2N9=5j+d5(B5^QH<)S5j7)HrD|^Zq@4rA@8b<5jt; zz|(PyXU`weIBB8t=%XT#@lqJ3K{z(c&ejn@&|%S?W6_=CLE<3^Cqxi*RKpTW$F06d zh$FX2hq1Z6O4UEZ%SR~{lB^Y%SYNRL6u9d~SYNS8I3Y4#O7)Cdv&YWX5q37lO;73P z#WXe}_kncWQk%+HY;bP>u)#(Bif-$YXU`u25Ck1HCpOKU!jOFH1k-`VcK6QJ*mWa# z`6#*N`M&iDC!``VwGO1?7P=Gqv&;oS2kDw(LD0c3X#ihQv4_$Ii*(BkF)T98(b-h$bf<{6i=K6{a`KYQ8*+WWEglQ594I$I|imiTn zMd+v2O^7Mn@bXbyH^M>rl-%+>x#fAf^&Z`NZ*2Y*3H8(K#2Tj!Iw41`xu{?9%lE$# zb}Sy}7bcR>lnr+G&iUu!ZzaFNf!)1xynJ-13iK*T7m_Lsi|!l%Pl}%_LQYgd(RD8$ zYFv*1n(wSL8*}J59V;ZFdKFEQ80oF4ECq3PXbpQYW07*qoM6N<$ Eg4YV>R{#J2 literal 0 HcmV?d00001 diff --git a/src/assets/tree_crown_right_mixed.png b/src/assets/tree_crown_right_mixed.png new file mode 100644 index 0000000000000000000000000000000000000000..bcd1c3905e402aa42a0f54311f7ca82a0e22bf52 GIT binary patch literal 1368 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 M07*qoM6N<$f)Q=4!2kdN literal 0 HcmV?d00001 diff --git a/src/assets/tree_root_right.png b/src/assets/tree_root_right.png new file mode 100644 index 0000000000000000000000000000000000000000..cf85c01524714f159ec9151fe24bb2883d829948 GIT binary patch literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND0s@# z#W5t}aB_kK>*55Fo~A$pF1LdkU=9yk!u(aA>ksJo&wu=8o04sXf) zugV4ji=ATGN-Y`Np0>6J>NxpJU*VHocA_r2ty0?0=s*oGcc-*^{GuObwSAxKqm~FR zyIg+H=*hX_Gk=@wN#Ef0qprnLdp?_lCBE@TT8-}&EQ{``H-FD<+n7&3Le53kUC RzYpju22WQ%mvv4FO#tV4Xm
<>&pI!MO;i*_RB;AYoL&9W=KSdbAE1aYF-JD%fR4Vl$uzQ znxasiS(2gP?&%wlqL<3fz`$7V>Eaj?aro_|jowUwGRODNdfPN1=CH2htQQA4AE^}W zS+O!(_>Snpj1BcJQZg-vU6(BD_~zBYX1RQk^UIh%6&b#kV_oshdmf84ixpPRfBU`S z`|sNN`PB^$3IZG~OpOi-5z21cJ>mjaEXm0AT*bC{>)E7LE`JKHiv2mYnoW6`SIgwb zwozh9qG1*J%e;<+bn2bs*Oa(FabY&sn>N;EUiU8K=xmyF|5Qk4iEraNO@@XCZx0(Y zI9wMw^3=eoRvc*b+rF>wpY8cJ-~4nrV|}ctMC-40<`ou21~Qf$Obq-JS1uKtet5?k z+jFLIHPUs~q0NDtYs4ecdat*7bpdUN4Ng$qZzyAV;>sms=8czCyuR8*ncIF?yR*|V zzv-y%zbfTDX1iRqLV}LyemeWOs6uZ}=57hA%QG1-mla;Ka!?XKdigYa+;+2oRnPaH z?u-%H{oCkcuTQnzoQt|aW@3)JlMil*RVfO5zx(&qU+B=tF=1j;H1p0*7NA0gACdFliaoFB3n<;6 fz;u literal 0 HcmV?d00001 diff --git a/src/assets/tree_top_left_mixed.png b/src/assets/tree_top_left_mixed.png new file mode 100644 index 0000000000000000000000000000000000000000..0f17f06e5690964270dc39aa7733c8f9d796c4ed GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_o|n5N2eUHAey{$X?><>&pI!MO;ixZCM_}6`+u8W=KSdbAE1aYF-JD%fR4Vl$uzQ znxasiS(2gP?&%wlqL<1J6i@YZaSVw#oSY!Rx;R0krzy~Y%k7{Bl+(zzO0VcY`=z>N zjb$v8m$bcTIL4s7>wW(F$|D~B>>Cu?4}6wh|5BcH&!RgTOhU7i{;Qg}zL=&KaiMnI nGadfqfAxibd6m}|D=-{bExKy*AFHQ83mH6J{an^LB{Ts5^I}sN literal 0 HcmV?d00001 diff --git a/src/assets/tree_top_middle.png b/src/assets/tree_top_middle.png new file mode 100644 index 0000000000000000000000000000000000000000..613bffcd6f956cccbedb6e7902c1cbea506017a7 GIT binary patch literal 747 zcmVJNR9M69m9a}3VHn1L8ZVU`iAHmWF=n7{9?$N<7=O|H)ltN+FU zK`zJyQ77`Fy>gFurkx{we_Nd!eodubZ8&0QhgFtWa%`?wS=*TA)ywxJ=VCWDaW`%e zy>9YwS|gm+Naf>>^=gCXPcy7-OiMumYa7#;6-(})e=>HfNOAObs<2o% zCY6sfvzR26j}wh3L?eo{Ix{hdS+OuHmV9PrG0Eg1e}~USz3t6`)0+$(0%fH zYo|;!qA)udcDN{`On$fwZdhv|UKUlq}SzOdCN(bLif&ubVp;k3sk4zxe=Z&T$G;|+k z#gZ|AH*e2)oC`UG0#dM{`v}EU#$rCoWvlfam|09Z>~>pepL93edkx#Hv}=ioi=4dx ziNpZ;sgPr+wsy*njUt($`y735Cs4ee?$@;Kzrg+hk=EN_pIkdirSBvX1Gg#_eYX>L d60x)p;}?1_A3nhApbP*2002ovPDHLkV1iQKQN;iN literal 0 HcmV?d00001 diff --git a/src/assets/tree_top_right.png b/src/assets/tree_top_right.png new file mode 100644 index 0000000000000000000000000000000000000000..3ed3e437735ce71d166f71e7d8cbdba9dfc12c28 GIT binary patch literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC|K|5 z;usQfI5|Orb#a17Pg9@)m)k)NFo(w^pmgGI`w8ESc}o}!l-duxwe6R9DaSNPY7q|* zH!E|gn7ID)&gi;e>bt>a|3|5FfyL9>4gc@o@vlwq;=x5}s}F#{ho4`sADqlxv2>@z r3sF&@kB&t=+xhGh9QwGb)Vvt{a-}}=WPi;CI)%a0)z4*}Q$iB}r2<>&pI!MO;jq=S1~(f1r?TW=KSdbAE1aYF-JD%fR4Vl$uzQ znxasiS(2gP?&%wlqL<1J6i@YZaSVw#oSY!Rx;R0krzy~Y%k7{Bl+(zzO0VcY`=z>N zjb$v8m$bcTIL4s7>wW(F$|D~B>>Cu?4}6wh|5BcH&!RgTOhU7i{;Qg}zL=&KaiMnI nGadfqfAxibd6m}|D=-{bExKy*AFHQ83mH6J{an^LB{Ts5CGAsW literal 0 HcmV?d00001 diff --git a/src/assets/tree_trunk_left.png b/src/assets/tree_trunk_left.png new file mode 100644 index 0000000000000000000000000000000000000000..1ff0bcb22e742a5a7415a7f4c5194579d59bb1ea GIT binary patch literal 735 zcmV<50wDc~P){{o30z}AVCDIj4l*(#R0L5d5q>ohSHsf(8kVSxL1_ItJ)mJZ}BdAaZ9 z-t*2q?zx}ye5f9Rk9XR60D!7FY;71bw!ghuV(ZbwV`md_1gxB}#Uf~`*h0FQg?LLn+3^8kP2PCE}p$-=be?4?Au zfL;Lq3c}=$QiIwd+h59rWW?>wl29>kn+-l#`i@FI+FC z&>z^sbUZUp&SyeuLAtQ!GZ7E!>6v-LO#0^a9$OP}0MG}=I5JLARx;6(P&WU;&3~Q@ ztxa6Rs~4XD0A(d3v`QZwFFyxteTrfKEBha)R+6Yzl0G+w;r;HAy%aioppD~AD0`07 zj%F(d0Qj)`1zWuaYr#-GWTeT!WhEozJkZ8$KURV9zLTKhg#EoA!p(!;AoCs>r@lCS zuYI4xwY=p#Ao$_W&8ZzC@!uxqNw}7W?s@^YZq|U0pZ}czFLO}-APN3=cdqdC{q z@g4{pOjJk~qqfO#ubx}vvsafV5Hutek;US`lStr#z>~m5lE4Zptgym=k6$WOV7dE8 RDt`a~002ovPDHLkV1iqSM}hzV literal 0 HcmV?d00001 diff --git a/src/assets/tree_trunk_left_mixed.png b/src/assets/tree_trunk_left_mixed.png new file mode 100644 index 0000000000000000000000000000000000000000..86f490612449e90ee465739a3cfdb88d1164e466 GIT binary patch literal 1150 zcmV-^1cCdBP)WFU8GbZ8()Nlj2>E@cM*00ZJlL_t(o!|hf(Z`)QB z{-jb!Ls^d+l3Iy`Y_foww1fH>v{+fR1YLq^D7ty0K?G~ zhUsEF^ZAbq+V(lpK#*IAuykhodQf z*0d6LDrWyWOzdUkSygh-v=RUy%bWm*FU}&76MCIGKggT_%n2f8Al8PXDKxEwUZ>8_ zF(-g!oS>l<(a?$sy97y9a$v}FM`C7FQ;M270jGUD^Pwua1RG-gDa$Bb^o7R}z&>RFkL(-MtDgkES8Ao_4=ti%aFN)xYy;1HWT}Z@>IG zp#do#Q6$K;&11zDJaYgz7+9Ft%S697v|^(5?mxPd%7hem$eaKx zwgAI+B8%|G4XoG#2ZP0xBUcRO;nTYj4Gl+A^g4Au(gAD+k=SatI`48Lg=!v_aRP6C zf&4o+uXIdbyEqO8R%8TIX%7Y#p8W7DvPYv=P?cQjw?IUpnn&iXOyt8t_nza!b9~%; z(8jTOievK>1x3d9-#t(5Fmae=X|TkZ5LMjJideA)E}Xw28H>30pv|wJef4321)7*t zZqkTk87IK{yB$|=nwmvb7Zf=WJiSBvqzkbWBBa-~4LK007M)VfDSK7P!Ah|a7bn?k z{uw|@%fxehoF2Lvpc1C-0YIy_gXz&6VjIWXSF|CP%yWG7TUC7UeiKr^RmC%Fp7P?x z02ksqnEI`1f{{4=@gPL|AHBU1e5UtFJ#^3i#>??p=HLEWy>~mx2suhyqa@PM*2`g~ zbaSJD|B84v8z*UNSL5aQEYsF;8AMwzhqxxR^>TQv0Ypae|2BX(c!O)lKS_*yh4NH| Q9{>OV07*qoM6N<$g12f5JOBUy literal 0 HcmV?d00001 diff --git a/src/assets/tree_trunk_middle.png b/src/assets/tree_trunk_middle.png new file mode 100644 index 0000000000000000000000000000000000000000..fd4c83ae80b3ffbfa5a1014421c2e66ce3d6b5c1 GIT binary patch literal 1210 zcmV;r1V#IaP)h24*M|84h$oTO4UKn zZo@6x(4&(80H<>d0MLpl06@#^;_KTVfrp&SZVmtdDuGj^k|6+qX?7royhgzNOauud zg86(5l#lk(@5W(YtP^-D8G_1_rjj8P^Kk$`xwa=*KYV1Nu&e_B?52a2wJd%u+oEa> zzh>}4>C$=lQBP{La0I6gs(1<;|?IX$e*v$bF#?X*^TmOoRIWUoZ_{c(L zI*f^g5y3`j2V1p+Kv2`{h>Cl58#ixVLt$ALMC|4Om8ygF(za;L%3AhR?+_tUUHRmj z_dNi(n7S+$xoLWK8y8cT1>ntF*L*$XH$;~D!TqO#klg!nZ4Y*H@P>^v31pvrx zNf;6FPD6$dmP*w@VOhs|X&WuGiy!WN3;_84yWd4lUK|w#V0aDX{t{rz?Bb}|N9$y* zWp)DxQqOK4UD-vpFe?bD1Vm36oL5ej$wP{IPQ>Wi$|N>Q zJIEGhhlM6%egz1uC7EXbg`)tvcPSYjJEZ9L@Yt^G0w-;t-w7jvt=hpG6H>MNFC1m& zithQrhcR2NFhfgKXSv#Rfci@d0L~;*T#9=HE`zLQ zr%<sRAv zs=(#<5#S*^S0+U5lD)!Ad@l1jonve^TxDY1fz5`ia8g93{?Z!p3J*OxiN%cO$<=cu z0~L7JAduW#8jqhmLvd-+qxB$#&P`xwR?Q=mk>s)$I0%v9>vhW&^1rhJL0&k`?L?A; z|8D}D4Obya4T Y0d=9y<%1J(;s5{u07*qoM6N<$g0=26Q~&?~ literal 0 HcmV?d00001 diff --git a/src/assets/tree_trunk_right.png b/src/assets/tree_trunk_right.png new file mode 100644 index 0000000000000000000000000000000000000000..17eac14d9264bd0ab9c90440a879c1e9ce2877c8 GIT binary patch literal 750 zcmV0Wh-~f@;&nvQDv`J^&l*c{#VaU87h?V_Byd#w=!5V{^ME=l4qo zEEov@>Q)DUuH(|!Yfa%J9M8lQ@oLirP=s@O1l#FTZMt$zPLE(_HRYY09s%I});B3G z2oeXF7Q$j9GpkW5x8wq`sR*jtbSafvGHAaef(0W%-Re-cI(#iR7)7{ybfyUSGalqi z<%c5dcMDM7SuQTgQVh!;VEW~&MI{3>tMUBlyb_4*^vUTFW^yS2iiI?#a!WdAJAF3R z^Gc75OL)-goywt-WwDT!|$ZQgCQ12?K$9p&;FC3+*pG4@Lb%sMfhLF-gUAc+Jxc=i4Tgu$%L>UA$T2O8Gv8Z&!{8R zbzI`Q#!WEw@I~GmN5DTOZ2#Y^hn7G+vuQ6Vh?@{qzlM%GqMm8*rZOGMV>9V-i%c_N g!h{JECfqWA0Ml`Uv&!d9#sB~S07*qoM6N<$f{s*F+W-In literal 0 HcmV?d00001 diff --git a/src/assets/tree_trunk_right_mixed.png b/src/assets/tree_trunk_right_mixed.png new file mode 100644 index 0000000000000000000000000000000000000000..26e2ac22d62a04038a2ca3d2c73b6572cca312f3 GIT binary patch literal 1089 zcmV-H1it%;P)WFU8GbZ8()Nlj2>E@cM*00X5-L_t(o!|hhFZW~7s zeI$;6a|tEFAmyCy!1x%1p`1brRIm}7uu8hHFjN>&=^}st*Zu%k{)41YN2Cy-N@|$G z$A*9nSO{P<7l34hJ5eTSLlUh^aRpP*vz%Qn<8&&bsd&3PGjHC!on_+T&(%q_Y@suV zP*^cR))_?NcVWd8`;Q+zL$Puf0N~gu06-ANbKkz#6X*Dz>n_7MV)0F73E8e}UA zZr$#M06;blXTX9m7J(f*C4f+Jo|MPq{suHg3CW?+>f^Wip8$ZgZQ@1!6*jl;!S{Ob z0f~_yj8UxIMdd>=JZTWdaNX%S0%ZhYjPdXaYa5w4Ak>;)o;;W66U2=J*u#5cR$3j|?|aTtlJMJt9^qEcdv{2V(afv9X{=jaEfKn<04 z65HPX2^>3x7xh<2+a|11PI6w`$e>!bv_Ty^CAFZiVoE~p3?g{V5q4^MB&%f$%$_?*rA#TJ5NN>N#R*rU7%@OwYPXu7yO(Nmx%xjL2 z`1SV(6GFv>LjB#ne#I@`T}Bz;pGzTYlt z`^ts3sA3W)-ICj{Q3c^@`q8q?(!6LfR21Y0dz;{0LV$7%NxM!WR}rScu9typBf*8?=qtn?h?HXc8E z1^`%fm*%w5ZoQdl;4|m8R)oISljcCbJ%r!*OH4$^PKnp=W55sVzR&`l{iAs{Z2_-{ zC#CPSZAv=OF+$Uk10RPG(zc1y?j=^;B^=g$t$&h&sL6Rk8bthEc>VHxu5wk-6yvme zDXr6Y{%s6{kgASnuSW?WJ5l%M^uYcZsepJ44q_Zes1?B+&NEt>;`&RJ z(XB1E= 0) { + if (row[i] === T.soil) row[i] = T.grass } }