X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;ds=sidebyside;f=src%2Fnode.h;h=2ed4edd6720ce4d342209a85d6f70daddeb77a9e;hb=bf2702ea411b5b5e481e610f232cec6439e4d7f6;hp=6028500cc621a7cc1a1a791b712c78c96298fe69;hpb=c6673be36d202d16ef97d59be73b090d13d11725;p=dragonblocks_alpha.git diff --git a/src/node.h b/src/node.h index 6028500..2ed4edd 100644 --- a/src/node.h +++ b/src/node.h @@ -4,22 +4,41 @@ #include #include "types.h" +#define NODE_DEFINITION(type) ((type) < NODE_UNLOADED ? &node_definitions[NODE_UNKNOWN] : &node_definitions[(type)]); + typedef enum { - NODE_INVALID, // Used for unknown nodes received from server (caused by outdated clients) + NODE_UNKNOWN, // Used for unknown nodes received from server (caused by outdated clients) NODE_AIR, NODE_GRASS, NODE_DIRT, NODE_STONE, - NODE_UNLOADED, // Used for nodes in unloaded blocks + NODE_SNOW, + NODE_OAK_WOOD, + NODE_OAK_LEAVES, + NODE_PINE_WOOD, + NODE_PINE_LEAVES, + NODE_PALM_WOOD, + NODE_PALM_LEAVES, + NODE_SAND, + NODE_WATER, + NODE_LAVA, + NODE_VULCANO_STONE, + NODE_UNLOADED, // Used for nodes in unloaded blocks } Node; +struct MapNode; + typedef struct { - bool visible; bool solid; -} NodeDefintion; + size_t data_size; + void (*create)(struct MapNode *node); + void (*delete)(struct MapNode *node); + void (*serialize)(Blob *buffer, void *data); + void (*deserialize)(Blob *buffer, void *data); +} NodeDefinition; -extern NodeDefintion node_definitions[]; +extern NodeDefinition node_definitions[]; #endif