Enemy.java 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  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. // System.out.println(this.length*this.length/2);
  17. // System.out.println(Math.sqrt(Math.pow(this.length,2)/2));
  18. lengthOf1Side = Math.sqrt(Math.pow(lengthOfEnemy,2)/2);
  19. this.c = c;
  20. this.index = pathID;
  21. this.path = path;
  22. double beginX, beginY,endX = 0,endY = 0;
  23. beginX = path.getX1();
  24. beginY = path.getY1();
  25. //the 8 richtingen van de octagon
  26. switch(index){
  27. case 0:
  28. endY -= this.length;
  29. break;
  30. case 1:
  31. endY -= lengthOf1Side;
  32. endX += lengthOf1Side;
  33. break;
  34. case 2:
  35. endX -= this.length;
  36. break;
  37. case 3:
  38. endY += lengthOf1Side;
  39. endX += lengthOf1Side;
  40. break;
  41. case 4:
  42. endY += this.length;
  43. break;
  44. case 5:
  45. endY += lengthOf1Side;
  46. endX -= lengthOf1Side;
  47. break;
  48. case 6:
  49. endX -= this.length;
  50. break;
  51. case 7:
  52. endY -= lengthOf1Side;
  53. endX -= lengthOf1Side;
  54. break;
  55. }
  56. endX += beginX;
  57. endY += beginY;
  58. enemy = new Line2D.Double(beginX, beginY, endX, endY);
  59. // System.out.println("Enemy added on path: "+pathID);
  60. }
  61. @Override
  62. public void draw(Graphics2D g2) {
  63. g2.setPaint(c);
  64. g2.draw(enemy);
  65. }
  66. @Override
  67. public void update(float factor) {
  68. distanceFromStart += (distanceToOctagon/(secondsToEnd*1000))*factor;
  69. double x1,x2,y1,y2;
  70. x1 = enemy.getX1();
  71. x2 = enemy.getX2();
  72. y1 = enemy.getY1();
  73. y2 = enemy.getY2();
  74. double angleX,angleY;
  75. angleX = Math.cos(Math.toRadians(45))*distanceFromStart;
  76. angleY = Math.sin(Math.toRadians(45))*distanceFromStart;
  77. // System.out.println(Math.toRadians(45)*distanceFromStart);
  78. System.out.println(angleX+" - "+angleY);
  79. switch(index){
  80. case 0:
  81. y1 = path.getY1() + distanceFromStart;
  82. y2 = y1 - length;
  83. break;
  84. case 1:
  85. // x1 -= speedX;
  86. x1 = path.getX1() - angleX;
  87. x2 = x1 + lengthOf1Side;
  88. y1 = path.getY1() + angleY;
  89. y2 = y1 - lengthOf1Side;
  90. break;
  91. case 2:
  92. x1 = path.getX1()-distanceFromStart;
  93. x2 = x1 + length;
  94. break;
  95. case 3:
  96. x1 = path.getX1() - angleX;
  97. x2 = x1 + lengthOf1Side;
  98. y1 = path.getY1() - angleY;
  99. y2 = y1 + lengthOf1Side;
  100. break;
  101. case 4:
  102. y1 = path.getY1() - distanceFromStart;
  103. y2 = y1 + length;
  104. break;
  105. case 5:
  106. x1 = path.getX1() + angleX;
  107. x2 = x1 - lengthOf1Side;
  108. y1 = path.getY1() - angleY;
  109. y2 = y1 + lengthOf1Side;
  110. break;
  111. case 6:
  112. x1 = path.getX1() + distanceFromStart;
  113. x2 = x1 - length;
  114. break;
  115. case 7:
  116. x1 = path.getX1() + angleX;
  117. x2 = x1 - lengthOf1Side;
  118. y1 = path.getY1() + angleY;
  119. y2 = y1 - lengthOf1Side;
  120. break;
  121. }
  122. enemy.setLine(x1, y1, x2, y2);
  123. }
  124. public Color getColor() {
  125. return c;
  126. }
  127. public void setColor(Color c) {
  128. this.c = c;
  129. }
  130. public Line2D getEnemy() {
  131. return enemy;
  132. }
  133. public void setBullet(Line2D bullet) {
  134. this.enemy = bullet;
  135. }
  136. public double getDistanceFromStart() {
  137. return distanceFromStart;
  138. }
  139. }