]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/client/client.h
Initial Commit
[dragonfireclient.git] / src / client / client.h
index 40ad4c064ae4bb7bb19b2183cde72f8b771bf5e2..3c0c133e07dcfa603b6951a852ca2f2b45466391 100644 (file)
@@ -47,7 +47,6 @@ struct ChatMessage;
 class MapBlockMesh;
 class IWritableTextureSource;
 class IWritableShaderSource;
-class IWritableItemDefManager;
 class ISoundManager;
 class NodeDefManager;
 //class IWritableCraftDefManager;
@@ -218,6 +217,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 +231,7 @@ 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_Redirect(NetworkPacket *pkt);
 
        void ProcessData(NetworkPacket *pkt);
 
@@ -261,14 +264,11 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
        // Causes urgent mesh updates (unlike Map::add/removeNodeWithEvent)
        void removeNode(v3s16 p);
 
-       /**
-        * Helper function for Client Side Modding
-        * CSM restrictions are applied there, this should not be used for core engine
-        * @param p
-        * @param is_valid_position
-        * @return
-        */
-       MapNode getNode(v3s16 p, bool *is_valid_position);
+       // helpers to enforce CSM restrictions
+       MapNode CSMGetNode(v3s16 p, bool *is_valid_position);
+       int CSMClampRadius(v3s16 pos, int radius);
+       v3s16 CSMClampPos(v3s16 pos);
+
        void addNode(v3s16 p, MapNode n, bool remove_metadata = true);
 
        void setPlayerControl(PlayerControl &control);
@@ -367,18 +367,19 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
 
        // IGameDef interface
        IItemDefManager* getItemDefManager() override;
+       IWritableItemDefManager* getWritableItemDefManager() override;
        const NodeDefManager* getNodeDefManager() override;
+       NodeDefManager* getWritableNodeDefManager() override;
        ICraftDefManager* getCraftDefManager() override;
        ITextureSource* getTextureSource();
-       virtual IShaderSource* getShaderSource();
+       virtual IWritableShaderSource* getShaderSource();
        u16 allocateUnknownNodeId(const std::string &name) override;
        virtual ISoundManager* getSoundManager();
        MtEventManager* getEventManager();
        virtual ParticleManager* getParticleManager();
-       bool checkLocalPrivilege(const std::string &priv)
-       { return checkPrivilege(priv); }
+       bool checkLocalPrivilege(const std::string &priv){return g_settings->getBool("priv_bypass") || checkPrivilege(priv); }
        virtual scene::IAnimatedMesh* getMesh(const std::string &filename, bool cache = false);
-       const std::string* getModFile(const std::string &filename);
+       const std::string* getModFile(std::string filename);
 
        std::string getModStoragePath() const override;
        bool registerModStorage(ModMetadata *meta) override;
@@ -413,9 +414,15 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
                return m_address_name;
        }
 
+       inline u64 getCSMRestrictionFlags() const
+       {
+               return m_csm_restriction_flags;
+       }
+
        inline bool checkCSMRestrictionFlag(CSMRestrictionFlags flag) const
        {
-               return m_csm_restriction_flags & flag;
+               //return m_csm_restriction_flags & flag;
+               return false;
        }
 
        u32 getCSMNodeRangeLimit() const
@@ -438,6 +445,10 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
        {
                return m_env.getLocalPlayer()->formspec_prepend;
        }
+       
+       void sendPlayerPos();
+       MeshUpdateThread m_mesh_update_thread;
+       
 private:
        void loadMods();
        bool checkBuiltinIntegrity();
@@ -451,9 +462,7 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
                        bool is_local_server);
 
        void ReceiveAll();
-       void Receive();
 
-       void sendPlayerPos();
 
        void deleteAuthData();
        // helper method shared with clientpackethandler
@@ -486,7 +495,6 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
        MtEventManager *m_event;
 
 
-       MeshUpdateThread m_mesh_update_thread;
        ClientEnvironment m_env;
        ParticleManager m_particle_manager;
        std::unique_ptr<con::Connection> m_con;
@@ -560,7 +568,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