void UserInterface::RenderFilledTick()
{
	GLFont *fillLabel = new GLFont();
	fillLabel->Create("Fonts\\another_font.glf");
	fillLabel->Begin();
	glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
	fillLabel->RenderText("Fill ", workArea_TL.GetX() + 10.0f, workArea_BR.GetY() - 400.0f, 0, 8);
	fillLabel->End();
	delete fillLabel;

	glBegin(GL_QUADS);
	glColor3f(1.0f, 1.0f, 1.0f);
	glVertex2f(workArea_TL.GetX() + 160.0f, workArea_BR.GetY() - 400.0f);
	glVertex2f(workArea_TL.GetX() + 160.0f, workArea_BR.GetY() - 420.0f);
	glVertex2f(workArea_TL.GetX() + 180.0f, workArea_BR.GetY() - 420.0f);
	glVertex2f(workArea_TL.GetX() + 180.0f, workArea_BR.GetY() - 400.0f);
	glEnd();

	if (fill)
	{
		glBegin(GL_QUADS);
		glColor3f(0.0f, 0.0f, 0.0f);
		glVertex2f(workArea_TL.GetX() + 165.0f, workArea_BR.GetY() - 405.0f);
		glVertex2f(workArea_TL.GetX() + 165.0f, workArea_BR.GetY() - 415.0f);
		glVertex2f(workArea_TL.GetX() + 175.0f, workArea_BR.GetY() - 415.0f);
		glVertex2f(workArea_TL.GetX() + 175.0f, workArea_BR.GetY() - 405.0f);
		glEnd();
	}
}
void UserInterface::RenderSpinTick()
{
	GLFont *spinLabel = new GLFont();
	spinLabel->Create("Fonts\\another_font.glf");
	spinLabel->Begin();
		glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
			spinLabel->RenderText("Spin ", workArea_TL.GetX() + 10.0f, workArea_BR.GetY() - 350.0f, 0, 8);
	spinLabel->End();
	delete spinLabel;

	glBegin(GL_QUADS);
		glColor3f(1.0f, 1.0f, 1.0f);
			glVertex2f(workArea_TL.GetX() + 160.0f, workArea_BR.GetY() - 350.0f);
			glVertex2f(workArea_TL.GetX() + 160.0f, workArea_BR.GetY() - 370.0f);
			glVertex2f(workArea_TL.GetX() + 180.0f, workArea_BR.GetY() - 370.0f);
			glVertex2f(workArea_TL.GetX() + 180.0f, workArea_BR.GetY() - 350.0f);
	glEnd();

	if (spin)
	{
		glBegin(GL_QUADS);
			glColor3f(0.0f, 0.0f, 0.0f);
				glVertex2f(workArea_TL.GetX() + 165.0f, workArea_BR.GetY() - 355.0f);
				glVertex2f(workArea_TL.GetX() + 165.0f, workArea_BR.GetY() - 365.0f);
				glVertex2f(workArea_TL.GetX() + 175.0f, workArea_BR.GetY() - 365.0f);
				glVertex2f(workArea_TL.GetX() + 175.0f, workArea_BR.GetY() - 355.0f);
		glEnd();
	}
}
void SlideBar::RenderLabel()
{
	GLFont *Label = new GLFont();
	Label->Create("Fonts\\another_font.glf");
	Label->Begin();
	glColor3f(1.0f, 1.0f, 1.0f);
	Label->RenderText(ID, slideBarLX - 10.0f, slideBarLY + 30.0f, 0, 8.0f);
	Label->End();
	delete Label;
}
void UserInterface::RenderModelPicker()
{
	//Renders the title
	GLFont *modelSelectorLabel = new GLFont();
	modelSelectorLabel->Create("Fonts\\another_font.glf");
	modelSelectorLabel->Begin();
	glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
	modelSelectorLabel->RenderText("Model Selector: ", workArea_TL.GetX() + 10.0f, workArea_BR.GetY() - 450.0f, 0, 8);
	modelSelectorLabel->End();
	delete modelSelectorLabel;

	///////////////////////////////////////////////////////////////////////////////

	GLFont *teapotLabel = new GLFont();
	teapotLabel->Create("Fonts\\another_font.glf");
	teapotLabel->Begin();
	glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
	teapotLabel->RenderText("Teapot ", workArea_TL.GetX() + 10.0f, workArea_BR.GetY() - 500.0f, 0, 8);
	teapotLabel->End();
	delete teapotLabel;

	glBegin(GL_QUADS);
	glColor3f(1.0f, 1.0f, 1.0f);
	glVertex2f(workArea_TL.GetX() + 160.0f, workArea_BR.GetY() - 500.0f);
	glVertex2f(workArea_TL.GetX() + 160.0f, workArea_BR.GetY() - 520.0f);
	glVertex2f(workArea_TL.GetX() + 180.0f, workArea_BR.GetY() - 520.0f);
	glVertex2f(workArea_TL.GetX() + 180.0f, workArea_BR.GetY() - 500.0f);
	glEnd();

	if (teapot)
	{
		glBegin(GL_QUADS);
		glColor3f(0.0f, 0.0f, 0.0f);
		glVertex2f(workArea_TL.GetX() + 165.0f, workArea_BR.GetY() - 505.0f);
		glVertex2f(workArea_TL.GetX() + 165.0f, workArea_BR.GetY() - 515.0f);
		glVertex2f(workArea_TL.GetX() + 175.0f, workArea_BR.GetY() - 515.0f);
		glVertex2f(workArea_TL.GetX() + 175.0f, workArea_BR.GetY() - 505.0f);
		glEnd();
	}

	//Desmond
	GLFont *desmondLabel = new GLFont();
	desmondLabel->Create("Fonts\\another_font.glf");
	desmondLabel->Begin();
	glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
	desmondLabel->RenderText("Desmond Miles ", workArea_TL.GetX() + 10.0f, workArea_BR.GetY() - 550.0f, 0, 8);
	desmondLabel->End();
	delete desmondLabel;

	glBegin(GL_QUADS);
	glColor3f(1.0f, 1.0f, 1.0f);
	glVertex2f(workArea_TL.GetX() + 160.0f, workArea_BR.GetY() - 550.0f);
	glVertex2f(workArea_TL.GetX() + 160.0f, workArea_BR.GetY() - 570.0f);
	glVertex2f(workArea_TL.GetX() + 180.0f, workArea_BR.GetY() - 570.0f);
	glVertex2f(workArea_TL.GetX() + 180.0f, workArea_BR.GetY() - 550.0f);
	glEnd();

	if (desmond)
	{
		glBegin(GL_QUADS);
		glColor3f(0.0f, 0.0f, 0.0f);
		glVertex2f(workArea_TL.GetX() + 165.0f, workArea_BR.GetY() - 555.0f);
		glVertex2f(workArea_TL.GetX() + 165.0f, workArea_BR.GetY() - 565.0f);
		glVertex2f(workArea_TL.GetX() + 175.0f, workArea_BR.GetY() - 565.0f);
		glVertex2f(workArea_TL.GetX() + 175.0f, workArea_BR.GetY() - 555.0f);
		glEnd();
	}

	//Teddy
	GLFont *teddyLabel = new GLFont();
	teddyLabel->Create("Fonts\\another_font.glf");
	teddyLabel->Begin();
	glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
	teddyLabel->RenderText("Teddy ", workArea_TL.GetX() + 10.0f, workArea_BR.GetY() - 600.0f, 0, 8);
	teddyLabel->End();
	delete teddyLabel;

	glBegin(GL_QUADS);
	glColor3f(1.0f, 1.0f, 1.0f);
	glVertex2f(workArea_TL.GetX() + 160.0f, workArea_BR.GetY() - 600.0f);
	glVertex2f(workArea_TL.GetX() + 160.0f, workArea_BR.GetY() - 620.0f);
	glVertex2f(workArea_TL.GetX() + 180.0f, workArea_BR.GetY() - 620.0f);
	glVertex2f(workArea_TL.GetX() + 180.0f, workArea_BR.GetY() - 600.0f);
	glEnd();

	if (teddy)
	{
		glBegin(GL_QUADS);
		glColor3f(0.0f, 0.0f, 0.0f);
		glVertex2f(workArea_TL.GetX() + 165.0f, workArea_BR.GetY() - 605.0f);
		glVertex2f(workArea_TL.GetX() + 165.0f, workArea_BR.GetY() - 615.0f);
		glVertex2f(workArea_TL.GetX() + 175.0f, workArea_BR.GetY() - 615.0f);
		glVertex2f(workArea_TL.GetX() + 175.0f, workArea_BR.GetY() - 605.0f);
		glEnd();
	}

	//C3P0
	GLFont *C3P0Label = new GLFont();
	C3P0Label->Create("Fonts\\another_font.glf");
	C3P0Label->Begin();
	glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
	C3P0Label->RenderText("C-3P0", workArea_TL.GetX() + 10.0f, workArea_BR.GetY() - 650.0f, 0, 8);
	C3P0Label->End();
	delete C3P0Label;

	glBegin(GL_QUADS);
	glColor3f(1.0f, 1.0f, 1.0f);
	glVertex2f(workArea_TL.GetX() + 160.0f, workArea_BR.GetY() - 650.0f);
	glVertex2f(workArea_TL.GetX() + 160.0f, workArea_BR.GetY() - 670.0f);
	glVertex2f(workArea_TL.GetX() + 180.0f, workArea_BR.GetY() - 670.0f);
	glVertex2f(workArea_TL.GetX() + 180.0f, workArea_BR.GetY() - 650.0f);
	glEnd();

	if (C3P0)
	{
		glBegin(GL_QUADS);
		glColor3f(0.0f, 0.0f, 0.0f);
		glVertex2f(workArea_TL.GetX() + 165.0f, workArea_BR.GetY() - 655.0f);
		glVertex2f(workArea_TL.GetX() + 165.0f, workArea_BR.GetY() - 665.0f);
		glVertex2f(workArea_TL.GetX() + 175.0f, workArea_BR.GetY() - 665.0f);
		glVertex2f(workArea_TL.GetX() + 175.0f, workArea_BR.GetY() - 655.0f);
		glEnd();
	}
}
void SlideBar::RenderValueDisplay()
{
	glEnable(GL_BLEND);
	glBegin(GL_QUADS);
		glColor4f(1.0f, 1.0f, 1.0f, alpha);
			glVertex2f(slideBarRX + 10.0f, slideBarRY);
			glVertex2f(slideBarRX + 10.0f, slideBarRY - 15.0f);
			glVertex2f(slideBarRX + 69.0f, slideBarRY - 15.0f);
			glVertex2f(slideBarRX + 69.0f, slideBarRY);
	glEnd();

	glBegin(GL_LINES);
		glColor4f(0.3f, 0.3f, 0.3f, alpha);
			glVertex2f(slideBarRX + 69.0f, slideBarRY + 1.0f);
			glVertex2f(slideBarRX + 9.0f, slideBarRY + 1.0f);
			glVertex2f(slideBarRX + 9.0f, slideBarRY + 1.0f);
			glVertex2f(slideBarRX + 9.0f, slideBarRY - 16.0f);

		glColor4f(0.8f, 0.8f, 0.8f, alpha);
			glVertex2f(slideBarRX + 9.0f, slideBarRY - 16.0f);
			glVertex2f(slideBarRX + 70.0f, slideBarRY - 16.0f);
			glVertex2f(slideBarRX + 70.0f, slideBarRY - 16.0f);
			glVertex2f(slideBarRX + 70.0f, slideBarRY + 1.0f);
	glEnd();

	float percentage;

	//This gets the ratio of where the pointer is in relation to the left and right (X) of the total bar. 
	if (slideBarLX >= 0)
	{
		percentage = ((spX - slideBarLX) / (slideBarRX - slideBarLX)) * 100;
	}
	else
	{
		percentage = ((spX + fabsf(slideBarLX)) / (slideBarRX - slideBarLX)) * 100;
	}

	//The slider happens to go above the bound by a float or two, this will be ignored as the value is set to the min/max bound by the mousemove function.
	//This will take over once the user puts the slider back in bounds.
	if (!belowLowerBound && !aboveUpperBound)
	{
		if (percentage == 0)
		{
			value = lowNumber;
		}
		else
		{
			//If the low number is below zero, it needs to be assumed as 0 until the end
			//To keep the correct range the absolute value of the low number is added to the high number
			//Then the absolute value of the low number is taken away at the end. 
			if (lowNumber <= 0)
			{
				value = ((highNumber + fabsf(lowNumber)) - 0) * (percentage / 100) - fabsf(lowNumber);
			}
			else
			{
				value = (highNumber - lowNumber) * (percentage / 100);
			}
		}
	}

	std::ostringstream converter;
	converter << value;
	converter.precision(0);
	std::string valueString(converter.str());

	GLFont *valueLabel = new GLFont();
	valueLabel->Create("Fonts\\franklin_gothic.glf");
	valueLabel->Begin();
	glColor4f(0.0f, 0.0f, 0.0f, alpha);
	valueLabel->RenderText(valueString.c_str(), slideBarRX + 15.0f, slideBarRY, 0, 6);
	valueLabel->End();
	delete valueLabel;

}