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); }
public void render(Miner miner) { Vector adjustedPosition = miner.position().add(viewPoint); int x = (int) adjustedPosition.x(); int y = (int) adjustedPosition.y(); AffineTransform orig = graphics.getTransform(); AffineTransform rot = AffineTransform.getRotateInstance(miner.heading().x(), miner.heading().y(), x, y); graphics.transform(rot); graphics.drawRect( x - (int) miner.boundingRadius(), y - ((int) miner.boundingRadius() / 2), (int) miner.boundingRadius() * 2, (int) miner.boundingRadius()); graphics.setTransform(orig); renderHealthBar(miner, x, y); renderEnergyBar(miner, x, y); }