Improve glass
[oweals/minetest.git] / src / client.h
index d41603c9d788a82a6834db15fa3510f25f282697..b160a3bc914a1520169138bb4ef993f8f4dfc3ce 100644 (file)
@@ -32,6 +32,10 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "gamedef.h"
 
 struct MeshMakeData;
+class IGameDef;
+class IWritableTextureSource;
+class IWritableToolDefManager;
+class IWritableNodeDefManager;
 
 class ClientNotReadyException : public BaseException
 {
@@ -99,8 +103,8 @@ class MeshUpdateThread : public SimpleThread
 {
 public:
 
-       MeshUpdateThread(ITextureSource *tsrc):
-               m_tsrc(tsrc)
+       MeshUpdateThread(IGameDef *gamedef):
+               m_gamedef(gamedef)
        {
        }
 
@@ -110,7 +114,7 @@ public:
 
        MutexedQueue<MeshUpdateResult> m_queue_out;
 
-       ITextureSource *m_tsrc;
+       IGameDef *m_gamedef;
 };
 
 enum ClientEventType
@@ -119,6 +123,7 @@ enum ClientEventType
        CE_PLAYER_DAMAGE,
        CE_PLAYER_FORCE_MOVE,
        CE_DEATHSCREEN,
+       CE_TEXTURES_UPDATED
 };
 
 struct ClientEvent
@@ -140,6 +145,8 @@ struct ClientEvent
                        f32 camera_point_target_y;
                        f32 camera_point_target_z;
                } deathscreen;
+               struct{
+               } textures_updated;
        };
 };
 
@@ -155,8 +162,9 @@ public:
                        const char *playername,
                        std::string password,
                        MapDrawControl &control,
-                       ITextureSource *tsrc,
-                       IToolDefManager *toolmgr
+                       IWritableTextureSource *tsrc,
+                       IWritableToolDefManager *tooldef,
+                       IWritableNodeDefManager *nodedef
        );
        
        ~Client();
@@ -298,23 +306,18 @@ public:
        ClientEvent getClientEvent();
        
        inline bool accessDenied()
-       {
-               return m_access_denied;
-       }
+       { return m_access_denied; }
 
        inline std::wstring accessDeniedReason()
-       {
-               return m_access_denied_reason;
-       }
-
+       { return m_access_denied_reason; }
+       
        float getRTT(void);
 
        // IGameDef interface
        // Under envlock
-       virtual IToolDefManager* getToolDefManager()
-               { return m_toolmgr; }
-       virtual INodeDefManager* getNodeDefManager()
-               { assert(0); return NULL; } // TODO
+       virtual IToolDefManager* getToolDefManager();
+       virtual INodeDefManager* getNodeDefManager();
+       virtual ITextureSource* getTextureSource();
 
 private:
        
@@ -338,8 +341,9 @@ private:
        float m_ignore_damage_timer; // Used after server moves player
        IntervalLimiter m_map_timer_and_unload_interval;
 
-       ITextureSource *m_tsrc;
-       IToolDefManager *m_toolmgr;
+       IWritableTextureSource *m_tsrc;
+       IWritableToolDefManager *m_tooldef;
+       IWritableNodeDefManager *m_nodedef;
        MeshUpdateThread m_mesh_update_thread;
        ClientEnvironment m_env;
        con::Connection m_con;