summaryrefslogtreecommitdiff
path: root/engine/player.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engine/player.cpp')
-rw-r--r--engine/player.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/engine/player.cpp b/engine/player.cpp
new file mode 100644
index 0000000..4a159ca
--- /dev/null
+++ b/engine/player.cpp
@@ -0,0 +1,49 @@
+#ifndef __APPLE__
+#include <GL/gl.h>
+#else
+#include <OpenGL/gl.h>
+#endif
+#include <cmath>
+#include <SDL/SDL.h>
+
+#include "player.h"
+#include "texturesdl.h"
+#include "config.h"
+
+Player::Player() {
+ x = 0.5;
+ y = 0.1;
+ move_factor = 0.005;
+ focus_factor = 0.5;
+ texture = new TextureSDL("textures/player.png");
+}
+
+void Player::draw() {
+ glPointSize(32.0);
+
+ glColor4f(1, 1, 1, 1);
+ glEnable(GL_TEXTURE_2D);
+ glBindTexture(GL_TEXTURE_2D, texture->tex());
+
+ glBegin(GL_POINTS);
+ glVertex2f(x, y);
+ glEnd();
+
+ glDisable(GL_TEXTURE_2D);
+}
+
+void Player::update() {
+ Uint8 *keystate = SDL_GetKeyState(NULL);
+ float factor = move_factor * (SDL_GetModState() & KMOD_SHIFT ? focus_factor : 1);
+
+ float x_speed = factor * keystate[SDLK_RIGHT] - factor * keystate[SDLK_LEFT];
+ float y_speed = factor * keystate[SDLK_UP] - factor * keystate[SDLK_DOWN];
+
+ if(x_speed && y_speed) {
+ x_speed /= sqrtf(2);
+ y_speed /= sqrtf(2);
+ }
+
+ x = fmaxf(fminf(x + x_speed, 1.0 - 0.018), 0.018);
+ y = fmaxf(fminf(y + y_speed, Config::viewport_aspect - 0.018), 0.018);
+}