X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fclient.h;h=adac83e5cbf3f190ea10a033723e1be9cbb7c51b;hb=79f19b8369a0120fbf0bd0ee3739989fbbbca50e;hp=0255b2803337f2c361edd41e7b03db2febe6eb94;hpb=84aa84591183db08489cad4e5a26472dbd7050b2;p=minetest.git diff --git a/src/client.h b/src/client.h index 0255b2803..adac83e5c 100644 --- a/src/client.h +++ b/src/client.h @@ -43,6 +43,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #define CLIENT_CHAT_MESSAGE_LIMIT_PER_10S 10.0f struct MeshMakeData; +struct ChatMessage; class MapBlockMesh; class IWritableTextureSource; class IWritableShaderSource; @@ -328,7 +329,8 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef void handleCommand_BlockData(NetworkPacket* pkt); void handleCommand_Inventory(NetworkPacket* pkt); void handleCommand_TimeOfDay(NetworkPacket* pkt); - void handleCommand_ChatMessage(NetworkPacket* pkt); + void handleCommand_ChatMessageOld(NetworkPacket *pkt); + void handleCommand_ChatMessage(NetworkPacket *pkt); void handleCommand_ActiveObjectRemoveAdd(NetworkPacket* pkt); void handleCommand_ActiveObjectMessages(NetworkPacket* pkt); void handleCommand_Movement(NetworkPacket* pkt); @@ -362,6 +364,7 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef void handleCommand_EyeOffset(NetworkPacket* pkt); void handleCommand_UpdatePlayerList(NetworkPacket* pkt); void handleCommand_SrpBytesSandB(NetworkPacket* pkt); + void handleCommand_CSMFlavourLimits(NetworkPacket *pkt); void ProcessData(NetworkPacket *pkt); @@ -394,6 +397,14 @@ 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 + * Flavour is 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); void addNode(v3s16 p, MapNode n, bool remove_metadata = true); @@ -520,9 +531,9 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef void makeScreenshot(); - inline void pushToChatQueue(const std::wstring &input) + inline void pushToChatQueue(ChatMessage *cec) { - m_chat_queue.push(input); + m_chat_queue.push(cec); } ClientScripting *getScript() { return m_script; } @@ -550,6 +561,16 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef return m_address_name; } + inline bool checkCSMFlavourLimit(CSMFlavourLimit flag) const + { + return m_csm_flavour_limits & flag; + } + + u32 getCSMNodeRangeLimit() const + { + return m_csm_noderange_limit; + } + private: // Virtual methods from con::PeerHandler @@ -629,10 +650,10 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef // 0 <= m_daynight_i < DAYNIGHT_CACHE_COUNT //s32 m_daynight_i; //u32 m_daynight_ratio; - std::queue m_chat_queue; std::queue m_out_chat_queue; u32 m_last_chat_message_sent; float m_chat_message_allowance = 5.0f; + std::queue m_chat_queue; // The authentication methods we can use to enter sudo mode (=change password) u32 m_sudo_auth_methods; @@ -703,6 +724,10 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef GameUIFlags *m_game_ui_flags; bool m_shutdown = false; + + // CSM flavour limits byteflag + u64 m_csm_flavour_limits = CSMFlavourLimit::CSM_FL_NONE; + u32 m_csm_noderange_limit = 8; }; #endif // !CLIENT_HEADER