]> git.lizzy.rs Git - minetest.git/blobdiff - src/gamedef.h
Fix old world search path for non-run-in-place build
[minetest.git] / src / gamedef.h
index 86fd1e80f9c5f71fa992e5cecd23c6154d9b0347..10ab0b0bcfb57e4ecd9cc71516366ca81302d950 100644 (file)
@@ -20,10 +20,13 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #ifndef GAMEDEF_HEADER
 #define GAMEDEF_HEADER
 
-class IToolDefManager;
-class INodeDefManager; //TODO
-//class IItemDefManager; //TODO
-// Mineral too?
+#include <string>
+#include "irrlichttypes.h"
+
+class IItemDefManager;
+class INodeDefManager;
+class ICraftDefManager;
+class ITextureSource;
 
 /*
        An interface for fetching game-global definitions like tool and
@@ -33,9 +36,24 @@ class INodeDefManager; //TODO
 class IGameDef
 {
 public:
-       virtual IToolDefManager* getToolDefManager()=0;
+       // These are thread-safe IF they are not edited while running threads.
+       // Thus, first they are set up and then they are only read.
+       virtual IItemDefManager* getItemDefManager()=0;
        virtual INodeDefManager* getNodeDefManager()=0;
-       //virtual IItemDefManager* getItemDefManager()=0;
+       virtual ICraftDefManager* getCraftDefManager()=0;
+
+       // This is always thread-safe, but referencing the irrlicht texture
+       // pointers in other threads than main thread will make things explode.
+       virtual ITextureSource* getTextureSource()=0;
+       
+       // Used for keeping track of names/ids of unknown nodes
+       virtual u16 allocateUnknownNodeId(const std::string &name)=0;
+
+       // Shorthands
+       IItemDefManager* idef(){return getItemDefManager();}
+       INodeDefManager* ndef(){return getNodeDefManager();}
+       ICraftDefManager* cdef(){return getCraftDefManager();}
+       ITextureSource* tsrc(){return getTextureSource();}
 };
 
 #endif