summaryrefslogtreecommitdiffstats
path: root/Game.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Game.cpp')
-rw-r--r--Game.cpp47
1 files changed, 29 insertions, 18 deletions
diff --git a/Game.cpp b/Game.cpp
index bd028c2..46f942f 100644
--- a/Game.cpp
+++ b/Game.cpp
@@ -19,6 +19,7 @@
#include "Game.h"
#include "BSPTree.h"
+#include "Level.h"
#include "Triangle.h"
#include "gl.h"
@@ -26,8 +27,9 @@ namespace Zoom {
Game::Game(bool multisample) : angle(0) {
glClearColor(0.0, 0.0, 0.0, 1.0);
- //glEnable(GL_DEPTH_TEST);
- //glDepthFunc(GL_LEQUAL);
+ glClearDepth(1.0);
+ glEnable(GL_DEPTH_TEST);
+ glDepthFunc(GL_LEQUAL);
//glEnable(GL_BLEND);
//glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
@@ -37,43 +39,52 @@ Game::Game(bool multisample) : angle(0) {
glEnable(GL_MULTISAMPLE_ARB);
#endif
- /*glEnable(GL_LIGHTING);
- static const float light[] = {1, 1, 1, 0};
+ glShadeModel(GL_SMOOTH);
+
+ glEnable(GL_LIGHTING);
+ static const float light[] = {0, 0, 0, 1};
static const float lightColor[] = {1, 1, 1, 1};
glLightfv(GL_LIGHT0, GL_POSITION, light);
glLightfv(GL_LIGHT0, GL_DIFFUSE, lightColor);
- glEnable(GL_LIGHT0);*/
+ glEnable(GL_LIGHT0);
+
+ glEnable(GL_COLOR_MATERIAL);
+ glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
- //glEnable(GL_CULL_FACE);
- //glFrontFace(GL_CCW);
+ glEnable(GL_CULL_FACE);
+ glFrontFace(GL_CCW);
glLoadIdentity();
- glTranslatef(0, 0, -5);
+
+ loadLevel("level.xml");
+}
+
+bool Game::loadLevel(const std::string &name) {
+ level = Level::loadLevel(name);
+
+ return level;
}
void Game::run(int delta) {
- angle += delta*0.2;
+ angle += delta*0.01;
if(angle >= 360)
angle -= 360;
}
void Game::render() {
- std::list<Triangle> triangles;
-
- triangles.push_back(Triangle(vmml::vec3f(-1, -1, 0), vmml::vec3f(1, -1, 0), vmml::vec3f(1, 1, 0), vmml::vec3f(0, 1, 0)));
- triangles.push_back(Triangle(vmml::vec3f(-1, -1, 0), vmml::vec3f(-1, 1, 0), vmml::vec3f(1, 1, 0), vmml::vec3f(0, 1, 0)));
- triangles.push_back(Triangle(vmml::vec3f(-1, -1, -1), vmml::vec3f(1, -1, -1), vmml::vec3f(1, 1, -1), vmml::vec3f(0, 0, 1)));
- triangles.push_back(Triangle(vmml::vec3f(-1, -1, -1), vmml::vec3f(-1, 1, -1), vmml::vec3f(1, 1, -1), vmml::vec3f(0, 0, 1)));
+ std::list<BSPTree::TriangleRecord> triangles;
- BSPTree tree(triangles);
+ triangles.insert(triangles.end(), level->getRooms().front().walls.begin(), level->getRooms().front().walls.end());
- glClear(GL_COLOR_BUFFER_BIT);
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(angle, 1, 2, 1);
+ //glRotatef(3*angle, 0, -1, 2);
+ //glRotatef(5*angle, 2, -1, 0);
- renderer.render(tree);
+ renderer.render(triangles);
glPopMatrix();
}