コード例 #1
0
ファイル: GameRenderer.java プロジェクト: mjerkovic/shooter
  public void render(Vehicle vehicle) {
    Vector adjustedPosition = vehicle.position().add(viewPoint);
    int x = (int) adjustedPosition.x();
    int y = (int) adjustedPosition.y();

    Vector tip = new Vector(x + vehicle.boundingRadius(), y);
    Vector left = new Vector(x - 5, y - 5);
    Vector right = new Vector(x - 5, y + 5);

    int[] xPos = {(int) tip.x(), (int) left.x(), (int) right.x()};
    int[] yPos = {(int) tip.y(), (int) left.y(), (int) right.y()};

    AffineTransform orig = graphics.getTransform();

    AffineTransform rot =
        AffineTransform.getRotateInstance(vehicle.heading().x(), vehicle.heading().y(), x, y);
    graphics.transform(rot);
    graphics.drawPolygon(xPos, yPos, 3);
    graphics.setTransform(orig);

    if (showFeelers) {
      Vector[] feelers = createFeelersFor(vehicle);
      for (Vector feeler : feelers) {
        graphics.drawLine(x, y, (int) feeler.x(), (int) feeler.y());
      }
    }
    renderHealthBar(vehicle, x, y);
    renderEnergyBar(vehicle, x, y);
  }
コード例 #2
0
ファイル: GameRenderer.java プロジェクト: mjerkovic/shooter
  public void render(Wall wall) {
    Stroke stroke = graphics.getStroke();
    graphics.setStroke(new BasicStroke(10));
    Vector from = wall.from().add(viewPoint);
    Vector to = wall.to().add(viewPoint);
    graphics.drawLine((int) from.x(), (int) from.y(), (int) to.x(), (int) to.y());
    graphics.setStroke(stroke);

    if (showWallNormals) {
      Vector centre = wall.centre().add(viewPoint);
      Vector normal = wall.normal();
      int x = (int) centre.x();
      int y = (int) centre.y();
      int toX = x + (int) (normal.x() * 10);
      int toY = y + (int) (normal.y() * 10);
      graphics.drawLine(x, y, toX, toY);
    }
  }
コード例 #3
0
ファイル: GameRenderer.java プロジェクト: mjerkovic/shooter
 public void render(Bullet bullet) {
   Vector adjustedPosition = bullet.position().add(viewPoint);
   int x1 = (int) adjustedPosition.x();
   int y1 = (int) adjustedPosition.y();
   Vector tail = bullet.heading().reverse();
   int x2 = x1 + (int) tail.x() * 10;
   int y2 = y1 + (int) tail.y() * 10;
   graphics.drawLine(x1, y1, x2, y2);
 }
コード例 #4
0
ファイル: GameRenderer.java プロジェクト: mjerkovic/shooter
 public void render(TargetingSystem targetingSystem) {
   Vector pos = targetingSystem.position().add(viewPoint);
   int x = (int) pos.x();
   int y = (int) pos.y();
   int radius = (int) targetingSystem.boundingRadius();
   int diameter = radius * 2;
   graphics.drawOval(x - radius, y - radius, diameter, diameter);
   double hx = targetingSystem.heading().x();
   double hy = targetingSystem.heading().y();
   graphics.drawLine(
       x + (int) (hx * radius),
       y + (int) (hy * radius),
       x + (int) (hx * diameter),
       y + (int) (hy * diameter));
 }