X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fnodedef.h;h=1f596e46baff75fc977e3bc3e5754b1e87c847da;hb=58e6d25e033c76dc91aaac18fdeda92ac23fe0e1;hp=2691aca33eb59376bec13174eb465639310479b6;hpb=bc3072b35e6a60cc77ee5275eb9e7cd5c537385c;p=oweals%2Fminetest.git diff --git a/src/nodedef.h b/src/nodedef.h index 2691aca33..1f596e46b 100644 --- a/src/nodedef.h +++ b/src/nodedef.h @@ -28,6 +28,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "mapnode.h" #ifndef SERVER #include "tile.h" +#include "shader.h" #endif #include "itemgroup.h" #include "sound.h" // SimpleSoundSpec @@ -35,6 +36,7 @@ with this program; if not, write to the Free Software Foundation, Inc., class IItemDefManager; class ITextureSource; +class IShaderSource; class IGameDef; typedef std::list > GroupItems; @@ -56,13 +58,15 @@ enum ContentParamType2 CPT2_FACEDIR, // Direction for signs, torches and such CPT2_WALLMOUNTED, + // Block level like FLOWINGLIQUID + CPT2_LEVELED, }; enum LiquidType { LIQUID_NONE, LIQUID_FLOWING, - LIQUID_SOURCE + LIQUID_SOURCE, }; enum NodeBoxType @@ -70,6 +74,7 @@ enum NodeBoxType NODEBOX_REGULAR, // Regular block; allows buildable_to NODEBOX_FIXED, // Static separately defined box(es) NODEBOX_WALLMOUNTED, // Box for wall mounted nodes; (top, bottom, side) + NODEBOX_LEVELED, // Same as fixed, but with dynamic height from param2. for snow, ... }; struct NodeBox @@ -87,7 +92,7 @@ struct NodeBox { reset(); } void reset(); - void serialize(std::ostream &os) const; + void serialize(std::ostream &os, u16 protocol_version) const; void deSerialize(std::istream &is); }; @@ -146,7 +151,7 @@ enum NodeDrawType // uses 2 textures, one for frames, second for faces }; -#define CF_SPECIAL_COUNT 2 +#define CF_SPECIAL_COUNT 6 struct ContentFeatures { @@ -207,6 +212,8 @@ struct ContentFeatures bool buildable_to; // Player cannot build to these (placement prediction disabled) bool rightclickable; + // Flowing liquid or snow, value = default level + u8 leveled; // Whether the node is non-liquid, source liquid or flowing liquid enum LiquidType liquid_type; // If the content is liquid, this is the flowing version of the liquid. @@ -219,11 +226,18 @@ struct ContentFeatures u8 liquid_viscosity; // Is liquid renewable (new liquid source will be created between 2 existing) bool liquid_renewable; + // Ice for water, water for ice + std::string freezemelt; + // Number of flowing liquids surrounding source + u8 liquid_range; + u8 drowning; // Amount of light the node emits u8 light_source; u32 damage_per_second; NodeBox node_box; NodeBox selection_box; + // Used for waving leaves/plants + u8 waving; // Compatibility with old maps // Set to true if paramtype used to be 'facedir_simple' bool legacy_facedir_simple; @@ -287,15 +301,14 @@ public: virtual const ContentFeatures& get(content_t c) const=0; virtual const ContentFeatures& get(const MapNode &n) const=0; virtual bool getId(const std::string &name, content_t &result) const=0; + // If not found, returns CONTENT_IGNORE virtual content_t getId(const std::string &name) const=0; // Allows "group:name" in addition to regular node names virtual void getIds(const std::string &name, std::set &result) const=0; - // If not found, returns the features of CONTENT_IGNORE + // If not found, returns the features of CONTENT_UNKNOWN virtual const ContentFeatures& get(const std::string &name) const=0; - // Register node definition - virtual void set(content_t c, const ContentFeatures &def)=0; // Register node definition by name (allocate an id) // If returns CONTENT_IGNORE, could not allocate id virtual content_t set(const std::string &name, @@ -311,9 +324,9 @@ public: /* Update tile textures to latest return values of TextueSource. - Call after updating the texture atlas of a TextureSource. */ - virtual void updateTextures(ITextureSource *tsrc)=0; + virtual void updateTextures(ITextureSource *tsrc, + IShaderSource *shdsrc)=0; virtual void serialize(std::ostream &os, u16 protocol_version)=0; virtual void deSerialize(std::istream &is)=0;