core/HalfLife2.h
author David Anderson <dvander@alliedmods.net>
Sun Jun 17 07:32:31 2007 +0000 (2007-06-17)
changeset 969 0cd7fc27e054
parent 965 327edbb1357a
child 1132 e8d4e82e9541
permissions -rw-r--r--
fixed a state bug in the gameconf parser that would break parsing after a signature section was done
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"
dvander@965
    22
#include <IGameHelpers.h>
dvander@592
    23
dvander@592
    24
using namespace SourceHook;
dvander@965
    25
using namespace SourceMod;
dvander@592
    26
dvander@895
    27
#define HUD_PRINTTALK		3
dvander@895
    28
#define HUD_PRINTCENTER		4
dvander@895
    29
dvander@592
    30
struct DataTableInfo
dvander@592
    31
{
dvander@592
    32
	ServerClass *sc;
dvander@592
    33
	Trie *lookup;
dvander@592
    34
};
dvander@592
    35
faluco@682
    36
struct DataMapTrie
faluco@682
    37
{
faluco@682
    38
	DataMapTrie() : trie(NULL) {}
faluco@682
    39
	Trie *trie;
faluco@682
    40
};
faluco@682
    41
dvander@965
    42
class CHalfLife2 : 
dvander@965
    43
	public SMGlobalClass,
dvander@965
    44
	public IGameHelpers
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@965
    53
public: //IGameHelpers
dvander@592
    54
	SendProp *FindInSendTable(const char *classname, const char *offset);
dvander@965
    55
	datamap_t *GetDataMap(CBaseEntity *pEntity);
dvander@592
    56
	ServerClass *FindServerClass(const char *classname);
faluco@682
    57
	typedescription_t *FindInDataMap(datamap_t *pMap, const char *offset);
dvander@685
    58
	void SetEdictStateChanged(edict_t *pEdict, unsigned short offset);
ds@873
    59
	void TextMsg(int client, int dest, const char *msg);
dvander@592
    60
private:
dvander@592
    61
	DataTableInfo *_FindServerClass(const char *classname);
dvander@592
    62
private:
dvander@592
    63
	Trie *m_pClasses;
dvander@592
    64
	List<DataTableInfo *> m_Tables;
faluco@682
    65
	THash<datamap_t *, DataMapTrie> m_Maps;
ds@873
    66
	int m_MsgTextMsg;
dvander@592
    67
};
dvander@592
    68
dvander@592
    69
extern CHalfLife2 g_HL2;
dvander@685
    70
extern bool g_IsOriginalEngine;
dvander@592
    71
dvander@592
    72
#endif //_INCLUDE_SOURCEMOD_CHALFLIFE2_H_