#include "precompiled.h" CHintMessage::CHintMessage(const char *hintString, bool isHint, CUtlVector *args, float duration) { m_hintString = hintString; m_duration = duration; m_isHint = isHint; if (args) { for (int i = 0; i < args->Count(); ++i) m_args.AddToTail(CloneString((*args)[i])); } } CHintMessage::~CHintMessage() { for (int i = 0; i < m_args.Count(); ++i) delete[] m_args[i]; m_args.RemoveAll(); } void CHintMessage::Send(CBaseEntity *client) { UTIL_ShowMessageArgs(m_hintString, client, &m_args, m_isHint); } void CHintMessageQueue::Reset() { m_tmMessageEnd = 0; for (int i = 0; i < m_messages.Count(); ++i) delete m_messages[i]; m_messages.RemoveAll(); } void CHintMessageQueue::Update(CBaseEntity *client) { if (gpGlobals->time <= m_tmMessageEnd) return; if (!m_messages.Count()) return; CHintMessage *msg = m_messages[0]; m_tmMessageEnd = gpGlobals->time + msg->GetDuration(); msg->Send(client); delete msg; m_messages.Remove(0); } bool CHintMessageQueue::AddMessage(const char *message, float duration, bool isHint, CUtlVector *args) { CHintMessage *msg = new CHintMessage(message, isHint, args, duration); m_messages.AddToTail(msg); return true; }