extensions/sdktools/CellRecipientFilter.h
author Scott Ehlert <ds@alliedmods.net>
Sun Mar 30 07:00:22 2008 +0000 (2008-03-30)
changeset 1952 b7aa2b626807
child 2289 44045ead61cd
permissions -rw-r--r--
Spring Cleaning, Part Ichi (1)
Various minor things done to project files
Updated sample extension project file and updated makefile to the new unified version (more changes likely on the way)
Updated regex project file and makefile
ds@1952
     1
/**
ds@1952
     2
 * vim: set ts=4 :
ds@1952
     3
 * =============================================================================
ds@1952
     4
 * SourceMod SDKTools Extension
ds@1952
     5
 * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
ds@1952
     6
 * =============================================================================
ds@1952
     7
 *
ds@1952
     8
 * This program is free software; you can redistribute it and/or modify it under
ds@1952
     9
 * the terms of the GNU General Public License, version 3.0, as published by the
ds@1952
    10
 * Free Software Foundation.
ds@1952
    11
 * 
ds@1952
    12
 * This program is distributed in the hope that it will be useful, but WITHOUT
ds@1952
    13
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
ds@1952
    14
 * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
ds@1952
    15
 * details.
ds@1952
    16
 *
ds@1952
    17
 * You should have received a copy of the GNU General Public License along with
ds@1952
    18
 * this program.  If not, see <http://www.gnu.org/licenses/>.
ds@1952
    19
 *
ds@1952
    20
 * As a special exception, AlliedModders LLC gives you permission to link the
ds@1952
    21
 * code of this program (as well as its derivative works) to "Half-Life 2," the
ds@1952
    22
 * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
ds@1952
    23
 * by the Valve Corporation.  You must obey the GNU General Public License in
ds@1952
    24
 * all respects for all other code used.  Additionally, AlliedModders LLC grants
ds@1952
    25
 * this exception to all derivative works.  AlliedModders LLC defines further
ds@1952
    26
 * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
ds@1952
    27
 * or <http://www.sourcemod.net/license.php>.
ds@1952
    28
 *
ds@1952
    29
 * Version: $Id$
ds@1952
    30
 */
ds@1952
    31
ds@1952
    32
#ifndef _INCLUDE_SOURCEMOD_CELLRECIPIENTFILTER_H_
ds@1952
    33
#define _INCLUDE_SOURCEMOD_CELLRECIPIENTFILTER_H_
ds@1952
    34
ds@1952
    35
#include <irecipientfilter.h>
ds@1952
    36
#include <sp_vm_types.h>
ds@1952
    37
ds@1952
    38
class CellRecipientFilter : public IRecipientFilter
ds@1952
    39
{
ds@1952
    40
public:
ds@1952
    41
	CellRecipientFilter() : m_IsReliable(false), m_IsInitMessage(false), m_Size(0) {}
ds@1952
    42
	~CellRecipientFilter() {}
ds@1952
    43
public: //IRecipientFilter
ds@1952
    44
	bool IsReliable() const;
ds@1952
    45
	bool IsInitMessage() const;
ds@1952
    46
	int GetRecipientCount() const;
ds@1952
    47
	int GetRecipientIndex(int slot) const;
ds@1952
    48
public:
ds@1952
    49
	void Initialize(cell_t *ptr, size_t count);
ds@1952
    50
	void SetToReliable(bool isreliable);
ds@1952
    51
	void SetToInit(bool isinitmsg);
ds@1952
    52
	void Reset();
ds@1952
    53
private:
ds@1952
    54
	cell_t m_Players[255];
ds@1952
    55
	bool m_IsReliable;
ds@1952
    56
	bool m_IsInitMessage;
ds@1952
    57
	size_t m_Size;
ds@1952
    58
};
ds@1952
    59
ds@1952
    60
inline void CellRecipientFilter::Reset()
ds@1952
    61
{
ds@1952
    62
	m_IsReliable = false;
ds@1952
    63
	m_IsInitMessage = false;
ds@1952
    64
	m_Size = 0;
ds@1952
    65
}
ds@1952
    66
ds@1952
    67
inline bool CellRecipientFilter::IsReliable() const
ds@1952
    68
{
ds@1952
    69
	return m_IsReliable;
ds@1952
    70
}
ds@1952
    71
ds@1952
    72
inline bool CellRecipientFilter::IsInitMessage() const
ds@1952
    73
{
ds@1952
    74
	return m_IsInitMessage;
ds@1952
    75
}
ds@1952
    76
ds@1952
    77
inline int CellRecipientFilter::GetRecipientCount() const
ds@1952
    78
{
ds@1952
    79
	return m_Size;
ds@1952
    80
}
ds@1952
    81
ds@1952
    82
inline int CellRecipientFilter::GetRecipientIndex(int slot) const
ds@1952
    83
{
ds@1952
    84
	if ((slot < 0) || (slot >= GetRecipientCount()))
ds@1952
    85
	{
ds@1952
    86
		return -1;
ds@1952
    87
	}
ds@1952
    88
	return static_cast<int>(m_Players[slot]);
ds@1952
    89
}
ds@1952
    90
ds@1952
    91
inline void CellRecipientFilter::SetToInit(bool isinitmsg)
ds@1952
    92
{
ds@1952
    93
	m_IsInitMessage = isinitmsg;
ds@1952
    94
}
ds@1952
    95
ds@1952
    96
inline void CellRecipientFilter::SetToReliable(bool isreliable)
ds@1952
    97
{
ds@1952
    98
	m_IsReliable = isreliable;
ds@1952
    99
}
ds@1952
   100
ds@1952
   101
inline void CellRecipientFilter::Initialize(cell_t *ptr, size_t count)
ds@1952
   102
{
ds@1952
   103
	memcpy(m_Players, ptr, count * sizeof(cell_t));
ds@1952
   104
	m_Size = count;
ds@1952
   105
}
ds@1952
   106
ds@1952
   107
#endif //_INCLUDE_SOURCEMOD_CELLRECIPIENTFILTER_H_