From 456e9cf597216cdd93b93878e144056fba86e5d7 Mon Sep 17 00:00:00 2001 From: ssl10003 Date: Sun, 26 Apr 2015 23:50:13 -0400 Subject: [PATCH] Major changes, implemented upgrade towers with different sprites for each tower level. Began work on sell towers. Stat Gui Panel resized and component additions. Still need a way to remove tower from map after selling. --- src/Main.java | 14 +--- src/MockGui.java | 76 ++++++++++++----- src/StatGui.java | 79 +++++++++++++----- src/TowerMock.java | 67 +++++++++++---- src/TowerTypes.java | 22 +++-- .../{AOE Tower.png => AOE Tower LVL1.png} | Bin src/resources/images/AOE Tower LVL2.png | Bin 0 -> 2625 bytes src/resources/images/AOE Tower LVL3.png | Bin 0 -> 2237 bytes src/resources/images/Basic Tower LVL1.png | Bin 0 -> 1172 bytes .../{Basic Tower.png => Basic Tower LVL2.png} | Bin src/resources/images/Basic Tower LVL3.png | Bin 0 -> 1549 bytes 11 files changed, 183 insertions(+), 75 deletions(-) rename src/resources/images/{AOE Tower.png => AOE Tower LVL1.png} (100%) create mode 100644 src/resources/images/AOE Tower LVL2.png create mode 100644 src/resources/images/AOE Tower LVL3.png create mode 100644 src/resources/images/Basic Tower LVL1.png rename src/resources/images/{Basic Tower.png => Basic Tower LVL2.png} (100%) create mode 100644 src/resources/images/Basic Tower LVL3.png diff --git a/src/Main.java b/src/Main.java index 398b6c5..25b5c99 100644 --- a/src/Main.java +++ b/src/Main.java @@ -1,5 +1,4 @@ import java.awt.*; - import javax.swing.*; public class Main extends JFrame{ @@ -16,9 +15,10 @@ public class Main extends JFrame{ container.setLayout(new BorderLayout(10,10)); MockGui mg = new MockGui(640,640,32, NUM, nodes); StatGui sg= new StatGui(0,0); + container.add(mg, BorderLayout.CENTER); container.add(sg, BorderLayout.LINE_END); - sg.setPreferredSize(new Dimension(200,600)); + sg.setPreferredSize(new Dimension(210,600)); MapTowerDefense map = new MapTowerDefense(100, NUM, nodes, mg, sg); mg.setMap(map); @@ -27,18 +27,12 @@ public class Main extends JFrame{ frame.add(container); frame.pack(); - frame.setSize(860,670); + frame.setSize(850,670); frame.setVisible(true); - map.createMinion(MinionTypes.BASIC); - try { - Thread.sleep(50); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } map.createMinion(MinionTypes.BASIC); mg.step(); + } private static void setupDefaultNodes() diff --git a/src/MockGui.java b/src/MockGui.java index 8c2830a..cdd8e00 100644 --- a/src/MockGui.java +++ b/src/MockGui.java @@ -60,6 +60,10 @@ public class MockGui extends JPanel{ map.getStatGui().updateHealth(); map.getStatGui().updateMoney(); map.getStatGui().updateNumTowers(); + map.getStatGui().updateBasicSellLabel(); + map.getStatGui().updateAOESellLabel(); + map.getStatGui().updateAOEUpgradeLabel(); + map.getStatGui().updateBasicUpgradeLabel(); map.getMF().assignAllDamage(); if (i > 63) { @@ -199,20 +203,29 @@ public class MockGui extends JPanel{ int i = 0; while (i < TF.getNum()) { int[] local = hash(TF.getTowerArray()[i].getTowerXlocation(), TF.getTowerArray()[i].getTowerYlocation()); - drawBasicTower(TF.getTowerArray()[i], local[0], local[1], g); + drawBasicTower(TF.getTowerArray()[i], local[0], local[1], g); i++; } } - public void drawBasicTower(TowerMock tm, int x, int y, Graphics g){ - //g.setColor(new Color(24,24,24)); - //g.fillRect(x, y, 32, 32); + public void drawBasicTower(TowerMock tm, int x, int y, Graphics g) { + g.drawImage(tm.getSprite(),x , y, null); + } - public void drawBasicAttack(int x, int y, Graphics g){ - g.setColor(Color.yellow); + public void drawBasicAttack(int x, int y, int level, Graphics g){ + if(level == 1){ + g.setColor(Color.YELLOW); + } + else if(level == 2){ + g.setColor(Color.ORANGE); + } + else if(level ==3){ + g.setColor(Color.RED); + } + g.fillRoundRect(x, y, 7, 7, 7, 7); } @@ -226,27 +239,35 @@ public class MockGui extends JPanel{ int halfDotY = (((TF.getTowerArray()[i]._ylocation * 32) + 15)+ (TF.getTowerArray()[i].currentTarget.getY() + 15))/2; int minionDotX = TF.getTowerArray()[i].currentTarget.getX() + 15; int minionDotY = TF.getTowerArray()[i].currentTarget.getY()+15; - drawBasicAttack(towerDotX,towerDotY, g); - drawBasicAttack((towerDotX + halfDotX)/2, (towerDotY + halfDotY)/2, g); - drawBasicAttack(halfDotX, halfDotY, g); - drawBasicAttack((halfDotX + minionDotX)/2, (halfDotY + minionDotY)/2, g); - drawBasicAttack(minionDotX, minionDotY, g); + drawBasicAttack(towerDotX,towerDotY, TF.getTowerArray()[i].getLevel(), g); + drawBasicAttack((towerDotX + halfDotX)/2, (towerDotY + halfDotY)/2, TF.getTowerArray()[i].getLevel(), g); + drawBasicAttack(halfDotX, halfDotY, TF.getTowerArray()[i].getLevel(), g); + drawBasicAttack((halfDotX + minionDotX)/2, (halfDotY + minionDotY)/2, TF.getTowerArray()[i].getLevel(), g); + drawBasicAttack(minionDotX, minionDotY, TF.getTowerArray()[i].getLevel(), g); } } } - public void drawAOEAttack(int x, int y, int range, Graphics g){ - g.setColor(Color.MAGENTA); - g.drawOval(x-70, y-70, 140, 140); - g.drawOval(x-65, y-65, 130, 130); - g.drawOval(x-60, y-60, 120, 120); + public void drawAOEAttack(int x, int y, int range, int level, Graphics g){ + if(level == 1){ + g.setColor(Color.BLUE); + } + else if(level == 2){ + g.setColor(Color.MAGENTA); + } + else if(level ==3){ + g.setColor(Color.CYAN); + } + g.drawOval((int)(x - ( range*1.8)/2),(int)( y - ( range*1.8)/2),(int)( range*1.8), (int)( range*1.8)); + g.drawOval((int)(x - ( range*1.6)/2),(int)( y - ( range*1.6)/2),(int)( range*1.6), (int)( range*1.6)); + g.drawOval((int)(x - ( range*1.4)/2),(int)( y - ( range*1.4)/2),(int)( range*1.4), (int)( range*1.4)); } public void drawAllAOEAttacks(TowerFactory TF, Graphics g){ for(int i = 1; i < TF.getNum(); i++){ if( TF.getTowerArray()[i].basicDealDamage() && TF.getTowerArray()[i].type == TowerTypes.AOE){ - drawAOEAttack((TF.getTowerArray()[i]._xlocation * 32) + 15, (TF.getTowerArray()[i]._ylocation *32) + 15,TF.getTowerArray()[i].getRange(), g); + drawAOEAttack((TF.getTowerArray()[i]._xlocation * 32) + 15, (TF.getTowerArray()[i]._ylocation *32) + 15,TF.getTowerArray()[i].getRange(), TF.getTowerArray()[i].getLevel(), g); } } @@ -268,20 +289,29 @@ public class MockGui extends JPanel{ else if(map.getStatGui().gettowerPlacerVar() == 1){ map.getTF().createBasicTower(local[0], local[1], TowerTypes.BASIC); } - //sell tower + //sell tower click check if(map.getStatGui().gettowerPlacerVar() == 3){ - - for(int i=1; iN2bZe?^J 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 literal 0 HcmV?d00001 diff --git a/src/resources/images/AOE Tower LVL3.png b/src/resources/images/AOE Tower LVL3.png new file mode 100644 index 0000000000000000000000000000000000000000..90967518e7f1552e11355fe333e0d1a083fa2834 GIT binary patch literal 2237 zcmV;u2txOXP)N2bZe?^J zG%heMHD!e|WdHyOJ4r-AR7gvWmJ3i+=M~5A-o5*NKU|iFpn!rJ#kW>X>H}01bqd;| z9Ua>=W=2h{(;A`mO*)-Ki%F)zq)JFkY{#N8#;B=|+N8C1MDZ=Kun#1_26-&Yvasy3 zr{`RInPo*=X8v>U_d36G&UemTnERD?$N1XY$CsYFdN#A%9e(jLK-Qn@;n?S2yLua3 zQ~TRoah-J)zq?vi;y=B2Cw%;?U&5RDt6 zTf%#a_PgGC_h3z4$+^B|drD#Xt|PE~PZ{LwJPbLz{sh?t??U#D_hD&K8LThAAA0R? z-+8uOcDpy8b9JtG=S=_XjYW{Na52mrZiXqNN5JI^=fk0JFewP2XWBbD74>%8h1{}# z4L}8D7oUd3Wz_>?2A;3TeZqTYNhQo0p8>OyN5I9?UpPYHz<6KSuVrYlzUJZfm7hEf zCPf>MH2S?W-7Dl-O~|otE)<4 zs_$3Cw7Q+rgZuYYEy-C7*?(>PpHN}_dHV*f6&!-iFK>X$m%i=)=E~pm9gaE`)7I{` zI_%Zze_XzB?APn^V8zZuLmCw31pTP^)Sz+X-pKv)OK!uG75OlK`Yc$#W*vO=Vd+Ju z-63PVUELGxHMV5%deaUSZigksVNVi&HOj-tH79Cr>vh15l z<0g!LoTO$TR*urEa1YBn8Y35hRVl)+0RyvAE&raAW-LJ9_t*x2^@4Xk7_QJ&Cp&+E)8=r{YC7hZEDNq`*8nkjFj+MYkjlfE@0M)oJ zO6%7C9108fLS!_X%nC-2`xj(of<&c&yq~UxLuH>pdsj~a{z$NltGP{d_UkL}EX~Xr07p6?0C`0L zB4skif>LP&DW~JX3QmRA#h3{R=q+ZLmAL>8l)Mk_Hjl;A-79A7u0~01U486OuxK!+ z(C`sUmH5PnSg{;fkrdxKkjhlR;JaL*1*t>@9InwkCy{|lr-%6q7s07BUxDLM!;F^p z4l&d1@6&g9d>k1TzydH5%*oVXz^EuPN;3fnu8?bZI4hR%(&^2hQtLq`SM$zDq)Ps| zXKzvXQA1sc=z%>q?!K!ATL@&q8 zC{;RsOv+oCAHHz$(w#cH(|Y6PEm3bEXkkL3uuL!>9c?67iV;%OdV>Xr=mZrHLMd9A zRK-WA)tNw}HNr4U91kaFl2g*4{KOaTPOmSv;zp&&;jCwap|Fba`TXSaQ=sUvT%`xK z&I|@4Rx&HYi1Y|D<9#Y|8KXp}G-|_u18R+dpU=(vNwdS*Fq^?YOf&0pJ(BzVy*dJm z1>@0*1dmD|4;hnZKuYQuEEs}GFtT_UIbsy3lsZ1;Lsk32MN7ZjUa%wMdc{r7R%=(< z?M_vFeZyS3yg{&()bu`+**a)0+8Cu#xYy{lxcDSK-NOBjP8$a!lSj92d!xW~@BTw$ zV`H<#W~(y~0?(fPA{I?Ne=u^MDwyupXhMggKqQKo+DDD)CufYN7|e=-uVxA&F)0Op z^V^;G@LwNYRaK4j=FM9MN7>t%D zErRJLAl)scnMAEc=lS~;VXNU;f+q|g37a;*4w&lcO-=6D>S~*Ys+vWx{P5w@fYlnu zZ>Clt1N5X~Aw$%o1gC6Jnn?z1D=H|h#>huYU^+vN(LQ=oPt*IT(dlsD4+qz_w6vRn2ATx=qrZi14i zMuxIMa$+laJYH#StzE+O2SaM;53}9fJ?xe(TkRqdbr;L0i~!MxQ&ZAm`LbLXJ7xk* z%$N#Or_6-OlcqnlkB=H1rFxk-X&N{ju2gIz7Nx>eb4;(lN7mitQ{x>M8w{o}%W|OA z(pOaY@Jo0j6mhiiXbC?UBucr^Qgn9Hrq^U{cZ&v7{R@}t(X#&lZuNf}0MI;Q00000 LNkvXXu0mjfXKp?W literal 0 HcmV?d00001 diff --git a/src/resources/images/Basic Tower LVL1.png b/src/resources/images/Basic Tower LVL1.png new file mode 100644 index 0000000000000000000000000000000000000000..63486f9fe7662771cf9409173b32928be4ae4f81 GIT binary patch literal 1172 zcmV;F1Z(?=P)N2bZe?^J zG%heMHD!e|WdHyK5=lfsR7gv`ms?B}R~W~~2V)9W4H&LvS;}q^jer&wEbMMc_JU+t zQIt?c7jea`8bKRVF2>6WtSeqF;y8qh5V-?i2TFXp0ezQ$FwH* zuZY~n2;ZVW?S7rPhw+kb3BM@^BQ zQd^Wxb^=OCYLVvQRO3D4Qj@!0SeXzV5{Sa`0U%ZRTCz^NEXXF!lY%qCt}U5yK|WaL zQv%xnyaG4_Xg8++UqlM}%=%cakHM?kv?13o$c+pX-EPbf@0B`};xVSGio@NlD2$?P zHp;S-MLQN|Fk7S?vS+r4Q!NMAm|ZK0e5^PXW}EAC(q3a97KSc(t?jEhf52T>5{>AN!mcaP~_e~jzG{Cwl zDI`fPr8ydMx4D9gL5DpO4X_x6^Fj0hFYr_2vaBV4+_}6SG#8<;>Cf?-RhF#OkU+HY z>}tVW>{43efzSOb6E^=facis8$r6@DFQUkk)zDUBC%?5+(ER5eE-`=Xr0Wc5MxpTc z6CIv@X%Y%a@0D!fC|Q$6&nWoBS1k$$&euVU9^2;yDP5~U8vl#ONza3gTWAAse(x(s;e>m~e(VKaYn$ADk85 zJ{xU}^ih$5Yu34~fIc>dt$Mn7kg{*nsh_tD=*KnQ8tJ3LzyVhq=HAg6adTfeK@jN2 z00*Mf5ECwrRCu_#QtYz9oJ#f^H9;Q=BsO{>jluZ6j{Kl}CY<&6T8P76N7zUNsN?nZo}y3Bb~MzL>dwx^S$u=8;?+J3(Ov m6XG#FJxzfl4uBs5ME?QO5J!O7MCx?_0000N2bZe?^J zG%heMHD!e|WdHyLi%CR5R7gvemwQZCWf;c~HEdpn%?m<_W=VoN+CY?5LTw_Xg<7qd zTSarVWi4BoS#8NE16dqM<#&r*Vx7EWu9lAGYsQKOG^uNbaYTpPY(?Y4A98P z2u(~(P(?)rhtTKDZU%Wl%=;G5h6m%qxH0|^zrcLUd>R-SNWHziG&D3s!;IEcvl^8Yl1M=0LXl`znK}}9h()9H7Ef%jeRD-ra64pv> z7F7<366)gM;9!YMN=lMAHB%VS_3PI~&I6lfv9nbi9v&{Jdw@o;Ih>uHC9$ooP0Ex= zA2H4<53>TH+FbY#QSAdhmT^0e67))-$`PZ)7`<7n zPWgyZ6F;N)n4@&!#P@R=F^lzk)FZzvcdvkJl==GlLX4$-24Y`+tR3|9^qkeON>oW^ zbfFpK{MqWrmk%G2xJFy@$R%2@#C}|GNEfR_OtDHbcT5+V%MkDF?M?M3Kjd43h7u1; zTX@~_!RtgzAbukuAt6U4D`{EidsdKy##D@w==XX#VwF%AUql86gXSnl<&N;===f*F;B0$EqZKniaU8Z>?>CSct%2%@%8JSXh|sZ2suj z53y5ZWaNqY62bpTv7WZdL1<{`oU*vMxJ-k;EVf5QMg3#0Tqx)iM)f2ejg5^>Hsa&s zvusr^1PIi!$l5J%Y4~k5Zt&aUJM+KFLQql&kG$?O>kLp=nDK$lWxzUPjSu0%T=_V3 z>AtP2MYzdvsa3qq#X-)Pc3b&M{N|I2(V&ui?YEvncCM3qos~=Nt)o70;J~bWCHCN7 z2O&=~-MSbAy04_8e(UJVowMb@)~L^%IWq|{en~jGlOq~^~j*k@#e!}?SZi@xHEb)?dVwPK2%)c65 z<0o5#E(hOyvR}jsU1SE|S(a}t{4iWYM6Uk<=^NB#Us`>)00000NkvXXu0mjf^n%$# literal 0 HcmV?d00001