]> git.lizzy.rs Git - dragonblocks_alpha.git/blob - src/node.c
Add trees
[dragonblocks_alpha.git] / src / node.c
1 #include "map.h"
2 #include "node.h"
3 #include "util.h"
4 #include <stdio.h>
5
6 static void serialize_hsl(MapNode *node, unsigned char **buffer, size_t *bufsiz)
7 {
8         HSLData *node_data = node->data;
9         buffer_write(buffer, bufsiz, (f32 []) {node_data->color.x, node_data->color.y, node_data->color.z}, sizeof(f32) * 3);
10 }
11
12 static void deserialize_hsl(MapNode *node, unsigned char *data, size_t size)
13 {
14         HSLData *node_data = node->data;
15
16         f32 *color = buffer_read(&data, &size, sizeof(f32) * 3);
17
18         if (! color)
19                 return;
20
21         *node_data = (HSLData) {.color = {color[0], color[1], color[2]}};
22 }
23
24 NodeDefinition node_definitions[NODE_UNLOADED] = {
25         // unknown
26         {
27                 .solid = true,
28                 .data_size = 0,
29                 .create = NULL,
30                 .delete = NULL,
31                 .serialize = NULL,
32                 .deserialize = NULL,
33         },
34         // air
35         {
36                 .solid = false,
37                 .data_size = 0,
38                 .create = NULL,
39                 .delete = NULL,
40                 .serialize = NULL,
41                 .deserialize = NULL,
42         },
43         // grass
44         {
45                 .solid = true,
46                 .data_size = 0,
47                 .create = NULL,
48                 .delete = NULL,
49                 .serialize = NULL,
50                 .deserialize = NULL,
51         },
52         // dirt
53         {
54                 .solid = true,
55                 .data_size = 0,
56                 .create = NULL,
57                 .delete = NULL,
58                 .serialize = NULL,
59                 .deserialize = NULL,
60         },
61         // stone
62         {
63                 .solid = true,
64                 .data_size = 0,
65                 .create = NULL,
66                 .delete = NULL,
67                 .serialize = NULL,
68                 .deserialize = NULL,
69         },
70         // snow
71         {
72                 .solid = true,
73                 .data_size = 0,
74                 .create = NULL,
75                 .delete = NULL,
76                 .serialize = NULL,
77                 .deserialize = NULL,
78         },
79         // oak wood
80         {
81                 .solid = true,
82                 .data_size = sizeof(HSLData),
83                 .create = NULL,
84                 .delete = NULL,
85                 .serialize = &serialize_hsl,
86                 .deserialize = &deserialize_hsl,
87         },
88         // oak leaves
89         {
90                 .solid = true,
91                 .data_size = sizeof(HSLData),
92                 .create = NULL,
93                 .delete = NULL,
94                 .serialize = &serialize_hsl,
95                 .deserialize = &deserialize_hsl,
96         },
97         // pine wood
98         {
99                 .solid = true,
100                 .data_size = sizeof(HSLData),
101                 .create = NULL,
102                 .delete = NULL,
103                 .serialize = &serialize_hsl,
104                 .deserialize = &deserialize_hsl,
105         },
106         // pine leaves
107         {
108                 .solid = true,
109                 .data_size = sizeof(HSLData),
110                 .create = NULL,
111                 .delete = NULL,
112                 .serialize = &serialize_hsl,
113                 .deserialize = &deserialize_hsl,
114         },
115         // palm wood
116         {
117                 .solid = true,
118                 .data_size = sizeof(HSLData),
119                 .create = NULL,
120                 .delete = NULL,
121                 .serialize = &serialize_hsl,
122                 .deserialize = &deserialize_hsl,
123         },
124         // palm leaves
125         {
126                 .solid = true,
127                 .data_size = sizeof(HSLData),
128                 .create = NULL,
129                 .delete = NULL,
130                 .serialize = &serialize_hsl,
131                 .deserialize = &deserialize_hsl,
132         },
133         // sand
134         {
135                 .solid = true,
136                 .data_size = 0,
137                 .create = NULL,
138                 .delete = NULL,
139                 .serialize = NULL,
140                 .deserialize = NULL,
141         },
142         // water
143         {
144                 .solid = false,
145                 .data_size = 0,
146                 .create = NULL,
147                 .delete = NULL,
148                 .serialize = NULL,
149                 .deserialize = NULL,
150         },
151         // lava
152         {
153                 .solid = false,
154                 .data_size = 0,
155                 .create = NULL,
156                 .delete = NULL,
157                 .serialize = NULL,
158                 .deserialize = NULL,
159         },
160         // vulcanostone
161         {
162                 .solid = true,
163                 .data_size = 0,
164                 .create = NULL,
165                 .delete = NULL,
166                 .serialize = NULL,
167                 .deserialize = NULL,
168         },
169 };