You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
1.5 KiB

2 years ago
  1. package playground;
  2. import controller.FallingStarController;
  3. import gameobjects.EgoObject;
  4. import gameobjects.FallingStar;
  5. import gameobjects.GameObject;
  6. import gameobjects.RectObject;
  7. import java.awt.Color;
  8. import org.apache.logging.log4j.LogManager;
  9. import org.apache.logging.log4j.Logger;
  10. /**
  11. * extends {@link SpaceInvadersLevel} with 10 enemies that need two shots each to be destroyed.
  12. *
  13. */
  14. public class LevelHitTwice extends SpaceInvadersLevel {
  15. /** constant defining the number of shots needed to destroy an enemy */
  16. public static final int MAX_HITS = 2;
  17. private static Logger logger = LogManager.getLogger(LevelHitTwice.class);
  18. /** constructor setting internal name to 'hitTwice' */
  19. public LevelHitTwice() {
  20. super();
  21. this.level = "hitTwice";
  22. }
  23. @Override
  24. protected String getStartupMessage() {
  25. return "2 shots at alien required!!!";
  26. }
  27. @Override
  28. protected int calcNrEnemies() {
  29. return 10;
  30. }
  31. @Override
  32. void actionIfEnemyIsHit(GameObject e, GameObject shot) {
  33. Object counterFlag = e.getOrCreateObjectFlag("counter", Integer.valueOf(1));
  34. int counter = (Integer) counterFlag;
  35. if (counter >= MAX_HITS) {
  36. logger.trace("enemy was hit before for " + counter + " times, which is above "
  37. + LevelHitTwice.MAX_HITS);
  38. super.actionIfEnemyIsHit(e, shot);
  39. } else {
  40. logger.trace("enemy was hit before for "+counter+" times, which is below "+LevelHitTwice.MAX_HITS);
  41. e.setObjectFlag("counter", Integer.valueOf(counter + 1));
  42. }
  43. deleteObject(shot.getId());
  44. }
  45. }