summary refs log tree commit diff stats
path: root/gamestate.cpp
blob: d1c17b2741427e31f39cdd64fbb09ba7eda1fd5e (plain) (blame)
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include "includes.h"

GameState::GameState()
{
	player_color = getColor(255, 255, 0);

	newGame = true;
	doneMaking = false;

	level = Level();
}

void GameState::input(SDLKey key)
{
	if (doneMaking)
	{
		switch (key)
		{
			case SDLK_LEFT:
				move(playerx-1, playery);

				break;
			case SDLK_RIGHT:
				move(playerx+1, playery);

				break;
			case SDLK_UP:
				move(playerx, playery-1);

				break;
			case SDLK_DOWN:
				move(playerx, playery+1);

				break;
		}
	}
}

void GameState::tick()
{
	if (newGame)
	{
		playerx = 1;
		playery = 1;
		board = Board(level);
		newGame = false;
		doneMaking = true;
	}
}

void GameState::move(int x, int y)
{
	wrap(&x, &y);

	if (board.isObstructed(x,y)) return;

	playerx = x;
	playery = y;
}

void GameState::render(SDL_Surface* screen)
{
	board.render(screen, level);

	SDL_Rect block;
	block.x = playerx*16;
	block.y = playery*16;
	block.w = 16;
	block.h = 16;

	SDL_FillRect(screen, &block, player_color);
}