]> git.lizzy.rs Git - dragonblocks_alpha.git/blobdiff - src/node.c
Use spaces for alignment
[dragonblocks_alpha.git] / src / node.c
index 92b2bb1ab3d832ac1077559b2ba893525009e93a..39e60ac7f4684955c31685ff26eca2a77bb6b0b2 100644 (file)
 #include "map.h"
 #include "node.h"
 #include "util.h"
+#include <stdio.h>
 
-static void create_state_biome(MapNode *node)
+static void serialize_hsl(MapNode *node, unsigned char **buffer, size_t *bufsiz)
 {
-       node->state.biome = (v3f) {1.0f, 0.0f, 1.0f};
+       HSLData *node_data = node->data;
+       buffer_write(buffer, bufsiz, (f32 []) {node_data->color.x, node_data->color.y, node_data->color.z}, sizeof(f32) * 3);
 }
 
-NodeDefintion node_definitions[NODE_UNLOADED] = {
-       // invalid
+static void deserialize_hsl(MapNode *node, unsigned char *data, size_t size)
+{
+       HSLData *node_data = node->data;
+
+       f32 *color = buffer_read(&data, &size, sizeof(f32) * 3);
+
+       if (! color)
+               return;
+
+       *node_data = (HSLData) {.color = {color[0], color[1], color[2]}};
+}
+
+NodeDefinition node_definitions[NODE_UNLOADED] = {
+       // unknown
        {
-               .visible = true,
                .solid = true,
+               .data_size = 0,
                .create = NULL,
+               .delete = NULL,
                .serialize = NULL,
                .deserialize = NULL,
        },
        // air
        {
-               .visible = false,
                .solid = false,
+               .data_size = 0,
                .create = NULL,
+               .delete = NULL,
                .serialize = NULL,
                .deserialize = NULL,
        },
        // grass
        {
-               .visible = true,
                .solid = true,
-               .create = &create_state_biome,
-               .serialize = NULL, // currently v3f is not serialized
+               .data_size = 0,
+               .create = NULL,
+               .delete = NULL,
+               .serialize = NULL,
                .deserialize = NULL,
        },
        // dirt
        {
-               .visible = true,
                .solid = true,
+               .data_size = 0,
                .create = NULL,
+               .delete = NULL,
                .serialize = NULL,
                .deserialize = NULL,
        },
        // stone
        {
-               .visible = true,
                .solid = true,
+               .data_size = 0,
                .create = NULL,
+               .delete = NULL,
                .serialize = NULL,
                .deserialize = NULL,
        },
        // snow
        {
-               .visible = true,
                .solid = true,
+               .data_size = 0,
+               .create = NULL,
+               .delete = NULL,
+               .serialize = NULL,
+               .deserialize = NULL,
+       },
+       // oak wood
+       {
+               .solid = true,
+               .data_size = sizeof(HSLData),
+               .create = NULL,
+               .delete = NULL,
+               .serialize = &serialize_hsl,
+               .deserialize = &deserialize_hsl,
+       },
+       // oak leaves
+       {
+               .solid = true,
+               .data_size = sizeof(HSLData),
+               .create = NULL,
+               .delete = NULL,
+               .serialize = &serialize_hsl,
+               .deserialize = &deserialize_hsl,
+       },
+       // pine wood
+       {
+               .solid = true,
+               .data_size = sizeof(HSLData),
+               .create = NULL,
+               .delete = NULL,
+               .serialize = &serialize_hsl,
+               .deserialize = &deserialize_hsl,
+       },
+       // pine leaves
+       {
+               .solid = true,
+               .data_size = sizeof(HSLData),
+               .create = NULL,
+               .delete = NULL,
+               .serialize = &serialize_hsl,
+               .deserialize = &deserialize_hsl,
+       },
+       // palm wood
+       {
+               .solid = true,
+               .data_size = sizeof(HSLData),
+               .create = NULL,
+               .delete = NULL,
+               .serialize = &serialize_hsl,
+               .deserialize = &deserialize_hsl,
+       },
+       // palm leaves
+       {
+               .solid = true,
+               .data_size = sizeof(HSLData),
+               .create = NULL,
+               .delete = NULL,
+               .serialize = &serialize_hsl,
+               .deserialize = &deserialize_hsl,
+       },
+       // sand
+       {
+               .solid = true,
+               .data_size = 0,
+               .create = NULL,
+               .delete = NULL,
+               .serialize = NULL,
+               .deserialize = NULL,
+       },
+       // water
+       {
+               .solid = false,
+               .data_size = 0,
+               .create = NULL,
+               .delete = NULL,
+               .serialize = NULL,
+               .deserialize = NULL,
+       },
+       // lava
+       {
+               .solid = false,
+               .data_size = 0,
+               .create = NULL,
+               .delete = NULL,
+               .serialize = NULL,
+               .deserialize = NULL,
+       },
+       // vulcanostone
+       {
+               .solid = true,
+               .data_size = 0,
                .create = NULL,
+               .delete = NULL,
                .serialize = NULL,
                .deserialize = NULL,
        },