X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fmapnode.h;h=f19885d87614f6e38e04254ce59bf06c2a94b3d2;hb=fa427d641b687dd8585adced708510b94588cf51;hp=53e36b670e892ff779297d65e65273df286c44f7;hpb=9733dd5b5e5516e18775665db132b2446492716c;p=oweals%2Fminetest.git diff --git a/src/mapnode.h b/src/mapnode.h index 53e36b670..f19885d87 100644 --- a/src/mapnode.h +++ b/src/mapnode.h @@ -24,6 +24,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "irr_v3d.h" #include "irr_aabb3d.h" #include "light.h" +#include #include class INodeDefManager; @@ -35,19 +36,23 @@ class INodeDefManager; - Tile = TileSpec at some side of a node of some content type */ typedef u16 content_t; -#define MAX_CONTENT 0xfff /* - Ignored node. + The maximum node ID that can be registered by mods. This must + be significantly lower than the maximum content_t value, so that + there is enough room for dummy node IDs, which are created when + a MapBlock containing unknown node names is loaded from disk. +*/ +#define MAX_REGISTERED_CONTENT 0x7fffU - Anything that stores MapNodes doesn't have to preserve parameters - associated with this material. - - Doesn't create faces with anything and is considered being - out-of-map in the game map. +/* + A solid walkable node with the texture unknown_node.png. + + For example, used on the client to display unregistered node IDs + (instead of expanding the vector of node definitions each time + such a node is received). */ -#define CONTENT_IGNORE 127 -#define CONTENT_IGNORE_DEFAULT_PARAM 0 +#define CONTENT_UNKNOWN 125 /* The common material through which the player can walk and which @@ -55,6 +60,18 @@ typedef u16 content_t; */ #define CONTENT_AIR 126 +/* + Ignored node. + + Unloaded chunks are considered to consist of this. Several other + methods return this when an error occurs. Also, during + map generation this means the node has not been set yet. + + Doesn't create faces with anything and is considered being + out-of-map in the game map. +*/ +#define CONTENT_IGNORE 127 + enum LightBank { LIGHTBANK_DAY, @@ -88,7 +105,7 @@ enum Rotation { #define LIQUID_INFINITY_MASK 0x80 //0b10000000 // mask for param2, now as for liquid -#define LEVELED_MASK 0x07 +#define LEVELED_MASK 0x3F #define LEVELED_MAX LEVELED_MASK /* @@ -211,7 +228,11 @@ struct MapNode std::vector getSelectionBoxes(INodeDefManager *nodemgr) const; /* Liquid helpers */ + u8 getMaxLevel(INodeDefManager *nodemgr) const; u8 getLevel(INodeDefManager *nodemgr) const; + u8 setLevel(INodeDefManager *nodemgr, s8 level = 1); + u8 addLevel(INodeDefManager *nodemgr, s8 add = 1); + void freezeMelt(INodeDefManager *nodemgr); /* Serialization functions