]> git.lizzy.rs Git - minetest.git/blobdiff - src/client.h
Create node metadata when placing nodes again
[minetest.git] / src / client.h
index 148acc0721d08b0fd543fcd2d2351a1cc9ff094c..efdf315f7d78c73bb2f2765c5b0fa9cc9a534493 100644 (file)
@@ -30,11 +30,15 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "clientobject.h"
 #include "utility.h" // For IntervalLimiter
 #include "gamedef.h"
+#include "inventorymanager.h"
+#include "filesys.h"
 
 struct MeshMakeData;
 class IGameDef;
-class IWritableToolDefManager;
+class IWritableTextureSource;
+class IWritableItemDefManager;
 class IWritableNodeDefManager;
+//class IWritableCraftDefManager;
 
 class ClientNotReadyException : public BaseException
 {
@@ -162,7 +166,7 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
                        std::string password,
                        MapDrawControl &control,
                        IWritableTextureSource *tsrc,
-                       IWritableToolDefManager *tooldef,
+                       IWritableItemDefManager *itemdef,
                        IWritableNodeDefManager *nodedef
        );
        
@@ -201,9 +205,7 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
        // Pops out a packet from the packet queue
        //IncomingPacket getPacket();
 
-       void groundAction(u8 action, v3s16 nodepos_undersurface,
-                       v3s16 nodepos_oversurface, u16 item);
-       void clickActiveObject(u8 button, u16 id, u16 item_i);
+       void interact(u8 action, const PointedThing& pointed);
 
        void sendSignNodeText(v3s16 p, std::string text);
        void sendInventoryAction(InventoryAction *a);
@@ -232,6 +234,8 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
        void setPlayerControl(PlayerControl &control);
 
        void selectPlayerItem(u16 item);
+       u16 getPlayerItem() const
+       { return m_playeritem; }
 
        // Returns true if the inventory of the local player has been
        // updated from the server. If it is true, it is set to false.
@@ -239,9 +243,8 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
        // Copies the inventory of the local player to parameter
        void getLocalInventory(Inventory &dst);
        
-       InventoryContext *getInventoryContext();
-
-       Inventory* getInventory(InventoryContext *c, std::string id);
+       /* InventoryManager interface */
+       Inventory* getInventory(const InventoryLocation &loc);
        void inventoryAction(InventoryAction *a);
 
        // Gets closest object pointed by the shootline
@@ -304,19 +307,32 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
        // Get event from queue. CE_NONE is returned if queue is empty.
        ClientEvent getClientEvent();
        
-       inline bool accessDenied()
+       bool accessDenied()
        { return m_access_denied; }
 
-       inline std::wstring accessDeniedReason()
+       std::wstring accessDeniedReason()
        { return m_access_denied_reason; }
+
+       float textureReceiveProgress()
+       { return m_texture_receive_progress; }
+
+       bool texturesReceived()
+       { return m_textures_received; }
+       bool itemdefReceived()
+       { return m_itemdef_received; }
+       bool nodedefReceived()
+       { return m_nodedef_received; }
        
+       void afterContentReceived();
+
        float getRTT(void);
 
        // IGameDef interface
-       // Under envlock
-       virtual IToolDefManager* getToolDefManager();
+       virtual IItemDefManager* getItemDefManager();
        virtual INodeDefManager* getNodeDefManager();
+       virtual ICraftDefManager* getCraftDefManager();
        virtual ITextureSource* getTextureSource();
+       virtual u16 allocateUnknownNodeId(const std::string &name);
 
 private:
        
@@ -341,7 +357,7 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
        IntervalLimiter m_map_timer_and_unload_interval;
 
        IWritableTextureSource *m_tsrc;
-       IWritableToolDefManager *m_tooldef;
+       IWritableItemDefManager *m_itemdef;
        IWritableNodeDefManager *m_nodedef;
        MeshUpdateThread m_mesh_update_thread;
        ClientEnvironment m_env;
@@ -349,8 +365,10 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
        IrrlichtDevice *m_device;
        // Server serialization version
        u8 m_server_ser_ver;
-       // This is behind m_env_mutex.
+       u16 m_playeritem;
        bool m_inventory_updated;
+       Inventory *m_inventory_from_server;
+       float m_inventory_from_server_age;
        core::map<v3s16, bool> m_active_blocks;
        PacketCounter m_packetcounter;
        // Received from the server. 0-23999
@@ -364,8 +382,11 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
        std::string m_password;
        bool m_access_denied;
        std::wstring m_access_denied_reason;
-       InventoryContext m_inventory_context;
        Queue<ClientEvent> m_client_event_queue;
+       float m_texture_receive_progress;
+       bool m_textures_received;
+       bool m_itemdef_received;
+       bool m_nodedef_received;
        friend class FarMesh;
 };