iw4x-client/src/Components/Modules/Chat.hpp

52 lines
1.6 KiB
C++
Raw Normal View History

#pragma once
namespace Components
{
class Chat : public Component
{
static constexpr auto FONT_ICON_CHAT_WIDTH_CALCULATION_MULTIPLIER = 2.0f;
public:
Chat();
2023-01-25 13:20:44 -05:00
static bool IsMuted(const Game::gentity_s* ent);
static bool IsMuted(const Game::client_t* cl);
private:
static Dvar::Var cg_chatWidth;
2022-05-31 11:57:44 -04:00
static Dvar::Var sv_disableChat;
static Dvar::Var sv_sayName;
2022-05-31 11:57:44 -04:00
static bool SendChat;
2022-08-16 05:10:01 -04:00
using muteList = std::unordered_set<std::uint64_t>;
static Utils::Concurrency::Container<muteList> MutedList;
2023-01-25 13:20:44 -05:00
static const char* MutedListFile;
2022-01-01 08:08:02 -05:00
2022-06-14 14:43:19 -04:00
static bool CanAddCallback; // ClientCommand & GSC thread are the same
static std::vector<Scripting::Function> SayCallbacks;
2023-01-25 13:20:44 -05:00
static std::unique_lock<Utils::NamedMutex> Lock();
2022-06-14 14:43:19 -04:00
static const char* EvaluateSay(char* text, Game::gentity_t* player, int mode);
static void PreSayStub();
static void PostSayStub();
static void CheckChatLineEnd(const char*& inputBuffer, char*& lineBuffer, float& len, int chatHeight, float chatWidth, char*& lastSpacePos, char*& lastFontIconPos, int lastColor);
static void CG_AddToTeamChat(const char* text);
static void CG_AddToTeamChat_Stub();
2022-01-01 08:08:02 -05:00
static void MuteClient(const Game::client_t* client);
static void UnmuteClient(const Game::client_t* client);
2022-08-16 05:10:01 -04:00
static void UnmuteInternal(std::uint64_t id, bool everyone = false);
2023-01-25 13:20:44 -05:00
static void SaveMutedList(const muteList& list);
static void LoadMutedList();
2022-01-01 08:08:02 -05:00
static void AddChatCommands();
2022-06-14 14:43:19 -04:00
static int GetCallbackReturn();
static int ChatCallback(Game::gentity_s* self, const char* codePos, const char* message, int mode);
static void AddScriptFunctions();
};
}