Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
ssl10003 committed Apr 27, 2015
1 parent 4afbb76 commit 456e9cf
Show file tree
Hide file tree
Showing 11 changed files with 183 additions and 75 deletions.
14 changes: 4 additions & 10 deletions src/Main.java
@@ -1,5 +1,4 @@
import java.awt.*;

import javax.swing.*;

public class Main extends JFrame{
Expand All @@ -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);
Expand All @@ -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()
Expand Down
76 changes: 53 additions & 23 deletions src/MockGui.java
Expand Up @@ -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) {
Expand Down Expand Up @@ -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);
}

Expand All @@ -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);

}
}
Expand All @@ -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; i<map.getTF().getTowerArray().length; i++){

for(int i=1; i<map.getTF().quantity; i++){
if( (map.getTF().getTowerArray()[i].getTowerXlocation() == local[0]) && (map.getTF().getTowerArray()[i].getTowerYlocation() == local[1])){
//map.getTF().getTowerArray()[i]
//TODO //how to destroy tower?
map.getStatGui().payDay(map.getTF().getTowerArray()[i]._sellCost);
}
}
}
//upgrade tower click check
if(map.getStatGui().gettowerPlacerVar() == 4){

for(int i=1; i<map.getTF().quantity; i++){
if(map.getStatGui().canAfford(map.getTF().getTowerArray()[i]._upgradecost)){
if( (map.getTF().getTowerArray()[i].getTowerXlocation() == local[0]) && (map.getTF().getTowerArray()[i].getTowerYlocation() == local[1])){
map.getTF().getTowerArray()[i].upgrade();
map.getStatGui().spendMoney(map.getTF().getTowerArray()[i].getUpgradeCost());
}
}
}
}

}


}

Expand Down
79 changes: 58 additions & 21 deletions src/StatGui.java
Expand Up @@ -16,7 +16,7 @@ public class StatGui extends JPanel implements ActionListener{
private MapTowerDefense map;
private int maxHealth = 20;
private int playermoney = 1000;
JLabel hpLabel, moneyLabel, towersnumLabel;
JLabel hpLabel, moneyLabel, towersnumLabel, sellLabelBasic, sellLabelAOE, upgradeLabelBasic, upgradeLabelAOE;
JButton buttonAOETower, buttonBasicTower, buttonSellTower, buttonUpgradeTower;
public int towerPlacerVar = 1; //1:Basic, 2:AOE, 3:Sell, 4:Upgrade

Expand Down Expand Up @@ -55,34 +55,30 @@ public class StatGui extends JPanel implements ActionListener{
}

public void setup(){
hpLabel = new JLabel();
hpLabel.setFont(new Font("Serif", Font.BOLD, 20));
hpLabel.setForeground(Color.BLUE);
this.add(hpLabel);

moneyLabel = new JLabel();
moneyLabel.setFont(new Font("Serif", Font.BOLD, 20));
moneyLabel.setForeground(Color.BLUE);
this.add(moneyLabel);

towersnumLabel = new JLabel();
towersnumLabel.setFont(new Font("Serif", Font.BOLD, 20));
towersnumLabel.setForeground(Color.BLUE);
this.add(towersnumLabel);
ImageIcon iconBasicTower = new ImageIcon("src/resources/images/Basic Tower LVL1.png", "Basic tower sprite");
buttonBasicTower = new JButton("Basic Tower ($" + TowerTypes.BASIC.getBuycost() + ")", iconBasicTower);
buttonBasicTower.setActionCommand("select basic tower");
buttonBasicTower.setEnabled(true);
buttonBasicTower.addActionListener(this);
this.add(buttonBasicTower);

ImageIcon iconAOE = new ImageIcon("src/resources/images/AOE Tower.png", "AOE tower sprite");
ImageIcon iconAOE = new ImageIcon("src/resources/images/AOE Tower LVL1.png", "AOE tower sprite");
buttonAOETower = new JButton("AOE Tower ($" + TowerTypes.AOE.getBuycost() + ")", iconAOE);
buttonAOETower.setActionCommand("select aoe tower");
buttonAOETower.setEnabled(true);
buttonAOETower.addActionListener(this);
this.add(buttonAOETower);

ImageIcon iconBasicTower = new ImageIcon("src/resources/images/Basic Tower.png", "Basic tower sprite");
buttonBasicTower = new JButton("Basic Tower ($" + TowerTypes.BASIC.getBuycost() + ")", iconBasicTower);
buttonBasicTower.setActionCommand("select basic tower");
buttonBasicTower.setEnabled(true);
buttonBasicTower.addActionListener(this);
this.add(buttonBasicTower);
sellLabelBasic = new JLabel();
sellLabelBasic.setFont(new Font("Serif", Font.BOLD, 12));
sellLabelBasic.setForeground(Color.BLACK);
this.add(sellLabelBasic);

sellLabelAOE = new JLabel();
sellLabelAOE.setFont(new Font("Serif", Font.BOLD, 12));
sellLabelAOE.setForeground(Color.BLACK);
this.add(sellLabelAOE);

ImageIcon iconSellTower = new ImageIcon("src/resources/images/Sell Button.png", "Sell tower sprite");
buttonSellTower = new JButton("Sell Tower" , iconSellTower);
Expand All @@ -91,13 +87,38 @@ public class StatGui extends JPanel implements ActionListener{
buttonSellTower.addActionListener(this);
this.add(buttonSellTower);

upgradeLabelBasic = new JLabel();
upgradeLabelBasic.setFont(new Font("Serif", Font.BOLD, 12));
upgradeLabelBasic.setForeground(Color.BLACK);
this.add(upgradeLabelBasic);

upgradeLabelAOE = new JLabel();
upgradeLabelAOE.setFont(new Font("Serif", Font.BOLD, 12));
upgradeLabelAOE.setForeground(Color.BLACK);
this.add(upgradeLabelAOE);

ImageIcon iconUpgradeTower = new ImageIcon("src/resources/images/Upgrade Button.png", "Sell tower sprite");
buttonUpgradeTower = new JButton("Upgrade Tower" , iconUpgradeTower);
buttonUpgradeTower.setActionCommand("select upgrade");
buttonUpgradeTower.setEnabled(true);
buttonUpgradeTower.addActionListener(this);
this.add(buttonUpgradeTower);

hpLabel = new JLabel();
hpLabel.setFont(new Font("Serif", Font.BOLD, 20));
hpLabel.setForeground(Color.BLUE);
this.add(hpLabel);

moneyLabel = new JLabel();
moneyLabel.setFont(new Font("Serif", Font.BOLD, 20));
moneyLabel.setForeground(Color.BLUE);
this.add(moneyLabel);

towersnumLabel = new JLabel();
towersnumLabel.setFont(new Font("Serif", Font.BOLD, 20));
towersnumLabel.setForeground(Color.BLUE);
this.add(towersnumLabel);


}

Expand Down Expand Up @@ -141,5 +162,21 @@ public class StatGui extends JPanel implements ActionListener{
towersnumLabel.setText("[# of Towers]: " + map.TF.quantity);
}

public void updateBasicSellLabel(){
sellLabelBasic.setText("Basic Tower Sell Value: $" + TowerTypes.BASIC.getSellcost() + " x LVL");
}

public void updateAOESellLabel(){
sellLabelAOE.setText("AOE Tower Sell Value: $" + TowerTypes.AOE.getSellcost() + " x LVL");
}

public void updateBasicUpgradeLabel(){
upgradeLabelBasic.setText("Upgrade Basic Tower Cost: $" + TowerTypes.BASIC.getBuycost() + " x LVL");
}

public void updateAOEUpgradeLabel(){
upgradeLabelAOE.setText("Upgrade AOE Tower Cost: $" + TowerTypes.AOE.getBuycost() + " x LVL");
}


}

0 comments on commit 456e9cf

Please sign in to comment.