aboutsummaryrefslogtreecommitdiff
path: root/obj.h
blob: 7cbb962386a9990a1384836b5e9387f2b7d301c3 (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
73
74
75
76
77
78
79
80
81
#ifndef obj_h
#define obj_h

#include "rect.h"

struct App;
struct Map;
struct Renderer;
struct World;

typedef enum {
	face_left,
	face_right
} Face;

typedef struct {
	int x, y, vx, vy;
	int frame;
	int anim;
	int grounded, headbutted, on_ramp, jumping;
	int cooldown, slashing;
	Face face;
	Rect rect;
} Player;

void init_player(Player* p);
void update_player(
	Player* p,
	struct World* w,
	const struct App* app,
	const struct Map* map
);
void ren_player(const Player* p, struct Renderer* r);

typedef struct {
	int x, y;
	int frame, anim;
	int bmp;
	Rect rect;
} Particle;

void init_particle(Particle* p, int x, int y, int anim, int bmp);
int update_particle(Particle* p);
void ren_particle(const Particle* p, struct Renderer* r);

typedef enum {
	enemy_demon
} Enemy_Type;

typedef struct {
	Enemy_Type t;
	int x, y, vx, vy;
	int hp, frame, anim;
	int grounded, headbutted, on_ramp;
	int state, inv;
	Face face;
	Rect rect;
} Enemy;

void init_enemy(Enemy* e, Enemy_Type t, int x, int y);
int update_enemy(Enemy* e, struct World* w);
void ren_enemy(const Enemy* e, struct Renderer* r);

typedef struct {
	Rect r;
	int vx, vy;
	int hp, life, friendly;
} Deathzone;

void init_deathzone(
	Deathzone* d,
	const Rect* r,
	int vx,
	int vy,
	int hp,
	int life,
	int friendly
);
int update_deathzone(Deathzone* d);

#endif