You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdegames/kue/table.cpp

120 lines
2.3 KiB
C++

#include <GL/gl.h>
#include <GL/glu.h>
#include <tqstring.h>
#include "table.h"
#include "graphics.h"
table::table() : _texture("table") {
}
table::~table() {
}
void table::draw(double play_area_width, double play_area_height)
{ // The location of the head string
double head_string = play_area_width / 4.0;
// Set the texture to the felt texture
_texture.makeCurrent();
glColor3d(0.1, 1.0, 0.1);
glBegin(GL_QUADS);
// Draw the table as a green textured square
glNormal3d(0.0, 0.0, 1.0);
glTexCoord2d(0.0, 0.0);
glVertex2d(0.0, 0.0);
glTexCoord2d(16.0, 0.0);
glVertex2d(play_area_width, 0.0);
glTexCoord2d(16.0, 8.0);
glVertex2d(play_area_width, play_area_height);
glTexCoord2d(0.0, 8.0);
glVertex2d(0.0, play_area_height);
// Draw the table as a green textured square
glNormal3d(0.0, 1.0, 0.0);
glTexCoord2d(0.0, 1.0);
glVertex3d(0.0, 0.0, 0.0);
glTexCoord2d(0.0, 0.0);
glVertex3d(0.0, 0.0, 0.005);
glTexCoord2d(16.0, 1.0);
glVertex3d(play_area_width, 0.0, 0.005);
glTexCoord2d(16.0, 0.0);
glVertex3d(play_area_width, 0.0, 0.0);
glNormal3d(0.0, -1.0, 0.0);
glTexCoord2d(0.0, 0.0);
glVertex3d(0.0, play_area_height, 0.0);
glTexCoord2d(0.0, 1.0);
glVertex3d(0.0, play_area_height, 0.005);
glTexCoord2d(16.0, 0.0);
glVertex3d(play_area_width, play_area_height, 0.005);
glTexCoord2d(16.0, 1.0);
glVertex3d(play_area_width, play_area_height, 0.0);
glNormal3d(1.0, 0.0, 0.0);
glTexCoord2d(0.0, 0.0);
glVertex3d(0.0, 0.0, 0.0);
glTexCoord2d(0.0, 1.0);
glVertex3d(0.0, 0.0, 0.005);
glTexCoord2d(16.0, 0.0);
glVertex3d(0.0, play_area_height, 0.005);
glTexCoord2d(16.0, 1.0);
glVertex3d(0.0, play_area_height, 0.0);
glNormal3d(-1.0, 0.0, 0.0);
glTexCoord2d(0.0, 0.0);
glVertex3d(play_area_width, 0.0, 0.0);
glTexCoord2d(0.0, 1.0);
glVertex3d(play_area_width, 0.0, 0.005);
glTexCoord2d(16.0, 0.0);
glVertex3d(play_area_width, play_area_height, 0.005);
glTexCoord2d(16.0, 1.0);
glVertex3d(play_area_width, play_area_height, 0.0);
glEnd();
// Draw the head string line on in a color slightly lighter than the table
glColor3d(0.2, 1.0, 0.2);
glNormal3d(0.0, 0.0, 1.0);
// Make the line two pixels thick
glLineWidth(2.0);
// Actually draw the line
glBegin(GL_LINES);
glVertex2d(head_string, 0.0);
glVertex2d(head_string, play_area_height);
glEnd();
}