/***************************
* Brian Capps
* 04/28/2008
* Description
****************************/
import javax.media.opengl.*;
public class Note
{
float r, g, b;
boolean missedNote, scored, isValid;//if was missed, don't draw, got note, if the note exists
public Note()//if no color specified, values are initialized as 0
{
r = 0f;
g = 0f;
b = 0f;
missedNote = false;
scored = false;
isValid = false;
}
public Note(float red, float green, float blue)//rgb values from 0 to 255
{
r = red;
g = green;
b = blue;
missedNote = false;
scored = false;
isValid = false;
}
public void setColors(float red, float green, float blue)//rgb values from 0 to 255
{
r = red;
g = green;
b = blue;
}
public void draw(GLAutoDrawable gLDrawable, float x, float y, float z, float noteSize)//top left corner coords
{
GL gl = gLDrawable.getGL();
gl.glEnd();
gl.glBegin(GL.GL_QUADS);
//BOTTOM BOX
gl.glColor4f(r/255f,g/255f,b/255f, 1f);
gl.glVertex3f(x,y+.01f, z+noteSize);
gl.glVertex3f(x+1.5f,y+.01f, z+noteSize);
gl.glVertex3f(x+1.5f,y+.01f, z);
gl.glVertex3f(x,y+.01f, z);
//Front BOX
gl.glColor4f(r/255f,g/255f,b/255f, 1f);
gl.glVertex3f(x,y+.01f, z+noteSize);
gl.glVertex3f(x+1.5f,y+.01f, z+noteSize);
gl.glColor4f((r-88)/255f,(g-88)/255f,(b-88)/255f, 1f);
gl.glVertex3f(x+1.5f,y+0.3f+.01f, z+noteSize);
gl.glVertex3f(x,y+0.3f+.01f, z+noteSize);
//TOP
gl.glColor4f((r-105)/255f,(g-105)/255f,(b-105)/255f, 1f);
gl.glVertex3f(x,y+0.3f+.01f, z+noteSize);
gl.glVertex3f(x+1.5f,y+0.3f+.01f, z+noteSize);
gl.glColor4f((r-147)/255f,(g-147)/255f,(b-147)/255f, 1f);
gl.glVertex3f(x+1.5f,y+0.3f+.01f, z);
gl.glVertex3f(x,y+0.3f+.01f, z);
//Back BOX
gl.glColor4f((r-105)/255f,(g-105)/255f,(b-105)/255f, 1f);
gl.glVertex3f(x,y+.01f, z);
gl.glVertex3f(x+1.5f,y+.01f, z);
gl.glVertex3f(x+1.5f,y+0.3f+.01f, z);
gl.glVertex3f(x,y+0.3f+.01f, z);
//Left BOX
gl.glColor4f((r-150)/255f,(g-150)/255f,(b-150)/255f, 1f);
gl.glVertex3f(x,y+.01f, z+noteSize);
gl.glVertex3f(x,y+.01f, z);
gl.glVertex3f(x,y+0.3f+.01f, z);
gl.glVertex3f(x,y+0.3f+.01f, z+noteSize);
//Right Box
gl.glColor4f((r-150)/255f,(g-150)/255f,(b-150)/255f, 1f);
gl.glVertex3f(x+1.5f,y+.01f, z+noteSize);
gl.glVertex3f(x+1.5f,y+.01f, z);
gl.glVertex3f(x+1.5f,y+0.3f+.01f, z);
gl.glVertex3f(x+1.5f,y+0.3f+.01f, z+noteSize);
gl.glEnd();
}
public void drawBar(GLAutoDrawable gLDrawable, float z, float noteSize, boolean missed)
{
GL gl = gLDrawable.getGL();
gl.glEnd();
gl.glBegin(GL.GL_QUADS);
//One box
if (missed)
gl.glColor4f(50/255f,50/255f,50/255f, 1f);
else
gl.glColor4f(255/255f,165/255f,0/255f, 1f);
gl.glVertex3f(-3f,-4f+.008f, z+noteSize );
gl.glVertex3f(3f,-4f+.008f, z+noteSize );
if (missed)
gl.glColor4f(0/255f,0/255f,0/255f, 1f);
else
gl.glColor4f(255/255f,69/255f,0/255f, 1f);
gl.glVertex3f(3f,-4f+.008f, z );
gl.glVertex3f(-3f,-4f+.008f,z );
gl.glEnd();
}
public void setMissed(boolean m)
{
missedNote = m;
}
public boolean getMissed()
{
return missedNote;
}
public void setScored(boolean s)
{
scored = s;
}
public boolean getScored()
{
return scored;
}
public void setIsValid(boolean v)
{
isValid = v;
}
public boolean getIsValid()
{
return isValid;
}
}//end class