#include <iostream>
#include <map>
#include <list>
+#include "util/numeric.h"
#include "mapnode.h"
#ifndef SERVER
#include "client/tile.h"
CPT2_WALLMOUNTED,
// Block level like FLOWINGLIQUID
CPT2_LEVELED,
+ // 2D rotation for things like plants
+ CPT2_DEGROTATE,
};
enum LiquidType
{
std::string name;
bool backface_culling; // Takes effect only in special cases
+ bool tileable_horizontal;
+ bool tileable_vertical;
struct{
enum TileAnimationType type;
int aspect_w; // width for aspect ratio
{
name = "";
backface_culling = true;
+ tileable_horizontal = true;
+ tileable_vertical = true;
animation.type = TAT_NONE;
animation.aspect_w = 1;
animation.aspect_h = 1;
std::string mesh;
#ifndef SERVER
scene::IMesh *mesh_ptr[24];
+ video::SColor minimap_color;
#endif
float visual_scale; // Misc. scale parameter
TileDef tiledef[6];
// Post effect color, drawn when the camera is inside the node.
video::SColor post_effect_color;
+
// Type of MapNode::param1
ContentParamType param_type;
// Type of MapNode::param2
ContentFeatures();
~ContentFeatures();
void reset();
- void serialize(std::ostream &os, u16 protocol_version);
+ void serialize(std::ostream &os, u16 protocol_version) const;
void deSerialize(std::istream &is);
- void serializeOld(std::ostream &os, u16 protocol_version);
+ void serializeOld(std::ostream &os, u16 protocol_version) const;
void deSerializeOld(std::istream &is, int version);
/*
}
};
-enum NodeResolveMethod {
- NODE_RESOLVE_NONE,
- NODE_RESOLVE_DIRECT,
- NODE_RESOLVE_DEFERRED,
-};
-
-class INodeDefManager
-{
+class INodeDefManager {
public:
INodeDefManager(){}
virtual ~INodeDefManager(){}
// Get node definition
- virtual const ContentFeatures& get(content_t c) const=0;
- virtual const ContentFeatures& get(const MapNode &n) const=0;
+ 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;
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<content_t> &result)
const=0;
- virtual const ContentFeatures& get(const std::string &name) const=0;
+ virtual const ContentFeatures &get(const std::string &name) const=0;
- virtual void serialize(std::ostream &os, u16 protocol_version)=0;
+ virtual void serialize(std::ostream &os, u16 protocol_version) const=0;
virtual bool getNodeRegistrationStatus() const=0;
- virtual void setNodeRegistrationStatus(bool completed)=0;
- virtual void pendNodeResolve(NodeResolver *nr, NodeResolveMethod how)=0;
+ virtual void pendNodeResolve(NodeResolver *nr)=0;
virtual bool cancelNodeResolveCallback(NodeResolver *nr)=0;
- virtual void runNodeResolveCallbacks()=0;
};
-class IWritableNodeDefManager : public INodeDefManager
-{
+class IWritableNodeDefManager : public INodeDefManager {
public:
IWritableNodeDefManager(){}
virtual ~IWritableNodeDefManager(){}
virtual IWritableNodeDefManager* clone()=0;
// Get node definition
- virtual const ContentFeatures& get(content_t c) const=0;
- virtual const ContentFeatures& get(const MapNode &n) const=0;
+ 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<content_t> &result)
- const=0;
+ const=0;
// If not found, returns the features of CONTENT_UNKNOWN
- virtual const ContentFeatures& get(const std::string &name) const=0;
+ virtual const ContentFeatures &get(const std::string &name) const=0;
// Register node definition by name (allocate an id)
// If returns CONTENT_IGNORE, could not allocate id
*/
virtual void updateAliases(IItemDefManager *idef)=0;
+ /*
+ Override textures from servers with ones specified in texturepack/override.txt
+ */
+ virtual void applyTextureOverrides(const std::string &override_filepath)=0;
+
/*
Update tile textures to latest return values of TextueSource.
*/
virtual void updateTextures(IGameDef *gamedef,
- /*argument: */void (*progress_callback)(void *progress_args, u32 progress, u32 max_progress),
- /*argument: */void *progress_callback_args)=0;
+ void (*progress_cbk)(void *progress_args, u32 progress, u32 max_progress),
+ void *progress_cbk_args)=0;
- virtual void serialize(std::ostream &os, u16 protocol_version)=0;
+ virtual void serialize(std::ostream &os, u16 protocol_version) const=0;
virtual void deSerialize(std::istream &is)=0;
virtual bool getNodeRegistrationStatus() const=0;
virtual void setNodeRegistrationStatus(bool completed)=0;
- virtual void pendNodeResolve(NodeResolver *nr, NodeResolveMethod how)=0;
+ virtual void pendNodeResolve(NodeResolver *nr)=0;
virtual bool cancelNodeResolveCallback(NodeResolver *nr)=0;
virtual void runNodeResolveCallbacks()=0;
+ virtual void resetNodeResolveState()=0;
};
IWritableNodeDefManager *createNodeDefManager();
const std::string &node_alt, content_t c_fallback);
bool getIdsFromNrBacklog(std::vector<content_t> *result_out,
bool all_required=false, content_t c_fallback=CONTENT_IGNORE);
- const std::string &getNodeName(content_t c) const;
void nodeResolveInternal();
};
#endif
-