]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/client.h
Add support for limiting rotation of automatic face movement dir entitys
[dragonfireclient.git] / src / client.h
index 474daf3bc527a2a7a5f6d1e540b7c37f2385b0e1..07fb79dcaf6f27a3dbdf92dcf082252a51a2a44d 100644 (file)
@@ -23,7 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "network/connection.h"
 #include "environment.h"
 #include "irrlichttypes_extrabloated.h"
-#include "jthread/jmutex.h"
+#include "threading/mutex.h"
 #include <ostream>
 #include <map>
 #include <set>
@@ -89,14 +89,14 @@ class MeshUpdateQueue
 
        u32 size()
        {
-               JMutexAutoLock lock(m_mutex);
+               MutexAutoLock lock(m_mutex);
                return m_queue.size();
        }
 
 private:
        std::vector<QueuedMeshUpdate*> m_queue;
        std::set<v3s16> m_urgents;
-       JMutex m_mutex;
+       Mutex m_mutex;
 };
 
 struct MeshUpdateResult
@@ -113,23 +113,22 @@ struct MeshUpdateResult
        }
 };
 
-class MeshUpdateThread : public JThread
+class MeshUpdateThread : public UpdateThread
 {
-public:
+private:
+       MeshUpdateQueue m_queue_in;
 
-       MeshUpdateThread(IGameDef *gamedef):
-               m_gamedef(gamedef)
-       {
-       }
+protected:
+       virtual void doUpdate();
 
-       void * Thread();
+public:
 
-       MeshUpdateQueue m_queue_in;
+       MeshUpdateThread() : UpdateThread("Mesh") {}
 
+       void enqueueUpdate(v3s16 p, MeshMakeData *data,
+                       bool ack_block_to_server, bool urgent);
        MutexedQueue<MeshUpdateResult> m_queue_out;
 
-       IGameDef *m_gamedef;
-
        v3s16 m_camera_offset;
 };
 
@@ -485,6 +484,8 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
        bool accessDenied()
        { return m_access_denied; }
 
+       bool reconnectRequested() { return m_access_denied_reconnect; }
+
        std::string accessDeniedReason()
        { return m_access_denied_reason; }
 
@@ -509,6 +510,9 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
        Mapper* getMapper ()
        { return m_mapper; }
 
+       bool isMinimapDisabledByServer()
+       { return m_minimap_disabled_by_server; }
+
        // IGameDef interface
        virtual IItemDefManager* getItemDefManager();
        virtual INodeDefManager* getNodeDefManager();
@@ -589,10 +593,17 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
        con::Connection m_con;
        IrrlichtDevice *m_device;
        Mapper *m_mapper;
+       bool m_minimap_disabled_by_server;
        // Server serialization version
        u8 m_server_ser_ver;
+
        // Used version of the protocol with server
+       // Values smaller than 25 only mean they are smaller than 25,
+       // and aren't accurate. We simply just don't know, because
+       // the server didn't send the version back then.
+       // If 0, server init hasn't been received yet.
        u8 m_proto_ver;
+
        u16 m_playeritem;
        bool m_inventory_updated;
        Inventory *m_inventory_from_server;
@@ -626,6 +637,7 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
 
 
        bool m_access_denied;
+       bool m_access_denied_reconnect;
        std::string m_access_denied_reason;
        std::queue<ClientEvent> m_client_event_queue;
        bool m_itemdef_received;
@@ -670,6 +682,8 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
        // TODO: Add callback to update these when g_settings changes
        bool m_cache_smooth_lighting;
        bool m_cache_enable_shaders;
+
+       DISABLE_CLASS_COPY(Client);
 };
 
 #endif // !CLIENT_HEADER