Skip to content

Commit

Permalink
Major changes, implemented upgrade towers with different sprites for
Browse files Browse the repository at this point in the history
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
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import java.awt.*;

import javax.swing.*;

public class Main extends JFrame{
Expand All @@ -16,9 +15,10 @@ public static void main(String[] args) {
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 static void main(String[] args) {

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
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,10 @@ public void step() {
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 void drawAllTowers(TowerFactory TF, Graphics g) {
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 void drawAllBasicAttacks(TowerFactory TF, Graphics g){
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 void mousePressed(MouseEvent e) {
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
Original file line number Diff line number Diff line change
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 void setMap(MapTowerDefense map){
}

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 void setup(){
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 void updateNumTowers(){
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");
}


}
Loading

0 comments on commit 456e9cf

Please sign in to comment.