package teamcomm.gui.drawings.common;
import com.jogamp.opengl.GL2;
import data.PlayerInfo;
import data.SPLStandardMessage;
import teamcomm.data.RobotState;
import teamcomm.gui.Camera;
import teamcomm.gui.drawings.PerPlayer;
/**
* Drawing for the walking and shooting targets of a player.
*
* @author Felix Thielke
*/
public class PlayerTarget extends PerPlayer {
private static final float CROSS_RADIUS = 0.1f;
@Override
public void draw(final GL2 gl, final RobotState player, final Camera camera) {
final SPLStandardMessage msg = player.getLastMessage();
if (msg != null && msg.poseValid && msg.walkingToValid && player.getPenalty() == PlayerInfo.PENALTY_NONE) {
final float poseX = msg.pose[0] / 1000.f;
final float poseY = msg.pose[1] / 1000.f;
final float walkingToX = msg.walkingTo[0] / 1000.f;
final float walkingToY = msg.walkingTo[1] / 1000.f;
// Set color and normal
gl.glColor3f(0, 0, 0);
gl.glNormal3f(0, 0, 1);
// Draw line from player to walking target
gl.glBegin(GL2.GL_LINES);
gl.glVertex2f(poseX, poseY);
gl.glVertex2f(walkingToX, walkingToY);
gl.glEnd();
// Draw cross on walking target
gl.glTranslatef(walkingToX, walkingToY, 0);
gl.glBegin(GL2.GL_LINES);
gl.glVertex2f(-CROSS_RADIUS, -CROSS_RADIUS);
gl.glVertex2f(CROSS_RADIUS, CROSS_RADIUS);
gl.glVertex2f(-CROSS_RADIUS, CROSS_RADIUS);
gl.glVertex2f(CROSS_RADIUS, -CROSS_RADIUS);
gl.glEnd();
gl.glTranslatef(-walkingToX, -walkingToY, 0);
// Set color
gl.glColor3f(1, 0, 0);
// Draw line from player to shooting target
if (msg.shootingToValid) {
final float shootingToX = msg.shootingTo[0] / 1000.f;
final float shootingToY = msg.shootingTo[1] / 1000.f;
gl.glBegin(GL2.GL_LINES);
gl.glVertex2f(poseX, poseY);
gl.glVertex2f(shootingToX, shootingToY);
gl.glEnd();
// Draw cross on shooting target
gl.glTranslatef(shootingToX, shootingToY, 0);
gl.glBegin(GL2.GL_LINES);
gl.glVertex2f(-CROSS_RADIUS, -CROSS_RADIUS);
gl.glVertex2f(CROSS_RADIUS, CROSS_RADIUS);
gl.glVertex2f(-CROSS_RADIUS, CROSS_RADIUS);
gl.glVertex2f(CROSS_RADIUS, -CROSS_RADIUS);
gl.glEnd();
gl.glTranslatef(-shootingToX, -shootingToY, 0);
}
}
}
@Override
public boolean hasAlpha() {
return false;
}
@Override
public int getPriority() {
return 0;
}
}