Enemy.java 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. package model.drawObjects;
  2. import java.awt.Color;
  3. import java.awt.Graphics2D;
  4. import java.awt.geom.Line2D;
  5. import model.objects.Path;
  6. public class Enemy extends DrawObject {
  7. public static final double distanceToOctagon = 1000,secondsToEnd = 5.0;
  8. private int length;
  9. private double lengthOf1Side,distanceFromStart;//lengthOf1Side wordt alleen gebruikt als de lijn een schuine lijn is.
  10. public Line2D enemy;
  11. private Color c;
  12. private Path path;
  13. public Enemy(int pathID,int lengthOfEnemy,Color c,Path path){
  14. super();
  15. this.length = lengthOfEnemy;
  16. lengthOf1Side = Math.sqrt(Math.pow(lengthOfEnemy,2)/2);
  17. this.c = c;
  18. this.index = pathID;
  19. this.path = path;
  20. double beginX, beginY,endX = 0,endY = 0;
  21. beginX = path.getX1();
  22. beginY = path.getY1();
  23. //the 8 richtingen van de octagon
  24. switch(index){
  25. case 0:
  26. endY -= this.length;
  27. break;
  28. case 1:
  29. endY -= lengthOf1Side;
  30. endX += lengthOf1Side;
  31. break;
  32. case 2:
  33. endX -= this.length;
  34. break;
  35. case 3:
  36. endY += lengthOf1Side;
  37. endX += lengthOf1Side;
  38. break;
  39. case 4:
  40. endY += this.length;
  41. break;
  42. case 5:
  43. endY += lengthOf1Side;
  44. endX -= lengthOf1Side;
  45. break;
  46. case 6:
  47. endX -= this.length;
  48. break;
  49. case 7:
  50. endY -= lengthOf1Side;
  51. endX -= lengthOf1Side;
  52. break;
  53. }
  54. endX += beginX;
  55. endY += beginY;
  56. enemy = new Line2D.Double(beginX, beginY, endX, endY);
  57. }
  58. @Override
  59. public void draw(Graphics2D g2) {
  60. g2.setPaint(c);
  61. g2.draw(enemy);
  62. }
  63. @Override
  64. public void update(float factor) {
  65. distanceFromStart += (distanceToOctagon/(secondsToEnd*1000))*factor;
  66. double x1,x2,y1,y2;
  67. x1 = enemy.getX1();
  68. x2 = enemy.getX2();
  69. y1 = enemy.getY1();
  70. y2 = enemy.getY2();
  71. double angleX,angleY;
  72. angleX = Math.cos(Math.toRadians(45))*distanceFromStart;
  73. angleY = Math.sin(Math.toRadians(45))*distanceFromStart;
  74. switch(index){
  75. case 0:
  76. y1 = path.getY1() + distanceFromStart;
  77. y2 = y1 - length;
  78. break;
  79. case 1:
  80. x1 = path.getX1() - angleX;
  81. x2 = x1 + lengthOf1Side;
  82. y1 = path.getY1() + angleY;
  83. y2 = y1 - lengthOf1Side;
  84. break;
  85. case 2:
  86. x1 = path.getX1()-distanceFromStart;
  87. x2 = x1 + length;
  88. break;
  89. case 3:
  90. x1 = path.getX1() - angleX;
  91. x2 = x1 + lengthOf1Side;
  92. y1 = path.getY1() - angleY;
  93. y2 = y1 + lengthOf1Side;
  94. break;
  95. case 4:
  96. y1 = path.getY1() - distanceFromStart;
  97. y2 = y1 + length;
  98. break;
  99. case 5:
  100. x1 = path.getX1() + angleX;
  101. x2 = x1 - lengthOf1Side;
  102. y1 = path.getY1() - angleY;
  103. y2 = y1 + lengthOf1Side;
  104. break;
  105. case 6:
  106. x1 = path.getX1() + distanceFromStart;
  107. x2 = x1 - length;
  108. break;
  109. case 7:
  110. x1 = path.getX1() + angleX;
  111. x2 = x1 - lengthOf1Side;
  112. y1 = path.getY1() + angleY;
  113. y2 = y1 - lengthOf1Side;
  114. break;
  115. }
  116. enemy.setLine(x1, y1, x2, y2);
  117. }
  118. public Color getColor() {
  119. return c;
  120. }
  121. public void setColor(Color c) {
  122. this.c = c;
  123. }
  124. public Line2D getEnemy() {
  125. return enemy;
  126. }
  127. public void setBullet(Line2D bullet) {
  128. this.enemy = bullet;
  129. }
  130. public double getDistanceFromStart() {
  131. return distanceFromStart;
  132. }
  133. }