]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/client/client.h
Fix camera panning glitches (partially revert 10489.)
[dragonfireclient.git] / src / client / client.h
index 0e0765caea109a3136cbd184096c96af8bdfdd0b..bffdc7ec6c856e897411c8f624029bce98e70160 100644 (file)
@@ -82,34 +82,24 @@ class PacketCounter
 
        void add(u16 command)
        {
-               std::map<u16, u16>::iterator n = m_packets.find(command);
-               if(n == m_packets.end())
-               {
+               auto n = m_packets.find(command);
+               if (n == m_packets.end())
                        m_packets[command] = 1;
-               }
                else
-               {
                        n->second++;
-               }
        }
 
        void clear()
        {
-               for (auto &m_packet : m_packets) {
-                       m_packet.second = 0;
-               }
+               m_packets.clear();
        }
 
-       void print(std::ostream &o)
-       {
-               for (const auto &m_packet : m_packets) {
-                       o << "cmd "<< m_packet.first <<" count "<< m_packet.second << std::endl;
-               }
-       }
+       u32 sum() const;
+       void print(std::ostream &o) const;
 
 private:
        // command, count
-       std::map<u16, u16> m_packets;
+       std::map<u16, u32> m_packets;
 };
 
 class ClientScripting;
@@ -218,6 +208,9 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
        void handleCommand_HudSetFlags(NetworkPacket* pkt);
        void handleCommand_HudSetParam(NetworkPacket* pkt);
        void handleCommand_HudSetSky(NetworkPacket* pkt);
+       void handleCommand_HudSetSun(NetworkPacket* pkt);
+       void handleCommand_HudSetMoon(NetworkPacket* pkt);
+       void handleCommand_HudSetStars(NetworkPacket* pkt);
        void handleCommand_CloudParams(NetworkPacket* pkt);
        void handleCommand_OverrideDayNightRatio(NetworkPacket* pkt);
        void handleCommand_LocalPlayerAnimations(NetworkPacket* pkt);
@@ -229,6 +222,8 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
        void handleCommand_FormspecPrepend(NetworkPacket *pkt);
        void handleCommand_CSMRestrictionFlags(NetworkPacket *pkt);
        void handleCommand_PlayerSpeed(NetworkPacket *pkt);
+       void handleCommand_MediaPush(NetworkPacket *pkt);
+       void handleCommand_MinimapModes(NetworkPacket *pkt);
 
        void ProcessData(NetworkPacket *pkt);
 
@@ -343,7 +338,6 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
        u16 getProtoVersion()
        { return m_proto_ver; }
 
-       bool connectedToServer();
        void confirmRegistration();
        bool m_is_registration_confirmation_state = false;
        bool m_simple_singleplayer_mode;
@@ -367,7 +361,7 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
        const NodeDefManager* getNodeDefManager() override;
        ICraftDefManager* getCraftDefManager() override;
        ITextureSource* getTextureSource();
-       virtual IShaderSource* getShaderSource();
+       virtual IWritableShaderSource* getShaderSource();
        u16 allocateUnknownNodeId(const std::string &name) override;
        virtual ISoundManager* getSoundManager();
        MtEventManager* getEventManager();
@@ -383,7 +377,8 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
 
        // The following set of functions is used by ClientMediaDownloader
        // Insert a media file appropriately into the appropriate manager
-       bool loadMedia(const std::string &data, const std::string &filename);
+       bool loadMedia(const std::string &data, const std::string &filename,
+               bool from_media_push = false);
        // Send a request for conventional media transfer
        void request_media(const std::vector<std::string> &file_requests);
 
@@ -453,7 +448,6 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
                        bool is_local_server);
 
        void ReceiveAll();
-       void Receive();
 
        void sendPlayerPos();
 
@@ -496,6 +490,7 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
        Camera *m_camera = nullptr;
        Minimap *m_minimap = nullptr;
        bool m_minimap_disabled_by_server = false;
+
        // Server serialization version
        u8 m_server_ser_ver;
 
@@ -537,7 +532,6 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
        AuthMechanism m_chosen_auth_mech;
        void *m_auth_data = nullptr;
 
-
        bool m_access_denied = false;
        bool m_access_denied_reconnect = false;
        std::string m_access_denied_reason = "";
@@ -546,7 +540,10 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
        bool m_nodedef_received = false;
        bool m_activeobjects_received = false;
        bool m_mods_loaded = false;
+
        ClientMediaDownloader *m_media_downloader;
+       // Set of media filenames pushed by server at runtime
+       std::unordered_set<std::string> m_media_pushed_files;
 
        // time_of_day speed approximation for old protocol
        bool m_time_of_day_set = false;
@@ -562,7 +559,7 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
        std::unordered_map<s32, int> m_sounds_server_to_client;
        // And the other way!
        std::unordered_map<int, s32> m_sounds_client_to_server;
-       // And relations to objects
+       // Relation of client id to object id
        std::unordered_map<int, u16> m_sounds_to_objects;
 
        // Map server hud ids to client hud ids