1
0
mirror of https://github.com/alliedmodders/hl2sdk.git synced 2025-09-19 20:16:10 +08:00
Files
hl2sdk/game/server/vscript_server.h
2025-02-19 18:39:00 -05:00

107 lines
3.1 KiB
C++
Raw Permalink Blame History

//========== Copyright <20> 2008, Valve Corporation, All rights reserved. ========
//
// Purpose:
//
//=============================================================================
#ifndef VSCRIPT_SERVER_H
#define VSCRIPT_SERVER_H
#include "vscript/ivscript.h"
#include "tier1/KeyValues.h"
#include "vscript_shared.h"
#include "tier1/utlsymbol.h"
#include "GameEventListener.h"
#if defined( _WIN32 )
#pragma once
#endif
class ISaveRestoreBlockHandler;
bool VScriptServerReplaceClosures( const char *pszScriptName, HSCRIPT hScope, bool bWarnMissing = false );
ISaveRestoreBlockHandler *GetVScriptSaveRestoreBlockHandler();
class CBaseEntityScriptInstanceHelper : public IScriptInstanceHelper
{
bool ToString( void *p, char *pBuf, int bufSize );
void *BindOnRead( HSCRIPT hInstance, void *pOld, const char *pszId );
};
extern CBaseEntityScriptInstanceHelper g_BaseEntityScriptInstanceHelper;
#ifdef TF_DLL
class CNavAreaScriptInstanceHelper : public IScriptInstanceHelper
{
bool ToString( void *p, char *pBuf, int bufSize );
};
extern CNavAreaScriptInstanceHelper g_NavAreaScriptInstanceHelper;
class INextBotComponentScriptInstanceHelper : public IScriptInstanceHelper
{
bool ToString( void *p, char *pBuf, int bufSize );
};
extern INextBotComponentScriptInstanceHelper g_NextBotComponentScriptInstanceHelper;
#endif
// Only allow scripts to create entities during map initialization
bool IsEntityCreationAllowedInScripts( void );
// ----------------------------------------------------------------------------
// KeyValues access
// ----------------------------------------------------------------------------
class CScriptKeyValues
{
public:
CScriptKeyValues( KeyValues *pKeyValues = NULL );
~CScriptKeyValues( );
HSCRIPT ScriptFindKey( const char *pszName );
HSCRIPT ScriptGetFirstSubKey( void );
HSCRIPT ScriptGetNextKey( void );
int ScriptGetKeyValueInt( const char *pszName );
float ScriptGetKeyValueFloat( const char *pszName );
const char *ScriptGetKeyValueString( const char *pszName );
bool ScriptIsKeyValueEmpty( const char *pszName );
bool ScriptGetKeyValueBool( const char *pszName );
void ScriptReleaseKeyValues( );
KeyValues *m_pKeyValues; // actual KeyValue entity
};
class CVScriptGameEventListener : public CGameEventListener
{
public:
virtual void FireGameEvent( IGameEvent *event );
bool FireScriptHook( const char *pszHookName, HSCRIPT params );
void RunGameEventCallbacks( const char* szName, HSCRIPT params );
void RunScriptHookCallbacks( const char* szName, HSCRIPT params );
void Init();
void CollectGameEventCallbacksInScope( HSCRIPT scope );
void ListenForScriptHook( const char *szName );
bool HasScriptHook( const char *szName );
void ClearAllScriptHooks();
private:
CUtlSymbolTable m_ScriptHooks;
HSCRIPT m_RunGameEventCallbacksFunc;
HSCRIPT m_CollectGameEventCallbacksFunc;
HSCRIPT m_ScriptHookCallbacksFunc;
};
extern CVScriptGameEventListener g_VScriptGameEventListener;
bool ScriptHooksEnabled( void );
bool ScriptHookEnabled( const char *pszName );
bool RunScriptHook( const char *pszHookName, HSCRIPT params );
#endif // VSCRIPT_SERVER_H