]> git.lizzy.rs Git - dragonblocks_alpha.git/blob - src/node.h
Add trees
[dragonblocks_alpha.git] / src / node.h
1 #ifndef _NODE_H_
2 #define _NODE_H_
3
4 #include <stdbool.h>
5 #include <dragontype/number.h>
6
7 #define NODE_DEFINITION(type) ((type) < NODE_UNLOADED ? &node_definitions[NODE_UNKNOWN] : &node_definitions[(type)]);
8
9 typedef enum
10 {
11         NODE_UNKNOWN,           // Used for unknown nodes received from server (caused by outdated clients)
12         NODE_AIR,
13         NODE_GRASS,
14         NODE_DIRT,
15         NODE_STONE,
16         NODE_SNOW,
17         NODE_OAK_WOOD,
18         NODE_OAK_LEAVES,
19         NODE_PINE_WOOD,
20         NODE_PINE_LEAVES,
21         NODE_PALM_WOOD,
22         NODE_PALM_LEAVES,
23         NODE_SAND,
24         NODE_WATER,
25         NODE_LAVA,
26         NODE_VULCANO_STONE,
27         NODE_UNLOADED,          // Used for nodes in unloaded blocks
28 } Node;
29
30 struct MapNode;
31
32 typedef struct
33 {
34         bool solid;
35         size_t data_size;
36         void (*create)(struct MapNode *node);
37         void (*delete)(struct MapNode *node);
38         void (*serialize)(struct MapNode *node, unsigned char **buffer, size_t *bufsiz);
39         void (*deserialize)(struct MapNode *node, unsigned char *data, size_t size);
40 } NodeDefinition;
41
42 typedef struct {
43         v3f32 color;
44 } HSLData;
45
46 extern NodeDefinition node_definitions[];
47
48 #endif