Load client mods into memory before execution.
[oweals/minetest.git] / src / client / client.h
index 57623f164731053ca7e898d55ee7497b97826d1d..40ad4c064ae4bb7bb19b2183cde72f8b771bf5e2 100644 (file)
@@ -193,6 +193,7 @@ public:
        void handleCommand_ActiveObjectRemoveAdd(NetworkPacket* pkt);
        void handleCommand_ActiveObjectMessages(NetworkPacket* pkt);
        void handleCommand_Movement(NetworkPacket* pkt);
+       void handleCommand_Fov(NetworkPacket *pkt);
        void handleCommand_HP(NetworkPacket* pkt);
        void handleCommand_Breath(NetworkPacket* pkt);
        void handleCommand_MovePlayer(NetworkPacket* pkt);
@@ -227,12 +228,13 @@ public:
        void handleCommand_SrpBytesSandB(NetworkPacket *pkt);
        void handleCommand_FormspecPrepend(NetworkPacket *pkt);
        void handleCommand_CSMRestrictionFlags(NetworkPacket *pkt);
+       void handleCommand_PlayerSpeed(NetworkPacket *pkt);
 
        void ProcessData(NetworkPacket *pkt);
 
        void Send(NetworkPacket* pkt);
 
-       void interact(u8 action, const PointedThing& pointed);
+       void interact(InteractAction action, const PointedThing &pointed);
 
        void sendNodemetaFields(v3s16 p, const std::string &formname,
                const StringMap &fields);
@@ -271,20 +273,17 @@ public:
 
        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.
-       bool getLocalInventoryUpdated();
-       // Copies the inventory of the local player to parameter
-       void getLocalInventory(Inventory &dst);
+       bool updateWieldedItem();
 
        /* InventoryManager interface */
        Inventory* getInventory(const InventoryLocation &loc) override;
        void inventoryAction(InventoryAction *a) override;
 
+       // Send the item number 'item' as player item to the server
+       void setPlayerItem(u16 item);
+
        const std::list<std::string> &getConnectedPlayerNames()
        {
                return m_env.getPlayerNames();
@@ -335,12 +334,14 @@ public:
        // disconnect client when CSM failed.
        const std::string &accessDeniedReason() const { return m_access_denied_reason; }
 
-       bool itemdefReceived()
+       const bool itemdefReceived() const
        { return m_itemdef_received; }
-       bool nodedefReceived()
+       const bool nodedefReceived() const
        { return m_nodedef_received; }
-       bool mediaReceived()
+       const bool mediaReceived() const
        { return !m_media_downloader; }
+       const bool activeObjectsReceived() const
+       { return m_activeobjects_received; }
 
        u16 getProtoVersion()
        { return m_proto_ver; }
@@ -399,7 +400,6 @@ public:
        }
 
        ClientScripting *getScript() { return m_script; }
-       const bool moddingEnabled() const { return m_modding_enabled; }
        const bool modsLoaded() const { return m_mods_loaded; }
 
        void pushToEventQueue(ClientEvent *event);
@@ -454,8 +454,6 @@ private:
        void Receive();
 
        void sendPlayerPos();
-       // Send the item number 'item' as player item to the server
-       void sendPlayerItem(u16 item);
 
        void deleteAuthData();
        // helper method shared with clientpackethandler
@@ -465,7 +463,7 @@ private:
        void promptConfirmRegistration(AuthMechanism chosen_auth_mechanism);
        void startAuth(AuthMechanism chosen_auth_mechanism);
        void sendDeletedBlocks(std::vector<v3s16> &blocks);
-       void sendGotBlocks(v3s16 block);
+       void sendGotBlocks(const std::vector<v3s16> &blocks);
        void sendRemovedSounds(std::vector<s32> &soundList);
 
        // Helper function
@@ -506,8 +504,7 @@ private:
        // If 0, server init hasn't been received yet.
        u16 m_proto_ver = 0;
 
-       u16 m_playeritem = 0;
-       bool m_inventory_updated = false;
+       bool m_update_wielded_item = false;
        Inventory *m_inventory_from_server = nullptr;
        float m_inventory_from_server_age = 0.0f;
        PacketCounter m_packetcounter;
@@ -545,6 +542,7 @@ private:
        std::queue<ClientEvent *> m_client_event_queue;
        bool m_itemdef_received = false;
        bool m_nodedef_received = false;
+       bool m_activeobjects_received = false;
        bool m_mods_loaded = false;
        ClientMediaDownloader *m_media_downloader;
 
@@ -565,8 +563,7 @@ private:
        // And relations to objects
        std::unordered_map<int, u16> m_sounds_to_objects;
 
-       // HUD
-       // Mapping from server hud ids to internal hud ids
+       // Map server hud ids to client hud ids
        std::unordered_map<u32, u32> m_hud_server_to_client;
 
        // Privileges
@@ -579,8 +576,6 @@ private:
        // Storage for mesh data for creating multiple instances of the same mesh
        StringMap m_mesh_data;
 
-       StringMap m_mod_files;
-
        // own state
        LocalClientState m_state;
 
@@ -591,11 +586,13 @@ private:
        IntervalLimiter m_localdb_save_interval;
        u16 m_cache_save_interval;
 
+       // Client modding
        ClientScripting *m_script = nullptr;
        bool m_modding_enabled;
        std::unordered_map<std::string, ModMetadata *> m_mod_storages;
        float m_mod_storage_save_timer = 10.0f;
        std::vector<ModSpec> m_mods;
+       StringMap m_mod_vfs;
 
        bool m_shutdown = false;