Enemy.java 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  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. public void draw(Graphics2D g2, boolean b) {
  64. g2.setPaint(c.darker().darker());
  65. g2.draw(enemy);
  66. }
  67. @Override
  68. public void update(float factor) {
  69. distanceFromStart += (distanceToOctagon/(secondsToEnd*1000))*factor;
  70. double x1,x2,y1,y2;
  71. x1 = enemy.getX1();
  72. x2 = enemy.getX2();
  73. y1 = enemy.getY1();
  74. y2 = enemy.getY2();
  75. double angleX,angleY;
  76. angleX = Math.cos(Math.toRadians(45))*distanceFromStart;
  77. angleY = Math.sin(Math.toRadians(45))*distanceFromStart;
  78. switch(index){
  79. case 0:
  80. y1 = path.getY1() + distanceFromStart;
  81. y2 = y1 - length;
  82. break;
  83. case 1:
  84. x1 = path.getX1() - angleX;
  85. x2 = x1 + lengthOf1Side;
  86. y1 = path.getY1() + angleY;
  87. y2 = y1 - lengthOf1Side;
  88. break;
  89. case 2:
  90. x1 = path.getX1()-distanceFromStart;
  91. x2 = x1 + length;
  92. break;
  93. case 3:
  94. x1 = path.getX1() - angleX;
  95. x2 = x1 + lengthOf1Side;
  96. y1 = path.getY1() - angleY;
  97. y2 = y1 + lengthOf1Side;
  98. break;
  99. case 4:
  100. y1 = path.getY1() - distanceFromStart;
  101. y2 = y1 + length;
  102. break;
  103. case 5:
  104. x1 = path.getX1() + angleX;
  105. x2 = x1 - lengthOf1Side;
  106. y1 = path.getY1() - angleY;
  107. y2 = y1 + lengthOf1Side;
  108. break;
  109. case 6:
  110. x1 = path.getX1() + distanceFromStart;
  111. x2 = x1 - length;
  112. break;
  113. case 7:
  114. x1 = path.getX1() + angleX;
  115. x2 = x1 - lengthOf1Side;
  116. y1 = path.getY1() + angleY;
  117. y2 = y1 - lengthOf1Side;
  118. break;
  119. }
  120. enemy.setLine(x1, y1, x2, y2);
  121. }
  122. public Color getColor() {
  123. return c;
  124. }
  125. public void setColor(Color c) {
  126. this.c = c;
  127. }
  128. public Line2D getEnemy() {
  129. return enemy;
  130. }
  131. public void setBullet(Line2D bullet) {
  132. this.enemy = bullet;
  133. }
  134. public double getDistanceFromStart() {
  135. return distanceFromStart;
  136. }
  137. }