summaryrefslogtreecommitdiff
path: root/engine/player.cpp
blob: 7d2ac0854831e55c579a7cf177dfe102b139e151 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#ifndef __APPLE__
#include <GL/gl.h>
#else
#include <OpenGL/gl.h>
#endif
#include <cmath>
#include <SDL/SDL.h>

#include "player.h"
#include <wriggle/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);
}