From 8b8d38ef40d5c9e6f1e1ae5e4f94d6b55c518106 Mon Sep 17 00:00:00 2001 From: John Date: Tue, 7 Jun 2022 14:47:07 -0400 Subject: [PATCH] Add bomb sprites, text box, main menu --- img/misc/bomb/sonicExplosion00.png | Bin 0 -> 3840 bytes img/misc/bomb/sonicExplosion01.png | Bin 0 -> 2554 bytes img/misc/bomb/sonicExplosion02.png | Bin 0 -> 3716 bytes img/misc/bomb/sonicExplosion03.png | Bin 0 -> 4758 bytes img/misc/bomb/sonicExplosion04.png | Bin 0 -> 2187 bytes img/misc/bomb/sonicExplosion05.png | Bin 0 -> 2167 bytes img/misc/bomb/sonicExplosion06.png | Bin 0 -> 2282 bytes img/misc/bomb/sonicExplosion07.png | Bin 0 -> 1464 bytes img/misc/bomb/sonicExplosion08.png | Bin 0 -> 1617 bytes src/MenuPanel.java | 37 +++++++++++++++---- src/TextBox.java | 57 +++++++++++++++++++++++++++++ src/TextManager.java | 28 -------------- 12 files changed, 87 insertions(+), 35 deletions(-) create mode 100644 img/misc/bomb/sonicExplosion00.png create mode 100644 img/misc/bomb/sonicExplosion01.png create mode 100644 img/misc/bomb/sonicExplosion02.png create mode 100644 img/misc/bomb/sonicExplosion03.png create mode 100644 img/misc/bomb/sonicExplosion04.png create mode 100644 img/misc/bomb/sonicExplosion05.png create mode 100644 img/misc/bomb/sonicExplosion06.png create mode 100644 img/misc/bomb/sonicExplosion07.png create mode 100644 img/misc/bomb/sonicExplosion08.png create mode 100644 src/TextBox.java delete mode 100644 src/TextManager.java diff --git a/img/misc/bomb/sonicExplosion00.png b/img/misc/bomb/sonicExplosion00.png new file mode 100644 index 0000000000000000000000000000000000000000..7c21be8828882bb77e586c846c53079adc4ecb42 GIT binary patch literal 3840 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 literal 0 HcmV?d00001 diff --git a/img/misc/bomb/sonicExplosion01.png b/img/misc/bomb/sonicExplosion01.png new file mode 100644 index 0000000000000000000000000000000000000000..dde15294b8e3e1038c49bdb20601be1c04eeb7a7 GIT binary patch literal 2554 zcmV`-@}hA0$pHP=JnVBJ^RI;Pe>3&Jp8U!J{mvTx%?teBbNlbQ{QUg<{QUj> z{o~`~_V)Ju{r&#_{{8*^?(XjU`}_0r^Z5Aq_xJbx{r&s<`_$Cb_4W1n`T73-{`~y> z{r&y?{QUX(`ThO<`T6gxXf{;H~~^78Wd`1tzz`Tzg`{N&W|dMx_VxbcHJ|Ke}| z+fV=4KmYHq|LBkKavuNdpa0Sy|Mk!R^1uJpFaO_P|M=hk&kz6m@Bih0|I7gY|NrA@ zqF?|306cV3PE&F}*o<=TUyN@LufOG)X3S2y79$^w zKL!~r!m&sbwi7_HtpmArq>$=SsHacW3Xa#Xh_MhSn1$7d(;_uHnEjmIa%FCT!h#WVvgBCY}1fC<_kZ6^0~gJ zIe*x{)V`O3^aDz}I&ghFt^hPxm}}srB$q{S^}*-*bY7cCun^Zx!AngFr+xIbkL7;& zY>3DpuyHnKWX$=;fy=!*eg7B-R^-ncBQIqc9hal)zJ5BX6fs~r&(-o$m*0>0P`LH?VA@bv-A7l z3Sf`w#YiyU!Ia0x#}{ui=L(T&QDDbJ`sEuR?cMvVxk6+mG1xh>zW?^|h<4M@7Oc;m zrN$yK{pmpT&AS8He;IT6WbARErwhQk&p-3sKzgo9432%^bo&y?;Xo^Ik3&?ZjJiAKeqPN@UK0A>C|+`-T_?h(&Lxq z*_s$XYw_z+;rDM$S^;vomnFF7$*4)j^bFP@TJph-2AlK$@<6m@;|$iLS#k+;?Ji!v zeXvAU#@VuW0xQz;iVcWmGO^TNa^{R*noN#SJc0#XtS#qY_u-YdSQFi>%{rOFZs73= zj}yj%cOG_Ya7f8d^9VMhq||mef(e6r&>5}Rm@#0JG9QfOVqt}?ZPYSxNKSSDV>Ze@ zSz(b|j!95ipWQAMCV7pGVylqCHrSB2qC~Q>57wpl{?4UED0_`xm?~4nV8P;ie@~9- zfvC49c>e*6vM58AjL#fQv@O|X$%0LYyQGQ8kkHzla9|n%%pxl+pfZa9rukrmbl>Jf z81}B=BsL-O=fL95Mf?_tI<L*KBW>=59ey zT3nf6#DPueHxK)T^RSLPRPr$}HhEK-8UcHJi!WVlR?gg_rerv2bH_KGQn9vOmtJ9# zDE8}z62XvC84eZEqYgjzl5nY1VB#yesImu2V^O7TbAts77gf4R%TQ)y$$gGox$Hsw z09GS;KTwBq=a9u#mmgfOFcuBESnUYbp_MwfKt<7V_+P!96Knkw?rub)IBY^SSS#pE z_G(8yu>-|nrks8wd;Q>B%ydo?DyL(vAZ~zi`jmM02Dw?3ST-?=JzYR_s8=={5*g~6 ztHocx$z5`7c6hEGDw2VhTCq2&}@`Cp7G{Hrg}5g}LVUCR!Px1wCz3z;|ubE+7BIblxYO z<<=(t=R5Fan*zQBRJ|NU1>XV+o&r|$b5o*>;he9Ndh1INub!PVcadKiAoVT?^lUvyBGR z%o~y-LO$2e!nS72j64@W*$_QV4}o#U%r?$e4Y46ZT{bnYEvb+jmr;vum?{}LS+g9| z&>m_r)3RXt88du zL%O?D{{}P3K|wW%-=-MQs-bBPO?*3cGlzEUXf6R5Fy}(OO9Sgp#m>DDwfxs}X!#Em z1PDVCfT0rC33JEFH9YcyI96hs;nk3N_VtdEL)$YQ zD^kZ5))S)*>lqDrtS1_F*Q-;07jYz}{On2E+)0TcqMee2+Il7OfK!>VtK$;M+lEpz zVI>FE7Q4v!p>>OLzd?SquRqy$7OA=6EXi!&1T%+EboFk7=Nrx%$;To857ateD}Asc QdjJ3c07*qoM6N<$f^+^H2LJ#7 literal 0 HcmV?d00001 diff --git a/img/misc/bomb/sonicExplosion02.png b/img/misc/bomb/sonicExplosion02.png new file mode 100644 index 0000000000000000000000000000000000000000..b3a40bfb22db4e5c57149be00f9c7fcf60f3abbe GIT binary patch literal 3716 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 kpe6-rYKBJK>T-&}9`KzWp|0TW z0000lbW%=Jd8oy_pV*a^&+D@5;({#oZ$_xk#k?P%IeA$Oj6Z_nZw68m*cm3WU-gVk zGXQ2C-NZQn00%osL_t(&-o2Z7WBE)F$G0a%tEj685g~|ewWW2%`+rxDGxnI->_&di z{9Amw*LRMcC6h$VJ)5oj4RSrS-=&OslUW~yFFA=b3n}QYRw==2^j+U|_$-W^No#^_Y z9WXX5r8=fVR)P_)Fyg2uc6o4~fRWaaRbU?;Z7+zjUQwKYcN4G;?yT}K(6N#gp(4a= zg*&A{*WT(}Fk}D*R=Cp+^leyF%{2~ofdRh-Mpj~$+R+BLuI2_oyMyj)94v3GYG7<{ zs9>XDN8(!ie*XRbJJ`psid+uAt_zkAF}txgU#o3stIrKit|E(!f(wd?-u!F@o39VH zkcU64!;uKl^$(qJqL=Hf!hZgi!qz_jLQM}W4!9Vu?ax+it52RBYWLWV2HP(p`04aB zv(+}z=G>b1E-KA+!%9Lb~R%*Hmlh-3g+TU>xmbQt+vguK z3*61t#Ad+0zDO8RxTJxoLJK4C;^L(EtQi2eaA&kx{A>;FB4I!p$AK$cEXiWOjj7yW z1|mNe?0BFyqpFd=yUC>UIQR9uGi^4r$RhVd;csx@cgQE~L<92*&r+z+6h5)Rz%>@!hj%pUjUIp~GzWtRRGw=B z54asIR!so>0E637N@rid+<@yL_XFeJLHSJ<1`7&u$Y=<-r9+KgViTQvg}|tSl%?$P z3~o^HEPWVpMKI!^c2)?%e5ezO2O?N$m`hQ$4xYr_MWAT5qxQe~M=bMKL_k&klOfmx zWg434?ENcRa>(Iv$Pfne2}=r#bn@xUv#Qo{i@Qc)$Y*c`R*$vD*=6lf5e=01Xn@F> z5|fMyUg;*Xu9Q~{nO6`QeBmy?3i8@bp0f_HpFZ>({ewBRWC8;Pv;4u() z$SSQ-J$%H2%`z8+2ws&-HfI{5ORRU2WWUHr=8y}kk6>5u z|I%T~XmT@(G^WItkO`w(xLh_h!Ez!sm6!N<0Y;bt@zr2yXEBFqD3k;UBh)xpb8Dry z_|_T-*I$H*Y)5$RpV3keMIB_=kt+f|0G5tZHgiu5#gd(9E`4%N;I5pwz^Q4vY37UP zOE|2q9l=Zv5vU~d;E{>JVOlX|TuZ9H5H?$5YKLEN3XxSsKR4(^7loku0Iq@Y5dj#bXl}jD4#nusLXdN;8 zkc%#r2Wqfz-NIFDmnQXT?Sdi6m_$!&>g|Isny@wOsizEj`Wu|kd_-?orKn*cD-^48J!I8 zYj2>vK2eRf^)eruJe528ZLlp{(cR=kz6-F5Z@r_HtCl{MdVO`Xpq)flGt}tZh-?UT z3;zIH(Q0#UjFZI{^jq00iH+JTyx2ys2Ar4JFC)D1$y$BaiSs07_s-|^3uga=li))u zlZONDBtdYLrm4D_uY81~`FOz79hnLCMX{{ib{b4z1f_Im&T N002ovPDHLkV1l@J5bFQ{ literal 0 HcmV?d00001 diff --git a/img/misc/bomb/sonicExplosion05.png b/img/misc/bomb/sonicExplosion05.png new file mode 100644 index 0000000000000000000000000000000000000000..5cdf9145001fe2eb028ef28793e720c8d7e4317c GIT binary patch literal 2167 zcmV--2#EKIP)@x5)vUHApigXw^|>u zSsnlY04FCW0001>QX$P`AIf7K0001FJR>YDEO$aE&}1D;G$|V!8^>ZEiAx_YE-ut& z9RL6TC@3hFR!K4d001F$QchDE5J+lpRSOj!4i^VwTm&HkPKAC6Gb1{TEE9J@9FqVh z@h!B#000M)Nkl4Kv$2!K*eFuC>p&nw@;E>$umZaOQ{1b+5c6t_TqVKZYAgnvL02KWmR z@xqfSZjX77Ji-$x!hH-sayyNppAU$84n^qAhr~-xpt#LPr3nvHT;}7_R0k>CdHzET z_8;t0zbG^ce?CjnY&S(XpC^yK6j^#A#eCUG5u6DzH_0xFO7qxybmBO+hbWH6j)1{- zQEY}x>smZ{DWXw}5$>Sa@Q*saKUKM3TT^A|DNxhwB8cHF8ji%60#${BGW<$83~^o) zwpX@O6}A1ON*T$TX-p{)RkZh~i42m-R)!P|hA5tfB67H96xkV?SS*%{C7v0De;UNg zgE@7WQ9!}F-Uso*$T7oU#valY&)wpz5AjVXAhWnCh8H>GTbyf2#c)k1fQ@VvA8T8} z23F@9kQU4`wkRsdDunfLfIW2FC5}xSGEo zTDICPyt4+(G)NRTpe}FoX!t($UXwDbae&vvB~YjaF-qI`y`^S&mK^CUI@&12Vuq<|`D^MlSkSG0um?g3NPqSBCqC zbtFUpatA5i2FlP>S6q)6Y0az+`AhYZV6(8k!W5}Qk>b7uLo~igCoqR8e!9X8RmEM6 z{Bj#LGwOTkXl4ON!7$q#5cil&DGKDfJdOg5bciYf<2JFJZGEd&hQv*+DzF9FXbCE{(eIYV zV6$j}+LB_MKY|^ranCG8d#@PW^tVv$tq_@U=YB-@gPws#c+{F2B~YtW`P1P|E= z;}Q3KOO4>6lG-3y1&yL7B;v8Mn=J=)1)&&Crrn+@rY-h&OJaO-F%pVV@7N(Q6fydR zqE{UWQw3!~vc`xa{7@vHzv_4g>CC4nC>ijeQlv``9;l{+q}>f=;%Fo3<1KIaei-B2 zDtc;jn+qvg1hdJCBp(U}Y&J-;Nm2!^CRr(hPlcEO{{u0L=IGc;t8OIWhav!c`DvPL z5)`*M!15W}Th9vwLfgFEyc{ zDI+DcFh0h)Br7b@=3~T}D@rS+lv1cQdt?<%fw$7!WM7^IrdrFhSP$0=@z(rA?{DmB zRYOvR!zZyE#f(-hVB=2F#~9&l3*#k?$(NRvm-t zd_WsVPBQuCr480M4D8fG;|}#1Rv}g4{LBH+kOM|P$`hiuY@9wn`2bb=>hRajH4*e$ zz}*mrcYu_UAZOQZy3yP3#fccCq^sld;0%gvVIABUV!Fxm;s}OpURNZEUnoK}e?2mJ zAWv$E^KM*^jA`31;*$p0VOyZ0REM===}1|f*Xl`*_WGV!jiU8S@ufI^-sQH&*8^~Z zE}#UR&qSs8zIAZ%Zm+w|=-3+*rprEt%<%<;0K9(HHUA9R=8<;D7AbH-Y^JfN6qv^+ zk7c8f=W?)0&pH7j+G+_g(j~wAWKHzjQ|Z|y{R<3f%Bt7inaGes$ol~Zsi5#FcWDv^ znMb>SBtF*m=fJtCIcpt+crW7nQxNjB$U5O2K#B~>e|7wd-BE6a3Lri@4A?YLs z-*mS>!PJr?W+C0>NiW&{JDGfvUMrtmI$S^>^XsrkB;RXF@vH5m+mK><+|uafDQ`~#UgE6d literal 0 HcmV?d00001 diff --git a/img/misc/bomb/sonicExplosion06.png b/img/misc/bomb/sonicExplosion06.png new file mode 100644 index 0000000000000000000000000000000000000000..31e9e0dff85e6dafc8c66711f9397ff3d74b675b GIT binary patch literal 2282 zcmVr004{#0{{R3lmNj?00004XF*Lt006O% z3;baP0001EP)t-s7#J9KL?9g<9WXF37Z(?eOde!BBN7r4e?}pkQXc>S00000hfpLZ zCns$^CLtjqm{A}qDk@GgCqXYN8yg!eEGz&30AN5W0000pEiHXTBQ7p3pi&`{Od+II zBLDyZC@3hM(U=GT001F$QchD9I2sTOLo*IOO9Tf%AvPCC9xf{rBMC49C_5ZZMo|DJ zq9)~F000ODNklyal^5_vp+9quZ_~&*;`ApmFg^h0@H_G8oWHFQPv>Pvi>bnP>E+;`=_4gYCw(M19S5vAh81OrzFxFy0F=@Y!FH`F z^ZhtWErimFSx-*t{1J~)dxK+27)1=2Zut(S097jws3@Q)LV0Uw?QE>s zK@V6CqoVjalF53QLZ5=yzXvq#MlY77i364UUbLKzq+3UB;^&pf;_03BqA%>#8&Nefp@0CF{adUko z1bt?=`}m+4Vz0R7rRv0pDBK=}o4Pn3A5;Z1O8h&mfScu{>_~U6PzDnb#eT2AC`!D- zm%6PBqxk#H3fwO*lqfD(P*NCWurFiK41c5;uW&)(FiH=6OK3?Fn3Qr_mjc*2|9Kh= zf7a|@pNskoM@5;89R=R(4H1NPc_akPtj4m)3poC0v2~$}b`D1Ifr{drR_L80T#1^2 z8u#La$4RUR2q;1lsg#9QaSJbN6A(19EcV+5Df<;r+9yFR3l5Y$zwbM^ypSoMOE8b<+p{{WZ-_q5G|a;A(W z4oSWf<&MV9*>@(PqOcfTlEwK^tT_9kq!WoHI!Y;Wjqm(L2?(=EYO~KyPI%Z{tw(8q zn?J1&3>K!|=Xo@7Lu3^;oNjuP z-~fY*nu}4=hUvjY$}dAg0Ff#b>+&ljTo+S(^-X!`Bl?Vot@nWkjr~fEgBqSJ#aTSy zn#=d0MG}2~d_R0Hz+47+7COfV8yM*t9eDX>_=s^r9Y25>K81Y7_U@iL1h|Qmayn*A zx#2K#+l>!#%ZA$7Y;-vM2)!g)5_PgPOo^t-`r=8UCxNDrYh>s!+C?G_m1hC%TAQ1h z0%hwvCz4NxE_)**OSMzcLYVd8Mz@okF;r)(>$1TWqQNiK4UfgJScI$Ps9Ud;7C%f?!9}1$O$U{r78!q$H zy2K(q;@ava@s@X!SqE=fS*FXUGR~dyY$$3{@4j2JWY#Sk@*4pxS-5@k$l{d^%z`Af zC$V~w1^ty8?l}GyWo&4QiNo>dC@;TF*fCpQ|6~2R(oj8jg7IIWyk6CVZ<#9H46^YJ zMpyX#C(gAQ$A66SQjJW*(|sJ{uD4x<=kg=ha6Cf(1M*+>mtPe1?*IS*07*qoM6N<$ Eg5#$XE&u=k literal 0 HcmV?d00001 diff --git a/img/misc/bomb/sonicExplosion07.png b/img/misc/bomb/sonicExplosion07.png new file mode 100644 index 0000000000000000000000000000000000000000..a8b834d95fb47109edb43c346f46021878834286 GIT binary patch literal 1464 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 P00000NkvXXu0mjfV^IKo literal 0 HcmV?d00001 diff --git a/src/MenuPanel.java b/src/MenuPanel.java index 462163e..85a5fe5 100644 --- a/src/MenuPanel.java +++ b/src/MenuPanel.java @@ -11,6 +11,7 @@ import java.awt.*; import java.awt.event.*; import java.awt.image.BufferedImage; import java.io.IOException; +import java.util.ArrayList; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.UnsupportedAudioFileException; import javax.swing.*; @@ -27,8 +28,10 @@ public class MenuPanel extends JPanel implements Runnable, KeyListener{ public Thread gameThread; public Image image; public Graphics graphics; - public static Player player; public BackgroundImage background; + public TextBox title, enter, settings; + public ArrayList textBoxArray = new ArrayList(); + public Font standardFont = new Font(Font.MONOSPACED, Font.BOLD, 60); public int playerFrame, enemyFrame; // keeps track of how many ticks has elapsed since last frame change public int currentBox = 0; @@ -39,6 +42,12 @@ public class MenuPanel extends JPanel implements Runnable, KeyListener{ public MenuPanel(JPanel gameFrame) throws IOException, SpriteException, UnsupportedAudioFileException, LineUnavailableException { this.gameFrame = gameFrame; + title = new TextBox(100, 400, 100, GAME_WIDTH, standardFont, "Detroit", null); + enter = new TextBox(300, 600, 100, GAME_WIDTH, standardFont, "Start Game", "game"); + settings = new TextBox(400, 600, 100, GAME_WIDTH, standardFont, "Settings", "menu"); + textBoxArray.add(enter); + textBoxArray.add(settings); + background = new BackgroundImage(0, 0, backgroundImage, GAME_WIDTH, GAME_HEIGHT, 10); // the height of 35 is set because it is half of the original tile height (i.e., 70px) this.setFocusable(true); //make everything in this class appear on the screen @@ -79,6 +88,11 @@ public class MenuPanel extends JPanel implements Runnable, KeyListener{ //call the draw methods in each class to update positions as things move public void draw(Graphics g, int playerFrame, int enemyFrame){ background.draw(g); + title.draw(g,null, Color.black); + for (TextBox t: textBoxArray) { + t.draw(g, null, Color.cyan); + } + textBoxArray.get(currentBox).draw(g, Color.gray, Color.blue); } //call the move methods in other classes to update positions @@ -112,27 +126,36 @@ public class MenuPanel extends JPanel implements Runnable, KeyListener{ //if a key is pressed, we'll send it over to the Player class for processing public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER) { + // logic for different screens starts here CardLayout cardLayout = (CardLayout) gameFrame.getLayout(); - cardLayout.next(gameFrame); + cardLayout.show(gameFrame, textBoxArray.get(currentBox).id); } else if (e.getKeyCode() == KeyEvent.VK_UP || e.getKeyCode() == KeyEvent.VK_W) { - currentBox = (currentBox + 1) % TOTAL_BOXES; // sleep to prevent excessively fast scrolling try { Thread.sleep(100); } catch (InterruptedException ex) { ex.printStackTrace(); } + currentBox = (currentBox + 1) % textBoxArray.size(); } else if (e.getKeyCode() == KeyEvent.VK_UP || e.getKeyCode() == KeyEvent.VK_W) { - // if currentBox > 0, subtract one - // else, set to TOTAL_BOXES-1 - currentBox = currentBox > 0 ? currentBox - 1:TOTAL_BOXES - 1; try { Thread.sleep(100); } catch (InterruptedException ex) { ex.printStackTrace(); } + // if currentBox > 0, subtract one + // else, set to TOTAL_BOXES-1 + currentBox = currentBox > 0 ? currentBox - 1:textBoxArray.size() - 1; + } else if (e.getKeyCode() == KeyEvent.VK_DOWN || e.getKeyCode() == KeyEvent.VK_S) { + try { + Thread.sleep(100); + } catch (InterruptedException ex) { + ex.printStackTrace(); + } + // if currentBox > total box amount - 1, set to 0 + // else, set to TOTAL_BOXES-1 + currentBox = currentBox < textBoxArray.size() - 1 ? currentBox + 1:0; } - } //if a key is released, we'll send it over to the Player class for processing diff --git a/src/TextBox.java b/src/TextBox.java new file mode 100644 index 0000000..ade0d3c --- /dev/null +++ b/src/TextBox.java @@ -0,0 +1,57 @@ +import java.awt.*; + +public class TextBox extends Rectangle { + int y; + int xWidth, yHeight; + int newX, newY; + Font font; + String text; + public final String id; + + public TextBox(int y, int xWidth, int yHeight, int totalWidth, Font font, String text, String id) { + newX = (totalWidth - xWidth)/2; + newY = y - yHeight/2; + this.yHeight = yHeight; + this.xWidth = xWidth; + this.y = y; + this.font = font; + this.text = text; + this.id = id; + } + + // isHover is not needed for now and is also probably implemented badly + public boolean isHover(int x, int y) { + if (x >= newX && x <= newX + xWidth) { + return (y >= newY && y <= newY + yHeight); + } + return false; + } + + public void drawCenteredTextBox(Graphics g, String text, Color backgroundColor, Color textColor) { + if (backgroundColor != null) { + g.setColor(backgroundColor); + g.fillRect(newX, newY, xWidth, yHeight); + } + g.setColor(textColor); + drawCenteredString(g, y, newX, xWidth, text); + } + + public static void drawCenteredString(Graphics g, int y, int x, int xWidth, String text) { + int newX, newY; + // get font size + FontMetrics metrics = g.getFontMetrics(); + // determine x for the text + newX = x + (xWidth - metrics.stringWidth(text)) / 2; + // center y (half is above y value, half is below y value) + newY = y + (metrics.getAscent() - metrics.getDescent())/2; + // draw centered string + g.drawString(text, newX, newY); + System.out.println(newX + " " + y + " " + newY); + } + + // TODO: make this good + public void draw(Graphics g, Color backgroundColor, Color textColor) { + g.setFont(font); + drawCenteredTextBox(g, text, backgroundColor, textColor); + } +} diff --git a/src/TextManager.java b/src/TextManager.java deleted file mode 100644 index 77f1f7c..0000000 --- a/src/TextManager.java +++ /dev/null @@ -1,28 +0,0 @@ -import java.awt.*; - -public final class TextManager { - // utility class, constructor is private to prevent initialization - private TextManager() {} - - public static void drawCenteredTextBox(Graphics g, int y, int xWidth, int yHeight, int totalWidth, - String text, Color backgroundColor, Color textColor) { - int newX = (totalWidth - xWidth)/2; - int newY = y - yHeight/2; - g.setColor(backgroundColor); - g.drawRect(newX, newY, xWidth, yHeight); - g.setColor(textColor); - drawCenteredString(g, y, newX, xWidth, text); - } - - public static void drawCenteredString(Graphics g, int y, int x, int xWidth, String text) { - int newX, newY; - // get font size - FontMetrics metrics = g.getFontMetrics(); - // determine x for the text - newX = x + (xWidth - metrics.stringWidth(text)) / 2; - // center y (half is above y value, half is below y value) - newY = y - (metrics.getAscent() - metrics.getDescent())/2; - // draw centered string - g.drawString(text, newX, newY); - } -}