]> git.lizzy.rs Git - dungeon_game.git/blob - plugins/game/game.h
Add plugins
[dungeon_game.git] / plugins / game / game.h
1 #ifndef _GAME_H_
2 #define _GAME_H_
3
4 #include <stdbool.h>
5 #define MAP_HEIGHT 1000
6 #define MAP_WIDTH 1000
7 #define LIGHT 10
8
9 /* Type definitions */
10
11 struct color
12 {
13         unsigned char r, g, b;
14 };
15
16 struct material
17 {
18         bool solid;
19         struct color color;
20 };
21
22 struct node
23 {
24         struct material *material;
25 };
26
27 struct entity_step_data
28 {
29         double dtime;
30         int dx;
31         int dy;
32         bool visible;
33 };
34
35 struct entity
36 {
37         const char *name;
38         int x, y;
39         struct color color;
40         char texture[8];
41         bool remove;
42         void *meta;
43         int health;
44         int max_health;
45         bool collide_with_entities;
46
47         void (*on_step)(struct entity *self, struct entity_step_data stepdata);
48         void (*on_collide)(struct entity *self, int x, int y);
49         void (*on_collide_with_entity)(struct entity *self, struct entity *other);
50         void (*on_spawn)(struct entity *self);
51         void (*on_remove)(struct entity *self);
52         void (*on_death)(struct entity *self);
53 };
54
55 struct list
56 {
57         void *element;
58         struct list *next;
59 };
60
61 typedef struct entity *render_entity_list[LIGHT * 2 + 1][LIGHT * 2 + 1];
62
63 struct generator_function
64 {
65         int chance;
66         void (*callback)(int x, int y);
67 };
68
69 extern int score;
70
71 extern struct color black;
72
73 extern struct material wall;
74 extern struct material air;
75 extern struct material outside;
76
77 extern struct node map[MAP_WIDTH][MAP_HEIGHT];
78
79 extern struct entity player;
80 extern struct list *entities;
81
82 extern struct entity *entity_collision_map[MAP_WIDTH][MAP_HEIGHT];
83
84 extern struct list *air_functions;
85
86 void quit();
87 struct color get_color(const char *str);
88 bool is_outside(int x, int y);
89 struct node get_node(int x, int y);
90 bool is_solid(int x, int y);
91 bool move(struct entity *entity, int xoff, int yoff);
92 void spawn(struct entity def, int x, int y);
93 void add_health(struct entity *entity, int health);
94 void add_score(int s);
95 void set_color(struct color color, bool bg);
96 struct color light_color(struct color color, double light);
97 void register_air_function(struct generator_function func);
98 struct list *add_element(struct list *list, void *element);
99
100 #endif