#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
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