#pragma once #include <vector> #include <string> #include "dCommonVars.h" enum class eGameMasterLevel : uint8_t; namespace dChatFilterDCF { static const uint32_t header = ('D' + ('C' << 8) + ('F' << 16) + ('B' << 24)); static const uint32_t formatVersion = 2; struct fileHeader { uint32_t header; uint32_t formatVersion; }; }; class dChatFilter { public: dChatFilter(const std::string& filepath, bool dontGenerateDCF); ~dChatFilter(); void ReadWordlistPlaintext(const std::string& filepath, bool allowList); bool ReadWordlistDCF(const std::string& filepath, bool allowList); void ExportWordlistToDCF(const std::string& filepath, bool allowList); std::vector<std::pair<uint8_t, uint8_t>> IsSentenceOkay(const std::string& message, eGameMasterLevel gmLevel, bool allowList = true); private: bool m_DontGenerateDCF; std::vector<size_t> m_DeniedWords; std::vector<size_t> m_ApprovedWords; std::vector<size_t> m_UserUnapprovedWordCache; //Private functions: size_t CalculateHash(const std::string& word); };