-
Notifications
You must be signed in to change notification settings - Fork 0
/
character.c
32 lines (27 loc) · 860 Bytes
/
character.c
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
#include "main.h"
t_character* character_init(void) {
t_character* character;
character = xcalloc(1, sizeof *character);
character->sprite = sprite_get('+');
character->hp = 100;
return character;
}
t_class* character_class(t_game* game) {
return game->classes + game->character->classid;
}
void character_move(t_game* game) {
int newx;
int newy;
t_entity* entity;
newx = game->character->x + game->character->vx;
newy = game->character->y + game->character->vy;
game->character->vx = game->character->vy = 0; // TODO keyup
if ((entity = entity_at(game->entities, newx, newy))) {
entity_trigger(game, entity);
} else if ((newx >= 0 && newx < game->map->w) &&
(newy >= 0 && newy < game->map->h) &&
sprite_at(game->map, newx, newy)->walkable) {
game->character->x = newx;
game->character->y = newy;
}
}