X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fnodedef.h;h=1f596e46baff75fc977e3bc3e5754b1e87c847da;hb=58e6d25e033c76dc91aaac18fdeda92ac23fe0e1;hp=8be18f9cb2f2502c79f799bf81cde725fb978699;hpb=625a4c2e662f6b69b73a2a828d1b08d72e53ff73;p=oweals%2Fminetest.git diff --git a/src/nodedef.h b/src/nodedef.h index 8be18f9cb..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); }; @@ -133,8 +138,6 @@ enum NodeDrawType NDT_LIQUID, // Do not draw face towards same kind of flowing/source liquid NDT_FLOWINGLIQUID, // A very special kind of thing NDT_GLASSLIKE, // Glass-like, don't draw faces towards other glass - NDT_GLASSLIKE_FRAMED, // Glass-like, draw connected frames and all all visible faces - // uses 2 textures, one for frames, second for faces NDT_ALLFACES, // Leaves-like, draw all faces no matter what NDT_ALLFACES_OPTIONAL, // Fancy -> allfaces, fast -> normal NDT_TORCHLIKE, @@ -143,9 +146,12 @@ enum NodeDrawType NDT_FENCELIKE, NDT_RAILLIKE, NDT_NODEBOX, + NDT_GLASSLIKE_FRAMED, // Glass-like, draw connected frames and all all + // visible faces + // uses 2 textures, one for frames, second for faces }; -#define CF_SPECIAL_COUNT 2 +#define CF_SPECIAL_COUNT 6 struct ContentFeatures { @@ -206,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. @@ -218,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; @@ -286,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, @@ -310,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;