core/HalfLife2.h
author Scott Ehlert <ds@alliedmods.net>
Sat Apr 21 17:03:28 2007 +0000 (2007-04-21)
changeset 702 ff520b71249c
parent 685 7b768fa29f08
child 873 a2136b3be10d
permissions -rw-r--r--
Wow, how did I forget this - exported IMemoryUtils interface
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@592
    22
#include "dt_send.h"
dvander@592
    23
#include "server_class.h"
faluco@682
    24
#include "datamap.h"
dvander@685
    25
#include "edict.h"
dvander@592
    26
dvander@592
    27
using namespace SourceHook;
dvander@592
    28
dvander@592
    29
struct DataTableInfo
dvander@592
    30
{
dvander@592
    31
	ServerClass *sc;
dvander@592
    32
	Trie *lookup;
dvander@592
    33
};
dvander@592
    34
faluco@682
    35
struct DataMapTrie
faluco@682
    36
{
faluco@682
    37
	DataMapTrie() : trie(NULL) {}
faluco@682
    38
	Trie *trie;
faluco@682
    39
};
faluco@682
    40
dvander@677
    41
class CHalfLife2 : public SMGlobalClass
dvander@592
    42
{
dvander@592
    43
public:
dvander@592
    44
	CHalfLife2();
dvander@592
    45
	~CHalfLife2();
dvander@592
    46
public:
dvander@677
    47
	void OnSourceModStartup(bool late);
dvander@677
    48
	/*void OnSourceModAllShutdown();*/
dvander@592
    49
public:
dvander@592
    50
	SendProp *FindInSendTable(const char *classname, const char *offset);
dvander@592
    51
	ServerClass *FindServerClass(const char *classname);
faluco@682
    52
	typedescription_t *FindInDataMap(datamap_t *pMap, const char *offset);
dvander@685
    53
	void SetEdictStateChanged(edict_t *pEdict, unsigned short offset);
dvander@592
    54
private:
dvander@592
    55
	DataTableInfo *_FindServerClass(const char *classname);
dvander@592
    56
private:
dvander@592
    57
	Trie *m_pClasses;
dvander@592
    58
	List<DataTableInfo *> m_Tables;
faluco@682
    59
	THash<datamap_t *, DataMapTrie> m_Maps;
dvander@592
    60
};
dvander@592
    61
dvander@592
    62
extern CHalfLife2 g_HL2;
dvander@685
    63
extern bool g_IsOriginalEngine;
dvander@592
    64
dvander@592
    65
#endif //_INCLUDE_SOURCEMOD_CHALFLIFE2_H_