core/HalfLife2.h
author David Anderson <dvander@alliedmods.net>
Wed Jun 06 22:26:40 2007 +0000 (2007-06-06)
changeset 895 a1068846fee8
parent 873 a2136b3be10d
child 965 327edbb1357a
permissions -rw-r--r--
the "No Access" phrase now replies correctly from chat triggers
dvander@592
     1
/**
dvander@592
     2
 * vim: set ts=4 :
dvander@592
     3
 * ===============================================================
dvander@592
     4
 * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
dvander@592
     5
 * ===============================================================
dvander@592
     6
 *
dvander@592
     7
 * This file is not open source and may not be copied without explicit
dvander@592
     8
 * written permission of AlliedModders LLC.  This file may not be redistributed 
dvander@592
     9
 * in whole or significant part.
dvander@592
    10
 * For information, see LICENSE.txt or http://www.sourcemod.net/license.php
dvander@592
    11
 *
dvander@592
    12
 * Version: $Id$
dvander@592
    13
 */
dvander@592
    14
dvander@592
    15
#ifndef _INCLUDE_SOURCEMOD_CHALFLIFE2_H_
dvander@592
    16
#define _INCLUDE_SOURCEMOD_CHALFLIFE2_H_
dvander@592
    17
dvander@592
    18
#include <sh_list.h>
faluco@682
    19
#include <sh_tinyhash.h>
dvander@592
    20
#include "sm_trie.h"
dvander@592
    21
#include "sm_globals.h"
ds@873
    22
#include <dt_send.h>
ds@873
    23
#include <server_class.h>
ds@873
    24
#include <datamap.h>
ds@873
    25
#include <edict.h>
dvander@592
    26
dvander@592
    27
using namespace SourceHook;
dvander@592
    28
dvander@895
    29
#define HUD_PRINTTALK		3
dvander@895
    30
#define HUD_PRINTCENTER		4
dvander@895
    31
dvander@592
    32
struct DataTableInfo
dvander@592
    33
{
dvander@592
    34
	ServerClass *sc;
dvander@592
    35
	Trie *lookup;
dvander@592
    36
};
dvander@592
    37
faluco@682
    38
struct DataMapTrie
faluco@682
    39
{
faluco@682
    40
	DataMapTrie() : trie(NULL) {}
faluco@682
    41
	Trie *trie;
faluco@682
    42
};
faluco@682
    43
dvander@677
    44
class CHalfLife2 : public SMGlobalClass
dvander@592
    45
{
dvander@592
    46
public:
dvander@592
    47
	CHalfLife2();
dvander@592
    48
	~CHalfLife2();
dvander@592
    49
public:
dvander@677
    50
	void OnSourceModStartup(bool late);
ds@873
    51
	void OnSourceModAllInitialized();
dvander@677
    52
	/*void OnSourceModAllShutdown();*/
dvander@592
    53
public:
dvander@592
    54
	SendProp *FindInSendTable(const char *classname, const char *offset);
dvander@592
    55
	ServerClass *FindServerClass(const char *classname);
faluco@682
    56
	typedescription_t *FindInDataMap(datamap_t *pMap, const char *offset);
dvander@685
    57
	void SetEdictStateChanged(edict_t *pEdict, unsigned short offset);
ds@873
    58
	void TextMsg(int client, int dest, const char *msg);
dvander@592
    59
private:
dvander@592
    60
	DataTableInfo *_FindServerClass(const char *classname);
dvander@592
    61
private:
dvander@592
    62
	Trie *m_pClasses;
dvander@592
    63
	List<DataTableInfo *> m_Tables;
faluco@682
    64
	THash<datamap_t *, DataMapTrie> m_Maps;
ds@873
    65
	int m_MsgTextMsg;
dvander@592
    66
};
dvander@592
    67
dvander@592
    68
extern CHalfLife2 g_HL2;
dvander@685
    69
extern bool g_IsOriginalEngine;
dvander@592
    70
dvander@592
    71
#endif //_INCLUDE_SOURCEMOD_CHALFLIFE2_H_