|
dvander@2726
|
1 |
/** |
|
dvander@2726
|
2 |
* vim: set ts=4 : |
|
dvander@2726
|
3 |
* ============================================================================= |
|
dvander@2726
|
4 |
* SourceMod |
|
dvander@2726
|
5 |
* Copyright (C) 2004-2009 AlliedModders LLC. All rights reserved. |
|
dvander@2726
|
6 |
* ============================================================================= |
|
dvander@2726
|
7 |
* |
|
dvander@2726
|
8 |
* This program is free software; you can redistribute it and/or modify it under |
|
dvander@2726
|
9 |
* the terms of the GNU General Public License, version 3.0, as published by the |
|
dvander@2726
|
10 |
* Free Software Foundation. |
|
dvander@2726
|
11 |
* |
|
dvander@2726
|
12 |
* This program is distributed in the hope that it will be useful, but WITHOUT |
|
dvander@2726
|
13 |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
|
dvander@2726
|
14 |
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more |
|
dvander@2726
|
15 |
* details. |
|
dvander@2726
|
16 |
* |
|
dvander@2726
|
17 |
* You should have received a copy of the GNU General Public License along with |
|
dvander@2726
|
18 |
* this program. If not, see <http://www.gnu.org/licenses/>. |
|
dvander@2726
|
19 |
* |
|
dvander@2726
|
20 |
* As a special exception, AlliedModders LLC gives you permission to link the |
|
dvander@2726
|
21 |
* code of this program (as well as its derivative works) to "Half-Life 2," the |
|
dvander@2726
|
22 |
* "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software |
|
dvander@2726
|
23 |
* by the Valve Corporation. You must obey the GNU General Public License in |
|
dvander@2726
|
24 |
* all respects for all other code used. Additionally, AlliedModders LLC grants |
|
dvander@2726
|
25 |
* this exception to all derivative works. AlliedModders LLC defines further |
|
dvander@2726
|
26 |
* exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007), |
|
dvander@2726
|
27 |
* or <http://www.sourcemod.net/license.php>. |
|
dvander@2726
|
28 |
* |
|
dvander@2726
|
29 |
* Version: $Id$ |
|
dvander@2726
|
30 |
*/ |
|
dvander@2726
|
31 |
|
|
dvander@2726
|
32 |
#include <sp_vm_api.h> |
|
dvander@2726
|
33 |
#include <IHandleSys.h> |
|
dvander@2726
|
34 |
#include <IShareSys.h> |
|
dvander@2726
|
35 |
|
|
dvander@2726
|
36 |
#ifndef _INCLUDE_SOURCEMOD_INTERCOM_H_ |
|
dvander@2726
|
37 |
#define _INCLUDE_SOURCEMOD_INTERCOM_H_ |
|
dvander@2726
|
38 |
|
|
dvander@2726
|
39 |
using namespace SourceMod; |
|
dvander@2726
|
40 |
|
|
dvander@2726
|
41 |
/** |
|
dvander@2726
|
42 |
* Add 1 to the RHS of this expression to bump the intercom file |
|
dvander@2726
|
43 |
* This is to prevent mismatching core/logic binaries |
|
dvander@2726
|
44 |
*/ |
|
dvander@3792
|
45 |
#define SM_LOGIC_MAGIC (0x0F47C0DE - 18) |
|
dvander@2726
|
46 |
|
|
dvander@2726
|
47 |
#if defined SM_LOGIC |
|
dvander@2726
|
48 |
class IVEngineServer |
|
dvander@2726
|
49 |
#else |
|
dvander@2726
|
50 |
class IVEngineServer_Logic |
|
dvander@2726
|
51 |
#endif |
|
dvander@2726
|
52 |
{ |
|
dvander@2726
|
53 |
public: |
|
dvander@2726
|
54 |
virtual bool IsMapValid(const char *map) = 0; |
|
dvander@3001
|
55 |
virtual void ServerCommand(const char *cmd) = 0; |
|
dvander@2726
|
56 |
}; |
|
dvander@2726
|
57 |
|
|
dvander@2726
|
58 |
namespace SourceMod |
|
dvander@2726
|
59 |
{ |
|
dvander@2726
|
60 |
class ISourceMod; |
|
dvander@2726
|
61 |
class ILibrarySys; |
|
dvander@2726
|
62 |
class ITextParsers; |
|
dvander@2726
|
63 |
class IThreader; |
|
dvander@2728
|
64 |
class IRootConsole; |
|
dvander@2728
|
65 |
class IPluginManager; |
|
dvander@2730
|
66 |
class IForwardManager; |
|
dvander@2989
|
67 |
class ITimerSystem; |
|
dvander@2996
|
68 |
class IPlayerManager; |
|
dvander@3000
|
69 |
class IAdminSystem; |
|
dvander@3001
|
70 |
class IGameHelpers; |
|
dvander@3004
|
71 |
class IPhraseCollection; |
|
dvander@3004
|
72 |
class ITranslator; |
|
dvander@3010
|
73 |
class IGameConfig; |
|
dvander@2726
|
74 |
} |
|
dvander@2726
|
75 |
|
|
dvander@2726
|
76 |
class IVEngineServer; |
|
dvander@2726
|
77 |
class ConVar; |
|
dvander@2726
|
78 |
|
|
dvander@2989
|
79 |
struct ServerGlobals |
|
dvander@2989
|
80 |
{ |
|
dvander@2989
|
81 |
const double *universalTime; |
|
dvander@2989
|
82 |
float *interval_per_tick; |
|
dvander@2989
|
83 |
float *frametime; |
|
dvander@2989
|
84 |
}; |
|
dvander@2989
|
85 |
|
|
dvander@2726
|
86 |
struct sm_core_t |
|
dvander@2726
|
87 |
{ |
|
dvander@2726
|
88 |
/* Objects */ |
|
dvander@2726
|
89 |
IHandleSys *handlesys; |
|
dvander@2726
|
90 |
IdentityToken_t *core_ident; |
|
dvander@2726
|
91 |
ISourceMod *sm; |
|
dvander@2726
|
92 |
ILibrarySys *libsys; |
|
dvander@2726
|
93 |
IVEngineServer *engine; |
|
dvander@2726
|
94 |
IShareSys *sharesys; |
|
dvander@2728
|
95 |
IRootConsole *rootmenu; |
|
dvander@2728
|
96 |
IPluginManager *pluginsys; |
|
dvander@2730
|
97 |
IForwardManager *forwardsys; |
|
dvander@2989
|
98 |
ITimerSystem *timersys; |
|
dvander@2996
|
99 |
IPlayerManager *playerhelpers; |
|
dvander@3000
|
100 |
IAdminSystem *adminsys; |
|
dvander@3010
|
101 |
IGameHelpers *gamehelpers; |
|
dvander@3792
|
102 |
ISourcePawnEngine *spe1; |
|
dvander@3792
|
103 |
ISourcePawnEngine2 *spe2; |
|
dvander@2726
|
104 |
/* Functions */ |
|
dvander@2726
|
105 |
void (*AddNatives)(sp_nativeinfo_t* nlist); |
|
dvander@2726
|
106 |
ConVar * (*FindConVar)(const char*); |
|
dvander@2726
|
107 |
unsigned int (*strncopy)(char*, const char*, size_t); |
|
dvander@2726
|
108 |
char * (*TrimWhitespace)(char *, size_t &); |
|
dvander@2726
|
109 |
void (*LogError)(const char*, ...); |
|
dvander@3791
|
110 |
void (*Log)(const char*, ...); |
|
dvander@3791
|
111 |
void (*LogToFile)(FILE *fp, const char*, ...); |
|
dvander@3791
|
112 |
void (*LogToGame)(const char *message); |
|
dvander@3791
|
113 |
bool (*FileExists)(const char *path); |
|
dvander@2726
|
114 |
const char * (*GetCvarString)(ConVar*); |
|
dvander@2726
|
115 |
size_t (*Format)(char*, size_t, const char*, ...); |
|
dvander@3792
|
116 |
size_t (*FormatArgs)(char*, size_t, const char*,va_list ap); |
|
dvander@3004
|
117 |
bool (*gnprintf)(char *, size_t, const char *, IPhraseCollection *, void **, |
|
dvander@3004
|
118 |
unsigned int, unsigned int &, size_t *, const char **); |
|
dvander@3006
|
119 |
size_t (*atcprintf)(char *, size_t, const char *, IPluginContext *, const cell_t *, int *); |
|
dvander@3010
|
120 |
bool (*GetGameName)(char *buffer, size_t maxlength); |
|
dvander@3010
|
121 |
const char * (*GetGameDescription)(); |
|
dvander@3010
|
122 |
const char * (*GetSourceEngineName)(); |
|
dvander@3010
|
123 |
bool (*SymbolsAreHidden)(); |
|
fyrenmoo@3366
|
124 |
const char * (*GetCoreConfigValue)(const char*); |
|
dvander@2989
|
125 |
/* Data */ |
|
dvander@2989
|
126 |
ServerGlobals *serverGlobals; |
|
dvander@3010
|
127 |
void * serverFactory; |
|
dvander@3010
|
128 |
void * engineFactory; |
|
skamonkey@3320
|
129 |
void * matchmakingDSFactory; |
|
dvander@2726
|
130 |
}; |
|
dvander@2726
|
131 |
|
|
dvander@2726
|
132 |
struct sm_logic_t |
|
dvander@2726
|
133 |
{ |
|
dvander@2726
|
134 |
SMGlobalClass *head; |
|
dvander@2726
|
135 |
IThreader *threader; |
|
dvander@2728
|
136 |
IProfiler *profiler; |
|
dvander@3004
|
137 |
ITranslator *translator; |
|
dvander@3002
|
138 |
const char *(*stristr)(const char *, const char *); |
|
dvander@3004
|
139 |
bool (*CoreTranslate)(char *, size_t, const char *, unsigned int, size_t *, ...); |
|
dvander@3004
|
140 |
void (*AddCorePhraseFile)(const char *filename); |
|
dvander@3005
|
141 |
unsigned int (*ReplaceAll)(char*, size_t, const char *, const char *, bool); |
|
dvander@3005
|
142 |
char *(*ReplaceEx)(char *, size_t, const char *, size_t, const char *, size_t, bool); |
|
dvander@3010
|
143 |
size_t (*DecodeHexString)(unsigned char *, size_t, const char *); |
|
dvander@3010
|
144 |
IGameConfig * (*GetCoreGameConfig)(); |
|
dvander@3791
|
145 |
bool (*OnLogPrint)(const char *msg); // true to supercede |
|
dvander@3792
|
146 |
IDebugListener *debugger; |
|
dvander@3792
|
147 |
void (*GenerateError)(IPluginContext *, cell_t, int, const char *, ...); |
|
dvander@2726
|
148 |
}; |
|
dvander@2726
|
149 |
|
|
dvander@2726
|
150 |
typedef void (*LogicInitFunction)(const sm_core_t *core, sm_logic_t *logic); |
|
dvander@2726
|
151 |
typedef LogicInitFunction (*LogicLoadFunction)(uint32_t magic); |
|
dvander@2726
|
152 |
typedef ITextParsers *(*GetITextParsers)(); |
|
dvander@2726
|
153 |
|
|
dvander@2726
|
154 |
#endif /* _INCLUDE_SOURCEMOD_INTERCOM_H_ */ |
|
dvander@2726
|
155 |
|