DrawEngine.java 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package gui.simulator;
  2. import javax.imageio.ImageIO;
  3. import java.awt.*;
  4. import java.awt.geom.AffineTransform;
  5. import java.awt.geom.Point2D;
  6. import java.awt.geom.Rectangle2D;
  7. import java.io.IOException;
  8. /**
  9. * Created by gjoosen on 07/03/15.
  10. * Edited by master D Mathijssen on 17-3-2015 and some other days
  11. */
  12. public abstract class DrawEngine {
  13. private Images.ImageType image;
  14. private double x, y, rotation, scale;
  15. private double distanceToOtherObjects;
  16. public SimulatorPane.Objects type;
  17. private Terrain terrain;
  18. public DrawEngine(Images.ImageType image, int x, int y, double scale, double distanceToOtherObjects, SimulatorPane.Objects objecttype, Terrain terrain){
  19. this.image = image;
  20. this.type = objecttype;
  21. this.x = x;
  22. this.y = y;
  23. this.scale = scale;
  24. this.distanceToOtherObjects = distanceToOtherObjects;
  25. this.terrain = terrain;
  26. }
  27. public AffineTransform getAffineTransform(){
  28. AffineTransform transform = new AffineTransform();
  29. transform.translate(this.x, this.y);
  30. transform.scale(this.scale, this.scale);
  31. transform.rotate(Math.toRadians(this.rotation), Images.getImage(image).getWidth(null) /2 , Images.getImage(image).getHeight(null) / 2);
  32. return transform;
  33. }
  34. public void draw(Graphics2D g){
  35. g.drawImage(Images.getImage(image), this.getAffineTransform(), null);
  36. }
  37. public boolean contains(Point2D point){
  38. Shape shape = new Rectangle2D.Double(0, 0, Images.getImage(image).getWidth(null),Images.getImage(image).getHeight(null));
  39. return this.getAffineTransform().createTransformedShape(shape).contains(point);
  40. }
  41. public Image getImage(){
  42. return Images.getImage(image);
  43. }
  44. public Point2D.Double getCenter(){
  45. Point2D.Double center = new Point2D.Double(x + Images.getImage(image).getWidth(null)*scale / 2, y + Images.getImage(image).getHeight(null)*scale/2);
  46. return center;
  47. }
  48. //getters and setters down here
  49. public double getX() {
  50. return x;
  51. }
  52. public double getY() {
  53. return y;
  54. }
  55. public void setX(double x){
  56. this.x = x;
  57. }
  58. public void setY(double y){
  59. this.y = y;
  60. }
  61. public void setRotation(double rotation) {
  62. this.rotation = rotation;
  63. }
  64. public double getScale() {
  65. return scale;
  66. }
  67. public void setScale(double scale) {
  68. this.scale = scale;
  69. }
  70. public int getWidth(){
  71. return Images.getImage(image).getWidth(null);
  72. }
  73. public int getHeight(){
  74. return Images.getImage(image).getHeight(null);
  75. }
  76. public double getRotation() {
  77. return rotation;
  78. }
  79. public double getDistanceToOtherObjects() {
  80. return distanceToOtherObjects;
  81. }
  82. public Rectangle2D.Double getRect(){
  83. return new Rectangle2D.Double(-distanceToOtherObjects, - distanceToOtherObjects, Images.getImage(image).getWidth(null) + 2* distanceToOtherObjects, Images.getImage(image).getHeight(null) + 2*distanceToOtherObjects);
  84. }
  85. public void remove(){
  86. this.terrain.getEntities().remove(this);
  87. }
  88. }