summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVegard Storheil Eriksen <zyp@jvnv.net>2010-06-26 18:06:40 +0200
committerVegard Storheil Eriksen <zyp@jvnv.net>2010-06-26 18:06:40 +0200
commitc9e914eeaa624cfa796bdea13ebb1056dfda5c9b (patch)
tree2d0ec8d1a9da3b20d7d033cd5407a31f14cf4511
parentfd7869d603f3a7c17ece6b72cc1ae2652fbf5d58 (diff)
Create a seperate Background class for stage background.
-rw-r--r--engine/background.cpp37
-rw-r--r--engine/background.h9
-rw-r--r--engine/engine.cpp43
-rw-r--r--engine/stage.cpp13
-rw-r--r--engine/stage.h3
5 files changed, 63 insertions, 42 deletions
diff --git a/engine/background.cpp b/engine/background.cpp
new file mode 100644
index 0000000..076c6cf
--- /dev/null
+++ b/engine/background.cpp
@@ -0,0 +1,37 @@
+#include "background.h"
+
+#include <SDL/SDL_opengl.h>
+#include <cmath>
+
+void Background::draw() {
+ glClearColor(0.2, 0.2, 0.2, 0);
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective(45, (float)660 / (float)740, 1, 100);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+
+ static float f = 0.0;
+ f += 0.01;
+
+ gluLookAt(
+ 5 * sinf(f), 1, 5 * cosf(f),
+ 0, 0, 0,
+ 5 * sinf(f), 2, 5 * cosf(f));
+
+ glBegin(GL_LINES);
+ for(int i = -10; i < 11; i++) {
+ if(i % 5 == 0)
+ glColor3f(1, 1, 1);
+ else
+ glColor3f(.5, .5, .5);
+ glVertex3f(i, 0, -10);
+ glVertex3f(i, 0, 10);
+ glVertex3f(-10, 0, i);
+ glVertex3f(10, 0, i);
+ }
+ glEnd();
+}
diff --git a/engine/background.h b/engine/background.h
new file mode 100644
index 0000000..4c294c8
--- /dev/null
+++ b/engine/background.h
@@ -0,0 +1,9 @@
+#ifndef BACKGROUND_H
+#define BACKGROUND_H
+
+class Background {
+ public:
+ void draw();
+};
+
+#endif
diff --git a/engine/engine.cpp b/engine/engine.cpp
index 2e681e7..e67ead3 100644
--- a/engine/engine.cpp
+++ b/engine/engine.cpp
@@ -101,51 +101,10 @@ void Engine::update() {
float v_w = Config::window_h * Config::viewport_w;
float v_h = Config::window_h * Config::viewport_h;
- glViewport(
- v_x - v_w * 0.5,
- v_y - v_h * 0.5,
- v_w * 2,
- v_h * 2);
+ glViewport(v_x - v_w * 0.5, v_y - v_h * 0.5, v_w * 2, v_h * 2);
glScissor(v_x, v_y, v_w, v_h);
glEnable(GL_SCISSOR_TEST);
- glClearColor(0.2, 0.2, 0.2, 0);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluPerspective(45, (float)660 / (float)740, 1, 100);
-
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-
- float f = tick * 0.0005;
-
- gluLookAt(
- 5 * sinf(f), 1, 5 * cosf(f),
- 0, 0, 0,
- 5 * sinf(f), 2, 5 * cosf(f));
-
- glBegin(GL_LINES);
- for(int i = -10; i < 11; i++) {
- if(i % 5 == 0)
- glColor3f(1, 1, 1);
- else
- glColor3f(.5, .5, .5);
- glVertex3f(i, 0, -10);
- glVertex3f(i, 0, 10);
- glVertex3f(-10, 0, i);
- glVertex3f(10, 0, i);
- }
- glEnd();
-
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glOrtho(-0.5, 1.5, -Config::viewport_aspect * 0.5, Config::viewport_aspect * 1.5, 0, 10);
-
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-
stage->draw();
glDisable(GL_SCISSOR_TEST);
diff --git a/engine/stage.cpp b/engine/stage.cpp
index 39cf52a..6bcd622 100644
--- a/engine/stage.cpp
+++ b/engine/stage.cpp
@@ -1,11 +1,15 @@
#include "stage.h"
+#include "config.h"
+
#include <wriggle/texturesdl.h>
#include <SDL/SDL_opengl.h>
#include <cmath>
Stage::Stage() {
+ background = new Background();
+
player = new Player();
texture = new TextureSDL("textures/shot1.png");
@@ -37,6 +41,15 @@ void Stage::update() {
}
void Stage::draw() {
+ background->draw();
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ glOrtho(-0.5, 1.5, -Config::viewport_aspect * 0.5, Config::viewport_aspect * 1.5, 0, 10);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+
player->draw();
for(std::vector<Enemy*>::iterator it = enemy_list.begin(); it < enemy_list.end(); it++) {
diff --git a/engine/stage.h b/engine/stage.h
index bc687da..a53b5fd 100644
--- a/engine/stage.h
+++ b/engine/stage.h
@@ -1,6 +1,7 @@
#ifndef STAGE_H
#define STAGE_H
+#include "background.h"
#include "player.h"
#include <wriggle/shader.h>
#include <wriggle/texture.h>
@@ -11,6 +12,8 @@
class Stage {
private:
+ Background* background;
+
Player* player;
GLShaderProgram* shader;