#pragma once #include #include #include "DiabloUI/text_input.hpp" #include "engine/clx_sprite.hpp" #include "msg.h" #include "multi.h" #ifdef USE_SDL3 #include #include #include #include #else #include #ifdef USE_SDL1 #include "utils/sdl2_to_1_2_backports.h" #endif #endif namespace devilution { extern OptionalOwnedClxSpriteList talkButtons; extern std::optional ChatInputState; extern char TalkMessage[MAX_SEND_STR_LEN]; extern bool TalkButtonsDown[3]; extern int sgbPlrTalkTbl; extern bool WhisperList[MAX_PLRS]; bool CheckChatCommand(std::string_view text); template bool HandleInputEvent(const SDL_Event &event, std::optional &inputState) { if (!inputState) { return false; // No input state to handle } if constexpr (std::is_same_v) { return HandleTextInputEvent(event, *inputState); } else if constexpr (std::is_same_v) { return HandleNumberInputEvent(event, *inputState); } return false; // Unknown input state type } } // namespace devilution