package teamcomm.gui.drawings.common;
import com.jogamp.opengl.GL2;
import data.GameControlData;
import data.PlayerInfo;
import data.SPLStandardMessage;
import teamcomm.data.GameState;
import teamcomm.data.RobotState;
import teamcomm.gui.Camera;
import teamcomm.gui.drawings.RoSi2Loader;
import teamcomm.gui.drawings.PerPlayer;
/**
* Drawing for a robot.
*
* @author Felix Thielke
*/
public class Player extends PerPlayer {
@Override
protected void init(GL2 gl) {
RoSi2Loader.getInstance().cacheModels(gl, new String[]{"robotBlue", "robotRed", "robotBlack", "robotYellow"});
}
@Override
public void draw(final GL2 gl, final RobotState player, final Camera camera) {
final SPLStandardMessage msg = player.getLastMessage();
if (msg != null && msg.poseValid) {
gl.glPushMatrix();
if (player.getPenalty() != PlayerInfo.PENALTY_NONE) {
gl.glTranslatef(-msg.playerNum, -3.5f, 0);
gl.glRotatef(-90, 0, 0, 1);
} else {
gl.glTranslatef(msg.pose[0] / 1000.f, msg.pose[1] / 1000.f, 0);
gl.glRotatef((float) Math.toDegrees(msg.pose[2]), 0, 0, 1);
if (msg.fallenValid && msg.fallen) {
gl.glTranslatef(0, 0, 0.05f);
gl.glRotatef(90, 0, 1, 0);
}
}
switch (GameState.getInstance().getTeamColor(player.getTeamNumber())) {
case GameControlData.TEAM_BLUE:
gl.glCallList(RoSi2Loader.getInstance().loadModel(gl, "robotBlue"));
break;
case GameControlData.TEAM_RED:
gl.glCallList(RoSi2Loader.getInstance().loadModel(gl, "robotRed"));
break;
case GameControlData.TEAM_BLACK:
gl.glCallList(RoSi2Loader.getInstance().loadModel(gl, "robotBlack"));
break;
case GameControlData.TEAM_YELLOW:
gl.glCallList(RoSi2Loader.getInstance().loadModel(gl, "robotYellow"));
break;
}
gl.glPopMatrix();
}
}
@Override
public boolean hasAlpha() {
return false;
}
@Override
public int getPriority() {
return 0;
}
}