diff options
Diffstat (limited to 'player.cpp')
-rw-r--r-- | player.cpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/player.cpp b/player.cpp new file mode 100644 index 0000000..0a7118a --- /dev/null +++ b/player.cpp @@ -0,0 +1,48 @@ +#ifndef __APPLE__ +#include <GL/gl.h> +#else +#include <OpenGL/gl.h> +#endif +#include <cmath> +#include <SDL/SDL.h> + +#include "player.h" +#include "texturesdl.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_LSHIFT | KMOD_RSHIFT) ? 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 += x_speed; + y += y_speed; +} |