faluco@505: /** faluco@505: * vim: set ts=4 : faluco@505: * =============================================================== faluco@505: * SourceMod (C)2004-2007 AlliedModders LLC. All rights reserved. faluco@505: * =============================================================== faluco@505: * faluco@505: * This file is not open source and may not be copied without explicit faluco@505: * written permission of AlliedModders LLC. This file may not be redistributed faluco@505: * in whole or significant part. faluco@505: * For information, see LICENSE.txt or http://www.sourcemod.net/license.php faluco@505: * faluco@505: * Version: $Id$ faluco@505: */ faluco@505: faluco@505: #ifndef _INCLUDE_SOURCEMOD_CELLRECIPIENTFILTER_H_ faluco@505: #define _INCLUDE_SOURCEMOD_CELLRECIPIENTFILTER_H_ faluco@505: faluco@505: #include faluco@505: #include faluco@505: faluco@505: class CellRecipientFilter : public IRecipientFilter faluco@505: { faluco@505: public: faluco@505: CellRecipientFilter() : m_Reliable(false), m_InitMessage(false), m_Size(0), m_CellRecipients(NULL) {} faluco@505: ~CellRecipientFilter() {} faluco@505: public: //IRecipientFilter faluco@505: bool IsReliable() const; faluco@505: bool IsInitMessage() const; faluco@505: int GetRecipientCount() const; faluco@505: int GetRecipientIndex(int slot) const; faluco@505: public: faluco@505: void SetRecipientPtr(cell_t *ptr, size_t count); faluco@505: void SetReliable(bool isreliable); faluco@505: void SetInitMessage(bool isinitmsg); faluco@505: void ResetFilter(); faluco@505: private: faluco@505: bool m_Reliable; faluco@505: bool m_InitMessage; faluco@505: size_t m_Size; faluco@505: cell_t *m_CellRecipients; faluco@505: }; faluco@505: faluco@505: inline void CellRecipientFilter::ResetFilter() faluco@505: { faluco@505: m_Reliable = false; faluco@505: m_InitMessage = false; faluco@505: m_Size = 0; faluco@505: m_CellRecipients = NULL; faluco@505: } faluco@505: faluco@505: inline bool CellRecipientFilter::IsReliable() const faluco@505: { faluco@505: return m_Reliable; faluco@505: } faluco@505: faluco@505: inline bool CellRecipientFilter::IsInitMessage() const faluco@505: { faluco@505: return m_InitMessage; faluco@505: } faluco@505: faluco@505: inline int CellRecipientFilter::GetRecipientCount() const faluco@505: { faluco@505: return m_Size; faluco@505: } faluco@505: faluco@505: inline int CellRecipientFilter::GetRecipientIndex(int slot) const faluco@505: { faluco@505: if ((slot < 0) || (slot >= GetRecipientCount())) faluco@505: { faluco@505: return -1; faluco@505: } faluco@505: return static_cast(m_CellRecipients[slot]); faluco@505: } faluco@505: faluco@505: inline void CellRecipientFilter::SetInitMessage(bool isinitmsg) faluco@505: { faluco@505: m_InitMessage = isinitmsg; faluco@505: } faluco@505: faluco@505: inline void CellRecipientFilter::SetReliable(bool isreliable) faluco@505: { faluco@505: m_Reliable = isreliable; faluco@505: } faluco@505: faluco@505: inline void CellRecipientFilter::SetRecipientPtr(cell_t *ptr, size_t count) faluco@505: { faluco@505: m_CellRecipients = ptr; faluco@505: m_Size = count; faluco@505: } faluco@505: faluco@505: #endif //_INCLUDE_SOURCEMOD_CELLRECIPIENTFILTER_H_