diff --git a/include/ui/game_screen.hpp b/include/ui/game_screen.hpp index 4b166783..fd30476e 100644 --- a/include/ui/game_screen.hpp +++ b/include/ui/game_screen.hpp @@ -66,7 +66,7 @@ private: int activeChatTab_ = 0; struct ChatTab { std::string name; - uint32_t typeMask; // bitmask of ChatType values to show + uint64_t typeMask; // bitmask of ChatType values to show (64-bit: types go up to 84) }; std::vector chatTabs_; void initChatTabs(); diff --git a/src/ui/game_screen.cpp b/src/ui/game_screen.cpp index 259b10ad..33f3e02a 100644 --- a/src/ui/game_screen.cpp +++ b/src/ui/game_screen.cpp @@ -204,29 +204,33 @@ GameScreen::GameScreen() { void GameScreen::initChatTabs() { chatTabs_.clear(); // General tab: shows everything - chatTabs_.push_back({"General", 0xFFFFFFFF}); + chatTabs_.push_back({"General", ~0ULL}); // Combat tab: system, loot, skills, achievements, and NPC speech/emotes - chatTabs_.push_back({"Combat", (1u << static_cast(game::ChatType::SYSTEM)) | - (1u << static_cast(game::ChatType::LOOT)) | - (1u << static_cast(game::ChatType::SKILL)) | - (1u << static_cast(game::ChatType::ACHIEVEMENT)) | - (1u << static_cast(game::ChatType::GUILD_ACHIEVEMENT)) | - (1u << static_cast(game::ChatType::MONSTER_SAY)) | - (1u << static_cast(game::ChatType::MONSTER_YELL)) | - (1u << static_cast(game::ChatType::MONSTER_EMOTE))}); + chatTabs_.push_back({"Combat", (1ULL << static_cast(game::ChatType::SYSTEM)) | + (1ULL << static_cast(game::ChatType::LOOT)) | + (1ULL << static_cast(game::ChatType::SKILL)) | + (1ULL << static_cast(game::ChatType::ACHIEVEMENT)) | + (1ULL << static_cast(game::ChatType::GUILD_ACHIEVEMENT)) | + (1ULL << static_cast(game::ChatType::MONSTER_SAY)) | + (1ULL << static_cast(game::ChatType::MONSTER_YELL)) | + (1ULL << static_cast(game::ChatType::MONSTER_EMOTE)) | + (1ULL << static_cast(game::ChatType::MONSTER_WHISPER)) | + (1ULL << static_cast(game::ChatType::MONSTER_PARTY)) | + (1ULL << static_cast(game::ChatType::RAID_BOSS_WHISPER)) | + (1ULL << static_cast(game::ChatType::RAID_BOSS_EMOTE))}); // Whispers tab - chatTabs_.push_back({"Whispers", (1u << static_cast(game::ChatType::WHISPER)) | - (1u << static_cast(game::ChatType::WHISPER_INFORM))}); + chatTabs_.push_back({"Whispers", (1ULL << static_cast(game::ChatType::WHISPER)) | + (1ULL << static_cast(game::ChatType::WHISPER_INFORM))}); // Trade/LFG tab: channel messages - chatTabs_.push_back({"Trade/LFG", (1u << static_cast(game::ChatType::CHANNEL))}); + chatTabs_.push_back({"Trade/LFG", (1ULL << static_cast(game::ChatType::CHANNEL))}); } bool GameScreen::shouldShowMessage(const game::MessageChatData& msg, int tabIndex) const { if (tabIndex < 0 || tabIndex >= static_cast(chatTabs_.size())) return true; const auto& tab = chatTabs_[tabIndex]; - if (tab.typeMask == 0xFFFFFFFF) return true; // General tab shows all + if (tab.typeMask == ~0ULL) return true; // General tab shows all - uint32_t typeBit = 1u << static_cast(msg.type); + uint64_t typeBit = 1ULL << static_cast(msg.type); // For Trade/LFG tab, also filter by channel name if (tabIndex == 3 && msg.type == game::ChatType::CHANNEL) {