From e57b3cc55087e37d7ac2816c0c3ca06d0f159a90 Mon Sep 17 00:00:00 2001 From: ElnuDev Date: Mon, 7 Mar 2022 19:40:10 -0800 Subject: [PATCH] Add background, bitmap text counters --- assets/AnonymousPro-Regular.ttf | Bin 112280 -> 0 bytes assets/README.md | 3 - assets/chars.txt | 10 --- assets/strip.sh | 3 - res/background.png | Bin 0 -> 3550 bytes res/font.ttf | Bin 6132 -> 0 bytes res/numerals.png | Bin 0 -> 291 bytes src/Main.cpp | 116 +++++++++++++++++++++++++------- 8 files changed, 92 insertions(+), 40 deletions(-) delete mode 100644 assets/AnonymousPro-Regular.ttf delete mode 100644 assets/README.md delete mode 100644 assets/chars.txt delete mode 100755 assets/strip.sh create mode 100644 res/background.png delete mode 100644 res/font.ttf create mode 100644 res/numerals.png diff --git a/assets/AnonymousPro-Regular.ttf b/assets/AnonymousPro-Regular.ttf deleted file mode 100644 index a98da85573fdb994a11582261fc83e1a2d6963a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112280 zcmeFa30#!d)jxjkGYdNmJBZ@I00SZpFsz~ovMVA%#K9erP1zI>iM7TWMKos9xTIN) zbxBh@fOU)68<(a{Ow*)qHq$iKRNrh(ZJR}g-}l^So&l_B(*FB4`TRdc=RDh8&OPVc zv)%j5FwPj$0jL?9Im?tdZON0jGRDv1?&6Bv8J1-~S~-a^?>{i6`CWBWRqNe8fp?>D z8e^*8SFdWiW&X?==kC-?U1L}6U7rWK zFxLD(j2ApvzqDy}*U}kB7z_M4V=n(wUsJVoF!o-Y^E**Kr5-n2>!cTP4IEfReN+4D zq-DwH8FL;D9Dd)}QeE{Y-QKl~dEl}7_f1u+Th*IYRVa_=Oy6A9RI~ivB{7Vd8yU-3 z*4on6e(BMa-!c|&lwe_`m(89{5J1{EzWbF&8GGIX*auBgi7PvMT1pET9ij ziZNH*W72-{6nC^+ZClaz!oh`u@2S_=%ZP#ka5j#$u(_;@tzlbP2kQZ(>oqv*;PX)? z*tQMb?q$ImKNgH@>V>oC)vv8@U*t9EFDwM)!{6z@iwYszH#%(bp;vPs-? zD^{Mm&r;4js>+>3Nt$cBuRT^*QoYquUPK>jv zsTtHj=`EFLV41xE9K|iuK%7-Ge!AYOiYm3-WU=0o8)D7MtqchZ)8|>AF11*n&J78x ztcnAt=gp8qPk7>uewiA}2*QMxKuRh0*tSPJeywb4WjCJpFk<+70X>&VX|wFXQFFxeGX7lY*qv z(*LM#Rc!{&x2qlj&W{4;XVhHnslG|QP<>~p6zUop8k!Ya5xO{ZS?DdHpXz<}LHf~p zy}&vB?{M}WhVxQ^bHvx+Tx!Re{q?!e2EQaN#Rvbw*x9t~*V&jX(h{Au8mfsbvc2R^#?`oM<+j}M$2I5BX1VDle>{^0Wm_TKN_`{jE- zfA7?L2j81SHR$hm8-BL~pH;u}dN<^q`gb}n?6~mIg&xK(^juhZq2k?qdhpWp;)AFM9~~ zS~(7#uTXGhr2*t3|k{p>l++o#z^wo6K6=cQ({YAj)h zbb}uZzRx?@DU8;DyPv?ubg-DgcW~~?LIBl+pRt6&&jv5!{wEkK!w3!zzBBkd?tXxl z@J}314%*}^T)!iKgyl;Ze17nm!OK(zEo@{bg@(B(O0z-R;58=KJPBKzfTzsf9!>`T zDz4rgya+7cWhQo#Z$s&8Xz_WuZ|VtUhW+8G_=lEGg10BBHRYdzpXkLISAIAfD_S6} z_bJ^6uCHLk4Ce|iv7&j}AP>dx4`|Pb zprNB@b}m;0|GI{|qh^=kgPRT(tBK+O~gi4Q|^%!Ql4r4>hj*4Ye`i z47`#hBLT9Zd`{x-o8aNAqBXQYR03xf4K8AVgY)PgT?<@f%9Fg3oXA(qPJ3`2n0_#L z86{8J`R9&uWFZM>qd0SCF`_Q$P1i(y0fiKcnL|<~X2{^DL`QKRjC+v!!4CT!nOpMM zsOB@6dE#pDeLBh*3I0Kn1V+@G{D--T5?6&3P#p&O|AaUzYRdKHd5ZFo#PEUC&#A%p7-XMs zBW@@kQH;PVxbq7BiNCKpm!A%YgC8+x%(qW*uMoYsik^rE^p|G;_jBGUty5K~npOR( z&((SAF7;jNN7TpFztVJTp4FPP7oFmro^}4d^J$l7U4P*EnCokt;b?gScS^vYZ z@~~&a$Aw$M_Zr*`Ifku&#NCnF$R{GtMZOyOZsdoNpGRq;yrafM#Y81X zeH`_r(aGp*9BYg?zrEvTw=0JNu{EXQ%p4oj7&Q)GbpVnRE)YhZd!5ED`oX%?PbTxo-2E4mglTdv!Z4t&dQuMZC1ss zC9|4mS$pOUvh%*OxyvJA3ww*_E?vX0MpNc6QI~duBg8`zNzc%zl3M z%d_8}eR=j@DtN`?bC%3$o^$h@O>^#^^T3=(Eq<1JE&DBfmM1O0u)JpZz2zgz7nRyd zpUMa4j-DGmH)(Fx+~T>Gxl8A^&i&rp&2x9m)6Vmm7dmg;yp(xU=atNxJFj+L*F5XI zQ}fQw`^~)H&HG^9XY7i?Yd>xJD5A7A*zBIBafi=J9+So~s@ zwyL^nf7Rzp%9gxcJ*|3g_2KH1)u*d}U45bYO7<-dEF9^W)lE>tgB-){m|4s~>F0 zY`A+_$g+~<((<1)mNZ^!>S=nt`KIPSwZykU=`}5Dp8cNx_a0j7v3ADV2iE@O`-R^>xXy1~^DVktj;@bg|H%)|Y?!-Y-G-NM z&As&}8)t3&;l=|SFKsH>^x&pT-FJ1L+uYeRrl+;%;Fe8WKHh5Dx^C-hw~fE;w%b16 zR=(}|+ZWva;_YwTvHXtCJKn$Z{yX2l^Urss-*xKl)VojI{ruf8Z}-`rzy0Rzo3`J* z{ekU|Za=#H+3hcGe`EWl?VoP9?Qq=@up@lOgdG!il`+xuMaOS`Y(zTNkoyWi>lvipB<|5Fb*J&^Q3+XIh3@a}_t z56*aS^Mk*6DD9y+54Aq@_(ShM9Q|<5!;e4w(cTGr7d(>w2>EAFq>R%ab7!A94W4Qvcx z1PcX>WMcuNm>$pw_!*04VSq6#9B>>n0LHQi!0~{8V{t4JZ~}`0G%+J!Jc|ZQfVcWL z#HBItAIxkVU=oW3OlIQ&Q&=2eD&SvW4<-PnGZWxM77v&K`}P+$i6sI~2E58LnHg{j zO9ISd$$;4`1#l|hpIHt|1fO#w(FrQ5XEMOUcg@B*3A~p$d8k-C_on-bExDfCowuqGgE@m?Ut5_-E5_S_{HQI_EO12QNjV%If2fTvFWij9? zRt4Azzw`>Cm}Hxpb>H*gQ{tt`-mi(05`E_z;4z8xS6#A_OKOzTL3R1W?Kn(8*2mH#@YdIXB~id0A6HwvQ>b0 zu};9d*=oS;tP5}lyBY8vz(25^Yz^Qp_C3JeY%Sm(_I<#60pCNMxDN0>b_?MBY(3xu z><54kvJHR_0sbD*<*k5w*+#%e*e1YztQ+u0fbX*XY%|~i)&qEuZ2>&QwgNuNZUg)= z;O`JyZUg)YyB+W_y94m2>`p){;5)3B-38dk?gs2<+X0WT9e_V$_W&LRyugmJoq)&L zF2ECPH{eOO2k>#gw-Ni@3-|>4A>fnjKES8g{eVxi2LPV|d<(JUgMiPmhX8-h9tM1# z?FBpy_$H#lM*z>VeSqiKj{twc_5;4a4gmfV@D0Sn2LWGXhX7wj!+39RYj`kRsoo0bXE70pDTA z0Ds4h1HQ{n0RA5EHN^NQ0sp`r2fPTM^fg5GPXN9T_$uQ1Cjl?BrvR_8rvd+$Jp=dw zdlv9Rz~3Nde-7|t_H)2b*z45nVkW=%FY7*g`ETZEBgiD-`ER)p8@`w zea?Of_yzkF;Fs)0z-#O!zyZLQnT?$X9Aqy8BKAf|(eA4G@85qZ@SmgrV{Y32{{5E% z|49lk=I-?0zyDI;KS=>B3;id%`)^I$8<9-(Vi%ABy3x`@`M@x+`J*Rf|0e z&WPw;5y`tFg7-w^u0zD`gGk*E5qbb3^B_dzqY#OYMg$&;$XkzyI~u4ryw#;Lqt3gk?u4MWmaH2sa;*Z6PAs zX^3Qt5y6%qaxF!~T82oq91&^-B2x<@(z%F4=OY4Lh{%)H!ImJ>T#5*@7LjE=BFbfm zBpVSyHY0MRwXKzi6lra16(YmchzM^6CBBCUkXE&BLBvPvaknDE+l0t&Ga|Yzh~#cV z1a~_kw>uHB-Hk|X2O_kch|G2)BD)un*nNn=9zf*v5F)O>L4PjN7;|L zgb3;|A}6emiFGkrAv=o5=r|&xlZb>)aTTJUrx5i#gJ|bDL^;nRx;cZW=A3;c?^j|K z?>r(FTEF`ZB9zw4>65D(^~cnBZO z$M8_Z5})(2T+hRJI5+SJ9?7G)kw^0wK90xo@jQ-CU|(>PSffwmW}d{8c?wU(s%ko) z$TP6EIvFw1dpwg*!76JupUQK1F3;onynq+-B0h~z=f!*mFX1zJDOUN*u+Cr3XY&fg zEY}c0UF37Pg;!!-cOIY57x0CA5ns%!_!3^tm+~53%j&Uf&8_)fly@8)~>z5Iv#K7K!cfIr9|;t%t^{1Lv7|A_DB2lzpLh(F4I z%pc=F;fMK8xs~_wKHkrd@SpLc{1`vZPwZHg1^9j$$!OP{3I7xSl>eDu<$vLS<$vR!@z41e{7Zg~4{#fH zP%w#0lBANPLi|aBDqR#lDp&~c}iZAPV$y~Bwxu-@|OanK4(j8e1|BaM?{rSVdnG(j>+@lt}6D4C@s_OX;KrAVn#nv^b0 zlrp4A(qt)9nj&RM+0s-gN6MA*qv!x1Y zj%1N4rMc2PX}+{TS|}}&7E4vq5~*5RD%D7}Qk_&UHAu^(6BsEJdQmeGWsiV0e zK0Z5Mo!7Cl#jU!fsi~@}y1J&h-TolgDZ8nvdSy$qQRAL+7qJOIzCIhFz;2r`p`=Dm1NKDj#yuPgT29p1s2w zdxv>)hc)8hn&+tPTH`o%%CnWoBDrRa?D$-ZFIVK5G~$+}nm-2tAOPkZnIs)wH)Xx3qaI zZKzpU)7H=?u3WPlTkEUDse4{)TLZcl7tVR@@?DoA%zpX#%%%oXC-TMYVTE01Hr3S0 zg}fV3d_)f#(Sv$wO?#E5pbAP#pkq!?a5+xzISonO}$eT&XHZ^i=^J!}_4 zqQ*4K#gH1skYpN6&5@crq}2^hE%LZjE9+adZ8WF^jX0>KYxk)rgGkmP7D!O=>Bqm=|lD~XO)5*@81Dy_sPI`B($w3q0>FVWF* zqNC+RN6ThM%VtN*W=G3r2Mx@QKFp3j%#J?Hjy}weKFp3jk{o>`Ir>O)^pWJ~BgxUn z5M7cSeIz;hNOJU%HeWW}3NO$y+?&u@k(MP(Y zk90>L>5e|q9etz@wW9Qa8Df{+gm~p?LcG#PLcG#PLcG#PLcG#PLcG#PLcG#PLcB7L zgm_0E364I7a86e4#iyr{%1FqIPqZJ+_M_15xIb0CPRO$#^W|ewy#1IUACpt;$5i>4 zVt<}uf1YA*FJ-EBPTk5Xc#EC#VU937+D>tBnWLy3mrmtOTPYXp5(hyqC>HxjQxeR{ z0`o+3yudusoFGP&XvUmvX>D(4Xnm|qa>w^1f?BugIWf8@kd=a z3M(xqDflEQ_#`PUi(yf%WXAvOW>6*U)oUB)Y81vrMkYRdU;dT%H^82`i9ze z7Xk6U$#S<DG%UynRZJKC9u%#jJ%8u~W@rP`29l5;pq zQL6>_ssWosi%s?xvv4i9-F98eO6eF;z7tQ|ktfn4uT+CpYk;R($gJ!A~~UQnkIa0wvE(2$f@2`XeG zk4h!mF}L)Pv*Gis4KhjdwiS2VAUPyUjX1X8ZXM>~Oh|UIkaZ8t!*Ao?@HtV6OmT@A z(@Y%8aaN4^k|XZU0{p5Op$F!qi&8}08c=E_W*=#cE^(i9R4UHCjq$|^>Xt$y_E1t9&wcl~l$yRF~wl#@?>16vUlIt7ko@2G#8 zmt-xf0f%Tq_>=7-Iiwk{2M+bPrZJO^P}(O>DVWGlCc8*D5$%R7wQ`3nCt2=Vd`6B* z9;3_?(m_kW3z9>*FM3K+N0g}&m=TV|N99_^RDMpS^>|97B`ioPshuUFzFd-g32Kp~ znP?$vWU4nbG8zL>wi@L+1l~%IR%k1GFkelP8`D|to$$F)eVLB+7)>XzAR4b6Mp*?DnZATQ(UxRH zmYv~#l|q@JSwIx%60=p&93v%tIKI^O3h=K%(1<7^>oZyV43`^fm1YFhp!qD%&f%C4 z-EZUx5(QdNi)gKktP1$GVpPN(xm{%(RJIxz4dF7RAC=LQ4VR@>miv)-lBCK~P$S0m zRUD9Yg}gRf1Z!Iads_sZQ34-Tk9FUCU?NlFdhaS6&xsDT_>k67#-LzBd?NXi^)~4R z;vbd!dtMHozxo?`wS{Ph<~sEijaJCgeKWet^NQxHEI(xVh~i2tA=6XVJ#A={G`Auh zGA9+yJzQguKA?Hn0er~cC+aIBB<(=@fUZgQM|xkw=fp@Z%esc>EpsLO8^teQ#Ro-} zhR^agF(ayh*>F8gJW)nY*pY4_IxF%cThZ%dKe7RYG0g;d#>jk8aG!}5C{iS*lAkw0aeGtkpW%U2<& zr^IVtHBN;;H`0un&7k1X?bQXtP2nvXQ^s2^Ek$o|Xvmu8>h z0g_D0yi$BgWmF1I|41?v9ZMRx1~x|z*bKWvdY{Ii$g#rNY(Y1&Pb;AbZ>;SU$`B`r z<8`8K*^W``@@UA%k?+Ztx(-)ld#OkHKFuSd0C}n8Sk>;Ppe$Rg&z5CJmIR7SYlK8Ae3QMOk)v)wtE7iW4is4+-(8NfNv=l9 z<5$ZENuu17?EBEQ;^%hR{Sxy3<#U;H3Wh_z9@QH1h2^p|_8Vy)DogSs+X$M;jU#Gb z?@5!r8){p5Dvwl-YyP>>$~r=c*ObvK5<;_2i5L{hQeT9x97)l68?p_QBg0!$z`X<` zrDrn7hwR5!Q(g9kXkIHbN#+-|LVBBervBu}jG}p>5#e#Y<{@fQX^MERw>plfOwA&^XCT&=tvp z6648!-bndWygtH{Ri^kz-%8f4EA4Z~Y}XnTQ+?g+ z{8#3Q+}n`sl>sLj%|BWX7#>~75erd<=t!{|$tCH4A?r+>BZ-sk(v2U z6$v37Poq_$2t`t;q)bc2k`tAQkIJYNPAmDSB*AOKm83~&PoefmEB$q&9;!7wN*V62 z4V4(4OZ`W7NY2Q~Hdu+!Wi29)gmkDpLV4zrB_`gJb|eX)n4M-kjZU6zG)v{I25~}u zLRy37$k$1`+$!F1MSGOBSNbMRyBuv$&V;0Msqm79s7|sp()*KT;Kua$rgWCI<4`X* zrZn+F(LYLA@~!{X*&}U*~k|cq+O|wJRhTkMhK|Lrmrd+k$(?}`&svd{8uSnPMDB-K@rK~Of|B(0kYMGEF z2=Bk!W0?|`?Z|Hp*PA10B=eYN5?Nc)tIgnvtQiz8t-@2vwvr5yh8d##aD8*VuXDZc zO!Y`oWG|ScOSbPa-V|faLcCQBtc##AXcUBXp;$S}7jalQ?##kjKJL#!Ia*)Ri+Z$% zU4|zWxT5@CF7Ah;#4P*saG|;8;3>5@6K`KoTXGv^C`T)AmAFG~(;9h+xSEdg6#bFJ z=HXopc}0t2L@G)65vHYL#g6)jNBh#CetMcV~}yCw@qkuo!Y7t{pXAG5>bol5#u zRjNA(qNR)>aapFu*SAZ0i#%b{YVA0at*>llXkFv`|O*!(Avq?%O?*B5cNO*md%p#Q|O-xzYZ!5bi5tvn-PM83q0{6v}!iswRc$p2lYk+8UarI336cjg+YkMBahk?@dp+uv&= zS@V5el=rV?9I4;$PS%mI`6{_1|5%p0|4iPIa8V*)c}<`V7$_Nu>%H;oS2X{9nMXx3 zz6-fW1()G;_%^bSgvWO+|42A}cXE(~O$p`;#ehn_hNAm#I}1s8eO;#L+sQ)`X8(L9 zl4^aIvXO+(^){0%Cas76XY!GR!PnU;vf`8l|G&&g5*}YCY0At{{24{N5BH~)GO`u^ z*K(4C%Z+mSa&Cs6eit&6gvU_E@Y~5v5)L==I?4L~=dzQ81^FSgdLesd!}}&FxzYOJ zzjt3A;Xv72>YpM_MK-@KLrL{+oTZeXd=>7*@Bd_;lCV*-(!(>AbpJ-#N*Vj_M!u48 z`7UHE36Jki&XTYh%4mK2Sxds_yOXyhY$*42efIj>%3KmYBQvmMmA|drC1Imv5DAZO zD|<y5lV6RQPVRJgc+G>SD68x2(=OD?e}Lre3xCRV&l=YMig)tG@CqR>>67 zEBR+uiVKDd=9O95tJYq%O1fUH_G)}WSeSPh$4Aw6?McJ4ri>IOIW#n|gN9Sut&JP!U%7s81m8$GW1f9=YLv&Wx^HwjN)kna9^Hz7AHAvh?hd3W|K0YDR;BQC{!^e>q}Y z+27!8#_+vW``+#tWF2qguY-%D?eHMGK-bOOx#1ly8~7Zho5f4v+f9M~@~f?5^0ttD2UzR}K8KZAogGIaud9Wzo&KVKw*oOI~BM z%bSX_TIZ#^?%U^@yQFh+u;p$)TTISRx96^2l;Ymy4=rG^zN$zd%qrmF4if{zO+-(3rUprGs43)UhB6z6vl3FH+`1h16mb%O<># zz8_z2cbXAV@Lku^g1+$a3>2`2gZklD!UgrigTrIO)5D9xE5jSYyTW_I_k?kvn;4K7m6(#4pIDKoMZ1X?6Qu=5-blNWCR$4i zPK!xPPb*5ROlwH%O6y76lXeI{8FDVoV?l4G%T;TT&YA~)c$ut$n6j9f{t#<_MaIYA zVhqW+QOdx;lDP&VP@RnoAE0q2TjLKXH5{7 zF}mJtel;t^DLXLRn4OwkfS(nq%kIqX&fb-MAp2PMnQYMFwd_mT(t`K|4i+22CrHG6 zb7H6ziEq#Iz3v|PZwS}=`vsU2Q%0P>Ys{OUWS*ZJ6_q>RoHRer$e+7*YN0B>D<*d# zu5)5ya_D(}%)rTttSJ>0Q?e@fI~G7(S=0%r854t==0#L;(T*=ZoTLf(@^JFpe4{aU zeli*`8gu5Wg0d_Yl($^_vs}@FSvUATnRcgF9JKN^2Jo}?iDVmzcEz%!ntAi&gXcD{P#jf^W9f_E9g88I2@ z8ATbD84Vd-89f<$G7e>&$T*kbu|U>T!C+6YqDD2i&?t;^!G#MhdZV3)`q6>W#^}`O zg6KKXbR*=^3o+%~XS{nU^yKS2Ke$qchVo3o|YF#hBHZ zn=^N39?U$Rc{bC7IHlD(1v(kET7_MyQBlcBDa14}PkBm8Do?}*MZhZ+W@{$qG+5^; zsZRNnX57E<{%J=Vio2Ii3Nd9xX6E+aliO)Y$XwW&&g
ug~q-O09tp-EHLRv6OF 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 X_N$h!)eGl$H@w}we0lfVP}u(;NDbM+ diff --git a/assets/README.md b/assets/README.md deleted file mode 100644 index 80a2b22..0000000 --- a/assets/README.md +++ /dev/null @@ -1,3 +0,0 @@ -### Font - -[Anonymous Pro](https://fonts.google.com/specimen/Anonymous+Pro) by Mark Simonson is used for the score font. To optimize font size, [fonttools](https://github.com/fonttools/fonttools) is used to strip out all characters from the font besides the numerals 0-9. \ No newline at end of file diff --git a/assets/chars.txt b/assets/chars.txt deleted file mode 100644 index 4cae957..0000000 --- a/assets/chars.txt +++ /dev/null @@ -1,10 +0,0 @@ -U+0030 -U+0031 -U+0032 -U+0033 -U+0034 -U+0035 -U+0036 -U+0037 -U+0038 -U+0039 diff --git a/assets/strip.sh b/assets/strip.sh deleted file mode 100755 index 671ee3b..0000000 --- a/assets/strip.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -# https://stackoverflow.com/a/14779443 -pyftsubset AnonymousPro-Regular.ttf --output-file=../res/font.ttf --unicodes-file=chars.txt \ No newline at end of file diff --git a/res/background.png b/res/background.png new file mode 100644 index 0000000000000000000000000000000000000000..7366e2afc90e4205102fdf0cfa5624249237d3a5 GIT binary patch literal 3550 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 GIR8(FBonXz literal 0 HcmV?d00001 diff --git a/res/font.ttf b/res/font.ttf deleted file mode 100644 index 4549f3969fc6de35262ea554a2e87a20fd6d2343..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6132 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 diff --git a/res/numerals.png b/res/numerals.png new file mode 100644 index 0000000000000000000000000000000000000000..f3b9a9dfab44278e501868d443d11c280eed00a4 GIT binary patch literal 291 zcmV+;0o?wHP)Px#-AP12RA_ijrq zy&li+0s!N%cK~2aCVIHN9!-MzbXmP~oz))gcWXSO$2pn~jsZj_twCF9UU=pbR=-hQ z7TWk(x~%y{zmuhdV*nA=F|zPx@_l*MQc9uI(pHCv>NTC^2vJ>>?D-LJ3?S0oF*w%B z;rA-u>U!^*#@f5d5joNOq}Ce4J3lxE5K$eYSM}ez2Y>7Ikv-n1aeL!}V*ru*FaJui p_wHW&N}O;EAcDjIB1jA%@&Ro}f3dg>vwr{p002ovPDHLkV1nTce60Wg literal 0 HcmV?d00001 diff --git a/src/Main.cpp b/src/Main.cpp index 7f4edad..06e9c0d 100644 --- a/src/Main.cpp +++ b/src/Main.cpp @@ -4,11 +4,15 @@ #include #include #include +#include +#include #include #include #include #include +#include #include +#include #include #include #include @@ -18,8 +22,51 @@ #define GRID_WIDTH 14 #define GRID_HEIGHT 20 -#define WINDOW_WIDTH GRID_WIDTH * TILE_SIZE -#define WINDOW_HEIGHT GRID_HEIGHT * TILE_SIZE +#define WINDOW_WIDTH 500 +#define WINDOW_HEIGHT 440 + +#define PLAYFIELD_X 20 +#define PLAYFIELD_Y 20 + +class NumberRenderer { + public: + sf::IntRect numeral_rects[10]; + sf::Texture texture; + NumberRenderer( + sf::Texture _texture, + std::initializer_list _numeral_rects + ) { + texture = _texture; + sprite = sf::Sprite(texture); + int i = 0; + for (auto numeral_rect = _numeral_rects.begin(); numeral_rect != _numeral_rects.end(); ++numeral_rect) { + numeral_rects[i] = *numeral_rect; + i++; + } + } + void render(sf::RenderWindow* window, uint number, int x, int y) { + auto number_string = std::to_string(number); + std::string numeral_string; + numeral_string.push_back(number_string.back()); + auto numeral_rect = numeral_rects[std::stoi(numeral_string)]; + int x_offset = -numeral_rect.width; + for (int i = number_string.length() - 1; i >= 0; i--) { + char numeral_string[] = {number_string[i]}; // stoi requires string (char[]) not char + auto numeral_rect = numeral_rects[std::stoi(numeral_string)]; + sprite.setTextureRect(numeral_rect); + sprite.setPosition(x + x_offset, y); + window->draw(sprite); + if (i == 0) { + break; + } + numeral_string[0] = number_string[i - 1]; + numeral_rect = numeral_rects[std::stoi(numeral_string)]; + x_offset -= numeral_rect.width; + } + } + private: + sf::Sprite sprite; +}; class TileType { public: @@ -185,6 +232,26 @@ int main() sf::Sprite sprite; sprite.setTexture(texture); + sf::Texture background_texture; + background_texture.loadFromFile("../res/background.png"); + sf::Sprite background; + background.setTexture(background_texture); + + sf::Texture numeral_texture; + numeral_texture.loadFromFile("../res/numerals.png"); + NumberRenderer number_renderer(numeral_texture, { + sf::IntRect(0, 0, 14, 16), + sf::IntRect(14, 0, 8, 16), + sf::IntRect(22, 0, 14, 16), + sf::IntRect(36, 0, 14, 16), + sf::IntRect(50, 0, 14, 16), + sf::IntRect(64, 0, 14, 16), + sf::IntRect(78, 0, 14, 16), + sf::IntRect(92, 0, 14, 16), + sf::IntRect(106, 0, 14, 16), + sf::IntRect(120, 0, 14, 16) + }); + bool rotate = true; bool move_left = true; bool move_right = true; @@ -192,17 +259,9 @@ int main() sf::Clock update_clock; sf::Clock move_clock; - int score = 0; - - sf::Font font; - font.loadFromFile("../res/font.ttf"); - - sf::Text text; - text.setFont(font); - text.setString("0"); - text.setCharacterSize(24); - text.setFillColor(sf::Color::White); - text.setPosition(8, 0); + int lines = 0; + int blocks = 0; + int tiles = 0; int update_interval = 250; @@ -313,16 +372,20 @@ int main() } } + // Clear window + // Normally, one would run window.clear(), + // but the background image covers the entire window. + window.draw(background); + // Draw block - window.clear(clear_color); if (!landed) { for (auto tile : block.get_tiles()) { int snap_y = tile.y + snap_offset; sprite.setTextureRect(block.type->tile_type->texture_rect); - sprite.setPosition(tile.x * TILE_SIZE, tile.y * TILE_SIZE); + sprite.setPosition(PLAYFIELD_X + tile.x * TILE_SIZE, PLAYFIELD_Y + tile.y * TILE_SIZE); window.draw(sprite); sprite.setTextureRect(block.type->tile_type->ghost_texture_rect); - sprite.setPosition(tile.x * TILE_SIZE, snap_y * TILE_SIZE); + sprite.setPosition(PLAYFIELD_X + tile.x * TILE_SIZE, PLAYFIELD_Y + snap_y * TILE_SIZE); window.draw(sprite); } } @@ -330,9 +393,10 @@ int main() // Landing (transfering block to grid and reinitializing) if (landed) { if (block.position.y == 0) { - update_interval += score * 10; - score = 0; - text.setString("0"); + update_interval += lines * 10; + lines = 0; + blocks = 0; + tiles = 0; for (int y = 0; y < GRID_HEIGHT; y++) { for (int x = 0; x < GRID_WIDTH; x++) { grid[y][x] = nullptr; @@ -359,12 +423,13 @@ int main() grid[z + 1][x] = grid[z][x]; } } - score++; + lines++; update_interval -= 10; - text.setString(std::to_string(score)); } } block = Block(); + tiles += block.get_tiles().size(); + blocks++; } else if(is_update_frame) { block.position.y++; } @@ -378,11 +443,14 @@ int main() continue; } sprite.setTextureRect(tile_type->texture_rect); - sprite.setPosition(x * TILE_SIZE, y * TILE_SIZE); + sprite.setPosition(PLAYFIELD_X + x * TILE_SIZE, PLAYFIELD_Y + y * TILE_SIZE); window.draw(sprite); } - } - window.draw(text); + } + + number_renderer.render(&window, lines, 477, 242); + number_renderer.render(&window, blocks, 477, 322); + number_renderer.render(&window, tiles, 477, 362); window.display(); }