From 70f142c2fac2e8fc0678d7deb1e0ab85efb36b76 Mon Sep 17 00:00:00 2001 From: Matt Low Date: Thu, 22 Nov 2018 00:24:05 +0400 Subject: [PATCH] Render bricks and ball using sprites instead of constructed polygons Changed field width to 10 blocks instead of 11 --- core/assets/sprites/ball.png | Bin 0 -> 11773 bytes core/assets/sprites/brick_DIAMOND.png | Bin 0 -> 1013 bytes .../sprites/brick_DOWN_LEFT_TRIANGLE.png | Bin 0 -> 1142 bytes .../sprites/brick_DOWN_RIGHT_TRIANGLE.png | Bin 0 -> 1198 bytes core/assets/sprites/brick_DOWN_TRIANGLE.png | Bin 0 -> 1188 bytes .../sprites/brick_FULL_DOWN_LEFT_TRIANGLE.png | Bin 0 -> 1181 bytes .../sprites/brick_FULL_HALF_DOWN_TRIANGLE.png | Bin 0 -> 1093 bytes .../sprites/brick_FULL_HALF_LEFT_TRIANGLE.png | Bin 0 -> 1146 bytes .../brick_FULL_HALF_RIGHT_TRIANGLE.png | Bin 0 -> 963 bytes .../sprites/brick_FULL_HALF_UP_TRIANGLE.png | Bin 0 -> 1053 bytes .../brick_FULL_LEFT_DOWN_RIGHT_TRIANGLE.png | Bin 0 -> 1136 bytes .../brick_FULL_LEFT_UP_RIGHT_TRIANGLE.png | Bin 0 -> 1190 bytes .../sprites/brick_FULL_UP_LEFT_TRIANGLE.png | Bin 0 -> 1111 bytes .../sprites/brick_HALF_DOWN_TRIANGLE.png | Bin 0 -> 1043 bytes .../assets/sprites/brick_HALF_LEFT_SQUARE.png | Bin 0 -> 730 bytes .../sprites/brick_HALF_LEFT_TRIANGLE.png | Bin 0 -> 1209 bytes .../sprites/brick_HALF_LOWER_RECTANGLE.png | Bin 0 -> 678 bytes .../sprites/brick_HALF_RIGHT_SQUARE.png | Bin 0 -> 732 bytes .../sprites/brick_HALF_RIGHT_TRIANGLE.png | Bin 0 -> 1154 bytes .../sprites/brick_HALF_UPPER_RECTANGLE.png | Bin 0 -> 683 bytes .../assets/sprites/brick_HALF_UP_TRIANGLE.png | Bin 0 -> 1038 bytes .../sprites/brick_LEFT_DOWN_LEFT_TRIANGLE.png | Bin 0 -> 1214 bytes .../brick_LEFT_DOWN_RIGHT_TRIANGLE.png | Bin 0 -> 1130 bytes core/assets/sprites/brick_LEFT_TRIANGLE.png | Bin 0 -> 1168 bytes .../sprites/brick_LEFT_UP_LEFT_TRIANGLE.png | Bin 0 -> 1250 bytes .../sprites/brick_LEFT_UP_RIGHT_TRIANGLE.png | Bin 0 -> 1209 bytes core/assets/sprites/brick_RECTANGLE.png | Bin 0 -> 534 bytes .../brick_RIGHT_DOWN_LEFT_TRIANGLE.png | Bin 0 -> 1211 bytes .../brick_RIGHT_DOWN_RIGHT_TRIANGLE.png | Bin 0 -> 1150 bytes core/assets/sprites/brick_RIGHT_TRIANGLE.png | Bin 0 -> 1127 bytes .../sprites/brick_RIGHT_UP_LEFT_TRIANGLE.png | Bin 0 -> 1249 bytes .../sprites/brick_RIGHT_UP_RIGHT_TRIANGLE.png | Bin 0 -> 1227 bytes .../assets/sprites/brick_UP_LEFT_TRIANGLE.png | Bin 0 -> 1228 bytes .../sprites/brick_UP_RIGHT_TRIANGLE.png | Bin 0 -> 1209 bytes core/assets/sprites/brick_UP_TRIANGLE.png | Bin 0 -> 1227 bytes core/assets/textures.atlas | 257 ++++++++++++++++++ core/assets/textures.png | Bin 0 -> 41919 bytes core/assets/textures2.png | Bin 0 -> 16688 bytes core/src/com/me/brickbuster/BrickBuster.java | 5 + core/src/com/me/brickbuster/entity/Ball.java | 21 +- core/src/com/me/brickbuster/entity/Brick.java | 53 +--- .../com/me/brickbuster/entity/BrickShape.java | 82 +++--- .../brickbuster/layout/GridLevelLoader.java | 4 +- .../com/me/brickbuster/state/EditorState.java | 4 + .../com/me/brickbuster/state/FieldState.java | 10 + .../com/me/brickbuster/state/PlayState.java | 9 +- 46 files changed, 361 insertions(+), 84 deletions(-) create mode 100644 core/assets/sprites/ball.png create mode 100644 core/assets/sprites/brick_DIAMOND.png create mode 100644 core/assets/sprites/brick_DOWN_LEFT_TRIANGLE.png create mode 100644 core/assets/sprites/brick_DOWN_RIGHT_TRIANGLE.png create mode 100644 core/assets/sprites/brick_DOWN_TRIANGLE.png create mode 100644 core/assets/sprites/brick_FULL_DOWN_LEFT_TRIANGLE.png create mode 100644 core/assets/sprites/brick_FULL_HALF_DOWN_TRIANGLE.png create mode 100644 core/assets/sprites/brick_FULL_HALF_LEFT_TRIANGLE.png create mode 100644 core/assets/sprites/brick_FULL_HALF_RIGHT_TRIANGLE.png create mode 100644 core/assets/sprites/brick_FULL_HALF_UP_TRIANGLE.png create mode 100644 core/assets/sprites/brick_FULL_LEFT_DOWN_RIGHT_TRIANGLE.png create mode 100644 core/assets/sprites/brick_FULL_LEFT_UP_RIGHT_TRIANGLE.png create mode 100644 core/assets/sprites/brick_FULL_UP_LEFT_TRIANGLE.png create mode 100644 core/assets/sprites/brick_HALF_DOWN_TRIANGLE.png create mode 100644 core/assets/sprites/brick_HALF_LEFT_SQUARE.png create mode 100644 core/assets/sprites/brick_HALF_LEFT_TRIANGLE.png create mode 100644 core/assets/sprites/brick_HALF_LOWER_RECTANGLE.png create mode 100644 core/assets/sprites/brick_HALF_RIGHT_SQUARE.png create mode 100644 core/assets/sprites/brick_HALF_RIGHT_TRIANGLE.png create mode 100644 core/assets/sprites/brick_HALF_UPPER_RECTANGLE.png create mode 100644 core/assets/sprites/brick_HALF_UP_TRIANGLE.png create mode 100644 core/assets/sprites/brick_LEFT_DOWN_LEFT_TRIANGLE.png create mode 100644 core/assets/sprites/brick_LEFT_DOWN_RIGHT_TRIANGLE.png create mode 100644 core/assets/sprites/brick_LEFT_TRIANGLE.png create mode 100644 core/assets/sprites/brick_LEFT_UP_LEFT_TRIANGLE.png create mode 100644 core/assets/sprites/brick_LEFT_UP_RIGHT_TRIANGLE.png create mode 100644 core/assets/sprites/brick_RECTANGLE.png create mode 100644 core/assets/sprites/brick_RIGHT_DOWN_LEFT_TRIANGLE.png create mode 100644 core/assets/sprites/brick_RIGHT_DOWN_RIGHT_TRIANGLE.png create mode 100644 core/assets/sprites/brick_RIGHT_TRIANGLE.png create mode 100644 core/assets/sprites/brick_RIGHT_UP_LEFT_TRIANGLE.png create mode 100644 core/assets/sprites/brick_RIGHT_UP_RIGHT_TRIANGLE.png create mode 100644 core/assets/sprites/brick_UP_LEFT_TRIANGLE.png create mode 100644 core/assets/sprites/brick_UP_RIGHT_TRIANGLE.png create mode 100644 core/assets/sprites/brick_UP_TRIANGLE.png create mode 100644 core/assets/textures.atlas create mode 100644 core/assets/textures.png create mode 100644 core/assets/textures2.png diff --git a/core/assets/sprites/ball.png b/core/assets/sprites/ball.png new file mode 100644 index 0000000000000000000000000000000000000000..2f6772e120258741072fed3d8ed61ab225dad9bb GIT binary patch literal 11773 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 literal 0 HcmV?d00001 diff --git a/core/assets/sprites/brick_DIAMOND.png b/core/assets/sprites/brick_DIAMOND.png new file mode 100644 index 0000000000000000000000000000000000000000..ef2ba037de0f158b5503abcabd6258301dbffdb2 GIT binary patch literal 1013 zcmbW#`%hbS6aet=ZSPnC**ciw+~x{QnKGCVd5QFag{=$Yx!{(t6v+f;4TW;c2f}=Er1xk68N8!TgZ3uexPw?dAd_U*p{B-ht zkdb!P&*vQ<0DvFo8aoRBh#){IWTH;+ztLy9Q8yg!=r*nFG zy1cx6Wo4zgx!K`xG&VLK931TJ?e+BZ^!4=(4-c1>m5q;&>vTE{!}NN+Kp?2DuIBUk zTCG+llS!pgv)QaxtNZ)=TUuI%hK7trcDsFGV4%0R zS0a({c)Tb2M<{Uw2+2yz2296n0nvE#Q&P$RAQ1#8D34+22?Qd^w~%ap0doHf!Iz-$ zUO`kzaUm@#B03^6@*wBOOk!WaVY6;lsFwd6Ya+8K>`dET_666y!`On_DOS*aj<1~4 z^p=b3s>lmH>joR_yViC8`hL(r6v)TFUPL+_LbZ@j2UFv{E+x?fCo)i`>8bdnSm!Lq zj|1O;bM_0Q%hyYkQj(E2$T|Apc|P2M2Lj(yxppq;a#Bf~lxzfpH;%%Y0-5#D3;hlD z!*2kN_v78OkiY-Oj#%==kfJ}f!8P`ariEkjZ?s{*2GF1?K0UEYN{?ox(!*J~^!Hd_ z)6cU+^f#gRHMQVTItw+|1-!y^@HzY=l3GN8K9|HnT*)Pd{Iqeh8x1cGVjgE%~F&zO^Ej9?h zfip?1A}W+kN6~PG5{+cY(P&0J8qYw{#DzB6XQmKVt0+{Kil2ZjyTV%d3?@v0Z(~9) zxD69Nge{mb01mS|y}WbAUiwk>3WM|Ft#IzjaWsObJ_(-v#Cr`^f7r5+w7l8^Vt7XF z2cG4Bg@IMsniVl8pNBY5&1!I(P?;K|4K2?}o~08iG_UkD<$MBqs}xI@+&d@b?7 z(``IY(8u;J5NEpS(2JMM*IrC6$?6Nl$B=a7=n7{lMmL*l`0L-V%1KURcO~V?{s9%V B>LLID literal 0 HcmV?d00001 diff --git a/core/assets/sprites/brick_DOWN_LEFT_TRIANGLE.png b/core/assets/sprites/brick_DOWN_LEFT_TRIANGLE.png new file mode 100644 index 0000000000000000000000000000000000000000..17e00217f53a8f5c305cf862bdaeee1ea5265c52 GIT binary patch literal 1142 zcmXw#YfO`89L4`{Dc#%BYGI(LphfWV!N{o7&581ea?{BW9a*+8*y0ewQU+8&QF!{c zU4=#{w;{@dq?-Y=Wh=nyvc0Qb(^ZWQq4)FI8@HX-Q zK;Y+lG!TF?Pr$T=x!WUrJ~V^90Uw|CTKzABgM;DW;WINcQ&Ur;qoYMdMXz7KZfIzD z{`~pU($eJQjoef!CiCwK1L85tQF8ylOLm>3@)Z*Ompjg1{1 z9?rm zVVI<(q~_-4f`Woaj~-=bXV=u!=ybYg&z@brd^sg0<^1{c_4W1L-Q6uMEm>JvDwV3K zsYxo88VrWKyu6;Cp1XJN_V@Sq_4VDmcP}a`>e{ty5{aa=v{a+fD3!{K7cUMB3{+KB zJ$(2uF)=YBBBHaiv$(iep-}Yp_EuC>+`oT6Jv}`?KYw9ip{%T|uCA`Sy1K2ct)rtO zH#avfE^c;qw!FMNK0ZDnA;FN%`_t@^k_P&p0yJa@GaqiGw|C6{n!%@Mo0}P~mwJ6B zJrx-yjr%J48#sF|O#GeXtVq0j?`}7@#h~Jo0IUaoM-QKl&l@xxl=LJ10fM}Hl^wQYViH~i!FO>_FqbSTZoMBT*1F(2G0%*K3=xIl=+G5Dce%C zNA?f9&8Fc23S>fHKX<@il-RmKfi^OJco$pjtYJ`?rHybG z)a}rC$zHMporKr5Jds#-ny1)S%(-$*Bw#sli~K~Q!_LT^b#5K)JxvEV3sXYvkPEW| zACtYu{+0Ss=x*`UN+GhR!i6-_S>wV`zV-ypLlnM&EO9R4;v6Kv*~l7aB0HRpHsCbm zh_4dBYQo0JgvKhu$4Vl^a$<{R#2yNX1LSKhVBg{OaE9>*J-ZtMxF4}XZKRgSWrUA? zS{>mkp+HS6A(?PNMFgNE)*vT#AR`+{A#o%(07wq7NG7mJ8gPgjXrclhkpo}rK{=pE z7Q(-?HE@uNs5jPxHMbQwBS%2cDhCHr0Gr8m4CDvQA{m%XQZa|5V48f7d4$1yREXE0 z8(4^Puno$@wkQp+Luzb~RCptjV~5ZK)Ik!&0Cdrw@U0Wg(iMpKb(>ks4?AYN?Z|luyj+d!67fsrh3}J{7T#CTeqb{yDX-S zTduqFtl;EA&i2$A2UKjj)$&uo5n*i7=-gYu-Zet$YHR;Vdy205Lz-l}nd&pT1}8cy z4`7$&;~pMCi6EYI&6oJ}ax{|F)|v60mnfI+kcx@5m8<*ZgWFBb+6!QgpO^p9QqNH4 EUu*gj8~^|S literal 0 HcmV?d00001 diff --git a/core/assets/sprites/brick_DOWN_RIGHT_TRIANGLE.png b/core/assets/sprites/brick_DOWN_RIGHT_TRIANGLE.png new file mode 100644 index 0000000000000000000000000000000000000000..3bde121e8f6a29758e252655fb0b3a3dfd4b115f GIT binary patch literal 1198 zcmV;f1X25mP)7=Bj`1tt9$jI8-+WGnU?d|RL_4R;&fbZ|`@bK{4+uNt7 zr_s^Tt*x!-=;-R|>g??7>+9>&)6;f#cIW5kl9H0<=H`owi}&~U^z`(&xVXE!yTil7 zb8~ab%F3akq4V?etgNhZa&m)%gKuwdprD|Ff`Wg4f6dL!o}Qk(yu6i_mBPZpu&}Vz z)zy7{eTs^Tb#-;e$H(2>-Ota@l$4Z*hlk6{%XD;f*x1;doSfd?-mkB(7n3$MuZf>rwu8@$Bg@uKBdV1vKkY=(x0tE;Pge0;yZzp=5gz`($tpP$CY#-f-WJOBUy0d!JM zQvg8b*k%9#02g#cSaefwW^{L9a%BK#X=XBTZf77eE;TMOG51!eQ2+n})Ja4^RCt`_ z+&hxOFc5@c-@pl(0wsHlP4)_|B6q+UIRC<702;@^I}2AKFU3_b(I+rC@|xbx#_a2Vjhzdixo1&Gf( zx(hJlU#s4zUjdf<>lMIJfQ0{d1#lA}x3dXP$uM0oL);D*$axPZ&U!PZvO%PZmI)PZgjBpC~{bK23mHe3Ah5 z_!I$Z@(BXe<--T4%?A%qpAQ|N1s^y-8$N7+R(#L^?f8%ZTJiw{wB^GEXw3%;(4G$! zK!XnyK!*<#K#LC&K#va*K$8y;K$ou`K%1`|K%cJ~0D-R<0E4d<0EMp<0Ee#<0Ew>< z0E^!|02;q>06c!v0EqmC0WkT^0-*961;FJu34qLR5CEHBJpektasYgO)c_3qiUBzI z)dH~aD+S=;R|&wxuMmKXFCKu6FC2i6FB*W6FBpK6FBX86FBE{6FA{*6FA#v6zdOJh zdmj$R?8o6vp5Kp$+<$hVPL?0WhjKJv-d^4X7kvNe1QM?P68-^!6sR>HS*+H!-tbKx`D8En z;p_o_U4|b{MxS@t&G|$>WJvA7zZ`kv&%5jJ_JKzh;G43re#`%>V!Z M07*qoM6N<$f+%=jI{*Lx literal 0 HcmV?d00001 diff --git a/core/assets/sprites/brick_DOWN_TRIANGLE.png b/core/assets/sprites/brick_DOWN_TRIANGLE.png new file mode 100644 index 0000000000000000000000000000000000000000..c3e76e99acc19d350c39fcd0050413e1a2a37536 GIT binary patch literal 1188 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 literal 0 HcmV?d00001 diff --git a/core/assets/sprites/brick_FULL_HALF_DOWN_TRIANGLE.png b/core/assets/sprites/brick_FULL_HALF_DOWN_TRIANGLE.png new file mode 100644 index 0000000000000000000000000000000000000000..9c197f487ed124285b2db9c39d299a6345d64604 GIT binary patch literal 1093 zcmV-L1iJf)P)7=Bj`1tt9$jI8-+WGnU?d|RL_4R;&fbZ|`@bK{4+uNt7 zr_s^Tt*x!-=;-R|>g??7>+9>&)6;f#cIW5kl9H0<=H`owi}&~U^z`(&xVXE!yTil7 zb8~ab%F3akq4V?etgNhZa&m)%gKuwdprD|Ff`Wg4f6dL!o}Qk(yu6i_mBPZpu&}Vz z)zy7{eTs^Tb#-;e$H(2>-Ota@l$4Z*hlk6{%XD;f*x1;doSfd?-mkB(7n3$MuZf>rwu8@$Bg@uKBdV1vKkY=(x0tE;Pge0;yZzp=5gz`($tpP$CY#-f-WJOBUy0d!JM zQvg8b*k%9#02g#cSaefwW^{L9a%BK#X=XBTZf77eE;TMOG51!eQ2+n}Ye_^wRCt{2 z)Vp=VFbsuZbt==S(-7Ig3*;P6kRmf={)m1=FUqD!fEOTeC&2#|=ss+3=+GBnH(YH4 z3|HF#Q@?3|&~F*w)^8Z#-ftJ+(Qg*u*>4r#zuzdp+;04eG)o&1B-ER+I z({B!7+iwkE*KZ79-){>b(r*eN)_(vnHn~{812}*KIDi8iOv;IFmmCbZ7b%5S+`O z`n#qGa`GD@$jxtrpd`Nmg3^5D1Qhv-38?aw5>VzVB%sb$M!=D;h=40!2?1xm0s`)Q z;RH4E1ryZD7fMhwUm!v4d|?ELd_e@Ld?5tLd;tXLd@zB8d?108d=P=8d;o#8{K^Cp z^D7ca&96itIllsd^n7Ll4f%`&TJo6)H03i8Xv+^HB+!^2Mns@BKa7AtbADJMf%g2c z0)iIu!!ik4$q&mQXemGJBtdKWVSE7SvgGjqpsP-e9spf*db9xOnyk?Qpi8nx1Awk5 zS~&o^pm=2f=<7+A4}iX$YgY4P-L_`V!dg0O%{A>(TjtlZRR(HPo!#00000 LNkvXXu0mjfXUs9H literal 0 HcmV?d00001 diff --git a/core/assets/sprites/brick_FULL_HALF_LEFT_TRIANGLE.png b/core/assets/sprites/brick_FULL_HALF_LEFT_TRIANGLE.png new file mode 100644 index 0000000000000000000000000000000000000000..52c765304af9f6f062890f4538e221e4a850211c GIT binary patch literal 1146 zcmV-=1cm#FP)7=Bj`1tt9$jI8-+WGnU?d|RL_4R;&fbZ|`@bK{4+uNt7 zr_s^Tt*x!-=;-R|>g??7>+9>&)6;f#cIW5kl9H0<=H`owi}&~U^z`(&xVXE!yTil7 zb8~ab%F3akq4V?etgNhZa&m)%gKuwdprD|Ff`Wg4f6dL!o}Qk(yu6i_mBPZpu&}Vz z)zy7{eTs^Tb#-;e$H(2>-Ota@l$4Z*hlk6{%XD;f*x1;doSfd?-mkB(7n3$MuZf>rwu8@$Bg@uKBdV1vKK~#90<=s0@15pfx;dGQV>5#Y$%b;Nkk=OxZ|4SeQ z0h44N_hFx7pYaOj|D;%&DdNL{JLQo(M{@poxcw(~J{RD4A_9~`2RQfB07~HleD{+8 z%5 z-xVN3z9T@6d^dnB`Az_N@?8Kj4}ukdeGsey?15kdK%Za}K%JlhK%1ZnK$)NtK$oBzK$V~YK$D;eK#`ykK#!mq zK#iaSK#QOYK#8CeK!>0kK!socK!aciK!IQoAV0w{Kz0HHfZPNo0GSDl0P+%;0c0gG z1jtEX3XqY&7$6^kIY2f72Y_4zE&!PboB;9=xB+A#a0JLf;0lm|z!@MufjdBS0sug4 z0ti540uVr40vJG40w6#m!Rzd!Va5xfiQrihpn>316rh@b*zf-L`ZfJ;$^bP4%pC|h zv9Sg4t`4w8@S+c}NTzmKDHKb1;Eek%>YpQ2?rNrtpLi&%}6VN zbaZtJz7=Bj`1tt9$jI8-+WGnU?d|RL_4R;&fbZ|`@bK{4+uNt7 zr_s^Tt*x!-=;-R|>g??7>+9>&)6;f#cIW5kl9H0<=H`owi}&~U^z`(&xVXE!yTil7 zb8~ab%F3akq4V?etgNhZa&m)%gKuwdprD|Ff`Wg4f6dL!o}Qk(yu6i_mBPZpu&}Vz z)zy7{eTs^Tb#-;e$H(2>-Ota@l$4Z*hlk6{%XD;f*x1;doSfd?-mkB(7n3$MuZf>rwu8@$Bg@uKBdV1vK_U?kp!jyaRjyiQ3S>SF$C5C5d`J{ z^91$)vjhbI<_Jmv%n%d-7$+zLFiKDeV2q#?zz9Jxfc*sJ0QM3T1lUJV5?~KOQGo3P zWdXJl6b9HvP#RzhL2-ch1mywV5i|gJP0#}16+sh#=LBs4o)I(xSSM%&utv}f;E|vm zz&$}jfLnr=0M`Uf0WJh>0nP-C0Zs(10geRK0KWFE8o=)SS^xw2l>mnF>i`VqR{u{}w>1ACrFrpwy4b zzXlNM$K_uE==3A=F90(A*!+J0m40;o89<~TpZ^D-(a*>~0Z8<7@_zvo`dRr$0D*p9 l{tp1ZpP9cb^nPys@(sS9XyM2`0#5({002ovPDHLkV1g;lv5f!# literal 0 HcmV?d00001 diff --git a/core/assets/sprites/brick_FULL_HALF_UP_TRIANGLE.png b/core/assets/sprites/brick_FULL_HALF_UP_TRIANGLE.png new file mode 100644 index 0000000000000000000000000000000000000000..d65279bf056c0ea64c9f83bb7d30413995b7408d GIT binary patch literal 1053 zcmaiy|1;Zn9LL|Ek59MAq0ttNYwz@ScGm5DopznJqNBKNk$$<=dbiP8H9c+OON1iw zNl?bzFgCWZ=xl5wjN^O@iMUB=8sw00ks{)2A`(7?v{`QZ1Nyw@z3%yX{P?`*HxzQD zGu{&q0C0|u3cn5jWRC#FIoPivDe?n52&Q~;Gs5rXxQK1 zmrA9xv$Gb9MX%TI?(U)}y0x`sG#cmT<{BFtCnhFZT3S|DSJ&6qH#avoHZ~Lr1(V5K zSy`#5sL<(jB_$<$dwV-OJKf#geSLiri6kv8ZFF?BzP{dUHa9mnr>3Un<>k@obUvTY z<#O3FFaQBWkr;E|*tURu&c(j*X2m z7!0LS$>Z_n=jU5nTbGuW78e)W+uKu8QmU(~X*8NZASf#7@3 zH#aFMNu^RXH8thu=PxWQ^!E04b#;}Om)F+TVi?xZ(J?$cEEbC=Cnu+;r)z3zGBPqu zCR1l;XJ%$*c6PS13jdG2M~HEqd;^el%0&C)NWXeD?f;r#6olX2jFqwAGE6_LCHy~i|v!-hRz+Xm(huzHN>1Qv|B>qm1@6b;RzYe1K&S!Jp zyA%e&>L5gDbM<`tVeW&cKR_Qh>}>xWY-G9n89r1`@N-Z@5%pxUV-XGTk?^B{1V6b2 z{NX1T00Fvo66B*kE`UT*I4kbQRi}4Y0ZD>ztX`yF5wR6V%0tSnKBNR>!g>UKjB_`6 zK%Qq}pT$8`G~S!-#!ux=SrN3@@tEm*aMn9&GzMuZ^9l$h@&mbAt21zOeIV5!6i4yz z)>7a`(8|uol!a>E539-PK$cCP9;=j{kEC4IoZyfLh_Eo{IMQobM-D81BIis~xJ~U} z1m&n7Io@y3ha-LTUZ6>j~h{0imPfYZgeH|qQx%fzB*{%MZTjO8w=h zgqau{o}{6@GMfA0x6iSF=Z6v?#Qu2XF3kXMCcn<(mxJY}M3CK+z(w5n&=(=> zm-5v|0RO-N#J)@eZLf&nw(SHEuwit@h6hR;j4EwTKxIQvl??#>paUPXIfyVD^a9fW q^sp63U&27mhD3%HLoa`mkUV% literal 0 HcmV?d00001 diff --git a/core/assets/sprites/brick_FULL_LEFT_DOWN_RIGHT_TRIANGLE.png b/core/assets/sprites/brick_FULL_LEFT_DOWN_RIGHT_TRIANGLE.png new file mode 100644 index 0000000000000000000000000000000000000000..8c0de032b8a848460d78e2998cf60375325de966 GIT binary patch literal 1136 zcmV-$1dscPP)7=Bj`1tt9$jI8-+WGnU?d|RL_4R;&fbZ|`@bK{4+uNt7 zr_s^Tt*x!-=;-R|>g??7>+9>&)6;f#cIW5kl9H0<=H`owi}&~U^z`(&xVXE!yTil7 zb8~ab%F3akq4V?etgNhZa&m)%gKuwdprD|Ff`Wg4f6dL!o}Qk(yu6i_mBPZpu&}Vz z)zy7{eTs^Tb#-;e$H(2>-Ota@l$4Z*hlk6{%XD;f*x1;doSfd?-mkB(7n3$MuZf>rwu8@$Bg@uKBdV1vKw0004WQchC< zK<3zH00009Z$?IQ000930001h0MJ1+7ytkO7j#8fbW?9;ba!ELWdLVsW-@SYXCN{z zH7+qR_g1J;0008FNkl3QYXq0Ly+%fT{mj0cQNz02x1` zz;(tC4UqM>_M7t~1F-$<0CYb&0N>9I;J{A};K9!f;KEM~;KR=g;KWZ0;Kk1h;Kol1 z;K$Di;K)x2;K|Pj;L1-3;LDE>;LHyX;LVQ?;LZ;Y;Lnc@;Lr~Z;L(o^;L;Ba;M0!_ z;M5Nb;MI=`;MNZc;Mb1{;Mfld;MtD|;Mxxe;M;E>z`5T%fOo%j0QY|50RH{90R;S} z0Tld}0VMo}0W|z}0Yv;}0aW}}0c89}0d)K}0fhV}0hIg}0i^r}0kr(}1Bm&n2T=3Z z4j|{R96--sH-MnOY5+xl%>a`AiUBnJ^#X|cs|8T?*9su(uM|MnUnhXDze)gQe~kdr z{t5xK{rdxm`*#OW_wNlL@820f-@h+F0ROH45&U}sgz)bO5W~McKoI}t08#u~1BCH! z3=qe^EkGdurT~%rTLOggZwL^}UmhTszc@fNe`$bl{=xw9{AB?G`ilZY^p^z4@vrZ* zKcu=sfB)Y^p;qK?W4-)->;28;iT$t^TkCIM*-vV;b^hm&FTdXkf4qZlxPSc-55D2@ z{^r7dKJ(@L?F;+q09*D4KKO=P@HbJvdXvrigI)KtoB9uM@C`TiNB`79&6$)}kBZ!?rFKvEqp65c~fc85xO-i<_C5nVg&)A0NMd{rcz6pS!!e zU%h(u<;$0kA3s{HR)o;h)YSC!bbo)pMx%N9^y!^Dcg$w<#KeTfV)^jlgVAVAO-&se z8!Id<9334kC@5H1SeToeYiw+6X=&-~>^yVkOixcwRaMpO>}+*)b#ij@xpU`|l9JSF zbxuxBc6N4eZ*N6KMQdy8)vH%KIy!1=Yo9-Vo|&1MpP!$SlG4@HH83#H*Vk86RCMv; z#fJ|c%H?vC$y8QW_U6r-nwpyT@81s%4c)za_w?!0#l^*miHSO$PNh8R2^TJ0xPANf z*|TTc+uQ5v>M+KYm6Z=3Jh)cuvwiV*LLMoK0&vuHd=b3lArg61(s6m(vE*2ALUugp zRN@K0pn%N*fq@G#+Wi2KkA#BYXhqqG>Bq!QKCL{Ky3VNmPPM*mqiW542w3AssBJlq zefwv2^TN^U$;Xch*FLc`K1kFu5Z|j2-W)g>@nog(koqLg%p=N26+|QFPmOntzRAu# zj~8 zyFe5fsMBkAviR$0Dcxn;hGc{_TNGqFgtieQM?2OTE0+{|ZslDw|7G0=3?34aj+DAW z0TT-d_A=7oF5%K5X&~Ihi~v0q0}O5w79B42gsYhpz)&%y!Bw)94wY_(9*h+PQ(J(6 zHj(r$sXL^YlYpSMkmjWcY?YVENgYtT3LaJi)BqiUjQIxikg-6?<`QOZ5vlU@cTlev zyTE9*AG!gBK*(GJ`D83XvAHa>W08Z(-QPvMM(hJ4Fn~W{5{6?63b6y+gE=q^b73fU zf+5%i3NQ_KV>h@9d%$443_`pd9mU@0SG*D(!9M6PCeSaKg?`3tbOAQ22dG3aR97f7MejQ>8$f*@jdWfKdyS?G}{tJ%u(V#;13UitqepOU|9hi z6dYVZ#32EnksxIyCkMez8=LhHF}=5HgSOChaX0|N5RpK)OPcc^mv$iA literal 0 HcmV?d00001 diff --git a/core/assets/sprites/brick_FULL_UP_LEFT_TRIANGLE.png b/core/assets/sprites/brick_FULL_UP_LEFT_TRIANGLE.png new file mode 100644 index 0000000000000000000000000000000000000000..124445f9d0c9c53d909b4fbd24888cc3da52f0e3 GIT binary patch literal 1111 zcmah{`A^da9Q_m=6DDSkxDnkP>Nck#941?c1DOsG%tBNgGc22sDaT+fM=8kh`If85 zWdMNy7ATAfD^LmuD@ScPRtO9^Dp#Q$l%qhQ+@&CXw{HKy-VZPDy&vCuDL34&nVOt1 z0RU4sSEpM56ukuIVM9Gj1FzZXgZnqWzU}lo%ovx>+ zM<$c)?d`3uuI}vYFqzD?wYBy2^~uS}ii(P%p`n_Zn#IM%<>lp-l@+yGEtN_c42DXj z%FfPSSXf9)OWWPu-QM072n4OIt(~2nVPRpty}hNSrCVED)z#IZp`i&02{amw!{Nlo z#}fq6-``(cT-?^ymYbW~(b2)@^G8NTVq;@dQ&Ypk!@Ik?<#PGJz(7t;PI7W`Utb@c zP9Gm1XS3M~g`&2$c6N4FsZ`e2*N23J=u508$H78DdjL_}#l^*?q@)A{1QZq)a=F}~pdc2DRaI3L6B8p6iR$X=#A0zt zNr^-vDa$`)ukW2gzvb=$UoMRM>WwkY#U%{j-#zrxEQ92pUcEyxdxYh~I4>1^Ve!qr<#g{^f1}Q` zk>nv8wq3-flbO1$*pJQ$RL8|0A3v~msHk!xuFkO?pS(2XzyIBF zW%9c=;-z04bbW8w#WWG57sb7M)RVkUp{CL1tR=SNVFA}ciz{#x7vU7nffY`}Wt;+c9ETt9B~Wn?5dVZn*aOAb1w0hPb8LebC;$aM z0}b+l#A={mB^<+YIE@^zMK)Z)e7K1@;DebEg6R;447=Bj`1tt9$jI8-+WGnU?d|RL_4R;&fbZ|`@bK{4+uNt7 zr_s^Tt*x!-=;-R|>g??7>+9>&)6;f#cIW5kl9H0<=H`owi}&~U^z`(&xVXE!yTil7 zb8~ab%F3akq4V?etgNhZa&m)%gKuwdprD|Ff`Wg4f6dL!o}Qk(yu6i_mBPZpu&}Vz z)zy7{eTs^Tb#-;e$H(2>-Ota@l$4Z*hlk6{%XD;f*x1;doSfd?-mkB(7n3$MuZf>rwu8@$Bg@uKBdV1vKkY=(x0tE;Pge0;yZzp=5gz`($tpP$CY#-f-WJOBUy0d!JM zQvg8b*k%9#010nKMsolF0ssI20)PN@vg^VC000+sMObuGZ)S9NVRB^vXK7|KaBgQH zGA=bPF){a6s8Ij_0whU9K~#90?by3*!!Q(uVRbCixFe7%y%tEN1p;V-6h=nS{2`r} z9a$0|_wtbR`6l4`5fX}rVX{w;%8tw6nbSC-&r+OS%*#CdFwXKge+qVaot@#Dxp?b8 zf;~Ua^J@NI0%Okay+*Lp>0_QZ=3gf;?osG1f*swJpLgfqCb&Eb=u->%zVgTOR|z_J z6n?LK*!(*Q8h#Y6u6+3Xy9wHR6mGA4-29CM?K}$quYCOc?F7|73hOJMHh(XHi%{pI zFr7BXC(PeZ;9kb69tC&h*Y92K{G$Z5JPMmvK7W2d0`UJ(_IxxxbAC_)(4(+><>lrF zCMf&4WXC(7IBN5Q6PO}DtXzJ`2qQK>B7sqT6pr6Jt@&{YR6dt>K5>f7k4@lMK{4C4 z<^vPdG9Q$nrul#bwaqV_pvL(H6Vy7tP=cE07f4Y1eB}f!%vVg%%6z2+EzMU*(As=Y zFhPs+J)s1x&i4cov^?L-Owjs#FC#$@^S#6bz0CI#67)3Ri%ihld`~X`dRZ`?0O(aw znE>b&S@Hv*7i7x|fIhv5^Z@9Si%AQBKDDU$0O%8oiwl50 zt%~pf=##1m3xGbQs^b9Y6RO(}fIeLj+X2ugE9QOx^r?zk2SA^wxZ42e(?I+MK%WHW zD**ZwQ0B4c6A=*+5fKp)5fKp)5fKp)5fKp)5fKp)5fKp)5fKrQgipQy)C*PchD-ne N002ovPDHLkV1jXr9$Wwb literal 0 HcmV?d00001 diff --git a/core/assets/sprites/brick_HALF_LEFT_SQUARE.png b/core/assets/sprites/brick_HALF_LEFT_SQUARE.png new file mode 100644 index 0000000000000000000000000000000000000000..4c51733c916db9c98e494f69651d821ce37d218f GIT binary patch literal 730 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58aSANbBz z-@SYH^5x4VOP2ij@#Dma6Sr>N`uX$c+qZAOe*N0e(D45K`wt&J+`fH#`SRr#FJ4@` zcI}H7FJ8TR_2$i+*RNk+zI?f?tnB&o=aVK)diLyDcX#*q@87?C`Lbijj@`R=A3l7z zxVZS#sZ$FVF8uuY^O`klii(Pwo163V^A{{w(A3maUtfRr?Adwq=Izw5hPLaK?-od3ky3)~%Z`VM1$bYgJX%lP6F1?%lg{=gzviy6o)in>TN+ zSh1p|rRCwnhr4#|+O}=m#EBE<&Yk=1+qcb|Hy=526z*o8h#I35eQW7&@*n^5$ydQ4b zOFg(_FZtk-y~Kmn^?C=&|3@^;|F@E1|6gauf4|b1V!rmX?07eyqu{c=z=Lh|atC7n zTQvOsm&w5Y_b`Lp?{r3;U+#>1^nZCX#?9XpYTr;|4|Ff>z(2+Vw?Dlqp7t)D@y(lj zmK(R?IW}zH&!13SFMHtKKeL9ne^VKL|K82O^f#2D^PgISN4=oKvi|Zd BVdVe- literal 0 HcmV?d00001 diff --git a/core/assets/sprites/brick_HALF_LEFT_TRIANGLE.png b/core/assets/sprites/brick_HALF_LEFT_TRIANGLE.png new file mode 100644 index 0000000000000000000000000000000000000000..77ea047aa1828bbad63b9ce5989716baf9ecc7a2 GIT binary patch literal 1209 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 Iy7`#@2O))gtN;K2 literal 0 HcmV?d00001 diff --git a/core/assets/sprites/brick_HALF_UP_TRIANGLE.png b/core/assets/sprites/brick_HALF_UP_TRIANGLE.png new file mode 100644 index 0000000000000000000000000000000000000000..e89c9ad36d9e6c59dfe1864b801e035d9d739ea2 GIT binary patch literal 1038 zcmV+p1o8WcP)7=Bj`1tt9$jI8-+WGnU?d|RL_4R;&fbZ|`@bK{4+uNt7 zr_s^Tt*x!-=;-R|>g??7>+9>&)6;f#cIW5kl9H0<=H`owi}&~U^z`(&xVXE!yTil7 zb8~ab%F3akq4V?etgNhZa&m)%gKuwdprD|Ff`Wg4f6dL!o}Qk(yu6i_mBPZpu&}Vz z)zy7{eTs^Tb#-;e$H(2>-Ota@l$4Z*hlk6{%XD;f*x1;doSfd?-mkB(7n3$MuZf>rwu8@$Bg@uKBdV1vKkY=(x0tE;Pge0;yZzp=5gz`($tpP$CY#-f-WJOBUy0d!JM zQvg8b*k%9#010nKMsolF0{{R30)PP1#o%@T000+sMObuGZ)S9NVRB^vXK7|KaBgQH zGA=bPF){a6s8Ij_0v}04K~#90?U*}`gFp}kojKfu49T64?*&NM3s_o-oB;U3KKZ=odH&sz^OkGU_}Wg^d|$XB*CPOe;4Ic_diJ!%#iPjYFYUk)uHGTB~btB zyC#hLox}b+dIF{VxehIVqun1PCeZxq%YNaL_j77gqYz&IvUh<_-cMC4Mj@pBSNN0n z<6p)w`VmjwPwQF6h4oXMyq{BZoEU}0^i!U^pQ`Si_ppGziIex^9EFecO`W_S$0)q1 zZ}Q~*Tt?xI1jCchQvOCYe23EOUryfe-p$~36g2wfIg7p1^ZX7qtzY(8?VXS>@CZ2&7zP03TmivlIk6{p|1PHxdF0TspymH(Y-~&_mA-rT?(N&RQ&Ur=rKO9D ziwwg&fBt-FX=!?TdVYSMAPAeyX1Ci11_sK?%DTF`Dl01|CnsOMdiCbbo7b;j_w@9r zRH})IiM+hL@$vDToE(S4F*i5Y*w|Fn$*Dk^GfYAPrwXl-q+si}GT^y!5Q7qYXn6B833K72SdG-NiL^YimF zGczAOdZbh;`}+EHI-SL0sjjXb85tQK9{kB*Ms zzkmPk-MebFIyN@8zrWvTG^VGgzkK=f-o1Mb4Gp=ux!12>UszbUb?a7pdwWYuOLup7 zZ*Om5VPR5I(#*_EeSLj$a&k&a%GIk^2L}g9lFZ7=iiwH2cJ12Dn>XX);xaNa%FD}B zQ&XFpn`>)pX`0sS^$#9AD52KucKQw}!$QLWKHeAQB(Cz{;Dk@HI5SbNVr_7WB4yA| z%5Zsp1S(`5pIg;daMbzr1tCWxY>##Htna~ne|n@?ZfgkDsNsWq{s#Fdyxv6y zDNuuu=MP1Z?x2>K+lhN)&s?9lF~7nUaJ(MeAl@G)!e4k2VfY%E6N)zBV$6)bK(#H% zBoYkbV81442lVA(;vf#A2EO(QLLnP>LF-8__>D-H6Z`SgsKiq{i5x&S?twmsLJkoD zm@AE8H&#h_+Bw9|K64tj!+zT#B~+*bjW`E1&;V1i`ry26&>3ezR0(_VQ*a6^%EA5&N@=zS*!W+K^ zn|K_Ie;L@h?Ldl@0B=|U_#^@{akoz&X*n2=00M1$a^rvCh{81W1G+jds?9ECdVeahMWO9+H!iJ%oaE+QE(hlu!yw zP8d9hQ)Dnuu_GYLOUjY_Xjn}gB{RSdb_7fbxbxP;f~9^ng>vVty$g<|-78V)pf$4j z`xAVrrCHxny_)>$A5*HWg6rL5o!GL7opr2^to`U?i)O*@3%1r3C909V!fD$!HLre) zfArKxAAeJiySum58g0kU{-J)n`NPS-%-?RV30wZ#|MJ>uaZQ9qpSglPZE;leTO&0Z zUVV<-e3Xv6eY+CP&wlZAP8y0aboHxm;`*vIJE(o6A%m aI@glG+vSVj?{qlZ4?==M1FHfgY5xHoQ6;bd literal 0 HcmV?d00001 diff --git a/core/assets/sprites/brick_LEFT_DOWN_RIGHT_TRIANGLE.png b/core/assets/sprites/brick_LEFT_DOWN_RIGHT_TRIANGLE.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcae580bc647299f7143816ec9efd5bdbb8b405 GIT binary patch literal 1130 zcmV-w1eN=VP)7=Bj`1tt9$jI8-+WGnU?d|RL_4R;&fbZ|`@bK{4+uNt7 zr_s^Tt*x!-=;-R|>g??7>+9>&)6;f#cIW5kl9H0<=H`owi}&~U^z`(&xVXE!yTil7 zb8~ab%F3akq4V?etgNhZa&m)%gKuwdprD|Ff`Wg4f6dL!o}Qk(yu6i_mBPZpu&}Vz z)zy7{eTs^Tb#-;e$H(2>-Ota@l$4Z*hlk6{%XD;f*x1;doSfd?-mkB(7n3$MuZf>rwu8@$Bg@uKBdV1vKryA~qNddVmlYp?glW0{&0T1=(X?F8}M)bwB$8PF}{IeFf((({ckC z^Ggk2Ok}5n$5)U<8=-4Bt#QXgbhzJnx4~#%SfQ5ed7yt>d z)c+s=Sn3arKs12G{=hR34Pdz+A7G^)9$>8>9bmN|9ALd48z7+{8X%<~86c@27$B`5 z7a*}879h1B6(G4E6d=7H6JSF>B*2z_M1W2GfB@V2@c=gV!vSpVM+4a04+gNk9}6I( z9||C+9|<6<9|$0?9|s__9|j<|9|a)09|R!39|K@VKLo&@eguGB{Qv;_`t<|s>{k!4 zw_iKJ?tbL}`}=hR2=uE4km%P8AkwcGK&D?WfKb0$0I7bh0Al@00p$910toi21d#04 z2q4<85J0wHAAoSbIsoZ@Z2;o^$^hj1bpagEuL|IZeoX*N`H$f5AG6olslgSmZ$iI+ zh69M-`?8x~D?oJf{r|s!1c+?D_y0Gj0Kxq0A)8+%K%IH;YH)T<8Q55^ literal 0 HcmV?d00001 diff --git a/core/assets/sprites/brick_LEFT_TRIANGLE.png b/core/assets/sprites/brick_LEFT_TRIANGLE.png new file mode 100644 index 0000000000000000000000000000000000000000..252433662bdd7d9d7dd867f0f0c38aebe40f8209 GIT binary patch literal 1168 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 XT~tIWSLTaO00000NkvXXu0mjfo(3nS literal 0 HcmV?d00001 diff --git a/core/assets/sprites/brick_RECTANGLE.png b/core/assets/sprites/brick_RECTANGLE.png new file mode 100644 index 0000000000000000000000000000000000000000..a62a75fa26b893427709bcfe669b2463ed7299fa GIT binary patch literal 534 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58aP1Y!Fw;R0V(kk*NBqf{Irtt#G+J&^vpD) zg1mGEBRx|+L&NW3D*}N^_|iSyD*RkSf}I@$T#fV$fQG2}%?JRRw!qWHF{EP7+dHd6 zSsW!?9;PYCI=KolDJC2T5(?Lq1b@%VJYBcw)v2)U?=1JfU4FPDEp|&|Dlh+sy?rkj z+WQ4%AAB%d#4K~~maTI0$zaf3kU0eK z%zs+D*Y#g3IKxy^XB%_a(6VvG-^mP-zrQmc`u3h_$=myE9k=&$PT2n6&f&qo-3*<- z^O;@V0R?vcmr^MCuj=sXUva~YzsnhR{_baN`reFVdQ&MBb@0F%bkaR2}S literal 0 HcmV?d00001 diff --git a/core/assets/sprites/brick_RIGHT_DOWN_LEFT_TRIANGLE.png b/core/assets/sprites/brick_RIGHT_DOWN_LEFT_TRIANGLE.png new file mode 100644 index 0000000000000000000000000000000000000000..3322407bbfa98db719549bb25d8663ff59f92a46 GIT binary patch literal 1211 zcmXAn3rv$&6vt0LTGkesh3c4#bKO)JQHnU6mi8 zr_+s$jI6D#nM|gor6nB4&1UoS=g&t+M@vdd`uh6H%gdiUdGhq>(`V0~&CSgX3=G7? z#2AgnjEsz#nHiZ(wz9IaxVTtfU$50_+uPftqocdKyNim778VxNYIRgp)U|8ZA|fIb z3PoaKqF5}xfB$}AVPR8KQ+9TCTU(n(qj~V)L416CYHI4`%a^;ly2i)HdwP1Zva+sU zzpmHo1p>j)&`^GUzQJIqtgL+e`0?cAWOa3QWMrgVE)Ne6uc)XX2tq2AUcGvCYHF&v zxw)aCAt50lG&FR0cvz)UB_$<2di1EVv9YeMEU>fd2?)ROd^q_q@;v|gyiPtmX?-=g@q+2Czq9##l^+7 zw6s)JRgoll=gytZ&dy@_j>FWy(*yy2rvS|i1yKbn;>eL`fOmdSIh$nr&MP~C_Zh*d zh#-ORLexdL6cV)m*YHcc{rm%b7nhaqR3`zjd%j-ZoEGJq2HpMI(H8ncf#Z*veA}(@ zd?NV=_{Y}WyTiuK)4(B@*G0nSWqsZSzlUqCWybM&&&ESPi}9GL;TIenKK?F$;~1n$GLL_2xu2PyQi2pVfeGKLaI1|X`%JSasT zpu#tEVl5Py2a3Z8jE1k$ISdR^SinvKTQ14{l7VxXG^GLZ5r=n(wokGT(h>c=EDj^k z=7t5q+y!p*0N8^0f~CY2B;+Rei`))PX=zdfB8J zeFbHh3DVfEbd6)LEvZDRjX%rojkXpd{W|}3ri-NW?d!wmkF#9O6UHkW;XZ-Vb-wZY zJ=ol$c_EVdFVa^2Ui(U$?`h3c54BiLc$+#i)gu$re`{qU*u(S1o46QfS9@-A^~nv7o_4M3{A=gDCE>O)ZAxLRyX_-)7Wz|nQSr|_h9%{_0$ zybu%5qe<5bw6YQ(8~<7J$9qBVZ#;u{BhYW2a_+s~`w I+rY&C0AdR7=Bj`1tt9$jI8-+WGnU?d|RL_4R;&fbZ|`@bK{4+uNt7 zr_s^Tt*x!-=;-R|>g??7>+9>&)6;f#cIW5kl9H0<=H`owi}&~U^z`(&xVXE!yTil7 zb8~ab%F3akq4V?etgNhZa&m)%gKuwdprD|Ff`Wg4f6dL!o}Qk(yu6i_mBPZpu&}Vz z)zy7{eTs^Tb#-;e$H(2>-Ota@l$4Z*hlk6{%XD;f*x1;doSfd?-mkB(7n3$MuZf>rwu8@$Bg@uKBdV1vKPBajJT+TR}oxBzDT;|SydnD<}l0OtMgV*n9=)8AS$0H@#F z$N=2_#&Q9;{o^r!1ia$M{?9Rh0U*#n8-eHmf&SMQqBH=Z{`m;R1_<_F zc>sd_(_;WQK)AoPECAvD$tNM;0FnO2?MDTO^v{n0zyPs+Zv=t@MEkuFhzStwca8z5 z0P%i*1R?^&`vW5o5MZI-JqADmEcHJK0G9egBM=Q>u|Mz(L<3mv#|K#HhX+{eM+aE# z2M1X1#|B8~hXzRLM+Qjh2L?#%#|232hXqLOM+Hdk2L(v)#{}5W4+*fP9}!?vKOn%i zemsDU{cr$V`_TY4_k#g!@5chj=!XKx=|=*{>IVYI>&F4e?1ur!?MDH~?gs(L@5cbx z(GLNzryl`eS3dy2zJC1xJNwlG?CsYMu)AM5!2W*S00RB00VMi01Bmo129W933n0|5 z7C@?BD}Y$PQUJMrodAOUDgh+>H3EqCD+G}3*9RcnuMR-EUmJjUzcK*%eq8_u^s53m zqF)ohQvM_O`^W5cc4~0N>zmN;pWy)F_rC1r*9s8beELi Qpa1{>07*qoM6N<$f_dap`v3p{ literal 0 HcmV?d00001 diff --git a/core/assets/sprites/brick_RIGHT_TRIANGLE.png b/core/assets/sprites/brick_RIGHT_TRIANGLE.png new file mode 100644 index 0000000000000000000000000000000000000000..0c87c292dda4306223be6fa45a755cd88e6458f4 GIT binary patch literal 1127 zcmV-t1ep7YP)7=Bj`1tt9$jI8-+WGnU?d|RL_4R;&fbZ|`@bK{4+uNt7 zr_s^Tt*x!-=;-R|>g??7>+9>&)6;f#cIW5kl9H0<=H`owi}&~U^z`(&xVXE!yTil7 zb8~ab%F3akq4V?etgNhZa&m)%gKuwdprD|Ff`Wg4f6dL!o}Qk(yu6i_mBPZpu&}Vz z)zy7{eTs^Tb#-;e$H(2>-Ota@l$4Z*hlk6{%XD;f*x1;doSfd?-mkB(7n3$MuZf>rwu8@$Bg@uKBdV1vKkY=(x0tE;Pge0;yZzp=5gz`($tpP$CY#-f-WJOBUy0d!JM zQvg8b*k%9#02g#cSaefwW^{L9a%BK#X=XBTZf77eE;TMOG51!eQ2+n}jY&j7RCt`_ z*D+4SPz;1&I?5a%Ej<^Y;RHxX^b{+O!1-A(2*@UzI1Z2mp${MdLO(!o1Ra3D2zmfP5p)3pBIpAIL$Cn|gkT2{1i=;{0D?UL zIf4%WF~Z`l<2aTn_WK>*C+Bm4`P# zye2@%crAdi@frZ3<9h+Z$M*oFh(8LDCjJOOs`yrbbnz_!DdS~(0Mf?Gwg6Jc%hmwW z$IEU3l!%ut^}kn%mo5GMAF9O5769JL#LMRW_jTfBv;NOQ@v_+mpi;c-8le9Jh%Rc} zRsU0|c-gf7R4ZOK>3=L1FYA8+p$j_K_X0v+udsjp&*kD}$6i3_s}m4@4X0iiE6-uep&eVxND03Su;Wy>!h^i_^K_rH{lmrY+l t=xYG``v9UZ0qy$*guVi}Q|0*cz5wjDIL`5M5X%4n002ovPDHLkV1f%%B1-@O literal 0 HcmV?d00001 diff --git a/core/assets/sprites/brick_RIGHT_UP_LEFT_TRIANGLE.png b/core/assets/sprites/brick_RIGHT_UP_LEFT_TRIANGLE.png new file mode 100644 index 0000000000000000000000000000000000000000..3b98cb6fd7c19086a12fbdbe8caf9e96435da63a GIT binary patch literal 1249 zcmV<71Rnc|P)7=Bj`1tt9$jI8-+WGnU?d|RL_4R;&fbZ|`@bK{4+uNt7 zr_s^Tt*x!-=;-R|>g??7>+9>&)6;f#cIW5kl9H0<=H`owi}&~U^z`(&xVXE!yTil7 zb8~ab%F3akq4V?etgNhZa&m)%gKuwdprD|Ff`Wg4f6dL!o}Qk(yu6i_mBPZpu&}Vz z)zy7{eTs^Tb#-;e$H(2>-Ota@l$4Z*hlk6{%XD;f*x1;doSfd?-mkB(7n3$MuZf>rwu8@$Bg@uKBdV1vKkY=(x0tE;Pge0;yZzp=5gz`($tpP$CY#-f-WJOBUy0d!JM zQvg8b*k%9#010nKMsolF0{{R31AqY12Z})e000+sMObuGZ)S9NVRB^vXK7|KaBgQH zGA=bPF){a6s8Ij_0`f^jK~#90<(*4z!axv2y~~nKc9ybY&jr}P1tN`<8z7Fr`J)6# z>~W9r{JQ#67ogq)wcS{@hXI@&H0KkVA1dIo4`_U#fbkfD0DhE!+cn7GhX@$oLy*D` z5ODqog8115yzhf3eqI6RV+g|dIR)GYpD=zl0pnW;68V_~9IinqKZk(vfAGoU?=Rr* zs3()Zw}4ChFK@( z{>B1s^xzZBPYW0evqmqJzo`I?{4E8jD2Eb!L|Fu`9Tzy^Q003-ax z0<7?t3NXW8D8LSXnE*rlMFK4Gmk2P$Um(C1f4%@?{MiDm@#hLK$Db*{9)F$ygZx>Z3$V(+Re)LkjRNfQZxdjcf0F>q{96Q==HDQ|Hvek@#`#|g zu+INVfO-BG0_^jz3vj@{D!>E(ngAF4D*}A*rv*6SPYUqDpAz7PKOw*mKPkWyKPlkT z5kDzF-~F!@A@~oT_$dL}?*Fb!-Uvju?U1E_iz|LYfU4&|)F)#EqO11FLco_V{)K?# z2t*g{l~@4z@F&Ck3jyBvV*xjB{ILKX&;M$fIse%me^B{c%kz1Wgi1JJejLjM5Jtr+tZ@adF)phh6N6KjYy09}bU4*>$-f5Vi;2t*g+ zPP_)7`>-ck1JHH&GarHIHh|3j2|<@ZWI6)TT_Bl^Ky(#Megt^tAO6+=bP-gZYXG_j zERPGK=o+}(*8p@2V1AE*=n}~MTo6TffMzG*{olwOobwMS@aKO6Rt5>PeH=GH00000 LNkvXXu0mjf_TPlH literal 0 HcmV?d00001 diff --git a/core/assets/sprites/brick_RIGHT_UP_RIGHT_TRIANGLE.png b/core/assets/sprites/brick_RIGHT_UP_RIGHT_TRIANGLE.png new file mode 100644 index 0000000000000000000000000000000000000000..c0169ef30b03553c3cbb16289e2fc5191b7df6b2 GIT binary patch literal 1227 zcmV;+1T_1JP)7=Bj`1tt9$jI8-+WGnU?d|RL_4R;&fbZ|`@bK{4+uNt7 zr_s^Tt*x!-=;-R|>g??7>+9>&)6;f#cIW5kl9H0<=H`owi}&~U^z`(&xVXE!yTil7 zb8~ab%F3akq4V?etgNhZa&m)%gKuwdprD|Ff`Wg4f6dL!o}Qk(yu6i_mBPZpu&}Vz z)zy7{eTs^Tb#-;e$H(2>-Ota@l$4Z*hlk6{%XD;f*x1;doSfd?-mkB(7n3$MuZf>rwu8@$Bg@uKBdV1vKkY=(x0tE;Pge0;yZzp=5gz`($tpP$CY#-f-WJOBUy0d!JM zQvg8b*k%9#010nKMsolF0ssI21AqW@aDnvz000+sMObuGZ)S9NVRB^vXK7|KaBgQH zGA=bPF){a6s8Ij_0^CVNK~#90<<~uqqd*V^U^{ZS3E4_S}zj1P~Q4 z2_Pw86F^YFD1e-RRRA#ovj9>8b^(M03iU{z&JptC1polj1P}m{1RwxX1TX*+1V8}d1yBH@1z-ST1#kc&1%LqJ1dsrt1fT$71h4=i z1i%2+3!nk47Jvg-D}V>EQUDNOod6=hDgj7t!3UTZI1&KN3Y-}LW(8^nfH{GR z0$@(SQ-h_q%`stt69>SI00}@?U|NHvSIsmbfh!9@P@rW22nif$073#h009B_K~Q?j zoZ}U69|WbB%sO6ymI%NrP%!~`1sWy*pTLOy+P^O{|D5sM6#0-EBycf002ovPDHLkV1k`*B}4!K literal 0 HcmV?d00001 diff --git a/core/assets/sprites/brick_UP_LEFT_TRIANGLE.png b/core/assets/sprites/brick_UP_LEFT_TRIANGLE.png new file mode 100644 index 0000000000000000000000000000000000000000..665b188ee1ddde7de1ddf12b5c35a33202598d48 GIT binary patch literal 1228 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 literal 0 HcmV?d00001 diff --git a/core/assets/textures.atlas b/core/assets/textures.atlas new file mode 100644 index 0000000..b0fe39a --- /dev/null +++ b/core/assets/textures.atlas @@ -0,0 +1,257 @@ + +textures.png +size: 1024,1024 +format: RGBA8888 +filter: MipMapLinearLinear,MipMapLinearLinear +repeat: none +ball + rotate: false + xy: 800, 824 + size: 128, 128 + orig: 128, 128 + offset: 0, 0 + index: -1 +brick_DIAMOND + rotate: false + xy: 8, 824 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_DOWN_LEFT_TRIANGLE + rotate: false + xy: 8, 688 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_DOWN_RIGHT_TRIANGLE + rotate: false + xy: 272, 824 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_DOWN_TRIANGLE + rotate: false + xy: 8, 552 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_FULL_DOWN_LEFT_TRIANGLE + rotate: false + xy: 272, 688 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_FULL_HALF_DOWN_TRIANGLE + rotate: false + xy: 536, 824 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_FULL_HALF_LEFT_TRIANGLE + rotate: false + xy: 8, 416 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_FULL_HALF_RIGHT_TRIANGLE + rotate: false + xy: 272, 552 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_FULL_HALF_UP_TRIANGLE + rotate: false + xy: 536, 688 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_FULL_LEFT_DOWN_RIGHT_TRIANGLE + rotate: false + xy: 8, 280 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_FULL_LEFT_UP_RIGHT_TRIANGLE + rotate: false + xy: 272, 416 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_FULL_UP_LEFT_TRIANGLE + rotate: false + xy: 536, 552 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_HALF_DOWN_TRIANGLE + rotate: false + xy: 8, 144 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_HALF_LEFT_SQUARE + rotate: false + xy: 272, 280 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_HALF_LEFT_TRIANGLE + rotate: false + xy: 536, 416 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_HALF_LOWER_RECTANGLE + rotate: false + xy: 8, 8 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_HALF_RIGHT_SQUARE + rotate: false + xy: 272, 144 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_HALF_RIGHT_TRIANGLE + rotate: false + xy: 536, 280 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_HALF_UPPER_RECTANGLE + rotate: false + xy: 272, 8 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_HALF_UP_TRIANGLE + rotate: false + xy: 536, 144 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_LEFT_DOWN_LEFT_TRIANGLE + rotate: false + xy: 536, 8 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 + +textures2.png +size: 1024,1024 +format: RGBA8888 +filter: MipMapLinearLinear,MipMapLinearLinear +repeat: none +brick_LEFT_DOWN_RIGHT_TRIANGLE + rotate: false + xy: 8, 688 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_LEFT_TRIANGLE + rotate: false + xy: 8, 552 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_LEFT_UP_LEFT_TRIANGLE + rotate: false + xy: 272, 688 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_LEFT_UP_RIGHT_TRIANGLE + rotate: false + xy: 8, 416 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_RECTANGLE + rotate: false + xy: 272, 552 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_RIGHT_DOWN_LEFT_TRIANGLE + rotate: false + xy: 536, 688 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_RIGHT_DOWN_RIGHT_TRIANGLE + rotate: false + xy: 8, 280 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_RIGHT_TRIANGLE + rotate: false + xy: 272, 416 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_RIGHT_UP_LEFT_TRIANGLE + rotate: false + xy: 536, 552 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_RIGHT_UP_RIGHT_TRIANGLE + rotate: false + xy: 8, 144 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_UP_LEFT_TRIANGLE + rotate: false + xy: 272, 280 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_UP_RIGHT_TRIANGLE + rotate: false + xy: 536, 416 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 +brick_UP_TRIANGLE + rotate: false + xy: 8, 8 + size: 256, 128 + orig: 256, 128 + offset: 0, 0 + index: -1 diff --git a/core/assets/textures.png b/core/assets/textures.png new file mode 100644 index 0000000000000000000000000000000000000000..9983e651f776ab6bfdddebf70d32d14dc8ba6705 GIT binary patch literal 41919 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 literal 0 HcmV?d00001 diff --git a/core/assets/textures2.png b/core/assets/textures2.png new file mode 100644 index 0000000000000000000000000000000000000000..85d0ec9143a253cba7e245f852cd262c58fe7d43 GIT binary patch literal 16688 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

kyKYm-_4FZ`{W+)xpTg={6x)rLb}q)zZX z{@xEh?m{XeBL5A!rFt-BZk1i#-(bDd@q{oFhk%YvA`D3fRj`W*gn%ZPC53hYRI|VW z<^)JjX)Q3LuvtMNEiW2MkZ>EH*?Y02?sE$5>DYA;fubP*oC~ePt%KaPQ2LD>X|NS$ z7#+-ub}&WVF>vrQ?*!&oV>6u+so5Mm|(1{o^Tz$3swzI5$)K#AIbtqJKIkZBPw8j4?j*HzCc93V4+ zi}TSHjH$Q9Il8odfkb! zauBQ{-k-+F*H1jmkcRIlGZNy*n3c;glq3A{w^=Ool$0N?ul@*IQ)n_s3vb@M`Qf?h zzCeUd5VcBmQK?6e{H<4@l^8%w zO`4g<_@J8nIiuKPeE|7>FdH2N5rT|Wfrkp$fK#>;5wPo9d&v@*4p3waUw|R8J1@F9 z=xt^ZOQAjKzh_}VpQ*{+vcAvRXryh4IW!UMmT#KBa|rw<4Wv&_?)peXP$qY6WdV=z z_HTNkGIFbbKkriMTW`a9%Lsm3psiF6orqVIsh%)$sR_%TLXuZtZ)vd$iE)ALA$kcI z`ZPJ>Nl<4FdnP>7G%j-k*)lnW#yDvbws(o40=`V!i}+gs{g?2~8$m_$qV=6s5Y)kX zs}>!fBYhGt$Gn9FI`ZkgZ|$I9u#zuog;n>_F9$|Nfv9#nbUb+g2v?yA>RHz`pHS=Q zx>!xW%MaxwH+V5zU0kMjq`m&mOxe3_+Hl05AG4qCs0u3QMfW9c893bVvHXGbcb31a z21XRV>rOXSNWHev(#|xZ#T8Y;wZWB)uAV5b>Dz+3k(C3@b&0jNj|alax3@w>o8}28 zT0RE*#*e%J!4&LdXaWzxaTlTeA=@7vXn-q|(Utmy6O&@q0;(~Q=kG$kf5VVwJPFsn zW4WkV)PM`^jiQF94Q_KMM?GKeN=Jo9Mpnr@(A#up1z9HZpWIoeT2;eDR_!;&K@o zwKe|SaIxuVU-Ym2qv&dPw{*;d+eKdze9ijTvioo9|Bb-^ZUp2@-23>=^|&#v3UhvM M=DZnar%87H4?{-QW&i*H literal 0 HcmV?d00001 diff --git a/core/src/com/me/brickbuster/BrickBuster.java b/core/src/com/me/brickbuster/BrickBuster.java index f75e153..df4d0ac 100644 --- a/core/src/com/me/brickbuster/BrickBuster.java +++ b/core/src/com/me/brickbuster/BrickBuster.java @@ -2,6 +2,7 @@ package com.me.brickbuster; import com.badlogic.gdx.Game; import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.assets.AssetManager; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.Texture; @@ -28,6 +29,8 @@ public class BrickBuster extends Game { public ShapeRenderer sr; public PolygonSpriteBatch pb; + public AssetManager assets; + @Override public void create () { cam = new OrthographicCamera(); @@ -42,6 +45,8 @@ public class BrickBuster extends Game { sr = new ShapeRenderer(); pb = new PolygonSpriteBatch(); + assets = new AssetManager(); + setScreen(new MenuState(this)); } diff --git a/core/src/com/me/brickbuster/entity/Ball.java b/core/src/com/me/brickbuster/entity/Ball.java index 828a2c7..8490258 100644 --- a/core/src/com/me/brickbuster/entity/Ball.java +++ b/core/src/com/me/brickbuster/entity/Ball.java @@ -2,6 +2,8 @@ package com.me.brickbuster.entity; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.graphics.g2d.SpriteBatch; +import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.graphics.glutils.ShapeRenderer; import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType; import com.badlogic.gdx.math.MathUtils; @@ -27,22 +29,29 @@ public class Ball extends Entity implements PhysicsBody, CollisionListener { private boolean isStuck = true; private boolean touchedPaddle = false; + private TextureRegion texture; + private Body body; public Ball(PlayState state) { super(state, state.paddle.getX(), state.paddle.getY() + Paddle.PADDLE_HEIGHT + RADIUS); this.speed = state.bricks.size > BLOCKS_FOR_BOOST? DEFAULT_SPEED : BOOST_SPEED; + + texture = state.textures.findRegion("ball"); + createBody(); } @Override public void render(ShapeRenderer sr) { - sr.begin(ShapeType.Filled); - sr.setColor(BALL_COLOR); - sr.circle(pos.x * PlayState.PIXEL_PER_METER, - pos.y * PlayState.PIXEL_PER_METER, - RADIUS * PlayState.PIXEL_PER_METER); - sr.end(); + SpriteBatch sb = state.getGame().sb; + sb.begin(); + sb.setColor(Color.WHITE); + sb.draw(texture, (pos.x - RADIUS) * PlayState.PIXEL_PER_METER, + (pos.y - RADIUS) * PlayState.PIXEL_PER_METER, + RADIUS*2 * PlayState.PIXEL_PER_METER, + RADIUS*2 * PlayState.PIXEL_PER_METER); + sb.end(); } @Override diff --git a/core/src/com/me/brickbuster/entity/Brick.java b/core/src/com/me/brickbuster/entity/Brick.java index 5b52fbc..4db3a8d 100644 --- a/core/src/com/me/brickbuster/entity/Brick.java +++ b/core/src/com/me/brickbuster/entity/Brick.java @@ -1,18 +1,14 @@ package com.me.brickbuster.entity; -import com.badlogic.gdx.graphics.Pixmap; -import com.badlogic.gdx.graphics.Texture; -import com.badlogic.gdx.graphics.g2d.PolygonRegion; -import com.badlogic.gdx.graphics.g2d.PolygonSpriteBatch; +import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.graphics.glutils.ShapeRenderer; -import com.badlogic.gdx.math.EarClippingTriangulator; +import com.badlogic.gdx.math.MathUtils; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.physics.box2d.Body; import com.badlogic.gdx.physics.box2d.BodyDef; import com.badlogic.gdx.physics.box2d.FixtureDef; import com.badlogic.gdx.physics.box2d.PolygonShape; -import com.badlogic.gdx.utils.ShortArray; import com.me.brickbuster.entity.powerup.PowerUpType; import com.me.brickbuster.physics.CollisionListener; import com.me.brickbuster.physics.EntityType; @@ -22,18 +18,13 @@ import com.me.brickbuster.state.PlayState; public class Brick extends Entity implements PhysicsBody, CollisionListener { - public static final float BRICK_WIDTH = 4.6f; - public static final float BRICK_HEIGHT = 2.3f; - - private static final EarClippingTriangulator ECT = new EarClippingTriangulator(); - private static final Vector2 tmp = new Vector2(); + public static final float BRICK_WIDTH = 5.2f; + public static final float BRICK_HEIGHT = 2.6f; private BrickType type; private BrickShape.Shape shape; private PowerUpType powerUpType; - private Pixmap pm; - private Texture solid; private TextureRegion region; private Body body; @@ -44,32 +35,20 @@ public class Brick extends Entity implements PhysicsBody, CollisionListener { this.type = type; this.shape = shape; this.powerUpType = powerUpType; - this.pm = new Pixmap(1,1, Pixmap.Format.RGBA8888); - this.pm.setColor(type.getColor()); - this.pm.fill(); - this.solid = new Texture(pm); - this.region = new TextureRegion(solid); + this.region = state.textures.findRegion("brick_" + shape.name()); createBody(); } @Override public void render(ShapeRenderer sr) { - PolygonShape shape = (PolygonShape) body.getFixtureList().get(0).getShape(); - float[] vertices = new float[shape.getVertexCount()*2]; - for (int i = 0; i < vertices.length/2; i++) { - shape.getVertex(i, tmp); - Vector2 vertex = body.getWorldPoint(tmp); - vertices[i*2] = vertex.x * PlayState.PIXEL_PER_METER; - vertices[i*2 + 1] = vertex.y * PlayState.PIXEL_PER_METER; - } - ShortArray triangleIndices = ECT.computeTriangles(vertices); - - PolygonRegion polyRegion = new PolygonRegion(region, vertices, triangleIndices.toArray()); - - PolygonSpriteBatch pb = state.getGame().pb; - pb.begin(); - pb.draw(polyRegion, 0, 0); - pb.end(); + SpriteBatch sb = state.getGame().sb; + sb.setColor(type.getColor()); + float x = (getX() - BRICK_WIDTH/2) * PlayState.PIXEL_PER_METER; + float y = (getY() - BRICK_HEIGHT/2) * PlayState.PIXEL_PER_METER; + sb.draw(region, x, y, + BRICK_WIDTH/2 * PlayState.PIXEL_PER_METER, BRICK_HEIGHT/2 * PlayState.PIXEL_PER_METER, + BRICK_WIDTH * PlayState.PIXEL_PER_METER, BRICK_HEIGHT * PlayState.PIXEL_PER_METER, + 1f, 1f, MathUtils.radiansToDegrees * body.getAngle()); } @Override @@ -169,12 +148,6 @@ public class Brick extends Entity implements PhysicsBody, CollisionListener { body.setTransform(pos, 0); } - @Override - public void dispose() { - solid.dispose(); - pm.dispose(); - } - public BrickType getType() { return type; } diff --git a/core/src/com/me/brickbuster/entity/BrickShape.java b/core/src/com/me/brickbuster/entity/BrickShape.java index 2e40c9d..61a5f09 100644 --- a/core/src/com/me/brickbuster/entity/BrickShape.java +++ b/core/src/com/me/brickbuster/entity/BrickShape.java @@ -14,55 +14,67 @@ public class BrickShape { public enum Shape { - RECTANGLE(BOTTOM_LEFT | TOP_LEFT | TOP_RIGHT | BOTTOM_RIGHT), + RECTANGLE(0, 0, BOTTOM_LEFT | TOP_LEFT | TOP_RIGHT | BOTTOM_RIGHT), - HALF_LEFT_SQUARE(BOTTOM_LEFT | TOP_LEFT | TOP_MIDDLE | BOTTOM_MIDDLE), - HALF_RIGHT_SQUARE(BOTTOM_MIDDLE | TOP_MIDDLE | TOP_RIGHT | BOTTOM_RIGHT), - HALF_UPPER_RECTANGLE(MIDDLE_LEFT | TOP_LEFT | TOP_RIGHT | MIDDLE_RIGHT), - HALF_LOWER_RECTANGLE(BOTTOM_LEFT | MIDDLE_LEFT | MIDDLE_RIGHT | BOTTOM_RIGHT), + HALF_LEFT_SQUARE(1, 0, BOTTOM_LEFT | TOP_LEFT | TOP_MIDDLE | BOTTOM_MIDDLE), + HALF_RIGHT_SQUARE(2, 0, BOTTOM_MIDDLE | TOP_MIDDLE | TOP_RIGHT | BOTTOM_RIGHT), + HALF_UPPER_RECTANGLE(4, 0, MIDDLE_LEFT | TOP_LEFT | TOP_RIGHT | MIDDLE_RIGHT), + HALF_LOWER_RECTANGLE(5, 0, BOTTOM_LEFT | MIDDLE_LEFT | MIDDLE_RIGHT | BOTTOM_RIGHT), - DIAMOND(MIDDLE_LEFT | TOP_MIDDLE | MIDDLE_RIGHT | BOTTOM_MIDDLE), + DIAMOND(2, 1, MIDDLE_LEFT | TOP_MIDDLE | MIDDLE_RIGHT | BOTTOM_MIDDLE), - UP_TRIANGLE(BOTTOM_LEFT | TOP_MIDDLE | BOTTOM_RIGHT), - HALF_UP_TRIANGLE(BOTTOM_LEFT | CENTER | BOTTOM_RIGHT), - FULL_HALF_UP_TRIANGE(BOTTOM_LEFT | MIDDLE_LEFT | TOP_MIDDLE | MIDDLE_RIGHT | BOTTOM_RIGHT), - DOWN_TRIANGLE(TOP_LEFT | TOP_RIGHT | BOTTOM_MIDDLE), - HALF_DOWN_TRIANGLE(TOP_LEFT | TOP_RIGHT | CENTER), - FULL_HALF_DOWN_TRIANGE(MIDDLE_LEFT | TOP_LEFT | TOP_RIGHT | MIDDLE_RIGHT | BOTTOM_MIDDLE), - LEFT_TRIANGLE(MIDDLE_LEFT | TOP_RIGHT | BOTTOM_RIGHT), - HALF_LEFT_TRIANGLE(CENTER | TOP_RIGHT | BOTTOM_RIGHT), - FULL_HALF_LEFT_TRIANGE(MIDDLE_LEFT | TOP_MIDDLE | TOP_RIGHT | BOTTOM_RIGHT | BOTTOM_MIDDLE), - RIGHT_TRIANGLE(BOTTOM_LEFT | TOP_LEFT | MIDDLE_RIGHT), - HALF_RIGHT_TRIANGLE(BOTTOM_LEFT | TOP_LEFT | CENTER), - FULL_HALF_RIGHT_TRIANGE(BOTTOM_LEFT | TOP_LEFT | TOP_MIDDLE | MIDDLE_RIGHT | BOTTOM_MIDDLE), + UP_TRIANGLE(2, 2, BOTTOM_LEFT | TOP_MIDDLE | BOTTOM_RIGHT), + HALF_UP_TRIANGLE(3, 5, BOTTOM_LEFT | CENTER | BOTTOM_RIGHT), + FULL_HALF_UP_TRIANGLE(1, 5, BOTTOM_LEFT | MIDDLE_LEFT | TOP_MIDDLE | MIDDLE_RIGHT | BOTTOM_RIGHT), + DOWN_TRIANGLE(2, 3, TOP_LEFT | TOP_RIGHT | BOTTOM_MIDDLE), + HALF_DOWN_TRIANGLE(2, 5, TOP_LEFT | TOP_RIGHT | CENTER), + FULL_HALF_DOWN_TRIANGLE(0, 5, MIDDLE_LEFT | TOP_LEFT | TOP_RIGHT | MIDDLE_RIGHT | BOTTOM_MIDDLE), + LEFT_TRIANGLE(3, 4, MIDDLE_LEFT | TOP_RIGHT | BOTTOM_RIGHT), + HALF_LEFT_TRIANGLE(2, 4, CENTER | TOP_RIGHT | BOTTOM_RIGHT), + FULL_HALF_LEFT_TRIANGLE(1, 3, MIDDLE_LEFT | TOP_MIDDLE | TOP_RIGHT | BOTTOM_RIGHT | BOTTOM_MIDDLE), + RIGHT_TRIANGLE(0, 4, BOTTOM_LEFT | TOP_LEFT | MIDDLE_RIGHT), + HALF_RIGHT_TRIANGLE(1, 4, BOTTOM_LEFT | TOP_LEFT | CENTER), + FULL_HALF_RIGHT_TRIANGLE(0, 3, BOTTOM_LEFT | TOP_LEFT | TOP_MIDDLE | MIDDLE_RIGHT | BOTTOM_MIDDLE), - DOWN_RIGHT_TRIANGLE(BOTTOM_LEFT | TOP_RIGHT | BOTTOM_RIGHT), - LEFT_DOWN_RIGHT_TRIANGLE(BOTTOM_LEFT | TOP_MIDDLE | BOTTOM_MIDDLE), - FULL_LEFT_DOWN_RIGHT_TRIANGLE(BOTTOM_LEFT | TOP_MIDDLE | TOP_RIGHT | BOTTOM_RIGHT), - RIGHT_DOWN_RIGHT_TRIANGLE(BOTTOM_MIDDLE | TOP_RIGHT | BOTTOM_RIGHT), + DOWN_RIGHT_TRIANGLE(0, 1, BOTTOM_LEFT | TOP_RIGHT | BOTTOM_RIGHT), + LEFT_DOWN_RIGHT_TRIANGLE(0, 6, BOTTOM_LEFT | TOP_MIDDLE | BOTTOM_MIDDLE), + FULL_LEFT_DOWN_RIGHT_TRIANGLE(3, 1, BOTTOM_LEFT | TOP_MIDDLE | TOP_RIGHT | BOTTOM_RIGHT), + RIGHT_DOWN_RIGHT_TRIANGLE(2, 6, BOTTOM_MIDDLE | TOP_RIGHT | BOTTOM_RIGHT), - UP_RIGHT_TRIANGLE(TOP_LEFT | TOP_RIGHT | BOTTOM_RIGHT), - LEFT_UP_RIGHT_TRIANGLE(TOP_LEFT | TOP_MIDDLE | BOTTOM_MIDDLE), - FULL_LEFT_UP_RIGHT_TRIANGLE(TOP_LEFT | TOP_RIGHT | BOTTOM_RIGHT | BOTTOM_MIDDLE), - RIGHT_UP_RIGHT_TRIANGLE(TOP_MIDDLE | TOP_RIGHT | BOTTOM_RIGHT), + UP_RIGHT_TRIANGLE(0, 2, TOP_LEFT | TOP_RIGHT | BOTTOM_RIGHT), + LEFT_UP_RIGHT_TRIANGLE(0, 7, TOP_LEFT | TOP_MIDDLE | BOTTOM_MIDDLE), + FULL_LEFT_UP_RIGHT_TRIANGLE(3, 0, TOP_LEFT | TOP_RIGHT | BOTTOM_RIGHT | BOTTOM_MIDDLE), + RIGHT_UP_RIGHT_TRIANGLE(2, 7, TOP_MIDDLE | TOP_RIGHT | BOTTOM_RIGHT), - UP_LEFT_TRIANGLE(BOTTOM_LEFT | TOP_LEFT | TOP_RIGHT), - LEFT_UP_LEFT_TRIANGLE(BOTTOM_LEFT | TOP_LEFT | TOP_MIDDLE), - FULL_UP_LEFT_TRIANGLE(BOTTOM_LEFT | TOP_LEFT | TOP_RIGHT | BOTTOM_MIDDLE), - RIGHT_UP_LEFT_TRIANGLE(BOTTOM_MIDDLE | TOP_MIDDLE | TOP_RIGHT), + UP_LEFT_TRIANGLE(1, 2, BOTTOM_LEFT | TOP_LEFT | TOP_RIGHT), + LEFT_UP_LEFT_TRIANGLE(1, 7, BOTTOM_LEFT | TOP_LEFT | TOP_MIDDLE), + FULL_UP_LEFT_TRIANGLE(3, 2, BOTTOM_LEFT | TOP_LEFT | TOP_RIGHT | BOTTOM_MIDDLE), + RIGHT_UP_LEFT_TRIANGLE(3, 7, BOTTOM_MIDDLE | TOP_MIDDLE | TOP_RIGHT), - DOWN_LEFT_TRIANGLE(BOTTOM_LEFT | TOP_LEFT | BOTTOM_RIGHT), - LEFT_DOWN_LEFT_TRIANGLE(BOTTOM_LEFT | TOP_LEFT | BOTTOM_MIDDLE), - FULL_DOWN_LEFT_TRIANGLE(BOTTOM_LEFT | TOP_LEFT | TOP_MIDDLE | BOTTOM_RIGHT), - RIGHT_DOWN_LEFT_TRIANGLE(BOTTOM_MIDDLE | TOP_MIDDLE | BOTTOM_RIGHT), + DOWN_LEFT_TRIANGLE(1, 1, BOTTOM_LEFT | TOP_LEFT | BOTTOM_RIGHT), + LEFT_DOWN_LEFT_TRIANGLE(1, 6, BOTTOM_LEFT | TOP_LEFT | BOTTOM_MIDDLE), + FULL_DOWN_LEFT_TRIANGLE(3, 3, BOTTOM_LEFT | TOP_LEFT | TOP_MIDDLE | BOTTOM_RIGHT), + RIGHT_DOWN_LEFT_TRIANGLE(3, 6, BOTTOM_MIDDLE | TOP_MIDDLE | BOTTOM_RIGHT), ; + private int row; + private int col; private int mask; - Shape(int mask) { + Shape(int row, int col, int mask) { + this.row = row; + this.col = col; this.mask = mask; } + public int getRow() { + return row; + } + + public int getCol() { + return col; + } + public int getMask() { return mask; } diff --git a/core/src/com/me/brickbuster/layout/GridLevelLoader.java b/core/src/com/me/brickbuster/layout/GridLevelLoader.java index d9f8579..4ad351b 100644 --- a/core/src/com/me/brickbuster/layout/GridLevelLoader.java +++ b/core/src/com/me/brickbuster/layout/GridLevelLoader.java @@ -5,7 +5,7 @@ import com.me.brickbuster.state.PlayState; public class GridLevelLoader implements LevelLoader { public static final float POWER_UP_CHANCE = 0.15f; - public static final int COLUMNS = 11; + public static final int COLUMNS = 10; public static final int ROWS = 20; public static final int ROUNDS = 2; @@ -19,7 +19,7 @@ public class GridLevelLoader implements LevelLoader { @Override public Level getNextLevel() { if (playCount++ < ROUNDS) { - return new Level(new GridLayout(state, COLUMNS, ROWS, POWER_UP_CHANCE)); + return new Level(new GridLayout(state, COLUMNS, ROWS, POWER_UP_CHANCE, true, true)); } return null; } diff --git a/core/src/com/me/brickbuster/state/EditorState.java b/core/src/com/me/brickbuster/state/EditorState.java index 0499c76..a56babf 100644 --- a/core/src/com/me/brickbuster/state/EditorState.java +++ b/core/src/com/me/brickbuster/state/EditorState.java @@ -46,6 +46,8 @@ public class EditorState extends FieldState { @Override public void setup() { + super.setup(); + world = new World(new Vector2(), false); world.setContactListener(new Box2dContactListener()); @@ -62,6 +64,7 @@ public class EditorState extends FieldState { @Override public void render() { + game.sb.begin(); for (int col = 0; col < bricks.length; col++) { for (int row = 0; row < bricks[col].length; row++) { if (col == this.col && row == this.row && !blink) { @@ -77,6 +80,7 @@ public class EditorState extends FieldState { if (!blink) { placeHolder.render(game.sr); } + game.sb.end(); debugRenderer.render(world, game.cam.combined.cpy().scl(PlayState.PIXEL_PER_METER)); diff --git a/core/src/com/me/brickbuster/state/FieldState.java b/core/src/com/me/brickbuster/state/FieldState.java index d5812cc..f7ff6fd 100644 --- a/core/src/com/me/brickbuster/state/FieldState.java +++ b/core/src/com/me/brickbuster/state/FieldState.java @@ -1,14 +1,24 @@ package com.me.brickbuster.state; +import com.badlogic.gdx.graphics.g2d.TextureAtlas; import com.badlogic.gdx.physics.box2d.World; import com.me.brickbuster.BrickBuster; public abstract class FieldState extends State { public World world; + public TextureAtlas textures; public FieldState(BrickBuster game) { super(game); } + @Override + public void setup() { + game.assets.load("textures.atlas", TextureAtlas.class); + game.assets.finishLoading(); + + textures = game.assets.get("textures.atlas", TextureAtlas.class); + } + } diff --git a/core/src/com/me/brickbuster/state/PlayState.java b/core/src/com/me/brickbuster/state/PlayState.java index f1672ab..0e873ba 100644 --- a/core/src/com/me/brickbuster/state/PlayState.java +++ b/core/src/com/me/brickbuster/state/PlayState.java @@ -2,6 +2,8 @@ package com.me.brickbuster.state; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.physics.box2d.*; import com.badlogic.gdx.utils.Array; @@ -19,7 +21,7 @@ public class PlayState extends FieldState { public static final float BOARD_WIDTH = 54f; public static final float BOARD_HEIGHT = 96f; public static final float PIXEL_PER_METER = BrickBuster.BOARD_WIDTH / BOARD_WIDTH; - public static final float EDGE_PADDING = 1.7f; + public static final float EDGE_PADDING = 1f; public static final Vector2 lowerLeftCorner = new Vector2(EDGE_PADDING,0); @@ -53,11 +55,14 @@ public class PlayState extends FieldState { @Override public void setup() { + super.setup(); + // Initialize a world with no gravity world = new World(new Vector2(), false); world.setContactListener(new Box2dContactListener()); bodies = new Array(); + //levelLoader = new FileLevelLoader(this); levelLoader = new GridLevelLoader(this); currentLevel = levelLoader.getNextLevel(); @@ -75,9 +80,11 @@ public class PlayState extends FieldState { } long start = System.nanoTime(); + game.sb.begin(); for (Brick block : bricks) { block.render(game.sr); } + game.sb.end(); for (PowerUp powerUp : powerUps) { powerUp.render(game.sr); }