Skip to content

Commit

Permalink
Merge pull request #291 from UQcsse3200/team-2-ahmad
Browse files Browse the repository at this point in the history
Team 2 ahmad
  • Loading branch information
The-AhmadAA authored Oct 16, 2023
2 parents 426f1f5 + 04a2d99 commit 33cb08c
Show file tree
Hide file tree
Showing 3 changed files with 130 additions and 188 deletions.
9 changes: 9 additions & 0 deletions source/core/assets/images/ui/buttons/glass.json
Original file line number Diff line number Diff line change
Expand Up @@ -482,18 +482,27 @@ com.badlogic.gdx.scenes.scene2d.ui.ImageButton$ImageButtonStyle: {
imageDown: pierce_tower_selected
imageOver: pierce_tower_over
imageDisabled: pierce_tower_disabled
imageChecked: pierce_tower_selected
imageCheckedDown: pierce_tower_selected
imageCheckedOver: pierce_tower_over
}
ricochet_tower: {
imageUp: ricochet-tower-default
imageDown: ricochet_tower_selected
imageOver: ricochet_tower_over
imageDisabled: ricochet_tower_disabled
imageChecked: ricochet_tower_selected
imageCheckedDown: ricochet_tower_selected
imageCheckedOver: ricochet_tower_over
}
fireworks_tower: {
imageUp: firework-tower-default
imageDown: firework_tower_selected
imageOver: firework_tower_over
imageDisabled: firework_tower_disabled
imageChecked: firework_tower_selected
imageCheckedDown: firework_tower_selected
imageCheckedOver: firework_tower_over
}
}
com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
public class MainGameDisplay extends UIComponent {
private static final Logger logger = LoggerFactory.getLogger(MainGameDisplay.class);
private static final float Z_INDEX = 2f;
private static final String SHORTCUT_FONT = "small";
private final Table towerTable = new Table();
private final Table buttonTable = new Table();
private final Table progressTable = new Table();
Expand Down Expand Up @@ -98,6 +99,70 @@ private void addActors() {
levelNameTable.center().top().padLeft(20f).padTop(20f).pad(20f);
levelNameTable.setFillParent(true);

// set the towerTypes if they aren't already
setTowers();

// Update the centrally located towerTypes list -
ServiceLocator.setTowerTypes(towers);

// create the tower buttons, pause button, and their associated listeners
createTowerButtons();
TextButton pauseBtn = createPauseButton();

progressbar = new LevelProgressBar(500, 10);

levelNameTable.setSkin(getSkin());
levelNameTable.add(this.level, "default");

// Scale all the tower build buttons down
// Add all buttons to their respective tables and position them
towerTable.setSkin(getSkin());
towerTable.add(tower1).padRight(10f);
towerTable.add(tower2).padRight(10f);
towerTable.add(tower3).padRight(10f);
towerTable.add(tower4).padRight(10f);
towerTable.add(tower5).padRight(10f);
towerTable.row();
towerTable.add("1", SHORTCUT_FONT);
towerTable.add("2", SHORTCUT_FONT);
towerTable.add("3", SHORTCUT_FONT);
towerTable.add("4", SHORTCUT_FONT);
towerTable.add("5", SHORTCUT_FONT);
towerTable.row().colspan(5).pad(20f);
towerTable.add(progressbar).fillX();

buttonTable.add(pauseBtn);

// Add tables to the stage

stage.addActor(buttonTable);
stage.addActor(towerTable);
stage.addActor(levelNameTable);

// Animate the tower select buttons
int tower1Gap = Gdx.graphics.getWidth() /2 + (int) towerTable.getX()/2 + 400;
int tower2Gap = Gdx.graphics.getWidth() /2 + (int) towerTable.getX()/2 + 240;
int tower3Gap = Gdx.graphics.getWidth() /2 + (int) towerTable.getX()/2 + 80;
int tower4Gap = Gdx.graphics.getWidth() /2 + (int) towerTable.getX()/2 - 80;
int tower5Gap = Gdx.graphics.getWidth() /2 + (int) towerTable.getX()/2 - 240;
animateTowerButton(tower1, tower1Gap, 230);
animateTowerButton(tower2, tower2Gap, 230);
animateTowerButton(tower3, tower3Gap, 230);
animateTowerButton(tower4, tower4Gap, 230);
animateTowerButton(tower5, tower5Gap, 230);

TooltipManager tm = TooltipManager.getInstance();
tm.initialTime = 3;
tm.hideAll();
}

@Override
public void draw(SpriteBatch batch) {
// draw is handled by the stage
towerUpdate();
}

private void setTowers() {
// Stores tower defaults, in case towers haven't been set in the tower select screen
TowerType[] defaultTowers = {
TowerType.TNT,
Expand All @@ -116,20 +181,19 @@ private void addActors() {

// If no towers set, populate with default towers
if (towers.isEmpty() || towers.size < 5) {
if (towers.isEmpty()) {
towers.addAll(defaultTowers);
} else {
for (TowerType tower : defaultTowers) {
if (towers.size < 5 && !towers.contains(tower, false)) {
towers.add(tower);
}
// if (towers.isEmpty()) {
// towers.addAll(defaultTowers);
// } else {
for (TowerType tower : defaultTowers) {
if (towers.size < 5 && !towers.contains(tower, true)) {
towers.add(tower);
}
}
}

// Update the centrally located towerTypes list -
ServiceLocator.setTowerTypes(towers);
}

private void createTowerButtons() {
tower1 = new ImageButton(skin, towers.get(0).getSkinName());
towerButtons.add(tower1);
tower2 = new ImageButton(skin, towers.get(1).getSkinName());
Expand All @@ -141,10 +205,41 @@ private void addActors() {
tower5 = new ImageButton(skin, towers.get(4).getSkinName());
towerButtons.add(tower5);

int i = 0;
for (ImageButton button : towerButtons) {
// Triggers an event when the button is pressed.
int finalI = i;
button.addListener(
new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {

TowerType selected = ServiceLocator.getCurrencyService().getTower();
if (selected == towers.get(finalI) ) {
ServiceLocator.getCurrencyService().setTowerType(null);

towerToggle(null);

} else {
ServiceLocator.getCurrencyService().setTowerType(towers.get(finalI));

towerToggle(button);

}
click.play(0.4f);
}
});
TextTooltip tower1Tooltip = new TextTooltip(towers.get(i).getDescription(), getSkin());
button.addListener(tower1Tooltip);
i++;
}
}

private TextButton createPauseButton() {
TextButton pauseBtn = ButtonFactory.createButton("Pause");

// Starting animation for pause button
pauseBtn.setPosition(Gdx.graphics.getWidth(), Gdx.graphics.getHeight() - 150);
pauseBtn.setPosition(Gdx.graphics.getWidth(), (float)(Gdx.graphics.getHeight() - 150));
pauseBtn.addAction(new SequenceAction(Actions.moveTo(Gdx.graphics.getWidth() - 200,
Gdx.graphics.getHeight() - 150, 1f, Interpolation.fastSlow)));

Expand Down Expand Up @@ -178,181 +273,7 @@ public boolean keyUp(InputEvent event, int keycode) {
return false;
}
});

// Triggers an event when the button is pressed.
tower1.addListener(
new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {

TowerType selected = ServiceLocator.getCurrencyService().getTower();
if (selected == towers.get(0) ) {
ServiceLocator.getCurrencyService().setTowerType(null);

towerToggle(null);

} else {
ServiceLocator.getCurrencyService().setTowerType(towers.get(0));

towerToggle(tower1);

}
click.play(0.4f);
}
});
TextTooltip tower1Tooltip = new TextTooltip(towers.get(0).getDescription(), getSkin());
tower1.addListener(tower1Tooltip);

// Triggers an event when the button is pressed.
tower2.addListener(
new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {

TowerType selected = ServiceLocator.getCurrencyService().getTower();
if (selected == towers.get(1) ) {
ServiceLocator.getCurrencyService().setTowerType(null);

towerToggle(null);

} else {
ServiceLocator.getCurrencyService().setTowerType(towers.get(1));

towerToggle(tower2);

}
click.play(0.4f);
}
});
TextTooltip tower2Tooltip = new TextTooltip(towers.get(1).getDescription(), getSkin());
tower2.addListener(tower2Tooltip);

tower3.addListener(
new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {

TowerType selected = ServiceLocator.getCurrencyService().getTower();
if (selected == towers.get(2)) {
ServiceLocator.getCurrencyService().setTowerType(null);

towerToggle(null);

} else {
ServiceLocator.getCurrencyService().setTowerType(towers.get(2));
if (ServiceLocator.getCurrencyService().getScrap().getAmount()
>= Integer.parseInt(towers.get(2).getPrice())) {

towerToggle(tower3);

} else {
tower3.setDisabled(true);
}
}
click.play(0.4f);
}
});

TextTooltip tower3Tooltip = new TextTooltip(towers.get(3).getDescription(), getSkin());
tower3.addListener(tower3Tooltip);

tower4.addListener(
new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {

TowerType selected = ServiceLocator.getCurrencyService().getTower();
if (selected == towers.get(3)) {
ServiceLocator.getCurrencyService().setTowerType(null);

towerToggle(null);

} else {
ServiceLocator.getCurrencyService().setTowerType(towers.get(3));

towerToggle(tower4);

}
click.play(0.4f);
}
});
TextTooltip tower4Tooltip = new TextTooltip(towers.get(3).getDescription(), getSkin());
tower4.addListener(tower4Tooltip);

tower5.addListener(
new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {

TowerType selected = ServiceLocator.getCurrencyService().getTower();
if (selected == towers.get(4)) {
ServiceLocator.getCurrencyService().setTowerType(null);

towerToggle(null);

} else {
ServiceLocator.getCurrencyService().setTowerType(towers.get(4));

towerToggle(tower5);

}
click.play(0.4f);
}
});
TextTooltip tower5Tooltip = new TextTooltip(towers.get(4).getDescription(), getSkin());
tower5.addListener(tower5Tooltip);

progressbar = new LevelProgressBar(500, 10);

levelNameTable.setSkin(getSkin());
levelNameTable.add(this.level, "default");

// Scale all the tower build buttons down
// Add all buttons to their respective tables and position them
towerTable.setSkin(getSkin());
towerTable.add(tower1).padRight(10f);
towerTable.add(tower2).padRight(10f);
towerTable.add(tower3).padRight(10f);
towerTable.add(tower4).padRight(10f);
towerTable.add(tower5).padRight(10f);
towerTable.row();
towerTable.add("1", "small");
towerTable.add("2", "small");
towerTable.add("3", "small");
towerTable.add("4", "small");
towerTable.add("5", "small");
towerTable.row().colspan(5).pad(20f);
towerTable.add(progressbar).fillX();

buttonTable.add(pauseBtn);

// Add tables to the stage

stage.addActor(buttonTable);
stage.addActor(towerTable);
stage.addActor(levelNameTable);

// Animate the tower select buttons
int tower1Gap = Gdx.graphics.getWidth() /2 + (int) towerTable.getX()/2 + 400;
int tower2Gap = Gdx.graphics.getWidth() /2 + (int) towerTable.getX()/2 + 240;
int tower3Gap = Gdx.graphics.getWidth() /2 + (int) towerTable.getX()/2 + 80;
int tower4Gap = Gdx.graphics.getWidth() /2 + (int) towerTable.getX()/2 - 80;
int tower5Gap = Gdx.graphics.getWidth() /2 + (int) towerTable.getX()/2 - 240;
animateTowerButton(tower1, tower1Gap, 230);
animateTowerButton(tower2, tower2Gap, 230);
animateTowerButton(tower3, tower3Gap, 230);
animateTowerButton(tower4, tower4Gap, 230);
animateTowerButton(tower5, tower5Gap, 230);

TooltipManager tm = TooltipManager.getInstance();
tm.initialTime = 3;
tm.hideAll();
}

@Override
public void draw(SpriteBatch batch) {
// draw is handled by the stage
towerUpdate();
return pauseBtn;
}

/**
Expand All @@ -368,6 +289,10 @@ public void updateLevelProgressBar() {
* depending on button selection and currency balance
*/
private void towerUpdate() {
// Check for small tower array
if (towers.size < 5) {
setTowers();
}
// no tower selected, set all to off
if (ServiceLocator.getCurrencyService().getTower() == null) {
// toggle all buttons to off
Expand Down
Loading

0 comments on commit 33cb08c

Please sign in to comment.