summaryrefslogtreecommitdiffstats
path: root/kue/table.cpp
diff options
context:
space:
mode:
authorMavridis Philippe <mavridisf@gmail.com>2024-08-07 19:13:02 +0300
committerMavridis Philippe <mavridisf@gmail.com>2024-08-07 19:23:24 +0300
commit04b5a62b8d9f5ff8240f25361046f2a5d58e8262 (patch)
tree98b126454cdf68d544e138d7e8b31d5fd45b72c2 /kue/table.cpp
parent83ba00b7e569587d50383ff06a70148042ca780e (diff)
downloadtdegames-feat/kue.tar.gz
tdegames-feat/kue.zip
Add Kue billiards gamefeat/kue
Signed-off-by: Mavridis Philippe <mavridisf@gmail.com>
Diffstat (limited to 'kue/table.cpp')
-rw-r--r--kue/table.cpp119
1 files changed, 119 insertions, 0 deletions
diff --git a/kue/table.cpp b/kue/table.cpp
new file mode 100644
index 00000000..5f2f44ec
--- /dev/null
+++ b/kue/table.cpp
@@ -0,0 +1,119 @@
+#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();
+}