Use fixed size for builtin menus on non-android platforms
[oweals/minetest.git] / src / nodedef.h
index 0c779ddccf04f513245838250705a8fc084a6451..7280bb8ea727af0e052f2b7569530cb3fee0db61 100644 (file)
@@ -234,8 +234,6 @@ 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;
@@ -285,6 +283,26 @@ struct ContentFeatures
 class NodeResolver;
 class INodeDefManager;
 
+struct NodeListInfo {
+       NodeListInfo(u32 len)
+       {
+               length       = len;
+               all_required = false;
+               c_fallback   = CONTENT_IGNORE;
+       }
+
+       NodeListInfo(u32 len, content_t fallback)
+       {
+               length       = len;
+               all_required = true;
+               c_fallback   = fallback;
+       }
+
+       u32 length;
+       bool all_required;
+       content_t c_fallback;
+};
+
 struct NodeResolveInfo {
        NodeResolveInfo(NodeResolver *nr)
        {
@@ -292,7 +310,7 @@ struct NodeResolveInfo {
        }
 
        std::list<std::string> nodenames;
-       std::list<size_t> nodename_sizes;
+       std::list<NodeListInfo> nodelistinfo;
        NodeResolver *resolver;
 };
 
@@ -313,6 +331,9 @@ public:
 
        virtual void serialize(std::ostream &os, u16 protocol_version)=0;
 
+       virtual bool getNodeRegistrationStatus() const=0;
+       virtual void setNodeRegistrationStatus(bool completed)=0;
+
        virtual void pendNodeResolve(NodeResolveInfo *nri)=0;
        virtual void cancelNodeResolve(NodeResolver *resolver)=0;
        virtual void runNodeResolverCallbacks()=0;
@@ -362,6 +383,9 @@ public:
        virtual void serialize(std::ostream &os, u16 protocol_version)=0;
        virtual void deSerialize(std::istream &is)=0;
 
+       virtual bool getNodeRegistrationStatus() const=0;
+       virtual void setNodeRegistrationStatus(bool completed)=0;
+
        virtual void pendNodeResolve(NodeResolveInfo *nri)=0;
        virtual void cancelNodeResolve(NodeResolver *resolver)=0;
        virtual void runNodeResolverCallbacks()=0;
@@ -382,9 +406,9 @@ public:
                m_ndef = NULL;
        }
 
-       ~NodeResolver()
+       virtual ~NodeResolver()
        {
-               if (!m_lookup_done)
+               if (!m_lookup_done && m_ndef)
                        m_ndef->cancelNodeResolve(this);
        }