mirror of
https://github.com/fortressforever/fortressforever-2013.git
synced 2024-11-29 07:32:39 +00:00
- Added separate ScriptManagers for UI stuff and Game stuff (g_UIScriptManager (client-only) and g_GameScriptManager (client and server))
* Modified ScriptManager to have no static functions - Added our own client DLL interface class (CFF_CL_DLL_Interface) that inherits from CHLClient * Moved all FF code out of cdll_client_int.cpp * Moved CHLClient class declaration to cdll_client_int.h
This commit is contained in:
parent
41947795c8
commit
9aa4479a03
7 changed files with 421 additions and 53 deletions
|
@ -147,10 +147,6 @@
|
||||||
#include "fbxsystem/fbxsystem.h"
|
#include "fbxsystem/fbxsystem.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef FF
|
|
||||||
//#include "lua/luaman.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern vgui::IInputInternal *g_InputInternal;
|
extern vgui::IInputInternal *g_InputInternal;
|
||||||
const char *COM_GetModDirectory(); // return the mod dir (rather than the complete -game param, which can be a path)
|
const char *COM_GetModDirectory(); // return the mod dir (rather than the complete -game param, which can be a path)
|
||||||
|
|
||||||
|
@ -174,6 +170,11 @@ const char *COM_GetModDirectory(); // return the mod dir (rather than the comple
|
||||||
#include "sixense/in_sixense.h"
|
#include "sixense/in_sixense.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef FF
|
||||||
|
#include "ff_cl_dll_interface.h"
|
||||||
|
extern CFF_CL_DLL_Interface gFFClient;
|
||||||
|
#endif
|
||||||
|
|
||||||
// memdbgon must be the last include file in a .cpp file!!!
|
// memdbgon must be the last include file in a .cpp file!!!
|
||||||
#include "tier0/memdbgon.h"
|
#include "tier0/memdbgon.h"
|
||||||
|
|
||||||
|
@ -588,6 +589,7 @@ void DisplayBoneSetupEnts()
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef FF // Moved class definition to .h so we can inherit from it
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Purpose: engine to client .dll interface
|
// Purpose: engine to client .dll interface
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
@ -734,14 +736,17 @@ private:
|
||||||
|
|
||||||
CUtlVector< IMaterial * > m_CachedMaterials;
|
CUtlVector< IMaterial * > m_CachedMaterials;
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef FF // FF exposes its own interface
|
||||||
CHLClient gHLClient;
|
CHLClient gHLClient;
|
||||||
IBaseClientDLL *clientdll = &gHLClient;
|
IBaseClientDLL *clientdll = &gHLClient;
|
||||||
|
|
||||||
EXPOSE_SINGLE_INTERFACE_GLOBALVAR( CHLClient, IBaseClientDLL, CLIENT_DLL_INTERFACE_VERSION, gHLClient );
|
EXPOSE_SINGLE_INTERFACE_GLOBALVAR( CHLClient, IBaseClientDLL, CLIENT_DLL_INTERFACE_VERSION, gHLClient );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef FF
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Precaches a material
|
// Precaches a material
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
@ -749,6 +754,15 @@ void PrecacheMaterial( const char *pMaterialName )
|
||||||
{
|
{
|
||||||
gHLClient.PrecacheMaterial( pMaterialName );
|
gHLClient.PrecacheMaterial( pMaterialName );
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Precaches a material
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
void PrecacheMaterial( const char *pMaterialName )
|
||||||
|
{
|
||||||
|
gFFClient.PrecacheMaterial( pMaterialName );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Converts a previously precached material into an index
|
// Converts a previously precached material into an index
|
||||||
|
@ -871,27 +885,7 @@ int CHLClient::Init( CreateInterfaceFn appSystemFactory, CreateInterfaceFn physi
|
||||||
ConnectTier3Libraries( &appSystemFactory, 1 );
|
ConnectTier3Libraries( &appSystemFactory, 1 );
|
||||||
|
|
||||||
#ifndef NO_STEAM
|
#ifndef NO_STEAM
|
||||||
//assert ( false );
|
|
||||||
ClientSteamContext().Activate();
|
ClientSteamContext().Activate();
|
||||||
uint32 appId = steamapicontext->SteamUtils()->GetAppID();
|
|
||||||
char msg[128];
|
|
||||||
Q_snprintf(msg, 128,"Steam AppID = %i\n", appId);
|
|
||||||
DevMsg(msg);
|
|
||||||
/*
|
|
||||||
// careful: you might want to use a long long if you're a internet celeb like squeek
|
|
||||||
int numFriends = steamapicontext->SteamFriends()->GetFriendCount(k_EFriendFlagImmediate);
|
|
||||||
for (int i = 0; i < numFriends; i++)
|
|
||||||
{
|
|
||||||
CSteamID steamFrendzor = steamapicontext->SteamFriends()->GetFriendByIndex(i, k_EFriendFlagImmediate);
|
|
||||||
AccountID_t acctId = steamFrendzor.GetAccountID();
|
|
||||||
//const char *steamName = steamapicontext->SteamFriends()->GetFriendPersonaName(steamFrendzor);
|
|
||||||
if (acctId == 5800795)
|
|
||||||
{
|
|
||||||
//5800795 is my old steam acct running on my laptop to test this shit
|
|
||||||
steamapicontext->SteamFriends()->InviteUserToGame(steamFrendzor, "connect 1.2.3.4;password barf");
|
|
||||||
}
|
|
||||||
|
|
||||||
}*/
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// We aren't happy unless we get all of our interfaces.
|
// We aren't happy unless we get all of our interfaces.
|
||||||
|
@ -1115,11 +1109,6 @@ int CHLClient::Init( CreateInterfaceFn appSystemFactory, CreateInterfaceFn physi
|
||||||
#ifndef _X360
|
#ifndef _X360
|
||||||
HookHapticMessages(); // Always hook the messages
|
HookHapticMessages(); // Always hook the messages
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef FF
|
|
||||||
//lua_init();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1200,10 +1189,6 @@ void CHLClient::PostInit()
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
void CHLClient::Shutdown( void )
|
void CHLClient::Shutdown( void )
|
||||||
{
|
{
|
||||||
#ifdef FF
|
|
||||||
//lua_shutdown();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (g_pAchievementsAndStatsInterface)
|
if (g_pAchievementsAndStatsInterface)
|
||||||
{
|
{
|
||||||
g_pAchievementsAndStatsInterface->ReleasePanel();
|
g_pAchievementsAndStatsInterface->ReleasePanel();
|
||||||
|
@ -1839,6 +1824,7 @@ void CHLClient::VoiceStatus( int entindex, qboolean bTalking )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef FF
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Called when the string table for materials changes
|
// Called when the string table for materials changes
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
@ -1848,6 +1834,17 @@ void OnMaterialStringTableChanged( void *object, INetworkStringTable *stringTabl
|
||||||
gHLClient.PrecacheMaterial( newString );
|
gHLClient.PrecacheMaterial( newString );
|
||||||
RequestCacheUsedMaterials();
|
RequestCacheUsedMaterials();
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Called when the string table for materials changes
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
void OnMaterialStringTableChanged( void *object, INetworkStringTable *stringTable, int stringNumber, const char *newString, void const *newData )
|
||||||
|
{
|
||||||
|
// Make sure this puppy is precached
|
||||||
|
gFFClient.PrecacheMaterial( newString );
|
||||||
|
RequestCacheUsedMaterials();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
|
@ -111,6 +111,154 @@ extern IReplayScreenshotManager *g_pReplayScreenshotManager;
|
||||||
extern IEngineReplay *g_pEngineReplay;
|
extern IEngineReplay *g_pEngineReplay;
|
||||||
extern IEngineClientReplay *g_pEngineClientReplay;
|
extern IEngineClientReplay *g_pEngineClientReplay;
|
||||||
|
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Purpose: engine to client .dll interface
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
class CHLClient : public IBaseClientDLL
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CHLClient();
|
||||||
|
|
||||||
|
virtual int Init( CreateInterfaceFn appSystemFactory, CreateInterfaceFn physicsFactory, CGlobalVarsBase *pGlobals );
|
||||||
|
|
||||||
|
virtual void PostInit();
|
||||||
|
virtual void Shutdown( void );
|
||||||
|
|
||||||
|
virtual bool ReplayInit( CreateInterfaceFn fnReplayFactory );
|
||||||
|
virtual bool ReplayPostInit();
|
||||||
|
|
||||||
|
virtual void LevelInitPreEntity( const char *pMapName );
|
||||||
|
virtual void LevelInitPostEntity();
|
||||||
|
virtual void LevelShutdown( void );
|
||||||
|
|
||||||
|
virtual ClientClass *GetAllClasses( void );
|
||||||
|
|
||||||
|
virtual int HudVidInit( void );
|
||||||
|
virtual void HudProcessInput( bool bActive );
|
||||||
|
virtual void HudUpdate( bool bActive );
|
||||||
|
virtual void HudReset( void );
|
||||||
|
virtual void HudText( const char * message );
|
||||||
|
|
||||||
|
// Mouse Input Interfaces
|
||||||
|
virtual void IN_ActivateMouse( void );
|
||||||
|
virtual void IN_DeactivateMouse( void );
|
||||||
|
virtual void IN_Accumulate( void );
|
||||||
|
virtual void IN_ClearStates( void );
|
||||||
|
virtual bool IN_IsKeyDown( const char *name, bool& isdown );
|
||||||
|
virtual void IN_OnMouseWheeled( int nDelta );
|
||||||
|
// Raw signal
|
||||||
|
virtual int IN_KeyEvent( int eventcode, ButtonCode_t keynum, const char *pszCurrentBinding );
|
||||||
|
virtual void IN_SetSampleTime( float frametime );
|
||||||
|
// Create movement command
|
||||||
|
virtual void CreateMove ( int sequence_number, float input_sample_frametime, bool active );
|
||||||
|
virtual void ExtraMouseSample( float frametime, bool active );
|
||||||
|
virtual bool WriteUsercmdDeltaToBuffer( bf_write *buf, int from, int to, bool isnewcommand );
|
||||||
|
virtual void EncodeUserCmdToBuffer( bf_write& buf, int slot );
|
||||||
|
virtual void DecodeUserCmdFromBuffer( bf_read& buf, int slot );
|
||||||
|
|
||||||
|
|
||||||
|
virtual void View_Render( vrect_t *rect );
|
||||||
|
virtual void RenderView( const CViewSetup &view, int nClearFlags, int whatToDraw );
|
||||||
|
virtual void View_Fade( ScreenFade_t *pSF );
|
||||||
|
|
||||||
|
virtual void SetCrosshairAngle( const QAngle& angle );
|
||||||
|
|
||||||
|
virtual void InitSprite( CEngineSprite *pSprite, const char *loadname );
|
||||||
|
virtual void ShutdownSprite( CEngineSprite *pSprite );
|
||||||
|
|
||||||
|
virtual int GetSpriteSize( void ) const;
|
||||||
|
|
||||||
|
virtual void VoiceStatus( int entindex, qboolean bTalking );
|
||||||
|
|
||||||
|
virtual void InstallStringTableCallback( const char *tableName );
|
||||||
|
|
||||||
|
virtual void FrameStageNotify( ClientFrameStage_t curStage );
|
||||||
|
|
||||||
|
virtual bool DispatchUserMessage( int msg_type, bf_read &msg_data );
|
||||||
|
|
||||||
|
// Save/restore system hooks
|
||||||
|
virtual CSaveRestoreData *SaveInit( int size );
|
||||||
|
virtual void SaveWriteFields( CSaveRestoreData *, const char *, void *, datamap_t *, typedescription_t *, int );
|
||||||
|
virtual void SaveReadFields( CSaveRestoreData *, const char *, void *, datamap_t *, typedescription_t *, int );
|
||||||
|
virtual void PreSave( CSaveRestoreData * );
|
||||||
|
virtual void Save( CSaveRestoreData * );
|
||||||
|
virtual void WriteSaveHeaders( CSaveRestoreData * );
|
||||||
|
virtual void ReadRestoreHeaders( CSaveRestoreData * );
|
||||||
|
virtual void Restore( CSaveRestoreData *, bool );
|
||||||
|
virtual void DispatchOnRestore();
|
||||||
|
virtual void WriteSaveGameScreenshot( const char *pFilename );
|
||||||
|
|
||||||
|
// Given a list of "S(wavname) S(wavname2)" tokens, look up the localized text and emit
|
||||||
|
// the appropriate close caption if running with closecaption = 1
|
||||||
|
virtual void EmitSentenceCloseCaption( char const *tokenstream );
|
||||||
|
virtual void EmitCloseCaption( char const *captionname, float duration );
|
||||||
|
|
||||||
|
virtual CStandardRecvProxies* GetStandardRecvProxies();
|
||||||
|
|
||||||
|
virtual bool CanRecordDemo( char *errorMsg, int length ) const;
|
||||||
|
|
||||||
|
virtual void OnDemoRecordStart( char const* pDemoBaseName );
|
||||||
|
virtual void OnDemoRecordStop();
|
||||||
|
virtual void OnDemoPlaybackStart( char const* pDemoBaseName );
|
||||||
|
virtual void OnDemoPlaybackStop();
|
||||||
|
|
||||||
|
virtual bool ShouldDrawDropdownConsole();
|
||||||
|
|
||||||
|
// Get client screen dimensions
|
||||||
|
virtual int GetScreenWidth();
|
||||||
|
virtual int GetScreenHeight();
|
||||||
|
|
||||||
|
// save game screenshot writing
|
||||||
|
virtual void WriteSaveGameScreenshotOfSize( const char *pFilename, int width, int height, bool bCreatePowerOf2Padded/*=false*/, bool bWriteVTF/*=false*/ );
|
||||||
|
|
||||||
|
// Gets the location of the player viewpoint
|
||||||
|
virtual bool GetPlayerView( CViewSetup &playerView );
|
||||||
|
|
||||||
|
// Matchmaking
|
||||||
|
virtual void SetupGameProperties( CUtlVector< XUSER_CONTEXT > &contexts, CUtlVector< XUSER_PROPERTY > &properties );
|
||||||
|
virtual uint GetPresenceID( const char *pIDName );
|
||||||
|
virtual const char *GetPropertyIdString( const uint id );
|
||||||
|
virtual void GetPropertyDisplayString( uint id, uint value, char *pOutput, int nBytes );
|
||||||
|
virtual void StartStatsReporting( HANDLE handle, bool bArbitrated );
|
||||||
|
|
||||||
|
virtual void InvalidateMdlCache();
|
||||||
|
|
||||||
|
virtual void ReloadFilesInList( IFileList *pFilesToReload );
|
||||||
|
|
||||||
|
// Let the client handle UI toggle - if this function returns false, the UI will toggle, otherwise it will not.
|
||||||
|
virtual bool HandleUiToggle();
|
||||||
|
|
||||||
|
// Allow the console to be shown?
|
||||||
|
virtual bool ShouldAllowConsole();
|
||||||
|
|
||||||
|
// Get renamed recv tables
|
||||||
|
virtual CRenamedRecvTableInfo *GetRenamedRecvTableInfos();
|
||||||
|
|
||||||
|
// Get the mouthinfo for the sound being played inside UI panels
|
||||||
|
virtual CMouthInfo *GetClientUIMouthInfo();
|
||||||
|
|
||||||
|
// Notify the client that a file has been received from the game server
|
||||||
|
virtual void FileReceived( const char * fileName, unsigned int transferID );
|
||||||
|
|
||||||
|
virtual const char* TranslateEffectForVisionFilter( const char *pchEffectType, const char *pchEffectName );
|
||||||
|
|
||||||
|
virtual void ClientAdjustStartSoundParams( struct StartSoundParams_t& params );
|
||||||
|
|
||||||
|
// Returns true if the disconnect command has been handled by the client
|
||||||
|
virtual bool DisconnectAttempt( void );
|
||||||
|
public:
|
||||||
|
void PrecacheMaterial( const char *pMaterialName );
|
||||||
|
|
||||||
|
virtual bool IsConnectedUserInfoChangeAllowed( IConVar *pCvar );
|
||||||
|
|
||||||
|
private:
|
||||||
|
void UncacheAllMaterials( );
|
||||||
|
void ResetStringTablePointers();
|
||||||
|
|
||||||
|
CUtlVector< IMaterial * > m_CachedMaterials;
|
||||||
|
};
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
// HPE_BEGIN
|
// HPE_BEGIN
|
||||||
// [dwenger] Necessary for stats display
|
// [dwenger] Necessary for stats display
|
||||||
|
|
|
@ -32,7 +32,8 @@ $Project "Client (FF)"
|
||||||
{
|
{
|
||||||
$Folder "Game"
|
$Folder "Game"
|
||||||
{
|
{
|
||||||
|
$File "ff\ff_cl_dll_interface.cpp"
|
||||||
|
$File "ff\ff_cl_dll_interface.h"
|
||||||
}
|
}
|
||||||
$Folder "Player"
|
$Folder "Player"
|
||||||
{
|
{
|
||||||
|
|
51
mp/src/game/client/ff/ff_cl_dll_interface.cpp
Normal file
51
mp/src/game/client/ff/ff_cl_dll_interface.cpp
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
#include "cbase.h"
|
||||||
|
#include "ff_cl_dll_interface.h"
|
||||||
|
|
||||||
|
#include "steam/steam_api.h"
|
||||||
|
#include "ff_sh_scriptman.h"
|
||||||
|
|
||||||
|
#define CLIENT_DLL_INTERFACE_VERSION "VClient017"
|
||||||
|
|
||||||
|
int CFF_CL_DLL_Interface::Init( CreateInterfaceFn appSystemFactory, CreateInterfaceFn physicsFactory, CGlobalVarsBase *pGlobals )
|
||||||
|
{
|
||||||
|
int ret = BaseClass::Init( appSystemFactory, physicsFactory, pGlobals );
|
||||||
|
|
||||||
|
// initialize UI Lua VM
|
||||||
|
g_UIScriptManager.Init();
|
||||||
|
|
||||||
|
// Test steam API
|
||||||
|
uint32 appId = steamapicontext->SteamUtils()->GetAppID();
|
||||||
|
char msg[128];
|
||||||
|
Q_snprintf(msg, 128,"Steam AppID = %i\n", appId);
|
||||||
|
DevMsg(msg);
|
||||||
|
/*
|
||||||
|
// careful: you might want to use a long long if you're a internet celeb like squeek
|
||||||
|
int numFriends = steamapicontext->SteamFriends()->GetFriendCount(k_EFriendFlagImmediate);
|
||||||
|
for (int i = 0; i < numFriends; i++)
|
||||||
|
{
|
||||||
|
CSteamID steamFrendzor = steamapicontext->SteamFriends()->GetFriendByIndex(i, k_EFriendFlagImmediate);
|
||||||
|
AccountID_t acctId = steamFrendzor.GetAccountID();
|
||||||
|
//const char *steamName = steamapicontext->SteamFriends()->GetFriendPersonaName(steamFrendzor);
|
||||||
|
if (acctId == 5800795)
|
||||||
|
{
|
||||||
|
//5800795 is my old steam acct running on my laptop to test this shit
|
||||||
|
steamapicontext->SteamFriends()->InviteUserToGame(steamFrendzor, "connect 1.2.3.4;password barf");
|
||||||
|
}
|
||||||
|
|
||||||
|
}*/
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CFF_CL_DLL_Interface::Shutdown( void )
|
||||||
|
{
|
||||||
|
// shutdown UI Lua VM
|
||||||
|
g_UIScriptManager.Shutdown();
|
||||||
|
|
||||||
|
BaseClass::Shutdown();
|
||||||
|
}
|
||||||
|
|
||||||
|
CFF_CL_DLL_Interface gFFClient;
|
||||||
|
IBaseClientDLL *clientdll = &gFFClient;
|
||||||
|
|
||||||
|
EXPOSE_SINGLE_INTERFACE_GLOBALVAR( CFF_CL_DLL_Interface, IBaseClientDLL, CLIENT_DLL_INTERFACE_VERSION, gFFClient );
|
162
mp/src/game/client/ff/ff_cl_dll_interface.h
Normal file
162
mp/src/game/client/ff/ff_cl_dll_interface.h
Normal file
|
@ -0,0 +1,162 @@
|
||||||
|
#ifndef FF_CL_DLL_INTERFACE_H
|
||||||
|
#define FF_CL_DLL_INTERFACE_H
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "cdll_client_int.h"
|
||||||
|
|
||||||
|
class CHLClient;
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Purpose: engine to client .dll interface
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
class CFF_CL_DLL_Interface : public CHLClient
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// squeek: I couldn't get DECLARE_CLASS_NOBASE to compile in CHLClient, so I couldn't use DECLARE_CLASS here
|
||||||
|
// this works but it could potentially have negative consequences
|
||||||
|
DECLARE_CLASS_GAMEROOT( CFF_CL_DLL_Interface, CHLClient );
|
||||||
|
|
||||||
|
// <-- Extended functions (meaning the BaseClass function is always called)
|
||||||
|
virtual int Init( CreateInterfaceFn appSystemFactory, CreateInterfaceFn physicsFactory, CGlobalVarsBase *pGlobals );
|
||||||
|
virtual void Shutdown( void );
|
||||||
|
// --> Extended functions
|
||||||
|
|
||||||
|
/*
|
||||||
|
virtual void PostInit();
|
||||||
|
|
||||||
|
virtual bool ReplayInit( CreateInterfaceFn fnReplayFactory );
|
||||||
|
virtual bool ReplayPostInit();
|
||||||
|
|
||||||
|
virtual void LevelInitPreEntity( const char *pMapName );
|
||||||
|
virtual void LevelInitPostEntity();
|
||||||
|
virtual void LevelShutdown( void );
|
||||||
|
|
||||||
|
virtual ClientClass *GetAllClasses( void );
|
||||||
|
|
||||||
|
virtual int HudVidInit( void );
|
||||||
|
virtual void HudProcessInput( bool bActive );
|
||||||
|
virtual void HudUpdate( bool bActive );
|
||||||
|
virtual void HudReset( void );
|
||||||
|
virtual void HudText( const char * message );
|
||||||
|
|
||||||
|
// Mouse Input Interfaces
|
||||||
|
virtual void IN_ActivateMouse( void );
|
||||||
|
virtual void IN_DeactivateMouse( void );
|
||||||
|
virtual void IN_Accumulate( void );
|
||||||
|
virtual void IN_ClearStates( void );
|
||||||
|
virtual bool IN_IsKeyDown( const char *name, bool& isdown );
|
||||||
|
virtual void IN_OnMouseWheeled( int nDelta );
|
||||||
|
// Raw signal
|
||||||
|
virtual int IN_KeyEvent( int eventcode, ButtonCode_t keynum, const char *pszCurrentBinding );
|
||||||
|
virtual void IN_SetSampleTime( float frametime );
|
||||||
|
// Create movement command
|
||||||
|
virtual void CreateMove ( int sequence_number, float input_sample_frametime, bool active );
|
||||||
|
virtual void ExtraMouseSample( float frametime, bool active );
|
||||||
|
virtual bool WriteUsercmdDeltaToBuffer( bf_write *buf, int from, int to, bool isnewcommand );
|
||||||
|
virtual void EncodeUserCmdToBuffer( bf_write& buf, int slot );
|
||||||
|
virtual void DecodeUserCmdFromBuffer( bf_read& buf, int slot );
|
||||||
|
|
||||||
|
|
||||||
|
virtual void View_Render( vrect_t *rect );
|
||||||
|
virtual void RenderView( const CViewSetup &view, int nClearFlags, int whatToDraw );
|
||||||
|
virtual void View_Fade( ScreenFade_t *pSF );
|
||||||
|
|
||||||
|
virtual void SetCrosshairAngle( const QAngle& angle );
|
||||||
|
|
||||||
|
virtual void InitSprite( CEngineSprite *pSprite, const char *loadname );
|
||||||
|
virtual void ShutdownSprite( CEngineSprite *pSprite );
|
||||||
|
|
||||||
|
virtual int GetSpriteSize( void ) const;
|
||||||
|
|
||||||
|
virtual void VoiceStatus( int entindex, qboolean bTalking );
|
||||||
|
|
||||||
|
virtual void InstallStringTableCallback( const char *tableName );
|
||||||
|
|
||||||
|
virtual void FrameStageNotify( ClientFrameStage_t curStage );
|
||||||
|
|
||||||
|
virtual bool DispatchUserMessage( int msg_type, bf_read &msg_data );
|
||||||
|
|
||||||
|
// Save/restore system hooks
|
||||||
|
virtual CSaveRestoreData *SaveInit( int size );
|
||||||
|
virtual void SaveWriteFields( CSaveRestoreData *, const char *, void *, datamap_t *, typedescription_t *, int );
|
||||||
|
virtual void SaveReadFields( CSaveRestoreData *, const char *, void *, datamap_t *, typedescription_t *, int );
|
||||||
|
virtual void PreSave( CSaveRestoreData * );
|
||||||
|
virtual void Save( CSaveRestoreData * );
|
||||||
|
virtual void WriteSaveHeaders( CSaveRestoreData * );
|
||||||
|
virtual void ReadRestoreHeaders( CSaveRestoreData * );
|
||||||
|
virtual void Restore( CSaveRestoreData *, bool );
|
||||||
|
virtual void DispatchOnRestore();
|
||||||
|
virtual void WriteSaveGameScreenshot( const char *pFilename );
|
||||||
|
|
||||||
|
// Given a list of "S(wavname) S(wavname2)" tokens, look up the localized text and emit
|
||||||
|
// the appropriate close caption if running with closecaption = 1
|
||||||
|
virtual void EmitSentenceCloseCaption( char const *tokenstream );
|
||||||
|
virtual void EmitCloseCaption( char const *captionname, float duration );
|
||||||
|
|
||||||
|
virtual CStandardRecvProxies* GetStandardRecvProxies();
|
||||||
|
|
||||||
|
virtual bool CanRecordDemo( char *errorMsg, int length ) const;
|
||||||
|
|
||||||
|
virtual void OnDemoRecordStart( char const* pDemoBaseName );
|
||||||
|
virtual void OnDemoRecordStop();
|
||||||
|
virtual void OnDemoPlaybackStart( char const* pDemoBaseName );
|
||||||
|
virtual void OnDemoPlaybackStop();
|
||||||
|
|
||||||
|
virtual bool ShouldDrawDropdownConsole();
|
||||||
|
|
||||||
|
// Get client screen dimensions
|
||||||
|
virtual int GetScreenWidth();
|
||||||
|
virtual int GetScreenHeight();
|
||||||
|
|
||||||
|
// save game screenshot writing
|
||||||
|
virtual void WriteSaveGameScreenshotOfSize( const char *pFilename, int width, int height, bool bCreatePowerOf2Padded, bool bWriteVTF );
|
||||||
|
|
||||||
|
// Gets the location of the player viewpoint
|
||||||
|
virtual bool GetPlayerView( CViewSetup &playerView );
|
||||||
|
|
||||||
|
// Matchmaking
|
||||||
|
virtual void SetupGameProperties( CUtlVector< XUSER_CONTEXT > &contexts, CUtlVector< XUSER_PROPERTY > &properties );
|
||||||
|
virtual uint GetPresenceID( const char *pIDName );
|
||||||
|
virtual const char *GetPropertyIdString( const uint id );
|
||||||
|
virtual void GetPropertyDisplayString( uint id, uint value, char *pOutput, int nBytes );
|
||||||
|
virtual void StartStatsReporting( HANDLE handle, bool bArbitrated );
|
||||||
|
|
||||||
|
virtual void InvalidateMdlCache();
|
||||||
|
|
||||||
|
virtual void ReloadFilesInList( IFileList *pFilesToReload );
|
||||||
|
|
||||||
|
// Let the client handle UI toggle - if this function returns false, the UI will toggle, otherwise it will not.
|
||||||
|
virtual bool HandleUiToggle();
|
||||||
|
|
||||||
|
// Allow the console to be shown?
|
||||||
|
virtual bool ShouldAllowConsole();
|
||||||
|
|
||||||
|
// Get renamed recv tables
|
||||||
|
virtual CRenamedRecvTableInfo *GetRenamedRecvTableInfos();
|
||||||
|
|
||||||
|
// Get the mouthinfo for the sound being played inside UI panels
|
||||||
|
virtual CMouthInfo *GetClientUIMouthInfo();
|
||||||
|
|
||||||
|
// Notify the client that a file has been received from the game server
|
||||||
|
virtual void FileReceived( const char * fileName, unsigned int transferID );
|
||||||
|
|
||||||
|
virtual const char* TranslateEffectForVisionFilter( const char *pchEffectType, const char *pchEffectName );
|
||||||
|
|
||||||
|
virtual void ClientAdjustStartSoundParams( struct StartSoundParams_t& params );
|
||||||
|
|
||||||
|
// Returns true if the disconnect command has been handled by the client
|
||||||
|
virtual bool DisconnectAttempt( void );
|
||||||
|
public:
|
||||||
|
void PrecacheMaterial( const char *pMaterialName );
|
||||||
|
|
||||||
|
virtual bool IsConnectedUserInfoChangeAllowed( IConVar *pCvar );
|
||||||
|
|
||||||
|
private:
|
||||||
|
void UncacheAllMaterials( );
|
||||||
|
void ResetStringTablePointers();
|
||||||
|
|
||||||
|
CUtlVector< IMaterial * > m_CachedMaterials;
|
||||||
|
*/
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
|
@ -28,10 +28,10 @@
|
||||||
#include "tier0/memdbgon.h"
|
#include "tier0/memdbgon.h"
|
||||||
|
|
||||||
|
|
||||||
#if FF_DLL
|
#ifdef FF
|
||||||
// custom game modes made so damn easy
|
// custom game modes made so damn easy
|
||||||
ConVar sv_mapluasuffix( "sv_mapluasuffix", "0", FCVAR_ARCHIVE, "Have a custom lua file (game mode) loaded when the map loads. If this suffix string is set, maps\\mapname__suffix__.lua (if it exists) is used instead of maps\\mapname.lua. To reset this cvar, make it 0.");
|
ConVar sv_mapluasuffix( "sv_mapluasuffix", "0", FCVAR_NOTIFY, "Have a custom lua file (game mode) loaded when the map loads. If this suffix string is set, maps\\mapname__suffix__.lua (if it exists) is used instead of maps\\mapname.lua. To reset this cvar, make it 0.");
|
||||||
ConVar sv_luaglobalscript( "sv_globalluascript", "0", FCVAR_ARCHIVE, "Load a custom lua file globally after map scripts. Will overwrite map script. Will be loaded from maps\\globalscripts. To disable, set to 0.");
|
ConVar sv_luaglobalscript( "sv_globalluascript", "0", FCVAR_NOTIFY, "Load a custom lua file globally after map scripts. Will overwrite map script. Will be loaded from maps\\globalscripts. To disable, set to 0.");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -39,7 +39,10 @@ using namespace luabind;
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
// globals
|
// globals
|
||||||
CFF_SH_ScriptManager _scriptman;
|
CFF_SH_ScriptManager g_GameScriptManager;
|
||||||
|
#ifdef CLIENT_DLL
|
||||||
|
CFF_SH_ScriptManager g_UIScriptManager;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -108,7 +111,6 @@ void CFF_SH_ScriptManager::Init()
|
||||||
Msg("[SCRIPT] Entity system initialization successful.\n");
|
Msg("[SCRIPT] Entity system initialization successful.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef FF_DLL
|
|
||||||
void CFF_SH_ScriptManager::LevelInit(const char* szMapName)
|
void CFF_SH_ScriptManager::LevelInit(const char* szMapName)
|
||||||
{
|
{
|
||||||
const char* default_luafile = "maps/default.lua";
|
const char* default_luafile = "maps/default.lua";
|
||||||
|
@ -133,7 +135,11 @@ void CFF_SH_ScriptManager::LevelInit(const char* szMapName)
|
||||||
if ( sv_mapluasuffix.GetString()[0] != '0' )
|
if ( sv_mapluasuffix.GetString()[0] != '0' )
|
||||||
{
|
{
|
||||||
Msg( "[SCRIPT] sv_mapluasuffix set to %s | finding maps\\%s__%s__.lua\n", sv_mapluasuffix.GetString(), szMapName, sv_mapluasuffix.GetString() );
|
Msg( "[SCRIPT] sv_mapluasuffix set to %s | finding maps\\%s__%s__.lua\n", sv_mapluasuffix.GetString(), szMapName, sv_mapluasuffix.GetString() );
|
||||||
|
#ifdef CLIENT_DLL
|
||||||
|
if ( filesystem->FileExists( VarArgs( "maps/%s__%s__.lua", szMapName, sv_mapluasuffix.GetString() ) ) )
|
||||||
|
#else
|
||||||
if ( filesystem->FileExists( UTIL_VarArgs( "maps/%s__%s__.lua", szMapName, sv_mapluasuffix.GetString() ) ) )
|
if ( filesystem->FileExists( UTIL_VarArgs( "maps/%s__%s__.lua", szMapName, sv_mapluasuffix.GetString() ) ) )
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
Q_snprintf( filename, sizeof(filename), "maps/%s__%s__.lua", szMapName, sv_mapluasuffix.GetString() );
|
Q_snprintf( filename, sizeof(filename), "maps/%s__%s__.lua", szMapName, sv_mapluasuffix.GetString() );
|
||||||
Msg( "[SCRIPT] maps\\%s__%s__.lua found\n", szMapName, sv_mapluasuffix.GetString() );
|
Msg( "[SCRIPT] maps\\%s__%s__.lua found\n", szMapName, sv_mapluasuffix.GetString() );
|
||||||
|
@ -149,7 +155,11 @@ void CFF_SH_ScriptManager::LevelInit(const char* szMapName)
|
||||||
{
|
{
|
||||||
const char* scriptname = sv_luaglobalscript.GetString();
|
const char* scriptname = sv_luaglobalscript.GetString();
|
||||||
Msg("[SCRIPT] sv_luaglobalscript set to %s | loading global script maps maps\\globalscripts\\%s.lua\n", scriptname, scriptname );
|
Msg("[SCRIPT] sv_luaglobalscript set to %s | loading global script maps maps\\globalscripts\\%s.lua\n", scriptname, scriptname );
|
||||||
|
#ifdef CLIENT_DLL
|
||||||
|
if( filesystem->FileExists( VarArgs( "maps/globalscripts/%s.lua", scriptname ) ) )
|
||||||
|
#else
|
||||||
if( filesystem->FileExists( UTIL_VarArgs( "maps/globalscripts/%s.lua", scriptname ) ) )
|
if( filesystem->FileExists( UTIL_VarArgs( "maps/globalscripts/%s.lua", scriptname ) ) )
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
Q_snprintf( globalscript_filename, sizeof(globalscript_filename), "maps/globalscripts/%s.lua", scriptname );
|
Q_snprintf( globalscript_filename, sizeof(globalscript_filename), "maps/globalscripts/%s.lua", scriptname );
|
||||||
Msg("[SCRIPT] maps\\globalscripts\\%s.lua found\n", scriptname );\
|
Msg("[SCRIPT] maps\\globalscripts\\%s.lua found\n", scriptname );\
|
||||||
|
@ -231,9 +241,7 @@ void CFF_SH_ScriptManager::LevelInit(const char* szMapName)
|
||||||
// spawn the helper entity
|
// spawn the helper entity
|
||||||
//FF_TODO: CFFEntitySystemHelper::Create();
|
//FF_TODO: CFFEntitySystemHelper::Create();
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef FF_DLL
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
void CFF_SH_ScriptManager::LevelShutdown()
|
void CFF_SH_ScriptManager::LevelShutdown()
|
||||||
{
|
{
|
||||||
|
@ -245,8 +253,6 @@ void CFF_SH_ScriptManager::LevelShutdown()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
void CFF_SH_ScriptManager::OnScriptLoad(const char* szFileName,
|
void CFF_SH_ScriptManager::OnScriptLoad(const char* szFileName,
|
||||||
const char* szFileContents)
|
const char* szFileContents)
|
||||||
|
@ -282,7 +288,7 @@ bool CFF_SH_ScriptManager::LoadFile( lua_State *L, const char *filename)
|
||||||
//FF_TODO: VPROF_BUDGET( "CFF_SH_ScriptManager::LoadFile", VPROF_BUDGETGROUP_FF_LUA );
|
//FF_TODO: VPROF_BUDGET( "CFF_SH_ScriptManager::LoadFile", VPROF_BUDGETGROUP_FF_LUA );
|
||||||
|
|
||||||
// don't allow scripters to sneak in scripts after the initial load
|
// don't allow scripters to sneak in scripts after the initial load
|
||||||
if(!_scriptman.m_isLoading)
|
if(!m_isLoading)
|
||||||
{
|
{
|
||||||
Warning("[SCRIPT] Loading of scripts after initial map load is not allowed.\n");
|
Warning("[SCRIPT] Loading of scripts after initial map load is not allowed.\n");
|
||||||
return false;
|
return false;
|
||||||
|
@ -309,7 +315,7 @@ bool CFF_SH_ScriptManager::LoadFile( lua_State *L, const char *filename)
|
||||||
filesystem->Close(hFile);
|
filesystem->Close(hFile);
|
||||||
|
|
||||||
// preprocess script data
|
// preprocess script data
|
||||||
_scriptman.OnScriptLoad(filename, buffer);
|
OnScriptLoad(filename, buffer);
|
||||||
|
|
||||||
// load script
|
// load script
|
||||||
int errorCode = luaL_loadbuffer(L, buffer, fileSize, filename);
|
int errorCode = luaL_loadbuffer(L, buffer, fileSize, filename);
|
||||||
|
|
|
@ -36,20 +36,20 @@ public:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// inserts the lua file into the script environment
|
// inserts the lua file into the script environment
|
||||||
static bool LoadFile(lua_State*, const char* filePath);
|
bool LoadFile(lua_State*, const char* filePath);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
// initializes the script VM
|
||||||
|
void Init();
|
||||||
|
// closes the script VM
|
||||||
|
void Shutdown();
|
||||||
|
|
||||||
// loads the scripts for the level
|
// loads the scripts for the level
|
||||||
void LevelInit(const char* szMapName);
|
void LevelInit(const char* szMapName);
|
||||||
|
|
||||||
// cleans up the scripts for the most recent level
|
// cleans up the scripts for the most recent level
|
||||||
void LevelShutdown();
|
void LevelShutdown();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// initializes the script VM
|
|
||||||
void Init();
|
|
||||||
void Shutdown();
|
|
||||||
|
|
||||||
// surround code that loads scripts to capture crc checksum
|
// surround code that loads scripts to capture crc checksum
|
||||||
// of the scripts that are loaded
|
// of the scripts that are loaded
|
||||||
void BeginScriptLoad();
|
void BeginScriptLoad();
|
||||||
|
@ -107,7 +107,10 @@ private:
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
// global externs
|
// global externs
|
||||||
extern CFF_SH_ScriptManager _scriptman;
|
extern CFF_SH_ScriptManager g_GameScriptManager;
|
||||||
|
#ifdef CLIENT_DLL
|
||||||
|
extern CFF_SH_ScriptManager g_UIScriptManager;
|
||||||
|
#endif
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue