Fix line endings. WHAMMY.

This commit is contained in:
Jørgen P. Tjernø 2013-12-02 19:31:46 -08:00
parent c47ad60970
commit f56bb35301
6719 changed files with 2805089 additions and 2805089 deletions

View File

@ -1,121 +1,121 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: // Purpose:
// //
// $NoKeywords: $ // $NoKeywords: $
//=============================================================================// //=============================================================================//
#ifndef IGAMEUI_H #ifndef IGAMEUI_H
#define IGAMEUI_H #define IGAMEUI_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
#include "interface.h" #include "interface.h"
#include "vgui/IPanel.h" #include "vgui/IPanel.h"
#if !defined( _X360 ) #if !defined( _X360 )
#include "xbox/xboxstubs.h" #include "xbox/xboxstubs.h"
#endif #endif
// reasons why the user can't connect to a game server // reasons why the user can't connect to a game server
enum ESteamLoginFailure enum ESteamLoginFailure
{ {
STEAMLOGINFAILURE_NONE, STEAMLOGINFAILURE_NONE,
STEAMLOGINFAILURE_BADTICKET, STEAMLOGINFAILURE_BADTICKET,
STEAMLOGINFAILURE_NOSTEAMLOGIN, STEAMLOGINFAILURE_NOSTEAMLOGIN,
STEAMLOGINFAILURE_VACBANNED, STEAMLOGINFAILURE_VACBANNED,
STEAMLOGINFAILURE_LOGGED_IN_ELSEWHERE STEAMLOGINFAILURE_LOGGED_IN_ELSEWHERE
}; };
enum ESystemNotify enum ESystemNotify
{ {
SYSTEMNOTIFY_STORAGEDEVICES_CHANGED, SYSTEMNOTIFY_STORAGEDEVICES_CHANGED,
SYSTEMNOTIFY_USER_SIGNEDIN, SYSTEMNOTIFY_USER_SIGNEDIN,
SYSTEMNOTIFY_USER_SIGNEDOUT, SYSTEMNOTIFY_USER_SIGNEDOUT,
SYSTEMNOTIFY_XUIOPENING, SYSTEMNOTIFY_XUIOPENING,
SYSTEMNOTIFY_XUICLOSED, SYSTEMNOTIFY_XUICLOSED,
SYSTEMNOTIFY_INVITE_SHUTDOWN, // Cross-game invite is causing us to shutdown SYSTEMNOTIFY_INVITE_SHUTDOWN, // Cross-game invite is causing us to shutdown
}; };
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: contains all the functions that the GameUI dll exports // Purpose: contains all the functions that the GameUI dll exports
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
abstract_class IGameUI abstract_class IGameUI
{ {
public: public:
// initialization/shutdown // initialization/shutdown
virtual void Initialize( CreateInterfaceFn appFactory ) = 0; virtual void Initialize( CreateInterfaceFn appFactory ) = 0;
virtual void PostInit() = 0; virtual void PostInit() = 0;
// connect to other interfaces at the same level (gameui.dll/server.dll/client.dll) // connect to other interfaces at the same level (gameui.dll/server.dll/client.dll)
virtual void Connect( CreateInterfaceFn gameFactory ) = 0; virtual void Connect( CreateInterfaceFn gameFactory ) = 0;
virtual void Start() = 0; virtual void Start() = 0;
virtual void Shutdown() = 0; virtual void Shutdown() = 0;
virtual void RunFrame() = 0; virtual void RunFrame() = 0;
// notifications // notifications
virtual void OnGameUIActivated() = 0; virtual void OnGameUIActivated() = 0;
virtual void OnGameUIHidden() = 0; virtual void OnGameUIHidden() = 0;
// OLD: Use OnConnectToServer2 // OLD: Use OnConnectToServer2
virtual void OLD_OnConnectToServer(const char *game, int IP, int port) = 0; virtual void OLD_OnConnectToServer(const char *game, int IP, int port) = 0;
virtual void OnDisconnectFromServer_OLD( uint8 eSteamLoginFailure, const char *username ) = 0; virtual void OnDisconnectFromServer_OLD( uint8 eSteamLoginFailure, const char *username ) = 0;
virtual void OnLevelLoadingStarted(bool bShowProgressDialog) = 0; virtual void OnLevelLoadingStarted(bool bShowProgressDialog) = 0;
virtual void OnLevelLoadingFinished(bool bError, const char *failureReason, const char *extendedReason) = 0; virtual void OnLevelLoadingFinished(bool bError, const char *failureReason, const char *extendedReason) = 0;
// level loading progress, returns true if the screen needs updating // level loading progress, returns true if the screen needs updating
virtual bool UpdateProgressBar(float progress, const char *statusText) = 0; virtual bool UpdateProgressBar(float progress, const char *statusText) = 0;
// Shows progress desc, returns previous setting... (used with custom progress bars ) // Shows progress desc, returns previous setting... (used with custom progress bars )
virtual bool SetShowProgressText( bool show ) = 0; virtual bool SetShowProgressText( bool show ) = 0;
// !!!!!!!!!members added after "GameUI011" initial release!!!!!!!!!!!!!!!!!!! // !!!!!!!!!members added after "GameUI011" initial release!!!!!!!!!!!!!!!!!!!
virtual void ShowNewGameDialog( int chapter ) = 0; virtual void ShowNewGameDialog( int chapter ) = 0;
// Xbox 360 // Xbox 360
virtual void SessionNotification( const int notification, const int param = 0 ) = 0; virtual void SessionNotification( const int notification, const int param = 0 ) = 0;
virtual void SystemNotification( const int notification ) = 0; virtual void SystemNotification( const int notification ) = 0;
virtual void ShowMessageDialog( const uint nType, vgui::Panel *pOwner ) = 0; virtual void ShowMessageDialog( const uint nType, vgui::Panel *pOwner ) = 0;
virtual void UpdatePlayerInfo( uint64 nPlayerId, const char *pName, int nTeam, byte cVoiceState, int nPlayersNeeded, bool bHost ) = 0; virtual void UpdatePlayerInfo( uint64 nPlayerId, const char *pName, int nTeam, byte cVoiceState, int nPlayersNeeded, bool bHost ) = 0;
virtual void SessionSearchResult( int searchIdx, void *pHostData, XSESSION_SEARCHRESULT *pResult, int ping ) = 0; virtual void SessionSearchResult( int searchIdx, void *pHostData, XSESSION_SEARCHRESULT *pResult, int ping ) = 0;
virtual void OnCreditsFinished( void ) = 0; virtual void OnCreditsFinished( void ) = 0;
// inserts specified panel as background for level load dialog // inserts specified panel as background for level load dialog
virtual void SetLoadingBackgroundDialog( vgui::VPANEL panel ) = 0; virtual void SetLoadingBackgroundDialog( vgui::VPANEL panel ) = 0;
// Bonus maps interfaces // Bonus maps interfaces
virtual void BonusMapUnlock( const char *pchFileName = NULL, const char *pchMapName = NULL ) = 0; virtual void BonusMapUnlock( const char *pchFileName = NULL, const char *pchMapName = NULL ) = 0;
virtual void BonusMapComplete( const char *pchFileName = NULL, const char *pchMapName = NULL ) = 0; virtual void BonusMapComplete( const char *pchFileName = NULL, const char *pchMapName = NULL ) = 0;
virtual void BonusMapChallengeUpdate( const char *pchFileName, const char *pchMapName, const char *pchChallengeName, int iBest ) = 0; virtual void BonusMapChallengeUpdate( const char *pchFileName, const char *pchMapName, const char *pchChallengeName, int iBest ) = 0;
virtual void BonusMapChallengeNames( char *pchFileName, char *pchMapName, char *pchChallengeName ) = 0; virtual void BonusMapChallengeNames( char *pchFileName, char *pchMapName, char *pchChallengeName ) = 0;
virtual void BonusMapChallengeObjectives( int &iBronze, int &iSilver, int &iGold ) = 0; virtual void BonusMapChallengeObjectives( int &iBronze, int &iSilver, int &iGold ) = 0;
virtual void BonusMapDatabaseSave( void ) = 0; virtual void BonusMapDatabaseSave( void ) = 0;
virtual int BonusMapNumAdvancedCompleted( void ) = 0; virtual int BonusMapNumAdvancedCompleted( void ) = 0;
virtual void BonusMapNumMedals( int piNumMedals[ 3 ] ) = 0; virtual void BonusMapNumMedals( int piNumMedals[ 3 ] ) = 0;
virtual void OnConnectToServer2(const char *game, int IP, int connectionPort, int queryPort) = 0; virtual void OnConnectToServer2(const char *game, int IP, int connectionPort, int queryPort) = 0;
// X360 Storage device validation: // X360 Storage device validation:
// returns true right away if storage device has been previously selected. // returns true right away if storage device has been previously selected.
// otherwise returns false and will set the variable pointed by pStorageDeviceValidated to 1 // otherwise returns false and will set the variable pointed by pStorageDeviceValidated to 1
// once the storage device is selected by user. // once the storage device is selected by user.
virtual bool ValidateStorageDevice( int *pStorageDeviceValidated ) = 0; virtual bool ValidateStorageDevice( int *pStorageDeviceValidated ) = 0;
virtual void SetProgressOnStart() = 0; virtual void SetProgressOnStart() = 0;
virtual void OnDisconnectFromServer( uint8 eSteamLoginFailure ) = 0; virtual void OnDisconnectFromServer( uint8 eSteamLoginFailure ) = 0;
virtual void OnConfirmQuit( void ) = 0; virtual void OnConfirmQuit( void ) = 0;
virtual bool IsMainMenuVisible( void ) = 0; virtual bool IsMainMenuVisible( void ) = 0;
// Client DLL is providing us with a panel that it wants to replace the main menu with // Client DLL is providing us with a panel that it wants to replace the main menu with
virtual void SetMainMenuOverride( vgui::VPANEL panel ) = 0; virtual void SetMainMenuOverride( vgui::VPANEL panel ) = 0;
// Client DLL is telling us that a main menu command was issued, probably from its custom main menu panel // Client DLL is telling us that a main menu command was issued, probably from its custom main menu panel
virtual void SendMainMenuCommand( const char *pszCommand ) = 0; virtual void SendMainMenuCommand( const char *pszCommand ) = 0;
}; };
#define GAMEUI_INTERFACE_VERSION "GameUI011" #define GAMEUI_INTERFACE_VERSION "GameUI011"
#endif // IGAMEUI_H #endif // IGAMEUI_H

File diff suppressed because it is too large Load Diff

View File

@ -1,103 +1,103 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: Swap a compiled caption file. // Purpose: Swap a compiled caption file.
// //
// $NoKeywords: $ // $NoKeywords: $
//=============================================================================// //=============================================================================//
#include "utlbuffer.h" #include "utlbuffer.h"
#include "byteswap.h" #include "byteswap.h"
#include "filesystem.h" #include "filesystem.h"
#include "tier2/fileutils.h" #include "tier2/fileutils.h"
#include "captioncompiler.h" #include "captioncompiler.h"
// 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"
BEGIN_BYTESWAP_DATADESC( CompiledCaptionHeader_t ) BEGIN_BYTESWAP_DATADESC( CompiledCaptionHeader_t )
DEFINE_FIELD( magic, FIELD_INTEGER ), DEFINE_FIELD( magic, FIELD_INTEGER ),
DEFINE_FIELD( version, FIELD_INTEGER ), DEFINE_FIELD( version, FIELD_INTEGER ),
DEFINE_FIELD( numblocks, FIELD_INTEGER ), DEFINE_FIELD( numblocks, FIELD_INTEGER ),
DEFINE_FIELD( blocksize, FIELD_INTEGER ), DEFINE_FIELD( blocksize, FIELD_INTEGER ),
DEFINE_FIELD( directorysize, FIELD_INTEGER ), DEFINE_FIELD( directorysize, FIELD_INTEGER ),
DEFINE_FIELD( dataoffset, FIELD_INTEGER ), DEFINE_FIELD( dataoffset, FIELD_INTEGER ),
END_BYTESWAP_DATADESC() END_BYTESWAP_DATADESC()
BEGIN_BYTESWAP_DATADESC( CaptionLookup_t ) BEGIN_BYTESWAP_DATADESC( CaptionLookup_t )
DEFINE_FIELD( hash, FIELD_INTEGER ), DEFINE_FIELD( hash, FIELD_INTEGER ),
DEFINE_FIELD( blockNum, FIELD_INTEGER ), DEFINE_FIELD( blockNum, FIELD_INTEGER ),
DEFINE_FIELD( offset, FIELD_SHORT ), DEFINE_FIELD( offset, FIELD_SHORT ),
DEFINE_FIELD( length, FIELD_SHORT ), DEFINE_FIELD( length, FIELD_SHORT ),
END_BYTESWAP_DATADESC() END_BYTESWAP_DATADESC()
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Swap a compiled closecaption file // Swap a compiled closecaption file
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
bool SwapClosecaptionFile( void *pData ) bool SwapClosecaptionFile( void *pData )
{ {
CByteswap swap; CByteswap swap;
swap.ActivateByteSwapping( true ); swap.ActivateByteSwapping( true );
CompiledCaptionHeader_t *pHdr = (CompiledCaptionHeader_t*)pData; CompiledCaptionHeader_t *pHdr = (CompiledCaptionHeader_t*)pData;
if ( IsX360() ) if ( IsX360() )
{ {
// pre-swap file header // pre-swap file header
swap.SwapFieldsToTargetEndian( pHdr ); swap.SwapFieldsToTargetEndian( pHdr );
} }
if ( pHdr->magic != COMPILED_CAPTION_FILEID || pHdr->version != COMPILED_CAPTION_VERSION ) if ( pHdr->magic != COMPILED_CAPTION_FILEID || pHdr->version != COMPILED_CAPTION_VERSION )
{ {
// bad data // bad data
return false; return false;
} }
// lookup headers // lookup headers
pData = (byte*)pData + sizeof(CompiledCaptionHeader_t); pData = (byte*)pData + sizeof(CompiledCaptionHeader_t);
swap.SwapFieldsToTargetEndian( (CaptionLookup_t*)pData, pHdr->directorysize ); swap.SwapFieldsToTargetEndian( (CaptionLookup_t*)pData, pHdr->directorysize );
// unicode data // unicode data
pData = (byte*)pHdr + pHdr->dataoffset; pData = (byte*)pHdr + pHdr->dataoffset;
swap.SwapBufferToTargetEndian( (wchar_t*)pData, (wchar_t*)pData, pHdr->numblocks * pHdr->blocksize / sizeof(wchar_t) ); swap.SwapBufferToTargetEndian( (wchar_t*)pData, (wchar_t*)pData, pHdr->numblocks * pHdr->blocksize / sizeof(wchar_t) );
if ( IsPC() ) if ( IsPC() )
{ {
// post-swap file header // post-swap file header
swap.SwapFieldsToTargetEndian( pHdr ); swap.SwapFieldsToTargetEndian( pHdr );
} }
return true; return true;
} }
#if defined( CLIENT_DLL ) #if defined( CLIENT_DLL )
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Callback for UpdateOrCreate - generates .360 file // Callback for UpdateOrCreate - generates .360 file
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
static bool CaptionCreateCallback( const char *pSourceName, const char *pTargetName, const char *pPathID, void *pExtraData ) static bool CaptionCreateCallback( const char *pSourceName, const char *pTargetName, const char *pPathID, void *pExtraData )
{ {
// Generate the file // Generate the file
CUtlBuffer buf; CUtlBuffer buf;
bool bOk = g_pFullFileSystem->ReadFile( pSourceName, pPathID, buf ); bool bOk = g_pFullFileSystem->ReadFile( pSourceName, pPathID, buf );
if ( bOk ) if ( bOk )
{ {
bOk = SwapClosecaptionFile( buf.Base() ); bOk = SwapClosecaptionFile( buf.Base() );
if ( bOk ) if ( bOk )
{ {
bOk = g_pFullFileSystem->WriteFile( pTargetName, pPathID, buf ); bOk = g_pFullFileSystem->WriteFile( pTargetName, pPathID, buf );
} }
else else
{ {
Warning( "Failed to create %s\n", pTargetName ); Warning( "Failed to create %s\n", pTargetName );
} }
} }
return bOk; return bOk;
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Calls utility function UpdateOrCreate // Calls utility function UpdateOrCreate
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
int UpdateOrCreateCaptionFile( const char *pSourceName, char *pTargetName, int maxLen, bool bForce ) int UpdateOrCreateCaptionFile( const char *pSourceName, char *pTargetName, int maxLen, bool bForce )
{ {
return ::UpdateOrCreate( pSourceName, pTargetName, maxLen, "GAME", CaptionCreateCallback, bForce ); return ::UpdateOrCreate( pSourceName, pTargetName, maxLen, "GAME", CaptionCreateCallback, bForce );
} }
#endif #endif

View File

@ -1,370 +1,370 @@
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// //
// hl2orange.spa.h // hl2orange.spa.h
// //
// Auto-generated on Thursday, 13 September 2007 at 16:59:17 // Auto-generated on Thursday, 13 September 2007 at 16:59:17
// XLAST project version 1.0.402.0 // XLAST project version 1.0.402.0
// SPA Compiler version 2.0.6274.0 // SPA Compiler version 2.0.6274.0
// //
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
#ifndef __THE_ORANGE_BOX_SPA_H__ #ifndef __THE_ORANGE_BOX_SPA_H__
#define __THE_ORANGE_BOX_SPA_H__ #define __THE_ORANGE_BOX_SPA_H__
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
// //
// Title info // Title info
// //
#define TITLEID_THE_ORANGE_BOX 0x4541080F #define TITLEID_THE_ORANGE_BOX 0x4541080F
// //
// Context ids // Context ids
// //
// These values are passed as the dwContextId to XUserSetContext. // These values are passed as the dwContextId to XUserSetContext.
// //
#define CONTEXT_CHAPTER_HL2 0 #define CONTEXT_CHAPTER_HL2 0
#define CONTEXT_SCENARIO 1 #define CONTEXT_SCENARIO 1
#define CONTEXT_GAME 2 #define CONTEXT_GAME 2
#define CONTEXT_CHAPTER_EP1 3 #define CONTEXT_CHAPTER_EP1 3
#define CONTEXT_CHAPTER_EP2 4 #define CONTEXT_CHAPTER_EP2 4
#define CONTEXT_CHAPTER_PORTAL 5 #define CONTEXT_CHAPTER_PORTAL 5
// //
// Context values // Context values
// //
// These values are passed as the dwContextValue to XUserSetContext. // These values are passed as the dwContextValue to XUserSetContext.
// //
// Values for CONTEXT_CHAPTER_HL2 // Values for CONTEXT_CHAPTER_HL2
#define CONTEXT_CHAPTER_HL2_POINT_INSERTION 0 #define CONTEXT_CHAPTER_HL2_POINT_INSERTION 0
#define CONTEXT_CHAPTER_HL2_A_RED_LETTER_DAY 1 #define CONTEXT_CHAPTER_HL2_A_RED_LETTER_DAY 1
#define CONTEXT_CHAPTER_HL2_ROUTE_KANAL 2 #define CONTEXT_CHAPTER_HL2_ROUTE_KANAL 2
#define CONTEXT_CHAPTER_HL2_WATER_HAZARD 3 #define CONTEXT_CHAPTER_HL2_WATER_HAZARD 3
#define CONTEXT_CHAPTER_HL2_BLACK_MESA_EAST 4 #define CONTEXT_CHAPTER_HL2_BLACK_MESA_EAST 4
#define CONTEXT_CHAPTER_HL2_RAVENHOLM 5 #define CONTEXT_CHAPTER_HL2_RAVENHOLM 5
#define CONTEXT_CHAPTER_HL2_HIGHWAY_17 6 #define CONTEXT_CHAPTER_HL2_HIGHWAY_17 6
#define CONTEXT_CHAPTER_HL2_SANDTRAPS 7 #define CONTEXT_CHAPTER_HL2_SANDTRAPS 7
#define CONTEXT_CHAPTER_HL2_NOVA_PROSPEKT 8 #define CONTEXT_CHAPTER_HL2_NOVA_PROSPEKT 8
#define CONTEXT_CHAPTER_HL2_ENTANGLEMENT 9 #define CONTEXT_CHAPTER_HL2_ENTANGLEMENT 9
#define CONTEXT_CHAPTER_HL2_ANTICITIZEN_ONE 10 #define CONTEXT_CHAPTER_HL2_ANTICITIZEN_ONE 10
#define CONTEXT_CHAPTER_HL2_FOLLOW_FREEMAN 11 #define CONTEXT_CHAPTER_HL2_FOLLOW_FREEMAN 11
#define CONTEXT_CHAPTER_HL2_OUR_BENEFACTORS 12 #define CONTEXT_CHAPTER_HL2_OUR_BENEFACTORS 12
#define CONTEXT_CHAPTER_HL2_DARK_ENERGY 13 #define CONTEXT_CHAPTER_HL2_DARK_ENERGY 13
// Values for CONTEXT_SCENARIO // Values for CONTEXT_SCENARIO
#define CONTEXT_SCENARIO_CTF_2FORT 0 #define CONTEXT_SCENARIO_CTF_2FORT 0
#define CONTEXT_SCENARIO_CP_DUSTBOWL 1 #define CONTEXT_SCENARIO_CP_DUSTBOWL 1
#define CONTEXT_SCENARIO_CP_GRANARY 2 #define CONTEXT_SCENARIO_CP_GRANARY 2
#define CONTEXT_SCENARIO_CP_WELL 3 #define CONTEXT_SCENARIO_CP_WELL 3
#define CONTEXT_SCENARIO_CP_GRAVELPIT 4 #define CONTEXT_SCENARIO_CP_GRAVELPIT 4
#define CONTEXT_SCENARIO_TC_HYDRO 5 #define CONTEXT_SCENARIO_TC_HYDRO 5
#define CONTEXT_SCENARIO_CTF_CLOAK 6 #define CONTEXT_SCENARIO_CTF_CLOAK 6
#define CONTEXT_SCENARIO_CP_CLOAK 7 #define CONTEXT_SCENARIO_CP_CLOAK 7
// Values for CONTEXT_GAME // Values for CONTEXT_GAME
#define CONTEXT_GAME_GAME_HALF_LIFE_2 0 #define CONTEXT_GAME_GAME_HALF_LIFE_2 0
#define CONTEXT_GAME_GAME_EPISODE_ONE 1 #define CONTEXT_GAME_GAME_EPISODE_ONE 1
#define CONTEXT_GAME_GAME_EPISODE_TWO 2 #define CONTEXT_GAME_GAME_EPISODE_TWO 2
#define CONTEXT_GAME_GAME_PORTAL 3 #define CONTEXT_GAME_GAME_PORTAL 3
#define CONTEXT_GAME_GAME_TEAM_FORTRESS 4 #define CONTEXT_GAME_GAME_TEAM_FORTRESS 4
// Values for CONTEXT_CHAPTER_EP1 // Values for CONTEXT_CHAPTER_EP1
#define CONTEXT_CHAPTER_EP1_UNDUE_ALARM 0 #define CONTEXT_CHAPTER_EP1_UNDUE_ALARM 0
#define CONTEXT_CHAPTER_EP1_DIRECT_INTERVENTION 1 #define CONTEXT_CHAPTER_EP1_DIRECT_INTERVENTION 1
#define CONTEXT_CHAPTER_EP1_LOWLIFE 2 #define CONTEXT_CHAPTER_EP1_LOWLIFE 2
#define CONTEXT_CHAPTER_EP1_URBAN_FLIGHT 3 #define CONTEXT_CHAPTER_EP1_URBAN_FLIGHT 3
#define CONTEXT_CHAPTER_EP1_EXIT_17 4 #define CONTEXT_CHAPTER_EP1_EXIT_17 4
// Values for CONTEXT_CHAPTER_EP2 // Values for CONTEXT_CHAPTER_EP2
#define CONTEXT_CHAPTER_EP2_TO_THE_WHITE_FOREST 0 #define CONTEXT_CHAPTER_EP2_TO_THE_WHITE_FOREST 0
#define CONTEXT_CHAPTER_EP2_THIS_VORTAL_COIL 1 #define CONTEXT_CHAPTER_EP2_THIS_VORTAL_COIL 1
#define CONTEXT_CHAPTER_EP2_FREEMAN_PONTIFEX 2 #define CONTEXT_CHAPTER_EP2_FREEMAN_PONTIFEX 2
#define CONTEXT_CHAPTER_EP2_RIDING_SHOTGUN 3 #define CONTEXT_CHAPTER_EP2_RIDING_SHOTGUN 3
#define CONTEXT_CHAPTER_EP2_UNDER_THE_RADAR 4 #define CONTEXT_CHAPTER_EP2_UNDER_THE_RADAR 4
#define CONTEXT_CHAPTER_EP2_OUR_MUTUAL_FIEND 5 #define CONTEXT_CHAPTER_EP2_OUR_MUTUAL_FIEND 5
#define CONTEXT_CHAPTER_EP2_T_MINUS_ONE 6 #define CONTEXT_CHAPTER_EP2_T_MINUS_ONE 6
// Values for CONTEXT_CHAPTER_PORTAL // Values for CONTEXT_CHAPTER_PORTAL
#define CONTEXT_CHAPTER_PORTAL_TESTCHAMBER_00 0 #define CONTEXT_CHAPTER_PORTAL_TESTCHAMBER_00 0
#define CONTEXT_CHAPTER_PORTAL_TESTCHAMBER_04 1 #define CONTEXT_CHAPTER_PORTAL_TESTCHAMBER_04 1
#define CONTEXT_CHAPTER_PORTAL_TESTCHAMBER_08 2 #define CONTEXT_CHAPTER_PORTAL_TESTCHAMBER_08 2
#define CONTEXT_CHAPTER_PORTAL_TESTCHAMBER_10 3 #define CONTEXT_CHAPTER_PORTAL_TESTCHAMBER_10 3
#define CONTEXT_CHAPTER_PORTAL_TESTCHAMBER_13 4 #define CONTEXT_CHAPTER_PORTAL_TESTCHAMBER_13 4
#define CONTEXT_CHAPTER_PORTAL_TESTCHAMBER_14 5 #define CONTEXT_CHAPTER_PORTAL_TESTCHAMBER_14 5
#define CONTEXT_CHAPTER_PORTAL_TESTCHAMBER_15 6 #define CONTEXT_CHAPTER_PORTAL_TESTCHAMBER_15 6
#define CONTEXT_CHAPTER_PORTAL_TESTCHAMBER_16 7 #define CONTEXT_CHAPTER_PORTAL_TESTCHAMBER_16 7
#define CONTEXT_CHAPTER_PORTAL_TESTCHAMBER_17 8 #define CONTEXT_CHAPTER_PORTAL_TESTCHAMBER_17 8
#define CONTEXT_CHAPTER_PORTAL_TESTCHAMBER_18 9 #define CONTEXT_CHAPTER_PORTAL_TESTCHAMBER_18 9
#define CONTEXT_CHAPTER_PORTAL_TESTCHAMBER_19 10 #define CONTEXT_CHAPTER_PORTAL_TESTCHAMBER_19 10
// Values for X_CONTEXT_PRESENCE // Values for X_CONTEXT_PRESENCE
#define CONTEXT_PRESENCE_TF_CP 0 #define CONTEXT_PRESENCE_TF_CP 0
#define CONTEXT_PRESENCE_TF_CTF_LOSING 1 #define CONTEXT_PRESENCE_TF_CTF_LOSING 1
#define CONTEXT_PRESENCE_TF_CTF_TIED 2 #define CONTEXT_PRESENCE_TF_CTF_TIED 2
#define CONTEXT_PRESENCE_TF_CTF_WINNING 3 #define CONTEXT_PRESENCE_TF_CTF_WINNING 3
#define CONTEXT_PRESENCE_APPCHOOSER 4 #define CONTEXT_PRESENCE_APPCHOOSER 4
#define CONTEXT_PRESENCE_MENU 5 #define CONTEXT_PRESENCE_MENU 5
#define CONTEXT_PRESENCE_EP1_INGAME 6 #define CONTEXT_PRESENCE_EP1_INGAME 6
#define CONTEXT_PRESENCE_HL2_INGAME 7 #define CONTEXT_PRESENCE_HL2_INGAME 7
#define CONTEXT_PRESENCE_EP2_INGAME 8 #define CONTEXT_PRESENCE_EP2_INGAME 8
#define CONTEXT_PRESENCE_PORTAL_INGAME 9 #define CONTEXT_PRESENCE_PORTAL_INGAME 9
#define CONTEXT_PRESENCE_COMMENTARY 10 #define CONTEXT_PRESENCE_COMMENTARY 10
#define CONTEXT_PRESENCE_IDLE 11 #define CONTEXT_PRESENCE_IDLE 11
// Values for X_CONTEXT_GAME_MODE // Values for X_CONTEXT_GAME_MODE
#define CONTEXT_GAME_MODE_MULTIPLAYER 0 #define CONTEXT_GAME_MODE_MULTIPLAYER 0
#define CONTEXT_GAME_MODE_SINGLEPLAYER 1 #define CONTEXT_GAME_MODE_SINGLEPLAYER 1
// //
// Property ids // Property ids
// //
// These values are passed as the dwPropertyId value to XUserSetProperty // These values are passed as the dwPropertyId value to XUserSetProperty
// and as the dwPropertyId value in the XUSER_PROPERTY structure. // and as the dwPropertyId value in the XUSER_PROPERTY structure.
// //
#define PROPERTY_CAPS_OWNED 0x10000000 #define PROPERTY_CAPS_OWNED 0x10000000
#define PROPERTY_CAPS_TOTAL 0x10000001 #define PROPERTY_CAPS_TOTAL 0x10000001
#define PROPERTY_PLAYER_TEAM_SCORE 0x10000002 #define PROPERTY_PLAYER_TEAM_SCORE 0x10000002
#define PROPERTY_OPPONENT_TEAM_SCORE 0x10000003 #define PROPERTY_OPPONENT_TEAM_SCORE 0x10000003
#define PROPERTY_FLAG_CAPTURE_LIMIT 0x1000000B #define PROPERTY_FLAG_CAPTURE_LIMIT 0x1000000B
#define PROPERTY_NUMBER_OF_ROUNDS 0x1000000C #define PROPERTY_NUMBER_OF_ROUNDS 0x1000000C
#define PROPERTY_GAME_SIZE 0x1000000D #define PROPERTY_GAME_SIZE 0x1000000D
#define PROPERTY_AUTOBALANCE 0x1000000E #define PROPERTY_AUTOBALANCE 0x1000000E
#define PROPERTY_PRIVATE_SLOTS 0x1000000F #define PROPERTY_PRIVATE_SLOTS 0x1000000F
#define PROPERTY_MAX_GAME_TIME 0x10000010 #define PROPERTY_MAX_GAME_TIME 0x10000010
#define PROPERTY_NUMBER_OF_KILLS 0x10000011 #define PROPERTY_NUMBER_OF_KILLS 0x10000011
#define PROPERTY_DAMAGE_DEALT 0x10000012 #define PROPERTY_DAMAGE_DEALT 0x10000012
#define PROPERTY_PLAY_TIME 0x10000013 #define PROPERTY_PLAY_TIME 0x10000013
#define PROPERTY_POINT_CAPTURES 0x10000014 #define PROPERTY_POINT_CAPTURES 0x10000014
#define PROPERTY_POINT_DEFENSES 0x10000015 #define PROPERTY_POINT_DEFENSES 0x10000015
#define PROPERTY_DOMINATIONS 0x10000016 #define PROPERTY_DOMINATIONS 0x10000016
#define PROPERTY_REVENGE 0x10000017 #define PROPERTY_REVENGE 0x10000017
#define PROPERTY_BUILDINGS_DESTROYED 0x10000019 #define PROPERTY_BUILDINGS_DESTROYED 0x10000019
#define PROPERTY_HEADSHOTS 0x1000001A #define PROPERTY_HEADSHOTS 0x1000001A
#define PROPERTY_HEALTH_POINTS_HEALED 0x1000001B #define PROPERTY_HEALTH_POINTS_HEALED 0x1000001B
#define PROPERTY_INVULNS 0x1000001C #define PROPERTY_INVULNS 0x1000001C
#define PROPERTY_KILL_ASSISTS 0x1000001D #define PROPERTY_KILL_ASSISTS 0x1000001D
#define PROPERTY_BACKSTABS 0x1000001E #define PROPERTY_BACKSTABS 0x1000001E
#define PROPERTY_HEALTH_POINTS_LEACHED 0x1000001F #define PROPERTY_HEALTH_POINTS_LEACHED 0x1000001F
#define PROPERTY_BUILDINGS_BUILT 0x10000020 #define PROPERTY_BUILDINGS_BUILT 0x10000020
#define PROPERTY_SENTRY_KILLS 0x10000021 #define PROPERTY_SENTRY_KILLS 0x10000021
#define PROPERTY_TELEPORTS 0x10000022 #define PROPERTY_TELEPORTS 0x10000022
#define PROPERTY_KILLS 0x10000023 #define PROPERTY_KILLS 0x10000023
#define PROPERTY_NUMBER_OF_TEAMS 0x10000025 #define PROPERTY_NUMBER_OF_TEAMS 0x10000025
#define PROPERTY_TEAM_RED 0x10000026 #define PROPERTY_TEAM_RED 0x10000026
#define PROPERTY_TEAM_BLUE 0x10000027 #define PROPERTY_TEAM_BLUE 0x10000027
#define PROPERTY_TEAM_SPECTATOR 0x10000028 #define PROPERTY_TEAM_SPECTATOR 0x10000028
#define PROPERTY_TEAM 0x10000029 #define PROPERTY_TEAM 0x10000029
#define PROPERTY_WIN_LIMIT 0x1000002A #define PROPERTY_WIN_LIMIT 0x1000002A
#define PROPERTY_RANKING_TEST 0x2000000A #define PROPERTY_RANKING_TEST 0x2000000A
#define PROPERTY_POINTS_SCORED 0x20000018 #define PROPERTY_POINTS_SCORED 0x20000018
// //
// Achievement ids // Achievement ids
// //
// These values are used in the dwAchievementId member of the // These values are used in the dwAchievementId member of the
// XUSER_ACHIEVEMENT structure that is used with // XUSER_ACHIEVEMENT structure that is used with
// XUserWriteAchievements and XUserCreateAchievementEnumerator. // XUserWriteAchievements and XUserCreateAchievementEnumerator.
// //
#define ACHIEVEMENT_HLX_KILL_ENEMIES_WITHPHYSICS 43 #define ACHIEVEMENT_HLX_KILL_ENEMIES_WITHPHYSICS 43
#define ACHIEVEMENT_HLX_KILL_ENEMY_WITHHOPPERMINE 44 #define ACHIEVEMENT_HLX_KILL_ENEMY_WITHHOPPERMINE 44
#define ACHIEVEMENT_HLX_KILL_ENEMIES_WITHMANHACK 45 #define ACHIEVEMENT_HLX_KILL_ENEMIES_WITHMANHACK 45
#define ACHIEVEMENT_HLX_KILL_SOLDIER_WITHHISGRENADE 46 #define ACHIEVEMENT_HLX_KILL_SOLDIER_WITHHISGRENADE 46
#define ACHIEVEMENT_HLX_KILL_ENEMIES_WITHONEENERGYBALL 47 #define ACHIEVEMENT_HLX_KILL_ENEMIES_WITHONEENERGYBALL 47
#define ACHIEVEMENT_HLX_KILL_ELITESOLDIER_WITHHISENERGYBALL 48 #define ACHIEVEMENT_HLX_KILL_ELITESOLDIER_WITHHISENERGYBALL 48
#define ACHIEVEMENT_EPX_GET_ZOMBINEGRENADE 50 #define ACHIEVEMENT_EPX_GET_ZOMBINEGRENADE 50
#define ACHIEVEMENT_EPX_KILL_ZOMBIES_WITHFLARES 51 #define ACHIEVEMENT_EPX_KILL_ZOMBIES_WITHFLARES 51
#define ACHIEVEMENT_HL2_HIT_CANCOP_WITHCAN 52 #define ACHIEVEMENT_HL2_HIT_CANCOP_WITHCAN 52
#define ACHIEVEMENT_HL2_PUT_CANINTRASH 53 #define ACHIEVEMENT_HL2_PUT_CANINTRASH 53
#define ACHIEVEMENT_HL2_ESCAPE_APARTMENTRAID 54 #define ACHIEVEMENT_HL2_ESCAPE_APARTMENTRAID 54
#define ACHIEVEMENT_HL2_BREAK_MINITELEPORTER 55 #define ACHIEVEMENT_HL2_BREAK_MINITELEPORTER 55
#define ACHIEVEMENT_HL2_GET_CROWBAR 56 #define ACHIEVEMENT_HL2_GET_CROWBAR 56
#define ACHIEVEMENT_HL2_KILL_BARNACLESWITHBARREL 57 #define ACHIEVEMENT_HL2_KILL_BARNACLESWITHBARREL 57
#define ACHIEVEMENT_HL2_GET_AIRBOAT 58 #define ACHIEVEMENT_HL2_GET_AIRBOAT 58
#define ACHIEVEMENT_HL2_GET_AIRBOATGUN 60 #define ACHIEVEMENT_HL2_GET_AIRBOATGUN 60
#define ACHIEVEMENT_HL2_FIND_VORTIGAUNTCAVE 61 #define ACHIEVEMENT_HL2_FIND_VORTIGAUNTCAVE 61
#define ACHIEVEMENT_HL2_KILL_CHOPPER 62 #define ACHIEVEMENT_HL2_KILL_CHOPPER 62
#define ACHIEVEMENT_HL2_FIND_HEVFACEPLATE 63 #define ACHIEVEMENT_HL2_FIND_HEVFACEPLATE 63
#define ACHIEVEMENT_HL2_GET_GRAVITYGUN 64 #define ACHIEVEMENT_HL2_GET_GRAVITYGUN 64
#define ACHIEVEMENT_HL2_MAKEABASKET 65 #define ACHIEVEMENT_HL2_MAKEABASKET 65
#define ACHIEVEMENT_HL2_BEAT_RAVENHOLM_NOWEAPONS 66 #define ACHIEVEMENT_HL2_BEAT_RAVENHOLM_NOWEAPONS 66
#define ACHIEVEMENT_HL2_BEAT_CEMETERY 67 #define ACHIEVEMENT_HL2_BEAT_CEMETERY 67
#define ACHIEVEMENT_HL2_KILL_ENEMIES_WITHCRANE 68 #define ACHIEVEMENT_HL2_KILL_ENEMIES_WITHCRANE 68
#define ACHIEVEMENT_HL2_PIN_SOLDIER_TOBILLBOARD 69 #define ACHIEVEMENT_HL2_PIN_SOLDIER_TOBILLBOARD 69
#define ACHIEVEMENT_HL2_KILL_ODESSAGUNSHIP 70 #define ACHIEVEMENT_HL2_KILL_ODESSAGUNSHIP 70
#define ACHIEVEMENT_HL2_KILL_THREEGUNSHIPS 71 #define ACHIEVEMENT_HL2_KILL_THREEGUNSHIPS 71
#define ACHIEVEMENT_HL2_BEAT_DONTTOUCHSAND 72 #define ACHIEVEMENT_HL2_BEAT_DONTTOUCHSAND 72
#define ACHIEVEMENT_HL2_KILL_ENEMIES_WITHANTLIONS 74 #define ACHIEVEMENT_HL2_KILL_ENEMIES_WITHANTLIONS 74
#define ACHIEVEMENT_HL2_KILL_ENEMY_WITHTOILET 75 #define ACHIEVEMENT_HL2_KILL_ENEMY_WITHTOILET 75
#define ACHIEVEMENT_HL2_BEAT_TURRETSTANDOFF2 76 #define ACHIEVEMENT_HL2_BEAT_TURRETSTANDOFF2 76
#define ACHIEVEMENT_HL2_BEAT_TOXICTUNNEL 78 #define ACHIEVEMENT_HL2_BEAT_TOXICTUNNEL 78
#define ACHIEVEMENT_HL2_BEAT_PLAZASTANDOFF 79 #define ACHIEVEMENT_HL2_BEAT_PLAZASTANDOFF 79
#define ACHIEVEMENT_HL2_KILL_ALLC1709SNIPERS 80 #define ACHIEVEMENT_HL2_KILL_ALLC1709SNIPERS 80
#define ACHIEVEMENT_HL2_BEAT_SUPRESSIONDEVICE 81 #define ACHIEVEMENT_HL2_BEAT_SUPRESSIONDEVICE 81
#define ACHIEVEMENT_HL2_BEAT_C1713STRIDERSTANDOFF 82 #define ACHIEVEMENT_HL2_BEAT_C1713STRIDERSTANDOFF 82
#define ACHIEVEMENT_HL2_BEAT_GAME 84 #define ACHIEVEMENT_HL2_BEAT_GAME 84
#define ACHIEVEMENT_HL2_FIND_ALLLAMBDAS 86 #define ACHIEVEMENT_HL2_FIND_ALLLAMBDAS 86
#define ACHIEVEMENT_EP1_BEAT_MAINELEVATOR 87 #define ACHIEVEMENT_EP1_BEAT_MAINELEVATOR 87
#define ACHIEVEMENT_EP1_BEAT_CITADELCORE 88 #define ACHIEVEMENT_EP1_BEAT_CITADELCORE 88
#define ACHIEVEMENT_EP1_BEAT_CITADELCORE_NOSTALKERKILLS 89 #define ACHIEVEMENT_EP1_BEAT_CITADELCORE_NOSTALKERKILLS 89
#define ACHIEVEMENT_EP1_KILL_ANTLIONS_WITHCARS 90 #define ACHIEVEMENT_EP1_KILL_ANTLIONS_WITHCARS 90
#define ACHIEVEMENT_EP1_BEAT_GARAGEELEVATORSTANDOFF 91 #define ACHIEVEMENT_EP1_BEAT_GARAGEELEVATORSTANDOFF 91
#define ACHIEVEMENT_EP1_KILL_ENEMIES_WITHSNIPERALYX 92 #define ACHIEVEMENT_EP1_KILL_ENEMIES_WITHSNIPERALYX 92
#define ACHIEVEMENT_EP1_BEAT_HOSPITALATTICGUNSHIP 93 #define ACHIEVEMENT_EP1_BEAT_HOSPITALATTICGUNSHIP 93
#define ACHIEVEMENT_EP1_BEAT_CITIZENESCORT_NOCITIZENDEATHS 94 #define ACHIEVEMENT_EP1_BEAT_CITIZENESCORT_NOCITIZENDEATHS 94
#define ACHIEVEMENT_EP1_BEAT_GAME 95 #define ACHIEVEMENT_EP1_BEAT_GAME 95
#define ACHIEVEMENT_EP1_BEAT_GAME_ONEBULLET 96 #define ACHIEVEMENT_EP1_BEAT_GAME_ONEBULLET 96
#define ACHIEVEMENT_EP2_KILL_POISONANTLION 97 #define ACHIEVEMENT_EP2_KILL_POISONANTLION 97
#define ACHIEVEMENT_EP2_KILL_ALLGRUBS 98 #define ACHIEVEMENT_EP2_KILL_ALLGRUBS 98
#define ACHIEVEMENT_EP2_BREAK_ALLWEBS 99 #define ACHIEVEMENT_EP2_BREAK_ALLWEBS 99
#define ACHIEVEMENT_EP2_BEAT_ANTLIONINVASION 100 #define ACHIEVEMENT_EP2_BEAT_ANTLIONINVASION 100
#define ACHIEVEMENT_EP2_BEAT_ANTLIONGUARDS 101 #define ACHIEVEMENT_EP2_BEAT_ANTLIONGUARDS 101
#define ACHIEVEMENT_EP2_KILL_ENEMIES_WITHCAR 102 #define ACHIEVEMENT_EP2_KILL_ENEMIES_WITHCAR 102
#define ACHIEVEMENT_EP2_BEAT_HUNTERAMBUSH 103 #define ACHIEVEMENT_EP2_BEAT_HUNTERAMBUSH 103
#define ACHIEVEMENT_EP2_KILL_CHOPPER_NOMISSES 104 #define ACHIEVEMENT_EP2_KILL_CHOPPER_NOMISSES 104
#define ACHIEVEMENT_EP2_KILL_COMBINECANNON 105 #define ACHIEVEMENT_EP2_KILL_COMBINECANNON 105
#define ACHIEVEMENT_EP2_FIND_ALLRADARCACHES 106 #define ACHIEVEMENT_EP2_FIND_ALLRADARCACHES 106
#define ACHIEVEMENT_EP2_BEAT_ROCKETCACHEPUZZLE 107 #define ACHIEVEMENT_EP2_BEAT_ROCKETCACHEPUZZLE 107
#define ACHIEVEMENT_EP2_BEAT_RACEWITHDOG 108 #define ACHIEVEMENT_EP2_BEAT_RACEWITHDOG 108
#define ACHIEVEMENT_EP2_BEAT_WHITEFORESTINN 109 #define ACHIEVEMENT_EP2_BEAT_WHITEFORESTINN 109
#define ACHIEVEMENT_EP2_PUT_ITEMINROCKET 110 #define ACHIEVEMENT_EP2_PUT_ITEMINROCKET 110
#define ACHIEVEMENT_EP2_BEAT_MISSILESILO2 111 #define ACHIEVEMENT_EP2_BEAT_MISSILESILO2 111
#define ACHIEVEMENT_EP2_BEAT_OUTLAND12_NOBUILDINGSDESTROYED 112 #define ACHIEVEMENT_EP2_BEAT_OUTLAND12_NOBUILDINGSDESTROYED 112
#define ACHIEVEMENT_EP2_BEAT_GAME 113 #define ACHIEVEMENT_EP2_BEAT_GAME 113
#define ACHIEVEMENT_EP2_KILL_HUNTER_WITHFLECHETTES 114 #define ACHIEVEMENT_EP2_KILL_HUNTER_WITHFLECHETTES 114
#define ACHIEVEMENT_PORTAL_GET_PORTALGUNS 115 #define ACHIEVEMENT_PORTAL_GET_PORTALGUNS 115
#define ACHIEVEMENT_PORTAL_KILL_COMPANIONCUBE 116 #define ACHIEVEMENT_PORTAL_KILL_COMPANIONCUBE 116
#define ACHIEVEMENT_PORTAL_ESCAPE_TESTCHAMBERS 117 #define ACHIEVEMENT_PORTAL_ESCAPE_TESTCHAMBERS 117
#define ACHIEVEMENT_PORTAL_BEAT_GAME 118 #define ACHIEVEMENT_PORTAL_BEAT_GAME 118
#define ACHIEVEMENT_PORTAL_INFINITEFALL 119 #define ACHIEVEMENT_PORTAL_INFINITEFALL 119
#define ACHIEVEMENT_PORTAL_LONGJUMP 120 #define ACHIEVEMENT_PORTAL_LONGJUMP 120
#define ACHIEVEMENT_PORTAL_BEAT_2ADVANCEDMAPS 121 #define ACHIEVEMENT_PORTAL_BEAT_2ADVANCEDMAPS 121
#define ACHIEVEMENT_PORTAL_BEAT_4ADVANCEDMAPS 122 #define ACHIEVEMENT_PORTAL_BEAT_4ADVANCEDMAPS 122
#define ACHIEVEMENT_PORTAL_BEAT_6ADVANCEDMAPS 123 #define ACHIEVEMENT_PORTAL_BEAT_6ADVANCEDMAPS 123
#define ACHIEVEMENT_PORTAL_GET_ALLBRONZE 124 #define ACHIEVEMENT_PORTAL_GET_ALLBRONZE 124
#define ACHIEVEMENT_PORTAL_GET_ALLSILVER 125 #define ACHIEVEMENT_PORTAL_GET_ALLSILVER 125
#define ACHIEVEMENT_PORTAL_GET_ALLGOLD 126 #define ACHIEVEMENT_PORTAL_GET_ALLGOLD 126
#define ACHIEVEMENT_TF_GET_TURRETKILLS 127 #define ACHIEVEMENT_TF_GET_TURRETKILLS 127
#define ACHIEVEMENT_TF_KILL_NEMESIS 128 #define ACHIEVEMENT_TF_KILL_NEMESIS 128
#define ACHIEVEMENT_TF_GET_CONSECUTIVEKILLS_NODEATHS 129 #define ACHIEVEMENT_TF_GET_CONSECUTIVEKILLS_NODEATHS 129
#define ACHIEVEMENT_TF_GET_HEALED_BYENEMY 130 #define ACHIEVEMENT_TF_GET_HEALED_BYENEMY 130
#define ACHIEVEMENT_TF_PLAY_GAME_FRIENDSONLY 131 #define ACHIEVEMENT_TF_PLAY_GAME_FRIENDSONLY 131
#define ACHIEVEMENT_TF_WIN_MULTIPLEGAMES 132 #define ACHIEVEMENT_TF_WIN_MULTIPLEGAMES 132
#define ACHIEVEMENT_TF_GET_MULTIPLEKILLS 133 #define ACHIEVEMENT_TF_GET_MULTIPLEKILLS 133
#define ACHIEVEMENT_TF_WIN_2FORT_NOENEMYCAPS 134 #define ACHIEVEMENT_TF_WIN_2FORT_NOENEMYCAPS 134
#define ACHIEVEMENT_TF_WIN_WELL_MINIMUMTIME 135 #define ACHIEVEMENT_TF_WIN_WELL_MINIMUMTIME 135
#define ACHIEVEMENT_TF_WIN_HYDRO_NOENEMYCAPS 136 #define ACHIEVEMENT_TF_WIN_HYDRO_NOENEMYCAPS 136
#define ACHIEVEMENT_TF_WIN_DUSTBOWL_NOENEMYCAPS 137 #define ACHIEVEMENT_TF_WIN_DUSTBOWL_NOENEMYCAPS 137
#define ACHIEVEMENT_TF_WIN_GRAVELPIT_NOENEMYCAPS 138 #define ACHIEVEMENT_TF_WIN_GRAVELPIT_NOENEMYCAPS 138
#define ACHIEVEMENT_TF_PLAY_GAME_EVERYCLASS 139 #define ACHIEVEMENT_TF_PLAY_GAME_EVERYCLASS 139
#define ACHIEVEMENT_TF_PLAY_GAME_EVERYMAP 140 #define ACHIEVEMENT_TF_PLAY_GAME_EVERYMAP 140
#define ACHIEVEMENT_TF_GET_HEALPOINTS 141 #define ACHIEVEMENT_TF_GET_HEALPOINTS 141
#define ACHIEVEMENT_TF_BURN_PLAYERSINMINIMIMTIME 142 #define ACHIEVEMENT_TF_BURN_PLAYERSINMINIMIMTIME 142
#define ACHIEVEMENT_HL2_DISINTEGRATE_SOLDIERSINFIELD 143 #define ACHIEVEMENT_HL2_DISINTEGRATE_SOLDIERSINFIELD 143
#define ACHIEVEMENT_HL2_FOLLOW_FREEMAN 144 #define ACHIEVEMENT_HL2_FOLLOW_FREEMAN 144
#define ACHIEVEMENT_TF_GET_HEADSHOTS 145 #define ACHIEVEMENT_TF_GET_HEADSHOTS 145
#define ACHIEVEMENT_PORTAL_DETACH_ALL_CAMERAS 146 #define ACHIEVEMENT_PORTAL_DETACH_ALL_CAMERAS 146
#define ACHIEVEMENT_PORTAL_HIT_TURRET_WITH_TURRET 148 #define ACHIEVEMENT_PORTAL_HIT_TURRET_WITH_TURRET 148
#ifndef _XBOX #ifndef _XBOX
#define ACHIEVEMENT_PORTAL_TRANSMISSION_RECEIVED 149 #define ACHIEVEMENT_PORTAL_TRANSMISSION_RECEIVED 149
#define ACHIEVEMENT_TF_GENERAL_KILL_ENEMIES_AFTER_TELEPORTING 150 #define ACHIEVEMENT_TF_GENERAL_KILL_ENEMIES_AFTER_TELEPORTING 150
#endif // _XBOX #endif // _XBOX
#define ACHIEVEMENT_TF_LAST_ORANGEBOX 150 #define ACHIEVEMENT_TF_LAST_ORANGEBOX 150
// //
// Stats view ids // Stats view ids
// //
// These are used in the dwViewId member of the XUSER_STATS_SPEC structure // These are used in the dwViewId member of the XUSER_STATS_SPEC structure
// passed to the XUserReadStats* and XUserCreateStatsEnumerator* functions. // passed to the XUserReadStats* and XUserCreateStatsEnumerator* functions.
// //
// Skill leaderboards for ranked game modes // Skill leaderboards for ranked game modes
#define STATS_VIEW_SKILL_RANKED_MULTIPLAYER 0xFFFF0000 #define STATS_VIEW_SKILL_RANKED_MULTIPLAYER 0xFFFF0000
#define STATS_VIEW_SKILL_RANKED_SINGLEPLAYER 0xFFFF0001 #define STATS_VIEW_SKILL_RANKED_SINGLEPLAYER 0xFFFF0001
// Skill leaderboards for unranked (standard) game modes // Skill leaderboards for unranked (standard) game modes
#define STATS_VIEW_SKILL_STANDARD_MULTIPLAYER 0xFFFE0000 #define STATS_VIEW_SKILL_STANDARD_MULTIPLAYER 0xFFFE0000
#define STATS_VIEW_SKILL_STANDARD_SINGLEPLAYER 0xFFFE0001 #define STATS_VIEW_SKILL_STANDARD_SINGLEPLAYER 0xFFFE0001
// Title defined leaderboards // Title defined leaderboards
#define STATS_VIEW_PLAYER_MAX_UNRANKED 1 #define STATS_VIEW_PLAYER_MAX_UNRANKED 1
#define STATS_VIEW_PLAYER_MAX_RANKED 2 #define STATS_VIEW_PLAYER_MAX_RANKED 2
// //
// Stats view column ids // Stats view column ids
// //
// These ids are used to read columns of stats views. They are specified in // These ids are used to read columns of stats views. They are specified in
// the rgwColumnIds array of the XUSER_STATS_SPEC structure. Rank, rating // the rgwColumnIds array of the XUSER_STATS_SPEC structure. Rank, rating
// and gamertag are not retrieved as custom columns and so are not included // and gamertag are not retrieved as custom columns and so are not included
// in the following definitions. They can be retrieved from each row's // in the following definitions. They can be retrieved from each row's
// header (e.g., pStatsResults->pViews[x].pRows[y].dwRank, etc.). // header (e.g., pStatsResults->pViews[x].pRows[y].dwRank, etc.).
// //
// Column ids for PLAYER_MAX_UNRANKED // Column ids for PLAYER_MAX_UNRANKED
#define STATS_COLUMN_PLAYER_MAX_UNRANKED_POINTS_SCORED 2 #define STATS_COLUMN_PLAYER_MAX_UNRANKED_POINTS_SCORED 2
#define STATS_COLUMN_PLAYER_MAX_UNRANKED_KILLS 3 #define STATS_COLUMN_PLAYER_MAX_UNRANKED_KILLS 3
#define STATS_COLUMN_PLAYER_MAX_UNRANKED_POINTS_CAPPED 1 #define STATS_COLUMN_PLAYER_MAX_UNRANKED_POINTS_CAPPED 1
#define STATS_COLUMN_PLAYER_MAX_UNRANKED_DAMAGE_DEALT 4 #define STATS_COLUMN_PLAYER_MAX_UNRANKED_DAMAGE_DEALT 4
#define STATS_COLUMN_PLAYER_MAX_UNRANKED_PLAY_TIME 5 #define STATS_COLUMN_PLAYER_MAX_UNRANKED_PLAY_TIME 5
#define STATS_COLUMN_PLAYER_MAX_UNRANKED_POINT_DEFENSES 6 #define STATS_COLUMN_PLAYER_MAX_UNRANKED_POINT_DEFENSES 6
#define STATS_COLUMN_PLAYER_MAX_UNRANKED_DOMINATIONS 7 #define STATS_COLUMN_PLAYER_MAX_UNRANKED_DOMINATIONS 7
#define STATS_COLUMN_PLAYER_MAX_UNRANKED_REVENGE 8 #define STATS_COLUMN_PLAYER_MAX_UNRANKED_REVENGE 8
#define STATS_COLUMN_PLAYER_MAX_UNRANKED_BUILDINGS_DESTROYED 9 #define STATS_COLUMN_PLAYER_MAX_UNRANKED_BUILDINGS_DESTROYED 9
#define STATS_COLUMN_PLAYER_MAX_UNRANKED_HEADSHOTS 10 #define STATS_COLUMN_PLAYER_MAX_UNRANKED_HEADSHOTS 10
#define STATS_COLUMN_PLAYER_MAX_UNRANKED_HEALTH_POINTS_HEALED 11 #define STATS_COLUMN_PLAYER_MAX_UNRANKED_HEALTH_POINTS_HEALED 11
#define STATS_COLUMN_PLAYER_MAX_UNRANKED_INVULNS 12 #define STATS_COLUMN_PLAYER_MAX_UNRANKED_INVULNS 12
#define STATS_COLUMN_PLAYER_MAX_UNRANKED_KILL_ASSISTS 13 #define STATS_COLUMN_PLAYER_MAX_UNRANKED_KILL_ASSISTS 13
#define STATS_COLUMN_PLAYER_MAX_UNRANKED_BACKSTABS 14 #define STATS_COLUMN_PLAYER_MAX_UNRANKED_BACKSTABS 14
#define STATS_COLUMN_PLAYER_MAX_UNRANKED_HEALTH_POINTS_LEACHED 15 #define STATS_COLUMN_PLAYER_MAX_UNRANKED_HEALTH_POINTS_LEACHED 15
#define STATS_COLUMN_PLAYER_MAX_UNRANKED_BUILDINGS_BUILT 16 #define STATS_COLUMN_PLAYER_MAX_UNRANKED_BUILDINGS_BUILT 16
#define STATS_COLUMN_PLAYER_MAX_UNRANKED_SENTRY_KILLS 17 #define STATS_COLUMN_PLAYER_MAX_UNRANKED_SENTRY_KILLS 17
#define STATS_COLUMN_PLAYER_MAX_UNRANKED_TELEPORTS 18 #define STATS_COLUMN_PLAYER_MAX_UNRANKED_TELEPORTS 18
// Column ids for PLAYER_MAX_RANKED // Column ids for PLAYER_MAX_RANKED
#define STATS_COLUMN_PLAYER_MAX_RANKED_POINTS_SCORED 2 #define STATS_COLUMN_PLAYER_MAX_RANKED_POINTS_SCORED 2
// //
// Matchmaking queries // Matchmaking queries
// //
// These values are passed as the dwProcedureIndex parameter to // These values are passed as the dwProcedureIndex parameter to
// XSessionSearch to indicate which matchmaking query to run. // XSessionSearch to indicate which matchmaking query to run.
// //
#define SESSION_MATCH_QUERY_PLAYER_MATCH 0 #define SESSION_MATCH_QUERY_PLAYER_MATCH 0
// //
// Gamer pictures // Gamer pictures
// //
// These ids are passed as the dwPictureId parameter to XUserAwardGamerTile. // These ids are passed as the dwPictureId parameter to XUserAwardGamerTile.
// //
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif // __THE_ORANGE_BOX_SPA_H__ #endif // __THE_ORANGE_BOX_SPA_H__

View File

@ -1,217 +1,217 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: languages definition // Purpose: languages definition
// //
//============================================================================= //=============================================================================
#include "language.h" #include "language.h"
#include "tier0/dbg.h" #include "tier0/dbg.h"
#include "tier1/strtools.h" #include "tier1/strtools.h"
// NOTE: This has to be the last file included! // NOTE: This has to be the last file included!
#include "tier0/memdbgon.h" #include "tier0/memdbgon.h"
struct Language_t struct Language_t
{ {
const char *m_pchName; const char *m_pchName;
const char *m_pchShortName; const char *m_pchShortName;
const char *m_pchVGUILocalizationName; const char *m_pchVGUILocalizationName;
const char *m_pchICUName; // used by osx; ISO-639-1 + ISO-3166-1 alpha-2. http://userguide.icu-project.org/locale/examples const char *m_pchICUName; // used by osx; ISO-639-1 + ISO-3166-1 alpha-2. http://userguide.icu-project.org/locale/examples
ELanguage m_ELanguage; ELanguage m_ELanguage;
int m_LanguageCodeID; int m_LanguageCodeID;
}; };
// REVIEW // REVIEW
// es_ES - use new world spanish country code instead? // es_ES - use new world spanish country code instead?
// zh_CN - validate that SC date formats come through // zh_CN - validate that SC date formats come through
// bt_BR - assume we should use Brazilian rather than Iberian portguese // bt_BR - assume we should use Brazilian rather than Iberian portguese
static const Language_t s_LanguageNames[] = static const Language_t s_LanguageNames[] =
{ {
{ "None", "none", "None", "none", k_Lang_None, 0 }, { "None", "none", "None", "none", k_Lang_None, 0 },
{ "English", "english", "#GameUI_Language_English", "en_US", k_Lang_English, 1033 }, { "English", "english", "#GameUI_Language_English", "en_US", k_Lang_English, 1033 },
{ "German", "german", "#GameUI_Language_German", "de_DE", k_Lang_German, 1031 } , { "German", "german", "#GameUI_Language_German", "de_DE", k_Lang_German, 1031 } ,
{ "French", "french", "#GameUI_Language_French", "fr_FR", k_Lang_French, 1036 } , { "French", "french", "#GameUI_Language_French", "fr_FR", k_Lang_French, 1036 } ,
{ "Italian", "italian", "#GameUI_Language_Italian", "it_IT", k_Lang_Italian, 1040 } , { "Italian", "italian", "#GameUI_Language_Italian", "it_IT", k_Lang_Italian, 1040 } ,
{ "Korean", "koreana", "#GameUI_Language_Korean", "ko_KR", k_Lang_Korean, 1042 } , { "Korean", "koreana", "#GameUI_Language_Korean", "ko_KR", k_Lang_Korean, 1042 } ,
{ "Spanish", "spanish", "#GameUI_Language_Spanish", "es_ES", k_Lang_Spanish, 1034 }, { "Spanish", "spanish", "#GameUI_Language_Spanish", "es_ES", k_Lang_Spanish, 1034 },
{ "Simplified_Chinese", "schinese", "#GameUI_Language_Simplified_Chinese", "zh_CN", k_Lang_Simplified_Chinese, 2052 }, { "Simplified_Chinese", "schinese", "#GameUI_Language_Simplified_Chinese", "zh_CN", k_Lang_Simplified_Chinese, 2052 },
{ "Traditional_Chinese", "tchinese", "#GameUI_Language_Traditional_Chinese", "zh_TW", k_Lang_Traditional_Chinese, 1028 }, { "Traditional_Chinese", "tchinese", "#GameUI_Language_Traditional_Chinese", "zh_TW", k_Lang_Traditional_Chinese, 1028 },
{ "Russian", "russian", "#GameUI_Language_Russian", "ru_RU", k_Lang_Russian, 1049 } , { "Russian", "russian", "#GameUI_Language_Russian", "ru_RU", k_Lang_Russian, 1049 } ,
{ "Thai", "thai", "#GameUI_Language_Thai", "th_TH", k_Lang_Thai, 1054 } , { "Thai", "thai", "#GameUI_Language_Thai", "th_TH", k_Lang_Thai, 1054 } ,
{ "Japanese", "japanese", "#GameUI_Language_Japanese", "ja_JP", k_Lang_Japanese, 1041 } , { "Japanese", "japanese", "#GameUI_Language_Japanese", "ja_JP", k_Lang_Japanese, 1041 } ,
{ "Portuguese", "portuguese", "#GameUI_Language_Portuguese", "pt_PT", k_Lang_Portuguese, 2070 } , { "Portuguese", "portuguese", "#GameUI_Language_Portuguese", "pt_PT", k_Lang_Portuguese, 2070 } ,
{ "Polish", "polish", "#GameUI_Language_Polish", "pl_PL", k_Lang_Polish, 1045 } , { "Polish", "polish", "#GameUI_Language_Polish", "pl_PL", k_Lang_Polish, 1045 } ,
{ "Danish", "danish", "#GameUI_Language_Danish", "da_DK", k_Lang_Danish, 1030 } , { "Danish", "danish", "#GameUI_Language_Danish", "da_DK", k_Lang_Danish, 1030 } ,
{ "Dutch", "dutch", "#GameUI_Language_Dutch", "nl_NL", k_Lang_Dutch, 1043 } , { "Dutch", "dutch", "#GameUI_Language_Dutch", "nl_NL", k_Lang_Dutch, 1043 } ,
{ "Finnish", "finnish", "#GameUI_Language_Finnish", "fi_FI", k_Lang_Finnish, 1035 } , { "Finnish", "finnish", "#GameUI_Language_Finnish", "fi_FI", k_Lang_Finnish, 1035 } ,
{ "Norwegian", "norwegian", "#GameUI_Language_Norwegian", "no_NO", k_Lang_Norwegian, 1044 } , { "Norwegian", "norwegian", "#GameUI_Language_Norwegian", "no_NO", k_Lang_Norwegian, 1044 } ,
{ "Swedish", "swedish", "#GameUI_Language_Swedish", "sv_SE", k_Lang_Swedish, 1053 } , { "Swedish", "swedish", "#GameUI_Language_Swedish", "sv_SE", k_Lang_Swedish, 1053 } ,
{ "Romanian", "romanian", "#GameUI_Language_Romanian", "ro_RO", k_Lang_Romanian, 1048 } , { "Romanian", "romanian", "#GameUI_Language_Romanian", "ro_RO", k_Lang_Romanian, 1048 } ,
{ "Turkish", "turkish", "#GameUI_Language_Turkish", "tr_TR", k_Lang_Turkish, 1055 } , { "Turkish", "turkish", "#GameUI_Language_Turkish", "tr_TR", k_Lang_Turkish, 1055 } ,
{ "Hungarian", "hungarian", "#GameUI_Language_Hungarian", "hu_HU", k_Lang_Hungarian, 1038 } , { "Hungarian", "hungarian", "#GameUI_Language_Hungarian", "hu_HU", k_Lang_Hungarian, 1038 } ,
{ "Czech", "czech", "#GameUI_Language_Czech", "cs_CZ", k_Lang_Czech, 1029 } , { "Czech", "czech", "#GameUI_Language_Czech", "cs_CZ", k_Lang_Czech, 1029 } ,
{ "Brazilian", "brazilian", "#GameUI_Language_Brazilian", "pt_BR", k_Lang_Brazilian, 1046 } , { "Brazilian", "brazilian", "#GameUI_Language_Brazilian", "pt_BR", k_Lang_Brazilian, 1046 } ,
{ "Bulgarian", "bulgarian", "#GameUI_Language_Bulgarian", "bg_BG", k_Lang_Bulgarian, 1026 } , { "Bulgarian", "bulgarian", "#GameUI_Language_Bulgarian", "bg_BG", k_Lang_Bulgarian, 1026 } ,
{ "Greek", "greek", "#GameUI_Language_Greek", "el_GR", k_Lang_Greek, 1032 }, { "Greek", "greek", "#GameUI_Language_Greek", "el_GR", k_Lang_Greek, 1032 },
}; };
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: translate language enum into closests windows language code ID // Purpose: translate language enum into closests windows language code ID
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
int GetLanguageCodeID(ELanguage eLang) int GetLanguageCodeID(ELanguage eLang)
{ {
for ( uint iLang = 0; iLang < Q_ARRAYSIZE(s_LanguageNames); ++iLang ) for ( uint iLang = 0; iLang < Q_ARRAYSIZE(s_LanguageNames); ++iLang )
{ {
if ( s_LanguageNames[iLang].m_ELanguage == eLang ) if ( s_LanguageNames[iLang].m_ELanguage == eLang )
return s_LanguageNames[iLang].m_LanguageCodeID; return s_LanguageNames[iLang].m_LanguageCodeID;
} }
// default to English // default to English
return 1033; return 1033;
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: find the language by name // Purpose: find the language by name
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
ELanguage PchLanguageToELanguage( const char *pchShortName, ELanguage eDefault ) ELanguage PchLanguageToELanguage( const char *pchShortName, ELanguage eDefault )
{ {
Assert( Q_ARRAYSIZE(s_LanguageNames) == k_Lang_MAX + 1 ); Assert( Q_ARRAYSIZE(s_LanguageNames) == k_Lang_MAX + 1 );
if ( !pchShortName ) if ( !pchShortName )
return eDefault; return eDefault;
for ( uint iLang = 0; iLang < Q_ARRAYSIZE(s_LanguageNames); ++iLang ) for ( uint iLang = 0; iLang < Q_ARRAYSIZE(s_LanguageNames); ++iLang )
{ {
if ( !Q_stricmp( pchShortName, s_LanguageNames[iLang].m_pchShortName ) ) if ( !Q_stricmp( pchShortName, s_LanguageNames[iLang].m_pchShortName ) )
{ {
return s_LanguageNames[iLang].m_ELanguage; return s_LanguageNames[iLang].m_ELanguage;
} }
} }
// return default // return default
return eDefault; return eDefault;
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: find the language by ICU short code // Purpose: find the language by ICU short code
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
ELanguage PchLanguageICUCodeToELanguage( const char *pchICUCode, ELanguage eDefault ) ELanguage PchLanguageICUCodeToELanguage( const char *pchICUCode, ELanguage eDefault )
{ {
Assert( Q_ARRAYSIZE(s_LanguageNames) == k_Lang_MAX + 1 ); Assert( Q_ARRAYSIZE(s_LanguageNames) == k_Lang_MAX + 1 );
if ( !pchICUCode ) if ( !pchICUCode )
return eDefault; return eDefault;
// Match to no more than the param length so either a short 'en' or // Match to no more than the param length so either a short 'en' or
// full 'zh-Hant' can match // full 'zh-Hant' can match
int nLen = Q_strlen( pchICUCode ); int nLen = Q_strlen( pchICUCode );
// we only have 5 character ICU codes so this should be enough room // we only have 5 character ICU codes so this should be enough room
char rchCleanedCode[ 6 ]; char rchCleanedCode[ 6 ];
Q_strncpy( rchCleanedCode, pchICUCode, Q_ARRAYSIZE( rchCleanedCode ) ); Q_strncpy( rchCleanedCode, pchICUCode, Q_ARRAYSIZE( rchCleanedCode ) );
if( nLen >= 3 && rchCleanedCode[ 2 ] == '-' ) if( nLen >= 3 && rchCleanedCode[ 2 ] == '-' )
{ {
rchCleanedCode[ 2 ] = '_'; rchCleanedCode[ 2 ] = '_';
} }
for ( uint iLang = 0; iLang < Q_ARRAYSIZE(s_LanguageNames); ++iLang ) for ( uint iLang = 0; iLang < Q_ARRAYSIZE(s_LanguageNames); ++iLang )
{ {
if ( !Q_strnicmp( rchCleanedCode, s_LanguageNames[iLang].m_pchICUName, nLen ) ) if ( !Q_strnicmp( rchCleanedCode, s_LanguageNames[iLang].m_pchICUName, nLen ) )
{ {
return s_LanguageNames[iLang].m_ELanguage; return s_LanguageNames[iLang].m_ELanguage;
} }
} }
// return default // return default
return eDefault; return eDefault;
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: return the short string name used for this language by SteamUI // Purpose: return the short string name used for this language by SteamUI
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
const char *GetLanguageShortName( ELanguage eLang ) const char *GetLanguageShortName( ELanguage eLang )
{ {
COMPILE_TIME_ASSERT( Q_ARRAYSIZE(s_LanguageNames) == k_Lang_MAX + 1 ); COMPILE_TIME_ASSERT( Q_ARRAYSIZE(s_LanguageNames) == k_Lang_MAX + 1 );
if ( s_LanguageNames[ eLang + 1 ].m_ELanguage == eLang ) if ( s_LanguageNames[ eLang + 1 ].m_ELanguage == eLang )
{ {
Assert( eLang + 1 < ARRAYSIZE(s_LanguageNames) ); Assert( eLang + 1 < ARRAYSIZE(s_LanguageNames) );
return s_LanguageNames[ eLang + 1 ].m_pchShortName; return s_LanguageNames[ eLang + 1 ].m_pchShortName;
} }
Assert( !"enum ELanguage order mismatched from Language_t s_LanguageNames, fix it!" ); Assert( !"enum ELanguage order mismatched from Language_t s_LanguageNames, fix it!" );
return s_LanguageNames[0].m_pchShortName; return s_LanguageNames[0].m_pchShortName;
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: return the ICU code used for this language by SteamUI // Purpose: return the ICU code used for this language by SteamUI
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
const char *GetLanguageICUName( ELanguage eLang ) const char *GetLanguageICUName( ELanguage eLang )
{ {
COMPILE_TIME_ASSERT( Q_ARRAYSIZE(s_LanguageNames) == k_Lang_MAX + 1 ); COMPILE_TIME_ASSERT( Q_ARRAYSIZE(s_LanguageNames) == k_Lang_MAX + 1 );
if ( s_LanguageNames[ eLang + 1 ].m_ELanguage == eLang ) if ( s_LanguageNames[ eLang + 1 ].m_ELanguage == eLang )
{ {
Assert( eLang + 1 < ARRAYSIZE(s_LanguageNames) ); Assert( eLang + 1 < ARRAYSIZE(s_LanguageNames) );
return s_LanguageNames[ eLang + 1 ].m_pchICUName; return s_LanguageNames[ eLang + 1 ].m_pchICUName;
} }
Assert( !"enum ELanguage order mismatched from Language_t s_LanguageNames, fix it!" ); Assert( !"enum ELanguage order mismatched from Language_t s_LanguageNames, fix it!" );
return s_LanguageNames[0].m_pchICUName; return s_LanguageNames[0].m_pchICUName;
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: return the CLocale name that works with setlocale() // Purpose: return the CLocale name that works with setlocale()
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
const char *GetLangugeCLocaleName( ELanguage eLang ) const char *GetLangugeCLocaleName( ELanguage eLang )
{ {
if ( eLang == k_Lang_None ) if ( eLang == k_Lang_None )
return ""; return "";
#ifdef _WIN32 #ifdef _WIN32
// table for Win32 is here: http://msdn.microsoft.com/en-us/library/hzz3tw78(v=VS.80).aspx // table for Win32 is here: http://msdn.microsoft.com/en-us/library/hzz3tw78(v=VS.80).aspx
// shortname works except for chinese // shortname works except for chinese
switch ( eLang ) switch ( eLang )
{ {
case k_Lang_Simplified_Chinese: case k_Lang_Simplified_Chinese:
return "chs"; // or "chinese-simplified" return "chs"; // or "chinese-simplified"
case k_Lang_Traditional_Chinese: case k_Lang_Traditional_Chinese:
return "cht"; // or "chinese-traditional" return "cht"; // or "chinese-traditional"
case k_Lang_Korean: case k_Lang_Korean:
return "korean"; // steam likes "koreana" for the name for some reason. return "korean"; // steam likes "koreana" for the name for some reason.
default: default:
return GetLanguageShortName( eLang ); return GetLanguageShortName( eLang );
} }
#else #else
switch ( eLang ) switch ( eLang )
{ {
case k_Lang_Simplified_Chinese: case k_Lang_Simplified_Chinese:
case k_Lang_Traditional_Chinese: case k_Lang_Traditional_Chinese:
return "zh_CN"; return "zh_CN";
default: default:
; ;
} }
// ICU codes work on linux/osx // ICU codes work on linux/osx
return GetLanguageICUName( eLang ); return GetLanguageICUName( eLang );
#endif #endif
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: return the short string name used for this language by SteamUI // Purpose: return the short string name used for this language by SteamUI
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
const char *GetLanguageVGUILocalization( ELanguage eLang ) const char *GetLanguageVGUILocalization( ELanguage eLang )
{ {
COMPILE_TIME_ASSERT( Q_ARRAYSIZE(s_LanguageNames) == k_Lang_MAX + 1 ); COMPILE_TIME_ASSERT( Q_ARRAYSIZE(s_LanguageNames) == k_Lang_MAX + 1 );
if ( s_LanguageNames[ eLang + 1 ].m_ELanguage == eLang ) if ( s_LanguageNames[ eLang + 1 ].m_ELanguage == eLang )
{ {
Assert( eLang + 1 < ARRAYSIZE(s_LanguageNames) ); Assert( eLang + 1 < ARRAYSIZE(s_LanguageNames) );
return s_LanguageNames[ eLang + 1 ].m_pchVGUILocalizationName; return s_LanguageNames[ eLang + 1 ].m_pchVGUILocalizationName;
} }
Assert( !"enum ELanguage order mismatched from Language_t s_LanguageNames, fix it!" ); Assert( !"enum ELanguage order mismatched from Language_t s_LanguageNames, fix it!" );
return s_LanguageNames[0].m_pchVGUILocalizationName; return s_LanguageNames[0].m_pchVGUILocalizationName;
} }

View File

@ -1,55 +1,55 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: represent a canonical list of the languages we support, // Purpose: represent a canonical list of the languages we support,
// //
//============================================================================= //=============================================================================
#ifndef LANG_H #ifndef LANG_H
#define LANG_H #define LANG_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
// if you change this enum also change language.cpp:s_LanguageNames // if you change this enum also change language.cpp:s_LanguageNames
enum ELanguage enum ELanguage
{ {
k_Lang_None = -1, k_Lang_None = -1,
k_Lang_First = 0, k_Lang_First = 0,
k_Lang_English = 0, k_Lang_English = 0,
k_Lang_German, k_Lang_German,
k_Lang_French, k_Lang_French,
k_Lang_Italian, k_Lang_Italian,
k_Lang_Korean, k_Lang_Korean,
k_Lang_Spanish, k_Lang_Spanish,
k_Lang_Simplified_Chinese, k_Lang_Simplified_Chinese,
k_Lang_Traditional_Chinese, k_Lang_Traditional_Chinese,
k_Lang_Russian, k_Lang_Russian,
k_Lang_Thai, k_Lang_Thai,
k_Lang_Japanese, k_Lang_Japanese,
k_Lang_Portuguese, k_Lang_Portuguese,
k_Lang_Polish, k_Lang_Polish,
k_Lang_Danish, k_Lang_Danish,
k_Lang_Dutch, k_Lang_Dutch,
k_Lang_Finnish, k_Lang_Finnish,
k_Lang_Norwegian, k_Lang_Norwegian,
k_Lang_Swedish, k_Lang_Swedish,
k_Lang_Romanian, k_Lang_Romanian,
k_Lang_Turkish, k_Lang_Turkish,
k_Lang_Hungarian, k_Lang_Hungarian,
k_Lang_Czech, k_Lang_Czech,
k_Lang_Brazilian, k_Lang_Brazilian,
k_Lang_Bulgarian, k_Lang_Bulgarian,
k_Lang_Greek, k_Lang_Greek,
k_Lang_MAX k_Lang_MAX
}; };
#define FOR_EACH_LANGUAGE( eLang ) for ( int eLang = (int)k_Lang_First; eLang < k_Lang_MAX; ++eLang ) #define FOR_EACH_LANGUAGE( eLang ) for ( int eLang = (int)k_Lang_First; eLang < k_Lang_MAX; ++eLang )
ELanguage PchLanguageToELanguage(const char *pchShortName, ELanguage eDefault = k_Lang_English); ELanguage PchLanguageToELanguage(const char *pchShortName, ELanguage eDefault = k_Lang_English);
ELanguage PchLanguageICUCodeToELanguage( const char *pchICUCode, ELanguage eDefault = k_Lang_English ); ELanguage PchLanguageICUCodeToELanguage( const char *pchICUCode, ELanguage eDefault = k_Lang_English );
const char *GetLanguageShortName( ELanguage eLang ); const char *GetLanguageShortName( ELanguage eLang );
const char *GetLanguageICUName( ELanguage eLang ); const char *GetLanguageICUName( ELanguage eLang );
const char *GetLanguageVGUILocalization( ELanguage eLang ); const char *GetLanguageVGUILocalization( ELanguage eLang );
const char *GetLanguageName( ELanguage eLang ); const char *GetLanguageName( ELanguage eLang );
#endif /* LANG_H */ #endif /* LANG_H */

View File

@ -1,49 +1,49 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: // Purpose:
// //
// $NoKeywords: $ // $NoKeywords: $
// //
//=============================================================================// //=============================================================================//
#if !defined( PROTO_VERSION_H ) #if !defined( PROTO_VERSION_H )
#define PROTO_VERSION_H #define PROTO_VERSION_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
// The current network protocol version. Changing this makes clients and servers incompatible // The current network protocol version. Changing this makes clients and servers incompatible
#define PROTOCOL_VERSION 24 #define PROTOCOL_VERSION 24
#define DEMO_BACKWARDCOMPATABILITY #define DEMO_BACKWARDCOMPATABILITY
// For backward compatibility of demo files (NET_MAX_PAYLOAD_BITS went away) // For backward compatibility of demo files (NET_MAX_PAYLOAD_BITS went away)
#define PROTOCOL_VERSION_23 23 #define PROTOCOL_VERSION_23 23
// For backward compatibility of demo files (sound index bits used to = 13 ) // For backward compatibility of demo files (sound index bits used to = 13 )
#define PROTOCOL_VERSION_22 22 #define PROTOCOL_VERSION_22 22
// For backward compatibility of demo files (before the special DSP was shipped to public) // For backward compatibility of demo files (before the special DSP was shipped to public)
#define PROTOCOL_VERSION_21 21 #define PROTOCOL_VERSION_21 21
// For backward compatibility of demo files (old-style dynamic model loading) // For backward compatibility of demo files (old-style dynamic model loading)
#define PROTOCOL_VERSION_20 20 #define PROTOCOL_VERSION_20 20
// For backward compatibility of demo files (post Halloween sound flag extra bit) // For backward compatibility of demo files (post Halloween sound flag extra bit)
#define PROTOCOL_VERSION_19 19 #define PROTOCOL_VERSION_19 19
// For backward compatibility of demo files (pre Halloween sound flag extra bit) // For backward compatibility of demo files (pre Halloween sound flag extra bit)
#define PROTOCOL_VERSION_18 18 #define PROTOCOL_VERSION_18 18
// For backward compatibility of demo files (MD5 in map version) // For backward compatibility of demo files (MD5 in map version)
#define PROTOCOL_VERSION_17 17 #define PROTOCOL_VERSION_17 17
// For backward compatibility of demo files (create string tables compression flag) // For backward compatibility of demo files (create string tables compression flag)
#define PROTOCOL_VERSION_14 14 #define PROTOCOL_VERSION_14 14
// For backward compatibility of demo files // For backward compatibility of demo files
#define PROTOCOL_VERSION_12 12 #define PROTOCOL_VERSION_12 12
// The PROTOCOL_VERSION when replay shipped to public // The PROTOCOL_VERSION when replay shipped to public
#define PROTOCOL_VERSION_REPLAY 16 #define PROTOCOL_VERSION_REPLAY 16
#endif #endif

View File

@ -1,35 +1,35 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: // Purpose:
// //
// $NoKeywords: $ // $NoKeywords: $
//=============================================================================// //=============================================================================//
#ifndef QLIMITS_H #ifndef QLIMITS_H
#define QLIMITS_H #define QLIMITS_H
#if defined( _WIN32 ) #if defined( _WIN32 )
#pragma once #pragma once
#endif #endif
// DATA STRUCTURE INFO // DATA STRUCTURE INFO
#define MAX_NUM_ARGVS 50 #define MAX_NUM_ARGVS 50
// SYSTEM INFO // SYSTEM INFO
#define MAX_QPATH 96 // max length of a game pathname #define MAX_QPATH 96 // max length of a game pathname
#define MAX_OSPATH 260 // max length of a filesystem pathname #define MAX_OSPATH 260 // max length of a filesystem pathname
#define ON_EPSILON 0.1 // point on plane side epsilon #define ON_EPSILON 0.1 // point on plane side epsilon
// Resource counts; // Resource counts;
#define MAX_MODEL_INDEX_BITS 11 // sent as a short #define MAX_MODEL_INDEX_BITS 11 // sent as a short
#define MAX_MODELS (1<<MAX_MODEL_INDEX_BITS) #define MAX_MODELS (1<<MAX_MODEL_INDEX_BITS)
#define MAX_GENERIC_INDEX_BITS 9 #define MAX_GENERIC_INDEX_BITS 9
#define MAX_GENERIC (1<<MAX_GENERIC_INDEX_BITS) #define MAX_GENERIC (1<<MAX_GENERIC_INDEX_BITS)
#define MAX_DECAL_INDEX_BITS 9 #define MAX_DECAL_INDEX_BITS 9
#define MAX_BASE_DECALS (1<<MAX_DECAL_INDEX_BITS) #define MAX_BASE_DECALS (1<<MAX_DECAL_INDEX_BITS)
#endif // QLIMITS_H #endif // QLIMITS_H

View File

@ -1,27 +1,27 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: // Purpose:
// //
//=============================================================================// //=============================================================================//
#if !defined(_STATIC_LINKED) || defined(_SHARED_LIB) #if !defined(_STATIC_LINKED) || defined(_SHARED_LIB)
#include "stdlib.h" #include "stdlib.h"
#include "vstdlib/random.h" #include "vstdlib/random.h"
// 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"
#ifdef GNUC #ifdef GNUC
#define __cdecl #define __cdecl
#endif #endif
void __cdecl srand(unsigned int) void __cdecl srand(unsigned int)
{ {
} }
int __cdecl rand() int __cdecl rand()
{ {
return RandomInt( 0, VALVE_RAND_MAX ); return RandomInt( 0, VALVE_RAND_MAX );
} }
#endif // !_STATIC_LINKED || _SHARED_LIB #endif // !_STATIC_LINKED || _SHARED_LIB

View File

@ -1,43 +1,43 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef REPLAYSERIALIIZEABLE_H #ifndef REPLAYSERIALIIZEABLE_H
#define REPLAYSERIALIIZEABLE_H #define REPLAYSERIALIIZEABLE_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "replay/ireplayserializeable.h" #include "replay/ireplayserializeable.h"
#include "replay/replayhandle.h" #include "replay/replayhandle.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class CBaseReplaySerializeable : public IReplaySerializeable class CBaseReplaySerializeable : public IReplaySerializeable
{ {
public: public:
CBaseReplaySerializeable(); CBaseReplaySerializeable();
virtual void SetHandle( ReplayHandle_t h ); virtual void SetHandle( ReplayHandle_t h );
virtual ReplayHandle_t GetHandle() const; virtual ReplayHandle_t GetHandle() const;
virtual bool Read( KeyValues *pIn ); virtual bool Read( KeyValues *pIn );
virtual void Write( KeyValues *pOut ); virtual void Write( KeyValues *pOut );
virtual const char *GetFilename() const; virtual const char *GetFilename() const;
virtual const char *GetFullFilename() const; virtual const char *GetFullFilename() const;
virtual const char *GetDebugName() const; virtual const char *GetDebugName() const;
virtual void SetLocked( bool bLocked ); virtual void SetLocked( bool bLocked );
virtual bool IsLocked() const; virtual bool IsLocked() const;
virtual void OnDelete(); virtual void OnDelete();
virtual void OnUnload(); virtual void OnUnload();
virtual void OnAddedToDirtyList(); virtual void OnAddedToDirtyList();
private: private:
ReplayHandle_t m_hThis; ReplayHandle_t m_hThis;
bool m_bLocked; bool m_bLocked;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // REPLAYSERIALIIZEABLE_H #endif // REPLAYSERIALIIZEABLE_H

View File

@ -1,64 +1,64 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef ICLIENTREPLAY_H #ifndef ICLIENTREPLAY_H
#define ICLIENTREPLAY_H #define ICLIENTREPLAY_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "interface.h" #include "interface.h"
#include "replay/replayhandle.h" #include "replay/replayhandle.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#define CLIENT_REPLAY_INTERFACE_VERSION "ClientReplay001" #define CLIENT_REPLAY_INTERFACE_VERSION "ClientReplay001"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class IReplayFactory; class IReplayFactory;
class IReplayScreenshotSystem; class IReplayScreenshotSystem;
class IReplayPerformancePlaybackHandler; class IReplayPerformancePlaybackHandler;
class KeyValues; class KeyValues;
class IReplayCamera; class IReplayCamera;
class CReplayPerformance; class CReplayPerformance;
struct RenderMovieParams_t; struct RenderMovieParams_t;
class IGameEvent; class IGameEvent;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
// //
// Allows the replay and engine DLL's to talk to the client. // Allows the replay and engine DLL's to talk to the client.
// //
class IClientReplay : public IBaseInterface class IClientReplay : public IBaseInterface
{ {
public: public:
virtual uint64 GetServerSessionId() = 0; virtual uint64 GetServerSessionId() = 0;
virtual bool CacheReplayRagdolls( const char* pFilename, int nStartTick ) = 0; // Cache replay ragdolls virtual bool CacheReplayRagdolls( const char* pFilename, int nStartTick ) = 0; // Cache replay ragdolls
virtual IReplayScreenshotSystem *GetReplayScreenshotSystem() = 0; // Get the client's replay screenshot system virtual IReplayScreenshotSystem *GetReplayScreenshotSystem() = 0; // Get the client's replay screenshot system
virtual IReplayPerformancePlaybackHandler *GetPerformancePlaybackHandler() = 0; virtual IReplayPerformancePlaybackHandler *GetPerformancePlaybackHandler() = 0;
virtual IReplayCamera *GetReplayCamera() = 0; virtual IReplayCamera *GetReplayCamera() = 0;
virtual void DisplayReplayMessage( const char *pLocalizeStr, bool bUrgent, bool bDlg, const char *pSound ) = 0; virtual void DisplayReplayMessage( const char *pLocalizeStr, bool bUrgent, bool bDlg, const char *pSound ) = 0;
virtual void DisplayReplayMessage( const wchar_t *pText, bool bUrgent, bool bDlg, const char *pSound ) = 0; virtual void DisplayReplayMessage( const wchar_t *pText, bool bUrgent, bool bDlg, const char *pSound ) = 0;
virtual void InitPerformanceEditor( ReplayHandle_t hReplay ) = 0; virtual void InitPerformanceEditor( ReplayHandle_t hReplay ) = 0;
virtual void HidePerformanceEditor() = 0; virtual void HidePerformanceEditor() = 0;
virtual bool ShouldRender() = 0; virtual bool ShouldRender() = 0;
virtual void PlaySound( const char *pSound ) = 0; virtual void PlaySound( const char *pSound ) = 0;
virtual void UploadOgsData( KeyValues *pData, bool bIncludeTimeField ) = 0; virtual void UploadOgsData( KeyValues *pData, bool bIncludeTimeField ) = 0;
virtual bool ShouldCompletePendingReplay( IGameEvent *pEvent ) = 0; virtual bool ShouldCompletePendingReplay( IGameEvent *pEvent ) = 0;
virtual void OnSaveReplay( ReplayHandle_t hNewReplay, bool bShowInputDlg ) = 0; virtual void OnSaveReplay( ReplayHandle_t hNewReplay, bool bShowInputDlg ) = 0;
virtual void OnDeleteReplay( ReplayHandle_t hReplay ) = 0; // Called before replay is actually removed from the replay manager virtual void OnDeleteReplay( ReplayHandle_t hReplay ) = 0; // Called before replay is actually removed from the replay manager
virtual void OnPlaybackComplete( ReplayHandle_t hReplay, int iPerformance ) = 0; virtual void OnPlaybackComplete( ReplayHandle_t hReplay, int iPerformance ) = 0;
virtual void OnRenderStart() = 0; virtual void OnRenderStart() = 0;
virtual void OnRenderComplete( const RenderMovieParams_t &RenderParams, bool bCancelled, bool bSuccess, bool bShowBrowser ) = 0; virtual void OnRenderComplete( const RenderMovieParams_t &RenderParams, bool bCancelled, bool bSuccess, bool bShowBrowser ) = 0;
virtual bool OnConfirmQuit() = 0; virtual bool OnConfirmQuit() = 0;
virtual bool OnEndOfReplayReached() = 0; virtual bool OnEndOfReplayReached() = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // ICLIENTREPLAY_H #endif // ICLIENTREPLAY_H

View File

@ -1,58 +1,58 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef ICLIENTREPLAYCONTEXT_H #ifndef ICLIENTREPLAYCONTEXT_H
#define ICLIENTREPLAYCONTEXT_H #define ICLIENTREPLAYCONTEXT_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "replay/ireplaycontext.h" #include "replay/ireplaycontext.h"
#include "replay/replayhandle.h" #include "replay/replayhandle.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#define REPLAYHISTORYMANAGER_INTERFACE_VERSION_CLIENT "VENGINE_CLIENT_REPLAY_HISTORY_MANAGER_001" #define REPLAYHISTORYMANAGER_INTERFACE_VERSION_CLIENT "VENGINE_CLIENT_REPLAY_HISTORY_MANAGER_001"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class CReplay; class CReplay;
class CReplayPerformance; class CReplayPerformance;
class IReplayManager; class IReplayManager;
class IReplayMovieManager; class IReplayMovieManager;
class IReplayMovieRenderer; class IReplayMovieRenderer;
class IReplayScreenshotManager; class IReplayScreenshotManager;
class IReplayPerformanceManager; class IReplayPerformanceManager;
class IReplayPerformanceController; class IReplayPerformanceController;
class IReplayRenderQueue; class IReplayRenderQueue;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class IClientReplayContext : public IReplayContext class IClientReplayContext : public IReplayContext
{ {
public: public:
virtual CReplay *GetReplay( ReplayHandle_t hReplay ) = 0; // Shorthand to GetReplayManager()->GetReplay() virtual CReplay *GetReplay( ReplayHandle_t hReplay ) = 0; // Shorthand to GetReplayManager()->GetReplay()
virtual IReplayManager *GetReplayManager() = 0; virtual IReplayManager *GetReplayManager() = 0;
virtual IReplayMovieRenderer *GetMovieRenderer() = 0; virtual IReplayMovieRenderer *GetMovieRenderer() = 0;
virtual IReplayMovieManager *GetMovieManager() = 0; virtual IReplayMovieManager *GetMovieManager() = 0;
virtual IReplayScreenshotManager *GetScreenshotManager() = 0; virtual IReplayScreenshotManager *GetScreenshotManager() = 0;
virtual IReplayPerformanceManager *GetPerformanceManager() = 0; virtual IReplayPerformanceManager *GetPerformanceManager() = 0;
virtual IReplayPerformanceController *GetPerformanceController() = 0; virtual IReplayPerformanceController *GetPerformanceController() = 0;
virtual IReplayRenderQueue *GetRenderQueue() = 0; virtual IReplayRenderQueue *GetRenderQueue() = 0;
virtual void SetMovieRenderer( IReplayMovieRenderer *pRenderer ) = 0; // Set to be the panel that renders replay movies, or NULL when nothing is rendering virtual void SetMovieRenderer( IReplayMovieRenderer *pRenderer ) = 0; // Set to be the panel that renders replay movies, or NULL when nothing is rendering
virtual void OnSignonStateFull() = 0; virtual void OnSignonStateFull() = 0;
virtual void OnClientSideDisconnect() = 0; // Called when client disconnects virtual void OnClientSideDisconnect() = 0; // Called when client disconnects
virtual void PlayReplay( ReplayHandle_t hReplay, int iPerformance, bool bPlaySound ) = 0; // Play the given replay, from spawn tick to death tick virtual void PlayReplay( ReplayHandle_t hReplay, int iPerformance, bool bPlaySound ) = 0; // Play the given replay, from spawn tick to death tick
virtual bool ReconstructReplayIfNecessary( CReplay *pReplay ) = 0; virtual bool ReconstructReplayIfNecessary( CReplay *pReplay ) = 0;
virtual void OnPlayerSpawn() = 0; // Called on the client when player is spawned virtual void OnPlayerSpawn() = 0; // Called on the client when player is spawned
virtual void OnPlayerClassChanged() = 0; // Called when the player's class changes - we use this instead of an event for immediacy virtual void OnPlayerClassChanged() = 0; // Called when the player's class changes - we use this instead of an event for immediacy
virtual void GetPlaybackTimes( float &flOutTime, float &flOutLength, const CReplay *pReplay, const CReplayPerformance *pPerformance ) = 0; // Calculate the current time and length of a replay or performance - takes in tick and out tick into account for performances - flCurTime should be gpGlobals->curtime. pPerformance can be NULL. virtual void GetPlaybackTimes( float &flOutTime, float &flOutLength, const CReplay *pReplay, const CReplayPerformance *pPerformance ) = 0; // Calculate the current time and length of a replay or performance - takes in tick and out tick into account for performances - flCurTime should be gpGlobals->curtime. pPerformance can be NULL.
virtual uint64 GetServerSessionId( ReplayHandle_t hReplay ) = 0; virtual uint64 GetServerSessionId( ReplayHandle_t hReplay ) = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // ICLIENTREPLAYCONTEXT_H #endif // ICLIENTREPLAYCONTEXT_H

View File

@ -1,104 +1,104 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef ICLIENTREPLAYHISTORYMANAGER_H #ifndef ICLIENTREPLAYHISTORYMANAGER_H
#define ICLIENTREPLAYHISTORYMANAGER_H #define ICLIENTREPLAYHISTORYMANAGER_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "replay/replayhandle.h" #include "replay/replayhandle.h"
#include "replay/screenshot.h" #include "replay/screenshot.h"
#include "interface.h" #include "interface.h"
#include "qlimits.h" #include "qlimits.h"
#include "convar.h" #include "convar.h"
#include "engine/http.h" #include "engine/http.h"
#include "tier1/utllinkedlist.h" #include "tier1/utllinkedlist.h"
#include "tier1/checksum_crc.h" #include "tier1/checksum_crc.h"
#include <time.h> #include <time.h>
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class IReplayDownloadGroup; class IReplayDownloadGroup;
class IReplayDownloadGroupHelper; class IReplayDownloadGroupHelper;
class CDmxElement; class CDmxElement;
class KeyValues; class KeyValues;
struct CaptureScreenshotParams_t; struct CaptureScreenshotParams_t;
struct RenderMovieParams_t; struct RenderMovieParams_t;
class CBaseReplay; class CBaseReplay;
class CReplay; class CReplay;
class IReplayMovieRenderer; class IReplayMovieRenderer;
class IReplayMovieManager; class IReplayMovieManager;
class IReplayMovie; class IReplayMovie;
class IReplayPerformanceManager; class IReplayPerformanceManager;
class IGameEvent; class IGameEvent;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class IClientReplayHistoryManager : public IBaseInterface class IClientReplayHistoryManager : public IBaseInterface
{ {
public: public:
virtual bool Init( CreateInterfaceFn fnCreateFactory ) = 0; virtual bool Init( CreateInterfaceFn fnCreateFactory ) = 0;
virtual void Shutdown() = 0; virtual void Shutdown() = 0;
virtual void Think() = 0; virtual void Think() = 0;
virtual bool IsInitialized() const = 0; virtual bool IsInitialized() const = 0;
virtual bool Commit( CBaseReplay *pNewReplay ) = 0; virtual bool Commit( CBaseReplay *pNewReplay ) = 0;
virtual void Save() = 0; // Write the entire index and any replays/groups/movies that are marked as dirty virtual void Save() = 0; // Write the entire index and any replays/groups/movies that are marked as dirty
virtual void FlagReplayForFlush( CBaseReplay *pReplay, bool bForceImmediateWrite ) = 0; // Mark the given replay as dirty - flush to disk at the next opportunity (see CBaseReplayHistoryManager::FlushThink()) virtual void FlagReplayForFlush( CBaseReplay *pReplay, bool bForceImmediateWrite ) = 0; // Mark the given replay as dirty - flush to disk at the next opportunity (see CBaseReplayHistoryManager::FlushThink())
virtual void Nuke() = 0; virtual void Nuke() = 0;
virtual void DeleteReplay( ReplayHandle_t hReplay, bool bNotifyUI ) = 0; virtual void DeleteReplay( ReplayHandle_t hReplay, bool bNotifyUI ) = 0;
virtual CBaseReplay *GetReplay( ReplayHandle_t hReplay ) = 0; virtual CBaseReplay *GetReplay( ReplayHandle_t hReplay ) = 0;
virtual const char *GetBaseDirectory() = 0; // Returns full directory to wherever replays.dmx lives, e.g. c:\program files (x86)\steam\steamapps\someuser\team fortress 2\game\tf\replays\client\ (or server\) - NOTE: includes trailing slash virtual const char *GetBaseDirectory() = 0; // Returns full directory to wherever replays.dmx lives, e.g. c:\program files (x86)\steam\steamapps\someuser\team fortress 2\game\tf\replays\client\ (or server\) - NOTE: includes trailing slash
virtual const char *GetReplaysSubDir() = 0; // Returns "client" or "server" virtual const char *GetReplaysSubDir() = 0; // Returns "client" or "server"
// For loop through all replays - indices should not be cached // For loop through all replays - indices should not be cached
virtual int GetReplayCount() const = 0; virtual int GetReplayCount() const = 0;
// virtual CBaseReplay *GetReplayAtIndex( int nIndex ) = 0; // virtual CBaseReplay *GetReplayAtIndex( int nIndex ) = 0;
virtual const char *GetFullReplayPath() = 0; // Get c:\...\game\tf\replays\<client or server>\ virtual const char *GetFullReplayPath() = 0; // Get c:\...\game\tf\replays\<client or server>\
// Client-specific // Client-specific
virtual int GetAdjustedDeathTick( CReplay *pReplay ) = 0; virtual int GetAdjustedDeathTick( CReplay *pReplay ) = 0;
virtual void FlagDownloadGroupForFlush( IReplayDownloadGroup *pGroup, bool bForceImmediate ) = 0; virtual void FlagDownloadGroupForFlush( IReplayDownloadGroup *pGroup, bool bForceImmediate ) = 0;
virtual void FlagMovieForFlush( IReplayMovie *pMovie, bool bForceImmediate ) = 0; // Flag the movie for flush - if pMovie is NULL, mark the index for flush virtual void FlagMovieForFlush( IReplayMovie *pMovie, bool bForceImmediate ) = 0; // Flag the movie for flush - if pMovie is NULL, mark the index for flush
virtual void SetMovieRenderer( IReplayMovieRenderer *pRenderer ) = 0; // Set to be the panel that renders replay movies, or NULL when nothing is rendering virtual void SetMovieRenderer( IReplayMovieRenderer *pRenderer ) = 0; // Set to be the panel that renders replay movies, or NULL when nothing is rendering
virtual bool ShouldGameRenderView() = 0; // Called from V_RenderView() to determine whether the game should render - used during movie rendering virtual bool ShouldGameRenderView() = 0; // Called from V_RenderView() to determine whether the game should render - used during movie rendering
virtual int GetUnrenderedReplayCount() = 0; // Get the number of unrendered replays virtual int GetUnrenderedReplayCount() = 0; // Get the number of unrendered replays
virtual void UpdateCurrentReplayDataFromServer() = 0; // Updates start tick, current file url, demo filename virtual void UpdateCurrentReplayDataFromServer() = 0; // Updates start tick, current file url, demo filename
virtual void LinkReplayToDownloadGroup() = 0; virtual void LinkReplayToDownloadGroup() = 0;
virtual void CaptureScreenshot( CaptureScreenshotParams_t &params ) = 0; // Schedules a screenshot capture at flDelay seconds in the future virtual void CaptureScreenshot( CaptureScreenshotParams_t &params ) = 0; // Schedules a screenshot capture at flDelay seconds in the future
virtual void DoCaptureScreenshot() = 0; // Takes the screenshot right now virtual void DoCaptureScreenshot() = 0; // Takes the screenshot right now
virtual bool ShouldCaptureScreenshot() = 0; // Is screenshot scheduled to be taken right now? virtual bool ShouldCaptureScreenshot() = 0; // Is screenshot scheduled to be taken right now?
virtual void GetUnpaddedScreenshotSize( int &nWidth, int &nHeight ) = 0; // Get the dimensions for a screenshot if we take one right now, based on replay_screenshotresolution and the current aspect ratio virtual void GetUnpaddedScreenshotSize( int &nWidth, int &nHeight ) = 0; // Get the dimensions for a screenshot if we take one right now, based on replay_screenshotresolution and the current aspect ratio
virtual void DeleteScreenshotsForReplay( CReplay *pReplay ) = 0; // Deletes all screenshots associated with the given replay virtual void DeleteScreenshotsForReplay( CReplay *pReplay ) = 0; // Deletes all screenshots associated with the given replay
virtual void PlayReplay( ReplayHandle_t hReplay ) = 0; // Play the given replay, from spawn tick to death tick virtual void PlayReplay( ReplayHandle_t hReplay ) = 0; // Play the given replay, from spawn tick to death tick
virtual void RenderMovie( RenderMovieParams_t const& params ) = 0; // Renders the given replay - or if params.hReplay is -1, render all unrendered replays virtual void RenderMovie( RenderMovieParams_t const& params ) = 0; // Renders the given replay - or if params.hReplay is -1, render all unrendered replays
virtual void CompleteRender( bool bSuccess ) = 0; virtual void CompleteRender( bool bSuccess ) = 0;
virtual void OnClientSideDisconnect() = 0; // Called when client disconnects virtual void OnClientSideDisconnect() = 0; // Called when client disconnects
virtual void OnSignonStateFull() = 0; virtual void OnSignonStateFull() = 0;
virtual void OnPlayerSpawn() = 0; // Called on the client when player is spawned virtual void OnPlayerSpawn() = 0; // Called on the client when player is spawned
virtual void OnPlayerClassChanged() = 0; // Called when the player's class changes - we use this instead of an event for immediacy virtual void OnPlayerClassChanged() = 0; // Called when the player's class changes - we use this instead of an event for immediacy
virtual void OnReplayRecordingCvarChanged() = 0; // Called (on client only) when replay_recording is set to 1 virtual void OnReplayRecordingCvarChanged() = 0; // Called (on client only) when replay_recording is set to 1
virtual void OnGroupDeleted() = 0; virtual void OnGroupDeleted() = 0;
virtual CReplay *GetPlayingReplay() = 0; // Get the currently playing replay, otherwise NULL if one isn't playing virtual CReplay *GetPlayingReplay() = 0; // Get the currently playing replay, otherwise NULL if one isn't playing
virtual CReplay *GetReplayForCurrentLife() = 0; // Gets the current replay (constant from local player spawn until next spawn/disconnect/exit) virtual CReplay *GetReplayForCurrentLife() = 0; // Gets the current replay (constant from local player spawn until next spawn/disconnect/exit)
virtual bool IsRendering() = 0; // Are we currently rendering a movie? virtual bool IsRendering() = 0; // Are we currently rendering a movie?
virtual void CancelRender() = 0; // If we're currently rendering, cancel virtual void CancelRender() = 0; // If we're currently rendering, cancel
virtual IReplayMovieManager *GetMovieManager() = 0; virtual IReplayMovieManager *GetMovieManager() = 0;
virtual IReplayMovieRenderer *GetMovieRenderer() = 0; virtual IReplayMovieRenderer *GetMovieRenderer() = 0;
virtual const RenderMovieParams_t *GetRenderSettings() = 0; virtual const RenderMovieParams_t *GetRenderSettings() = 0;
virtual IReplayDownloadGroupHelper *GetDownloadGroupHelper() = 0; virtual IReplayDownloadGroupHelper *GetDownloadGroupHelper() = 0;
virtual IReplayPerformanceManager *GetPerformanceManager() = 0; virtual IReplayPerformanceManager *GetPerformanceManager() = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // ICLIENTREPLAYHISTORYMANAGER_H #endif // ICLIENTREPLAYHISTORYMANAGER_H

View File

@ -1,116 +1,116 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef IENGINEREPLAY_H #ifndef IENGINEREPLAY_H
#define IENGINEREPLAY_H #define IENGINEREPLAY_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "interface.h" #include "interface.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#define ENGINE_REPLAY_INTERFACE_VERSION "EngineReplay001" #define ENGINE_REPLAY_INTERFACE_VERSION "EngineReplay001"
#if !defined( DEDICATED ) #if !defined( DEDICATED )
# define ENGINE_REPLAY_CLIENT_INTERFACE_VERSION "EngineClientReplay001" # define ENGINE_REPLAY_CLIENT_INTERFACE_VERSION "EngineClientReplay001"
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class IServer; class IServer;
class INetChannel; class INetChannel;
class IReplayServer; class IReplayServer;
class IClientEntityList; class IClientEntityList;
class IClientReplay; class IClientReplay;
struct demoheader_t; struct demoheader_t;
class CGlobalVarsBase; class CGlobalVarsBase;
class IDemoBuffer; class IDemoBuffer;
class CBaseRecordingSessionBlock; class CBaseRecordingSessionBlock;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
// //
// Allows the replay, client & server DLL's to talk to the engine // Allows the replay, client & server DLL's to talk to the engine
// //
class IEngineReplay : public IBaseInterface class IEngineReplay : public IBaseInterface
{ {
public: public:
virtual bool IsSupportedModAndPlatform() = 0; virtual bool IsSupportedModAndPlatform() = 0;
virtual float GetHostTime() = 0; virtual float GetHostTime() = 0;
virtual int GetHostTickCount() = 0; virtual int GetHostTickCount() = 0;
virtual int TimeToTicks( float flTime ) = 0; virtual int TimeToTicks( float flTime ) = 0;
virtual float TicksToTime( int nTick ) = 0; virtual float TicksToTime( int nTick ) = 0;
virtual bool ReadDemoHeader( const char *pFilename, demoheader_t &header ) = 0; virtual bool ReadDemoHeader( const char *pFilename, demoheader_t &header ) = 0;
virtual const char *GetGameDir() = 0; virtual const char *GetGameDir() = 0;
virtual void Cbuf_AddText( const char *pCmd ) = 0; virtual void Cbuf_AddText( const char *pCmd ) = 0;
virtual void Cbuf_Execute() = 0; virtual void Cbuf_Execute() = 0;
virtual void Host_Disconnect( bool bShowMainMenu ) = 0; virtual void Host_Disconnect( bool bShowMainMenu ) = 0;
virtual void HostState_Shutdown() = 0; virtual void HostState_Shutdown() = 0;
virtual const char *GetModDir() = 0; virtual const char *GetModDir() = 0;
virtual bool CopyFile( const char *pSource, const char *pDest ) = 0; virtual bool CopyFile( const char *pSource, const char *pDest ) = 0;
virtual bool LZSS_Compress( char *pDest, unsigned int *pDestLen, const char *pSource, unsigned int nSourceLen ) = 0; virtual bool LZSS_Compress( char *pDest, unsigned int *pDestLen, const char *pSource, unsigned int nSourceLen ) = 0;
virtual bool LZSS_Decompress( char *pDest, unsigned int *pDestLen, const char *pSource, unsigned int nSourceLen ) = 0; virtual bool LZSS_Decompress( char *pDest, unsigned int *pDestLen, const char *pSource, unsigned int nSourceLen ) = 0;
virtual bool MD5_HashBuffer( unsigned char pDigest[16], const unsigned char *pBuffer, int nSize, unsigned int pSeed[4] ) = 0; virtual bool MD5_HashBuffer( unsigned char pDigest[16], const unsigned char *pBuffer, int nSize, unsigned int pSeed[4] ) = 0;
// Server-specific // Server-specific
virtual IReplayServer *GetReplayServer() = 0; virtual IReplayServer *GetReplayServer() = 0;
virtual IServer *GetReplayServerAsIServer() = 0; virtual IServer *GetReplayServerAsIServer() = 0;
virtual IServer *GetGameServer() = 0; virtual IServer *GetGameServer() = 0;
virtual bool GetSessionRecordBuffer( uint8 **ppSessionBuffer, int *pSize ) = 0; virtual bool GetSessionRecordBuffer( uint8 **ppSessionBuffer, int *pSize ) = 0;
virtual bool IsDedicated() = 0; virtual bool IsDedicated() = 0;
virtual void ResetReplayRecordBuffer() = 0; virtual void ResetReplayRecordBuffer() = 0;
virtual demoheader_t *GetReplayDemoHeader() = 0; virtual demoheader_t *GetReplayDemoHeader() = 0;
virtual void RecalculateTags() = 0; virtual void RecalculateTags() = 0;
virtual bool NET_GetHostnameAsIP( const char *pHostname, char *pOut, int nOutSize ) = 0; virtual bool NET_GetHostnameAsIP( const char *pHostname, char *pOut, int nOutSize ) = 0;
}; };
// //
// Allows the replay and client DLL's to talk to the engine // Allows the replay and client DLL's to talk to the engine
// //
#if !defined( DEDICATED ) #if !defined( DEDICATED )
class IEngineClientReplay : public IBaseInterface class IEngineClientReplay : public IBaseInterface
{ {
public: public:
virtual INetChannel *GetNetChannel() = 0; virtual INetChannel *GetNetChannel() = 0;
virtual bool IsConnected() = 0; virtual bool IsConnected() = 0;
virtual bool IsListenServer() = 0; virtual bool IsListenServer() = 0;
virtual float GetLastServerTickTime() = 0; virtual float GetLastServerTickTime() = 0;
virtual const char *GetLevelName() = 0; virtual const char *GetLevelName() = 0;
virtual const char *GetLevelNameShort() = 0; virtual const char *GetLevelNameShort() = 0;
virtual int GetPlayerSlot() = 0; virtual int GetPlayerSlot() = 0;
virtual bool IsPlayingReplayDemo() = 0; virtual bool IsPlayingReplayDemo() = 0;
virtual IClientEntityList *GetClientEntityList() = 0; virtual IClientEntityList *GetClientEntityList() = 0;
virtual IClientReplay *GetClientReplayInt() = 0; virtual IClientReplay *GetClientReplayInt() = 0;
virtual uint32 GetClientSteamID() = 0; virtual uint32 GetClientSteamID() = 0;
virtual void Con_NPrintf( int nPos, PRINTF_FORMAT_STRING const char *pFormat, ... ) = 0; virtual void Con_NPrintf( int nPos, PRINTF_FORMAT_STRING const char *pFormat, ... ) = 0;
virtual CGlobalVarsBase *GetClientGlobalVars() = 0; virtual CGlobalVarsBase *GetClientGlobalVars() = 0;
virtual void VGui_PlaySound( const char *pSound ) = 0; virtual void VGui_PlaySound( const char *pSound ) = 0;
virtual void EngineVGui_ConfirmQuit() = 0; virtual void EngineVGui_ConfirmQuit() = 0;
virtual int GetScreenWidth() = 0; virtual int GetScreenWidth() = 0;
virtual int GetScreenHeight() = 0; virtual int GetScreenHeight() = 0;
virtual bool IsDemoPlayingBack() = 0; virtual bool IsDemoPlayingBack() = 0;
virtual bool IsGamePathValidAndSafeForDownload( const char *pGamePath ) = 0; virtual bool IsGamePathValidAndSafeForDownload( const char *pGamePath ) = 0;
virtual bool IsInGame() = 0; virtual bool IsInGame() = 0;
virtual void InitSoundRecord() = 0; virtual void InitSoundRecord() = 0;
virtual void Wave_CreateTmpFile( const char *pFilename ) = 0; virtual void Wave_CreateTmpFile( const char *pFilename ) = 0;
virtual void Wave_AppendTmpFile( const char *pFilename, void *pBuffer, int nNumSamples ) = 0; virtual void Wave_AppendTmpFile( const char *pFilename, void *pBuffer, int nNumSamples ) = 0;
virtual void Wave_FixupTmpFile( const char *pFilename ) = 0; virtual void Wave_FixupTmpFile( const char *pFilename ) = 0;
}; };
#endif // !defined( DEDICATED ) #endif // !defined( DEDICATED )
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // IENGINEREPLAY_H #endif // IENGINEREPLAY_H

View File

@ -1,46 +1,46 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef IQUERYABLEREPLAYITEM_H #ifndef IQUERYABLEREPLAYITEM_H
#define IQUERYABLEREPLAYITEM_H #define IQUERYABLEREPLAYITEM_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "interface.h" #include "interface.h"
#include "iqueryablereplayitem.h" #include "iqueryablereplayitem.h"
#include "replay/replayhandle.h" #include "replay/replayhandle.h"
#include "replay/replaytime.h" #include "replay/replaytime.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class CReplay; class CReplay;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
typedef int QueryableReplayItemHandle_t; typedef int QueryableReplayItemHandle_t;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
abstract_class IQueryableReplayItem : public IBaseInterface abstract_class IQueryableReplayItem : public IBaseInterface
{ {
public: public:
virtual const CReplayTime &GetItemDate() const = 0; virtual const CReplayTime &GetItemDate() const = 0;
virtual bool IsItemRendered() const = 0; virtual bool IsItemRendered() const = 0;
virtual CReplay *GetItemReplay() = 0; virtual CReplay *GetItemReplay() = 0;
virtual ReplayHandle_t GetItemReplayHandle() const = 0; virtual ReplayHandle_t GetItemReplayHandle() const = 0;
virtual QueryableReplayItemHandle_t GetItemHandle() const = 0; // Get the handle of this item virtual QueryableReplayItemHandle_t GetItemHandle() const = 0; // Get the handle of this item
virtual const wchar_t *GetItemTitle() const = 0; virtual const wchar_t *GetItemTitle() const = 0;
virtual void SetItemTitle( const wchar_t *pTitle ) = 0; virtual void SetItemTitle( const wchar_t *pTitle ) = 0;
virtual float GetItemLength() const = 0; virtual float GetItemLength() const = 0;
virtual void *GetUserData() = 0; virtual void *GetUserData() = 0;
virtual void SetUserData( void *pUserData ) = 0; virtual void SetUserData( void *pUserData ) = 0;
virtual bool IsItemAMovie() const = 0; virtual bool IsItemAMovie() const = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // IQUERYABLEREPLAYITEM_H #endif // IQUERYABLEREPLAYITEM_H

View File

@ -1,27 +1,27 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef IRECORDINGSESSION_H #ifndef IRECORDINGSESSION_H
#define IRECORDINGSESSION_H #define IRECORDINGSESSION_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "interface.h" #include "interface.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class CBaseRecordingSessionBlock; class CBaseRecordingSessionBlock;
class IRecordingSession : public IBaseInterface class IRecordingSession : public IBaseInterface
{ {
public: public:
virtual void AddBlock( CBaseRecordingSessionBlock *pBlock ) = 0; virtual void AddBlock( CBaseRecordingSessionBlock *pBlock ) = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // IRECORDINGSESSION_H #endif // IRECORDINGSESSION_H

View File

@ -1,30 +1,30 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef IRECORDINGSESSIONBLOCKMANAGER_H #ifndef IRECORDINGSESSIONBLOCKMANAGER_H
#define IRECORDINGSESSIONBLOCKMANAGER_H #define IRECORDINGSESSIONBLOCKMANAGER_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "interface.h" #include "interface.h"
#include "replay/replayhandle.h" #include "replay/replayhandle.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class IRecordingSessionBlockManager : public IBaseInterface class IRecordingSessionBlockManager : public IBaseInterface
{ {
public: public:
virtual CBaseRecordingSessionBlock *GetBlock( ReplayHandle_t hBlock ) = 0; virtual CBaseRecordingSessionBlock *GetBlock( ReplayHandle_t hBlock ) = 0;
virtual void DeleteBlock( CBaseRecordingSessionBlock *pBlock ) = 0; virtual void DeleteBlock( CBaseRecordingSessionBlock *pBlock ) = 0;
virtual void UnloadBlock( CBaseRecordingSessionBlock *pBlock ) = 0; virtual void UnloadBlock( CBaseRecordingSessionBlock *pBlock ) = 0;
virtual const char *GetBlockPath() const = 0; virtual const char *GetBlockPath() const = 0;
virtual void LoadBlockFromFileName( const char *pFilename, IRecordingSession *pSession ) = 0; virtual void LoadBlockFromFileName( const char *pFilename, IRecordingSession *pSession ) = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // IRECORDINGSESSIONBLOCKMANAGER_H #endif // IRECORDINGSESSIONBLOCKMANAGER_H

View File

@ -1,33 +1,33 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef IRECORDINGSESSIONMANAGER_H #ifndef IRECORDINGSESSIONMANAGER_H
#define IRECORDINGSESSIONMANAGER_H #define IRECORDINGSESSIONMANAGER_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "interface.h" #include "interface.h"
#include "replay/replayhandle.h" #include "replay/replayhandle.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class CBaseRecordingSession; class CBaseRecordingSession;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class IRecordingSessionManager : public IBaseInterface class IRecordingSessionManager : public IBaseInterface
{ {
public: public:
virtual CBaseRecordingSession *FindSession( ReplayHandle_t hSession ) = 0; virtual CBaseRecordingSession *FindSession( ReplayHandle_t hSession ) = 0;
virtual const CBaseRecordingSession *FindSession( ReplayHandle_t hSession ) const = 0; virtual const CBaseRecordingSession *FindSession( ReplayHandle_t hSession ) const = 0;
virtual void FlagSessionForFlush( CBaseRecordingSession *pSession, bool bForceImmediate ) = 0; virtual void FlagSessionForFlush( CBaseRecordingSession *pSession, bool bForceImmediate ) = 0;
virtual int GetServerStartTickForSession( ReplayHandle_t hSession ) = 0; virtual int GetServerStartTickForSession( ReplayHandle_t hSession ) = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // IRECORDINGSESSIONMANAGER_H #endif // IRECORDINGSESSIONMANAGER_H

View File

@ -1,25 +1,25 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#ifndef IREPLAYCAMERA_H #ifndef IREPLAYCAMERA_H
#define IREPLAYCAMERA_H #define IREPLAYCAMERA_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "interface.h" #include "interface.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
abstract_class IReplayCamera : public IBaseInterface abstract_class IReplayCamera : public IBaseInterface
{ {
public: public:
virtual void ClearOverrideView() = 0; virtual void ClearOverrideView() = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // IREPLAYCAMERA_H #endif // IREPLAYCAMERA_H

View File

@ -1,47 +1,47 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef IREPLAYCONTEXT_H #ifndef IREPLAYCONTEXT_H
#define IREPLAYCONTEXT_H #define IREPLAYCONTEXT_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "interface.h" #include "interface.h"
#include "replay/replayhandle.h" #include "replay/replayhandle.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class IRecordingSessionManager; class IRecordingSessionManager;
class IRecordingSessionBlockManager; class IRecordingSessionBlockManager;
class IRecordingSession; class IRecordingSession;
class IReplayErrorSystem; class IReplayErrorSystem;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class IReplayContext : public IBaseInterface class IReplayContext : public IBaseInterface
{ {
public: public:
virtual bool Init( CreateInterfaceFn fnCreateFactory ) = 0; virtual bool Init( CreateInterfaceFn fnCreateFactory ) = 0;
virtual void Shutdown() = 0; virtual void Shutdown() = 0;
virtual void Think() = 0; virtual void Think() = 0;
virtual bool IsInitialized() const = 0; virtual bool IsInitialized() const = 0;
virtual const char *GetRelativeBaseDir() const = 0; // Returns path to wherever the index .dmx lives relative to the game path, e.g. "replay\client\" virtual const char *GetRelativeBaseDir() const = 0; // Returns path to wherever the index .dmx lives relative to the game path, e.g. "replay\client\"
virtual const char *GetBaseDir() const = 0; // Returns full directory to wherever the index .dmx lives, e.g. c:\program files (x86)\steam\steamapps\<username>\team fortress 2\tf\replays\<client|server>\ -- NOTE: includes trailing slash virtual const char *GetBaseDir() const = 0; // Returns full directory to wherever the index .dmx lives, e.g. c:\program files (x86)\steam\steamapps\<username>\team fortress 2\tf\replays\<client|server>\ -- NOTE: includes trailing slash
virtual const char *GetReplaySubDir() const = 0; // Returns "client" or "server" virtual const char *GetReplaySubDir() const = 0; // Returns "client" or "server"
virtual IReplayErrorSystem *GetErrorSystem() = 0; virtual IReplayErrorSystem *GetErrorSystem() = 0;
virtual IRecordingSessionManager *GetRecordingSessionManager() = 0; virtual IRecordingSessionManager *GetRecordingSessionManager() = 0;
virtual IRecordingSessionBlockManager *GetRecordingSessionBlockManager() = 0; virtual IRecordingSessionBlockManager *GetRecordingSessionBlockManager() = 0;
virtual IRecordingSession *GetRecordingSession( ReplayHandle_t hSession ) = 0; virtual IRecordingSession *GetRecordingSession( ReplayHandle_t hSession ) = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // IREPLAYCONTEXT_H #endif // IREPLAYCONTEXT_H

View File

@ -1,42 +1,42 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef IREPLAYDEMOPLAYER_H #ifndef IREPLAYDEMOPLAYER_H
#define IREPLAYDEMOPLAYER_H #define IREPLAYDEMOPLAYER_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "interface.h" #include "interface.h"
#include "replay/replay.h" #include "replay/replay.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#define INTERFACEVERSION_REPLAYDEMOPLAYER "ReplayDemoPlayer001" #define INTERFACEVERSION_REPLAYDEMOPLAYER "ReplayDemoPlayer001"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
// //
// Interface for replay demo player // Interface for replay demo player
// //
class IReplayDemoPlayer : public IBaseInterface class IReplayDemoPlayer : public IBaseInterface
{ {
public: public:
virtual void PlayReplay( ReplayHandle_t hReplay, int iPerformance ) = 0; virtual void PlayReplay( ReplayHandle_t hReplay, int iPerformance ) = 0;
virtual void PlayNextReplay() = 0; virtual void PlayNextReplay() = 0;
virtual void ClearReplayList() = 0; virtual void ClearReplayList() = 0;
virtual void AddReplayToList( ReplayHandle_t hReplay, int iPerformance ) = 0; virtual void AddReplayToList( ReplayHandle_t hReplay, int iPerformance ) = 0;
virtual CReplay *GetCurrentReplay() = 0; virtual CReplay *GetCurrentReplay() = 0;
virtual CReplayPerformance *GetCurrentPerformance() = 0; // The playing replay, or NULL if playing the original replay virtual CReplayPerformance *GetCurrentPerformance() = 0; // The playing replay, or NULL if playing the original replay
virtual void PauseReplay() = 0; virtual void PauseReplay() = 0;
virtual bool IsReplayPaused() = 0; virtual bool IsReplayPaused() = 0;
virtual void ResumeReplay() = 0; virtual void ResumeReplay() = 0;
virtual void OnSignonStateFull() = 0; virtual void OnSignonStateFull() = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // IREPLAYDEMOPLAYER_H #endif // IREPLAYDEMOPLAYER_H

View File

@ -1,33 +1,33 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef IREPLAYERRORSYSYTEM_H #ifndef IREPLAYERRORSYSYTEM_H
#define IREPLAYERRORSYSYTEM_H #define IREPLAYERRORSYSYTEM_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "interface.h" #include "interface.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class KeyValues; class KeyValues;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
// //
// Replay error system // Replay error system
// //
class IReplayErrorSystem : public IBaseInterface class IReplayErrorSystem : public IBaseInterface
{ {
public: public:
virtual void AddErrorFromTokenName( const char *pToken ) = 0; virtual void AddErrorFromTokenName( const char *pToken ) = 0;
virtual void AddFormattedErrorFromTokenName( const char *pFormatToken, KeyValues *pFormatArgs ) = 0; virtual void AddFormattedErrorFromTokenName( const char *pFormatToken, KeyValues *pFormatArgs ) = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // IREPLAYERRORSYSYTEM_H #endif // IREPLAYERRORSYSYTEM_H

View File

@ -1,31 +1,31 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef IREPLAYFACTORY_H #ifndef IREPLAYFACTORY_H
#define IREPLAYFACTORY_H #define IREPLAYFACTORY_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "interface.h" #include "interface.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class CReplay; class CReplay;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
abstract_class IReplayFactory : public IBaseInterface abstract_class IReplayFactory : public IBaseInterface
{ {
public: public:
virtual CReplay *Create() = 0; virtual CReplay *Create() = 0;
}; };
#define INTERFACE_VERSION_REPLAY_FACTORY "IReplayFactory001" #define INTERFACE_VERSION_REPLAY_FACTORY "IReplayFactory001"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // IREPLAYFACTORY_H #endif // IREPLAYFACTORY_H

View File

@ -1,42 +1,42 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef IREPLAYMANAGER_H #ifndef IREPLAYMANAGER_H
#define IREPLAYMANAGER_H #define IREPLAYMANAGER_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "interface.h" #include "interface.h"
#include "replay/replayhandle.h" #include "replay/replayhandle.h"
#include "utllinkedlist.h" #include "utllinkedlist.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class CReplay; class CReplay;
class IQueryableReplayItem; class IQueryableReplayItem;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class IReplayManager : public IBaseInterface class IReplayManager : public IBaseInterface
{ {
public: public:
virtual CReplay *GetReplay( ReplayHandle_t hReplay ) = 0; virtual CReplay *GetReplay( ReplayHandle_t hReplay ) = 0;
virtual CReplay *GetPlayingReplay() = 0; virtual CReplay *GetPlayingReplay() = 0;
virtual CReplay *GetReplayForCurrentLife() = 0; virtual CReplay *GetReplayForCurrentLife() = 0;
virtual void FlagReplayForFlush( CReplay *pReplay, bool bForceImmediate ) = 0; virtual void FlagReplayForFlush( CReplay *pReplay, bool bForceImmediate ) = 0;
virtual void DeleteReplay( ReplayHandle_t hReplay, bool bNotifyUI ) = 0; virtual void DeleteReplay( ReplayHandle_t hReplay, bool bNotifyUI ) = 0;
virtual int GetReplayCount() const = 0; virtual int GetReplayCount() const = 0;
virtual int GetUnrenderedReplayCount() = 0; // Get the number of unrendered replays virtual int GetUnrenderedReplayCount() = 0; // Get the number of unrendered replays
virtual void GetReplays( CUtlLinkedList< CReplay *, int > &lstReplays ) = 0; virtual void GetReplays( CUtlLinkedList< CReplay *, int > &lstReplays ) = 0;
virtual void GetReplaysAsQueryableItems( CUtlLinkedList< IQueryableReplayItem *, int > &lstReplays ) = 0; virtual void GetReplaysAsQueryableItems( CUtlLinkedList< IQueryableReplayItem *, int > &lstReplays ) = 0;
virtual float GetDownloadProgress( const CReplay *pReplay ) = 0; virtual float GetDownloadProgress( const CReplay *pReplay ) = 0;
virtual const char *GetReplaysDir() const = 0; virtual const char *GetReplaysDir() const = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // IREPLAYMANAGER_H #endif // IREPLAYMANAGER_H

View File

@ -1,42 +1,42 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef IREPLAYMOVIE_H #ifndef IREPLAYMOVIE_H
#define IREPLAYMOVIE_H #define IREPLAYMOVIE_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "iqueryablereplayitem.h" #include "iqueryablereplayitem.h"
#include "replay/rendermovieparams.h" #include "replay/rendermovieparams.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
abstract_class IReplayMovie : public IQueryableReplayItem abstract_class IReplayMovie : public IQueryableReplayItem
{ {
public: public:
virtual ReplayHandle_t GetMovieHandle() const = 0; virtual ReplayHandle_t GetMovieHandle() const = 0;
virtual ReplayHandle_t GetReplayHandle() const = 0; virtual ReplayHandle_t GetReplayHandle() const = 0;
virtual const ReplayRenderSettings_t &GetRenderSettings() = 0; virtual const ReplayRenderSettings_t &GetRenderSettings() = 0;
virtual void GetFrameDimensions( int &nWidth, int &nHeight ) = 0; virtual void GetFrameDimensions( int &nWidth, int &nHeight ) = 0;
virtual void SetIsRendered( bool bIsRendered ) = 0; virtual void SetIsRendered( bool bIsRendered ) = 0;
virtual void SetMovieFilename( const char *pFilename ) = 0; virtual void SetMovieFilename( const char *pFilename ) = 0;
virtual const char *GetMovieFilename() const = 0; virtual const char *GetMovieFilename() const = 0;
virtual void SetMovieTitle( const wchar_t *pTitle ) = 0; virtual void SetMovieTitle( const wchar_t *pTitle ) = 0;
virtual void SetRenderTime( float flRenderTime ) = 0; virtual void SetRenderTime( float flRenderTime ) = 0;
virtual float GetRenderTime() const = 0; virtual float GetRenderTime() const = 0;
virtual void CaptureRecordTime() = 0; virtual void CaptureRecordTime() = 0;
virtual void SetLength( float flLength ) = 0; virtual void SetLength( float flLength ) = 0;
virtual bool IsUploaded() const = 0; virtual bool IsUploaded() const = 0;
virtual void SetUploaded( bool bUploaded ) = 0; virtual void SetUploaded( bool bUploaded ) = 0;
virtual void SetUploadURL( const char *pURL ) = 0; virtual void SetUploadURL( const char *pURL ) = 0;
virtual const char *GetUploadURL() const = 0; virtual const char *GetUploadURL() const = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // IREPLAYMOVIE_H #endif // IREPLAYMOVIE_H

View File

@ -1,56 +1,56 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef IREPLAYMOVIEMANAGER_H #ifndef IREPLAYMOVIEMANAGER_H
#define IREPLAYMOVIEMANAGER_H #define IREPLAYMOVIEMANAGER_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "interface.h" #include "interface.h"
#include "utlstring.h" #include "utlstring.h"
#include "utllinkedlist.h" #include "utllinkedlist.h"
#include "replay/replayhandle.h" #include "replay/replayhandle.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class IReplayMovie; class IReplayMovie;
class CReplay; class CReplay;
struct RenderMovieParams_t; struct RenderMovieParams_t;
class IQueryableReplayItem; class IQueryableReplayItem;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
abstract_class IReplayMovieManager : public IBaseInterface abstract_class IReplayMovieManager : public IBaseInterface
{ {
public: public:
virtual int GetMovieCount() = 0; virtual int GetMovieCount() = 0;
virtual void GetMovieList( CUtlLinkedList< IReplayMovie * > &list ) = 0; // Fills the list with all movies virtual void GetMovieList( CUtlLinkedList< IReplayMovie * > &list ) = 0; // Fills the list with all movies
virtual IReplayMovie *GetMovie( ReplayHandle_t hMovie ) = 0; virtual IReplayMovie *GetMovie( ReplayHandle_t hMovie ) = 0;
virtual IReplayMovie *CreateAndAddMovie( ReplayHandle_t hReplay ) = 0; // Creates and adds a movie based on the given replay virtual IReplayMovie *CreateAndAddMovie( ReplayHandle_t hReplay ) = 0; // Creates and adds a movie based on the given replay
virtual void DeleteMovie( ReplayHandle_t hMovie ) = 0; // Delete a movie virtual void DeleteMovie( ReplayHandle_t hMovie ) = 0; // Delete a movie
virtual int GetNumMoviesDependentOnReplay( const CReplay *pReplay ) = 0; // Get the number of movies that depend on the given replay virtual int GetNumMoviesDependentOnReplay( const CReplay *pReplay ) = 0; // Get the number of movies that depend on the given replay
virtual void GetCachedMovieTitleAndClear( wchar_t *pOut, int nOutBufLength ) = 0; // TODO: This is a hack - fix this virtual void GetCachedMovieTitleAndClear( wchar_t *pOut, int nOutBufLength ) = 0; // TODO: This is a hack - fix this
virtual void SetPendingMovie( IReplayMovie *pMovie ) = 0; virtual void SetPendingMovie( IReplayMovie *pMovie ) = 0;
virtual IReplayMovie *GetPendingMovie() = 0; virtual IReplayMovie *GetPendingMovie() = 0;
virtual void FlagMovieForFlush( IReplayMovie *pMovie, bool bImmediate ) = 0; virtual void FlagMovieForFlush( IReplayMovie *pMovie, bool bImmediate ) = 0;
virtual void GetMoviesAsQueryableItems( CUtlLinkedList< IQueryableReplayItem *, int > &lstMovies ) = 0; virtual void GetMoviesAsQueryableItems( CUtlLinkedList< IQueryableReplayItem *, int > &lstMovies ) = 0;
virtual const char *GetRenderDir() const = 0; virtual const char *GetRenderDir() const = 0;
virtual const char *GetRawExportDir() const = 0; virtual const char *GetRawExportDir() const = 0;
// TODO: Is this the best place for code that actually manages rendering? // TODO: Is this the best place for code that actually manages rendering?
virtual bool IsRendering() const = 0; virtual bool IsRendering() const = 0;
virtual bool RenderingCancelled() const = 0; virtual bool RenderingCancelled() const = 0;
virtual void RenderMovie( RenderMovieParams_t const& params ) = 0; // Renders the given replay - or if params.hReplay is -1, render all unrendered replays virtual void RenderMovie( RenderMovieParams_t const& params ) = 0; // Renders the given replay - or if params.hReplay is -1, render all unrendered replays
virtual void RenderNextMovie() = 0; virtual void RenderNextMovie() = 0;
virtual void CompleteRender( bool bSuccess, bool bShowBrowser ) = 0; virtual void CompleteRender( bool bSuccess, bool bShowBrowser ) = 0;
virtual void CancelRender() = 0; virtual void CancelRender() = 0;
virtual void ClearRenderCancelledFlag() = 0; virtual void ClearRenderCancelledFlag() = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // IREPLAYMOVIEMANAGER_H #endif // IREPLAYMOVIEMANAGER_H

View File

@ -1,33 +1,33 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef IREPLAYMOVIERENDERER_H #ifndef IREPLAYMOVIERENDERER_H
#define IREPLAYMOVIERENDERER_H #define IREPLAYMOVIERENDERER_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class IReplayMovie; class IReplayMovie;
struct RenderMovieParams_t; struct RenderMovieParams_t;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
abstract_class IReplayMovieRenderer : public IBaseInterface abstract_class IReplayMovieRenderer : public IBaseInterface
{ {
public: public:
virtual bool SetupRenderer( RenderMovieParams_t &params, IReplayMovie *pMovie ) = 0; virtual bool SetupRenderer( RenderMovieParams_t &params, IReplayMovie *pMovie ) = 0;
virtual void ShutdownRenderer() = 0; virtual void ShutdownRenderer() = 0;
virtual void RenderVideo() = 0; virtual void RenderVideo() = 0;
virtual void RenderAudio( unsigned char *pBuffer, int nSize, int nNumSamples ) = 0; virtual void RenderAudio( unsigned char *pBuffer, int nSize, int nNumSamples ) = 0;
virtual void SetAudioSyncFrame( bool isSync = false ) = 0; virtual void SetAudioSyncFrame( bool isSync = false ) = 0;
virtual bool IsAudioSyncFrame() = 0; virtual bool IsAudioSyncFrame() = 0;
virtual float GetRecordingFrameDuration() = 0; virtual float GetRecordingFrameDuration() = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // IREPLAYMOVIERENDERER_H #endif // IREPLAYMOVIERENDERER_H

View File

@ -1,107 +1,107 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef IREPLAYPERFORMANCECONTROLLER_H #ifndef IREPLAYPERFORMANCECONTROLLER_H
#define IREPLAYPERFORMANCECONTROLLER_H #define IREPLAYPERFORMANCECONTROLLER_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "interface.h" #include "interface.h"
#include "tier1/strtools.h" #include "tier1/strtools.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class IReplayPerformanceEditor; class IReplayPerformanceEditor;
class CReplay; class CReplay;
class Vector; class Vector;
class QAngle; class QAngle;
class CReplayPerformance; class CReplayPerformance;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
// These values are what we use to represent // These values are what we use to represent
struct SetViewParams_t struct SetViewParams_t
{ {
SetViewParams_t() { V_memset( this, 0, sizeof( SetViewParams_t ) ); } SetViewParams_t() { V_memset( this, 0, sizeof( SetViewParams_t ) ); }
SetViewParams_t( float flTime, Vector *pOrigin, QAngle *pAngles, float flFov, float flAccel, SetViewParams_t( float flTime, Vector *pOrigin, QAngle *pAngles, float flFov, float flAccel,
float flSpeed, float flRotFilter ) float flSpeed, float flRotFilter )
: m_flTime( flTime ), : m_flTime( flTime ),
m_pOrigin( pOrigin ), m_pOrigin( pOrigin ),
m_pAngles( pAngles ), m_pAngles( pAngles ),
m_flFov( flFov ), m_flFov( flFov ),
m_flAccel( flAccel ), m_flAccel( flAccel ),
m_flSpeed( flSpeed ), m_flSpeed( flSpeed ),
m_flRotationFilter( flRotFilter ) m_flRotationFilter( flRotFilter )
{ {
} }
float m_flTime; float m_flTime;
Vector *m_pOrigin; Vector *m_pOrigin;
QAngle *m_pAngles; QAngle *m_pAngles;
float m_flFov; float m_flFov;
// Right now only used for updating UI during playback: // Right now only used for updating UI during playback:
float m_flAccel; float m_flAccel;
float m_flSpeed; float m_flSpeed;
float m_flRotationFilter; float m_flRotationFilter;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class IReplayPerformanceController : public IBaseInterface class IReplayPerformanceController : public IBaseInterface
{ {
public: public:
virtual void SetEditor( IReplayPerformanceEditor *pEditor ) = 0; virtual void SetEditor( IReplayPerformanceEditor *pEditor ) = 0;
virtual bool IsPlaybackDataLeft() = 0; virtual bool IsPlaybackDataLeft() = 0;
virtual void StartRecording( CReplay *pReplay, bool bSnip ) = 0; virtual void StartRecording( CReplay *pReplay, bool bSnip ) = 0;
virtual void NotifyRewinding() = 0; virtual void NotifyRewinding() = 0;
virtual void Stop() = 0; virtual void Stop() = 0;
virtual bool SaveAsync() = 0; virtual bool SaveAsync() = 0;
virtual bool SaveAsAsync( const wchar *pTitle ) = 0; virtual bool SaveAsAsync( const wchar *pTitle ) = 0;
virtual bool IsSaving() const = 0; virtual bool IsSaving() const = 0;
virtual void SaveThink() = 0; virtual void SaveThink() = 0;
virtual bool GetLastSaveStatus() const = 0; virtual bool GetLastSaveStatus() const = 0;
virtual bool IsRecording() const = 0; virtual bool IsRecording() const = 0;
virtual bool IsPlaying() const = 0; virtual bool IsPlaying() const = 0;
virtual bool IsDirty() const = 0; virtual bool IsDirty() const = 0;
virtual void NotifyDirty() = 0; virtual void NotifyDirty() = 0;
virtual CReplayPerformance *GetPerformance() = 0; virtual CReplayPerformance *GetPerformance() = 0;
virtual CReplayPerformance *GetSavedPerformance() = 0; virtual CReplayPerformance *GetSavedPerformance() = 0;
virtual bool HasSavedPerformance() = 0; virtual bool HasSavedPerformance() = 0;
virtual void NotifyPauseState( bool bPaused ) = 0; virtual void NotifyPauseState( bool bPaused ) = 0;
virtual void ClearRewinding() = 0; virtual void ClearRewinding() = 0;
virtual void OnSignonStateFull() = 0; virtual void OnSignonStateFull() = 0;
virtual float GetPlaybackTimeScale() const = 0; virtual float GetPlaybackTimeScale() const = 0;
// //
// Recorder-specific: // Recorder-specific:
// //
virtual void AddEvent_Camera_Change_FirstPerson( float flTime, int nEntityIndex ) = 0; virtual void AddEvent_Camera_Change_FirstPerson( float flTime, int nEntityIndex ) = 0;
virtual void AddEvent_Camera_Change_ThirdPerson( float flTime, int nEntityIndex ) = 0; virtual void AddEvent_Camera_Change_ThirdPerson( float flTime, int nEntityIndex ) = 0;
virtual void AddEvent_Camera_Change_Free( float flTime ) = 0; virtual void AddEvent_Camera_Change_Free( float flTime ) = 0;
virtual void AddEvent_Camera_ChangePlayer( float flTime, int nEntIndex ) = 0; virtual void AddEvent_Camera_ChangePlayer( float flTime, int nEntIndex ) = 0;
virtual void AddEvent_Camera_SetView( const SetViewParams_t &params ) = 0; virtual void AddEvent_Camera_SetView( const SetViewParams_t &params ) = 0;
virtual void AddEvent_TimeScale( float flTime, float flScale ) = 0; virtual void AddEvent_TimeScale( float flTime, float flScale ) = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // IREPLAYPERFORMANCECONTROLLER_H #endif // IREPLAYPERFORMANCECONTROLLER_H

View File

@ -1,33 +1,33 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef IREPLAYPERFORMANCEEDITOR_H #ifndef IREPLAYPERFORMANCEEDITOR_H
#define IREPLAYPERFORMANCEEDITOR_H #define IREPLAYPERFORMANCEEDITOR_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "interface.h" #include "interface.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class CReplay; class CReplay;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
// //
// Interface to allow the replay DLL to talk to the actual UI. // Interface to allow the replay DLL to talk to the actual UI.
// //
class IReplayPerformanceEditor : public IBaseInterface class IReplayPerformanceEditor : public IBaseInterface
{ {
public: public:
virtual CReplay *GetReplay() = 0; virtual CReplay *GetReplay() = 0;
virtual void OnRewindComplete() = 0; virtual void OnRewindComplete() = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // IREPLAYPERFORMANCEEDITOR_H #endif // IREPLAYPERFORMANCEEDITOR_H

View File

@ -1,36 +1,36 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef IREPLAYPERFORMANCEMANAGER_H #ifndef IREPLAYPERFORMANCEMANAGER_H
#define IREPLAYPERFORMANCEMANAGER_H #define IREPLAYPERFORMANCEMANAGER_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "interface.h" #include "interface.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class CReplayPerformance; class CReplayPerformance;
class CReplay; class CReplay;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class IReplayPerformanceManager : public IBaseInterface class IReplayPerformanceManager : public IBaseInterface
{ {
public: public:
virtual CReplayPerformance *CreatePerformance( CReplay *pReplay ) = 0; virtual CReplayPerformance *CreatePerformance( CReplay *pReplay ) = 0;
virtual void DeletePerformance( CReplayPerformance *pPerformance ) = 0; virtual void DeletePerformance( CReplayPerformance *pPerformance ) = 0;
virtual const char *GetRelativePath() const = 0; virtual const char *GetRelativePath() const = 0;
virtual const char *GetFullPath() const = 0; virtual const char *GetFullPath() const = 0;
virtual const char *GeneratePerformanceFilename( CReplay *pReplay ) = 0; virtual const char *GeneratePerformanceFilename( CReplay *pReplay ) = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // IREPLAYPERFORMANCEMANAGER_H #endif // IREPLAYPERFORMANCEMANAGER_H

View File

@ -1,36 +1,36 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef IREPLAYPERFORMANCEPLAYBACKHANDLER_H #ifndef IREPLAYPERFORMANCEPLAYBACKHANDLER_H
#define IREPLAYPERFORMANCEPLAYBACKHANDLER_H #define IREPLAYPERFORMANCEPLAYBACKHANDLER_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "interface.h" #include "interface.h"
#include "replay/ireplayperformancecontroller.h" #include "replay/ireplayperformancecontroller.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class Vector; class Vector;
class QAngle; class QAngle;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class IReplayPerformancePlaybackHandler : public IBaseInterface class IReplayPerformancePlaybackHandler : public IBaseInterface
{ {
public: public:
virtual void OnEvent_Camera_Change_FirstPerson( float flTime, int nEntityIndex ) = 0; virtual void OnEvent_Camera_Change_FirstPerson( float flTime, int nEntityIndex ) = 0;
virtual void OnEvent_Camera_Change_ThirdPerson( float flTime, int nEntityIndex ) = 0; virtual void OnEvent_Camera_Change_ThirdPerson( float flTime, int nEntityIndex ) = 0;
virtual void OnEvent_Camera_Change_Free( float flTime ) = 0; virtual void OnEvent_Camera_Change_Free( float flTime ) = 0;
virtual void OnEvent_Camera_ChangePlayer( float flTime, int nEntIndex ) = 0; virtual void OnEvent_Camera_ChangePlayer( float flTime, int nEntIndex ) = 0;
virtual void OnEvent_Camera_SetView( const SetViewParams_t &params ) = 0; virtual void OnEvent_Camera_SetView( const SetViewParams_t &params ) = 0;
virtual void OnEvent_TimeScale( float flTime, float flScale ) = 0; virtual void OnEvent_TimeScale( float flTime, float flScale ) = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // IREPLAYPERFORMANCEPLAYBACKHANDLER_H #endif // IREPLAYPERFORMANCEPLAYBACKHANDLER_H

View File

@ -1,33 +1,33 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef IREPLAYPERFORMANCEPLAYER_H #ifndef IREPLAYPERFORMANCEPLAYER_H
#define IREPLAYPERFORMANCEPLAYER_H #define IREPLAYPERFORMANCEPLAYER_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "interface.h" #include "interface.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class CReplay; class CReplay;
class CReplayPerformance; class CReplayPerformance;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class IReplayPerformancePlayer : public IBaseInterface class IReplayPerformancePlayer : public IBaseInterface
{ {
public: public:
virtual void BeginPerformancePlay( CReplayPerformance *pPerformance ) = 0; virtual void BeginPerformancePlay( CReplayPerformance *pPerformance ) = 0;
virtual void EndPerformancePlay() = 0; virtual void EndPerformancePlay() = 0;
virtual bool IsPlaying() const = 0; virtual bool IsPlaying() const = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // IREPLAYPERFORMANCEPLAYER_H #endif // IREPLAYPERFORMANCEPLAYER_H

View File

@ -1,49 +1,49 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef IREPLAYPERFORMANCERECORDER_H #ifndef IREPLAYPERFORMANCERECORDER_H
#define IREPLAYPERFORMANCERECORDER_H #define IREPLAYPERFORMANCERECORDER_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "interface.h" #include "interface.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class CReplay; class CReplay;
class Vector; class Vector;
class QAngle; class QAngle;
class CReplayPerformance; class CReplayPerformance;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class IReplayPerformanceRecorder : public IBaseInterface class IReplayPerformanceRecorder : public IBaseInterface
{ {
public: public:
virtual void BeginPerformanceRecord( CReplay *pReplay ) = 0; virtual void BeginPerformanceRecord( CReplay *pReplay ) = 0;
virtual void EndPerformanceRecord() = 0; virtual void EndPerformanceRecord() = 0;
virtual void NotifyPauseState( bool bPaused ) = 0; virtual void NotifyPauseState( bool bPaused ) = 0;
virtual CReplayPerformance *GetPerformance() = 0; virtual CReplayPerformance *GetPerformance() = 0;
virtual bool IsRecording() const = 0; virtual bool IsRecording() const = 0;
virtual void SnipAtTime( float flTime ) = 0; virtual void SnipAtTime( float flTime ) = 0;
virtual void NotifySkipping() = 0; virtual void NotifySkipping() = 0;
virtual void ClearSkipping() = 0; virtual void ClearSkipping() = 0;
virtual void AddEvent_Camera_Change_FirstPerson( float flTime, int nEntityIndex ) = 0; virtual void AddEvent_Camera_Change_FirstPerson( float flTime, int nEntityIndex ) = 0;
virtual void AddEvent_Camera_Change_ThirdPerson( float flTime, int nEntityIndex ) = 0; virtual void AddEvent_Camera_Change_ThirdPerson( float flTime, int nEntityIndex ) = 0;
virtual void AddEvent_Camera_Change_Free( float flTime ) = 0; virtual void AddEvent_Camera_Change_Free( float flTime ) = 0;
virtual void AddEvent_Camera_ChangePlayer( float flTime, int nEntIndex ) = 0; virtual void AddEvent_Camera_ChangePlayer( float flTime, int nEntIndex ) = 0;
virtual void AddEvent_Camera_SetView( float flTime, const Vector& origin, const QAngle &angles, float fov ) = 0; virtual void AddEvent_Camera_SetView( float flTime, const Vector& origin, const QAngle &angles, float fov ) = 0;
virtual void AddEvent_Slowmo( float flTime, float flScale ) = 0; virtual void AddEvent_Slowmo( float flTime, float flScale ) = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // IREPLAYPERFORMANCERECORDER_H #endif // IREPLAYPERFORMANCERECORDER_H

View File

@ -1,41 +1,41 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#ifndef IREPLAYPLAYERCACHE_H #ifndef IREPLAYPLAYERCACHE_H
#define IREPLAYPLAYERCACHE_H #define IREPLAYPLAYERCACHE_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
#include "interface.h" #include "interface.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#define REPLAYPLAYERCACHE_INTERFACE_VERSION "VENGINE_REPLAY_PLAYER_CACHE_001" #define REPLAYPLAYERCACHE_INTERFACE_VERSION "VENGINE_REPLAY_PLAYER_CACHE_001"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
abstract_class IReplayPlayerCache : public IBaseInterface abstract_class IReplayPlayerCache : public IBaseInterface
{ {
public: public:
virtual bool Init() = 0; virtual bool Init() = 0;
virtual void Shutdown() = 0; virtual void Shutdown() = 0;
virtual void SetupPlayer( int nEntIndex ) = 0; virtual void SetupPlayer( int nEntIndex ) = 0;
virtual void DeletePlayerEntry( int nEntIndex ) = 0; virtual void DeletePlayerEntry( int nEntIndex ) = 0;
virtual bool PlayerHasCacheEntry( int nEntIndex ) = 0; virtual bool PlayerHasCacheEntry( int nEntIndex ) = 0;
virtual void SetPlayerClass( int nEntIndex, const char *pPlayerClass ) = 0; virtual void SetPlayerClass( int nEntIndex, const char *pPlayerClass ) = 0;
virtual void SetPlayerSpawnTick( int nEntIndex, int nTick ) = 0; virtual void SetPlayerSpawnTick( int nEntIndex, int nTick ) = 0;
virtual void SetPlayerDeathTick( int nEntIndex, int nTick ) = 0; virtual void SetPlayerDeathTick( int nEntIndex, int nTick ) = 0;
virtual const char *GetPlayerClass( int nEntIndex ) = 0; virtual const char *GetPlayerClass( int nEntIndex ) = 0;
virtual int GetPlayerSpawnTick( int nEntIndex ) = 0; virtual int GetPlayerSpawnTick( int nEntIndex ) = 0;
virtual int GetPlayerDeathTick( int nEntIndex ) = 0; virtual int GetPlayerDeathTick( int nEntIndex ) = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // IREPLAYPLAYERCACHE_H #endif // IREPLAYPLAYERCACHE_H

View File

@ -1,32 +1,32 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef IREPLAYRENDERQUEUE_H #ifndef IREPLAYRENDERQUEUE_H
#define IREPLAYRENDERQUEUE_H #define IREPLAYRENDERQUEUE_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "interface.h" #include "interface.h"
#include "replay/replayhandle.h" #include "replay/replayhandle.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
abstract_class IReplayRenderQueue : IBaseInterface abstract_class IReplayRenderQueue : IBaseInterface
{ {
public: public:
virtual void Add( ReplayHandle_t hReplay, int iPerformance ) = 0; virtual void Add( ReplayHandle_t hReplay, int iPerformance ) = 0;
virtual void Remove( ReplayHandle_t hReplay, int iPerformance ) = 0; virtual void Remove( ReplayHandle_t hReplay, int iPerformance ) = 0;
virtual void Clear() = 0; virtual void Clear() = 0;
virtual int GetCount() const = 0; virtual int GetCount() const = 0;
virtual bool GetEntryData( int iIndex, ReplayHandle_t *pHandleOut, int *pPerformanceOut ) const = 0; virtual bool GetEntryData( int iIndex, ReplayHandle_t *pHandleOut, int *pPerformanceOut ) const = 0;
virtual bool IsInQueue( ReplayHandle_t hReplay, int iPerformance ) const = 0; virtual bool IsInQueue( ReplayHandle_t hReplay, int iPerformance ) const = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // IREPLAYRENDERQUEUE_H #endif // IREPLAYRENDERQUEUE_H

View File

@ -1,32 +1,32 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef IREPLAYSCREENSHOTMANAGER_H #ifndef IREPLAYSCREENSHOTMANAGER_H
#define IREPLAYSCREENSHOTMANAGER_H #define IREPLAYSCREENSHOTMANAGER_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "interface.h" #include "interface.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class CReplay; class CReplay;
struct CaptureScreenshotParams_t; struct CaptureScreenshotParams_t;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class IReplayScreenshotManager : public IBaseInterface class IReplayScreenshotManager : public IBaseInterface
{ {
public: public:
virtual void CaptureScreenshot( CaptureScreenshotParams_t& params ) = 0; virtual void CaptureScreenshot( CaptureScreenshotParams_t& params ) = 0;
virtual void GetUnpaddedScreenshotSize( int &nOutWidth, int &nOutHeight ) = 0; virtual void GetUnpaddedScreenshotSize( int &nOutWidth, int &nOutHeight ) = 0;
virtual void DeleteScreenshotsForReplay( CReplay *pReplay ) = 0; virtual void DeleteScreenshotsForReplay( CReplay *pReplay ) = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // IREPLAYSCREENSHOTMANAGER_H #endif // IREPLAYSCREENSHOTMANAGER_H

View File

@ -1,34 +1,34 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef IREPLAYSCREENSHOTSYSTEM_H #ifndef IREPLAYSCREENSHOTSYSTEM_H
#define IREPLAYSCREENSHOTSYSTEM_H #define IREPLAYSCREENSHOTSYSTEM_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "interface.h" #include "interface.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
struct WriteReplayScreenshotParams_t; struct WriteReplayScreenshotParams_t;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
// //
// Implementation lives in the client - allows replay to tell the client to grab a // Implementation lives in the client - allows replay to tell the client to grab a
// screenshot or update the cache. // screenshot or update the cache.
// //
class IReplayScreenshotSystem : public IBaseInterface class IReplayScreenshotSystem : public IBaseInterface
{ {
public: public:
virtual void WriteReplayScreenshot( WriteReplayScreenshotParams_t &params ) = 0; virtual void WriteReplayScreenshot( WriteReplayScreenshotParams_t &params ) = 0;
virtual void UpdateReplayScreenshotCache() = 0; virtual void UpdateReplayScreenshotCache() = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // IREPLAYSCREENSHOTSYSTEM_H #endif // IREPLAYSCREENSHOTSYSTEM_H

View File

@ -1,48 +1,48 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef IREPLAYSERIALIIZEABLE_H #ifndef IREPLAYSERIALIIZEABLE_H
#define IREPLAYSERIALIIZEABLE_H #define IREPLAYSERIALIIZEABLE_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "interface.h" #include "interface.h"
#include "replay/replayhandle.h" #include "replay/replayhandle.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class KeyValues; class KeyValues;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class IReplaySerializeable : public IBaseInterface class IReplaySerializeable : public IBaseInterface
{ {
public: public:
virtual void SetHandle( ReplayHandle_t h ) = 0; virtual void SetHandle( ReplayHandle_t h ) = 0;
virtual ReplayHandle_t GetHandle() const = 0; virtual ReplayHandle_t GetHandle() const = 0;
virtual bool Read( KeyValues *pIn ) = 0; virtual bool Read( KeyValues *pIn ) = 0;
virtual void Write( KeyValues *pOut ) = 0; virtual void Write( KeyValues *pOut ) = 0;
virtual const char *GetSubKeyTitle() const = 0; virtual const char *GetSubKeyTitle() const = 0;
virtual const char *GetFilename() const = 0; virtual const char *GetFilename() const = 0;
virtual const char *GetPath() const = 0; virtual const char *GetPath() const = 0;
virtual const char *GetFullFilename() const = 0; virtual const char *GetFullFilename() const = 0;
virtual void SetLocked( bool bLocked ) = 0; virtual void SetLocked( bool bLocked ) = 0;
virtual bool IsLocked() const = 0; virtual bool IsLocked() const = 0;
virtual void OnDelete() = 0; virtual void OnDelete() = 0;
virtual void OnUnload() = 0; virtual void OnUnload() = 0;
virtual const char *GetDebugName() const = 0; virtual const char *GetDebugName() const = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // IREPLAYSERIALIIZEABLE_H #endif // IREPLAYSERIALIIZEABLE_H

View File

@ -1,48 +1,48 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: // Purpose:
// //
// $NoKeywords: $ // $NoKeywords: $
// //
//=============================================================================// //=============================================================================//
#ifndef IREPLAYSERVER_H #ifndef IREPLAYSERVER_H
#define IREPLAYSERVER_H #define IREPLAYSERVER_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
#include "interface.h" #include "interface.h"
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
class IServer; class IServer;
class IReplayDirector; class IReplayDirector;
class IGameEvent; class IGameEvent;
struct netadr_s; struct netadr_s;
class CServerReplay; class CServerReplay;
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Interface the Replay module exposes to the engine // Interface the Replay module exposes to the engine
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
#define INTERFACEVERSION_REPLAYSERVER "ReplayServer001" #define INTERFACEVERSION_REPLAYSERVER "ReplayServer001"
class IReplayServer : public IBaseInterface class IReplayServer : public IBaseInterface
{ {
public: public:
virtual ~IReplayServer() {} virtual ~IReplayServer() {}
virtual IServer *GetBaseServer() = 0; // get Replay base server interface virtual IServer *GetBaseServer() = 0; // get Replay base server interface
virtual IReplayDirector *GetDirector() = 0; // get director interface virtual IReplayDirector *GetDirector() = 0; // get director interface
virtual int GetReplaySlot() = 0; // return entity index-1 of Replay in game virtual int GetReplaySlot() = 0; // return entity index-1 of Replay in game
virtual float GetOnlineTime() = 0; // seconds since broadcast started virtual float GetOnlineTime() = 0; // seconds since broadcast started
virtual void BroadcastEvent(IGameEvent *event) = 0; // send a director command to all specs virtual void BroadcastEvent(IGameEvent *event) = 0; // send a director command to all specs
virtual bool IsRecording() = 0; virtual bool IsRecording() = 0;
virtual void StartRecording() = 0; virtual void StartRecording() = 0;
virtual void StopRecording() = 0; virtual void StopRecording() = 0;
}; };
#endif #endif

View File

@ -1,27 +1,27 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef IREPLAYSESSIONRECORDER_H #ifndef IREPLAYSESSIONRECORDER_H
#define IREPLAYSESSIONRECORDER_H #define IREPLAYSESSIONRECORDER_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "interface.h" #include "interface.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class IReplaySessionRecorder : public IBaseInterface class IReplaySessionRecorder : public IBaseInterface
{ {
public: public:
virtual void StartRecording() = 0; virtual void StartRecording() = 0;
virtual void StopRecording( bool bAborting ) = 0; virtual void StopRecording( bool bAborting ) = 0;
virtual void SetCurrentRecordingStartTick( int nStartTick ) = 0; virtual void SetCurrentRecordingStartTick( int nStartTick ) = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // IREPLAYSESSIONRECORDER_H #endif // IREPLAYSESSIONRECORDER_H

View File

@ -1,60 +1,60 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef IREPLAYSYSTEM_H #ifndef IREPLAYSYSTEM_H
#define IREPLAYSYSTEM_H #define IREPLAYSYSTEM_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "appframework/IAppSystem.h" #include "appframework/IAppSystem.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class IClientReplayContext; class IClientReplayContext;
class IServerReplayContext; class IServerReplayContext;
class IGameEvent; class IGameEvent;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
abstract_class IReplaySystem : public IAppSystem abstract_class IReplaySystem : public IAppSystem
{ {
public: public:
// IAppSystem: // IAppSystem:
virtual bool Connect( CreateInterfaceFn fnFactory ) = 0; virtual bool Connect( CreateInterfaceFn fnFactory ) = 0;
virtual void Disconnect() = 0; virtual void Disconnect() = 0;
virtual InitReturnVal_t Init() = 0; virtual InitReturnVal_t Init() = 0;
virtual void Shutdown() = 0; virtual void Shutdown() = 0;
// To be called client- & server-side // To be called client- & server-side
virtual void Think() = 0; virtual void Think() = 0;
virtual bool IsReplayEnabled() = 0; virtual bool IsReplayEnabled() = 0;
virtual bool IsRecording() = 0; virtual bool IsRecording() = 0;
// To be called client-side only - on dedicated servers, only subs defined // To be called client-side only - on dedicated servers, only subs defined
virtual bool CL_Init( CreateInterfaceFn fnClientFactory ) = 0; virtual bool CL_Init( CreateInterfaceFn fnClientFactory ) = 0;
virtual void CL_Shutdown() = 0; virtual void CL_Shutdown() = 0;
virtual void CL_Render() = 0; virtual void CL_Render() = 0;
virtual IClientReplayContext *CL_GetContext() = 0; virtual IClientReplayContext *CL_GetContext() = 0;
// To be called server-side only // To be called server-side only
virtual bool SV_Init( CreateInterfaceFn fnFactory ) = 0; virtual bool SV_Init( CreateInterfaceFn fnFactory ) = 0;
virtual void SV_Shutdown() = 0; virtual void SV_Shutdown() = 0;
virtual void SV_EndRecordingSession( bool bForceSynchronousPublish = false ) = 0; virtual void SV_EndRecordingSession( bool bForceSynchronousPublish = false ) = 0;
virtual void SV_SendReplayEvent( const char *pEventName, int nClientSlot ) = 0; virtual void SV_SendReplayEvent( const char *pEventName, int nClientSlot ) = 0;
virtual void SV_SendReplayEvent( IGameEvent *pEvent, int nClientSlot ) = 0; virtual void SV_SendReplayEvent( IGameEvent *pEvent, int nClientSlot ) = 0;
virtual bool SV_ShouldBeginRecording( bool bIsInWaitingForPlayers ) = 0; virtual bool SV_ShouldBeginRecording( bool bIsInWaitingForPlayers ) = 0;
virtual void SV_NotifyReplayRequested() = 0; virtual void SV_NotifyReplayRequested() = 0;
virtual IServerReplayContext *SV_GetContext() = 0; virtual IServerReplayContext *SV_GetContext() = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#define REPLAY_INTERFACE_VERSION "ReplaySystem001" #define REPLAY_INTERFACE_VERSION "ReplaySystem001"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // IREPLAYSYSTEM_H #endif // IREPLAYSYSTEM_H

View File

@ -1,27 +1,27 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef ISERVERENGINE_H #ifndef ISERVERENGINE_H
#define ISERVERENGINE_H #define ISERVERENGINE_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "interface.h" #include "interface.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class IReplayServerEngine : public IBaseInterface class IReplayServerEngine : public IBaseInterface
{ {
public: public:
virtual void EndReplayRecordingSession() = 0; virtual void EndReplayRecordingSession() = 0;
virtual bool IsReplayRecording() = 0; virtual bool IsReplayRecording() = 0;
virtual bool IsReplay() = 0; virtual bool IsReplay() = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // ISERVERENGINE_H #endif // ISERVERENGINE_H

View File

@ -1,37 +1,37 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef ISERVERREPLAY_H #ifndef ISERVERREPLAY_H
#define ISERVERREPLAY_H #define ISERVERREPLAY_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "interface.h" #include "interface.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#define SERVER_REPLAY_INTERFACE_VERSION "ServerReplay001" #define SERVER_REPLAY_INTERFACE_VERSION "ServerReplay001"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class IReplayFactory; class IReplayFactory;
class KeyValues; class KeyValues;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
// //
// Allows the replay DLL to talk to the server // Allows the replay DLL to talk to the server
// //
class IServerReplay : public IBaseInterface class IServerReplay : public IBaseInterface
{ {
public: public:
virtual void UploadOgsData( KeyValues *pData, bool bIncludeTimeField ) = 0; virtual void UploadOgsData( KeyValues *pData, bool bIncludeTimeField ) = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // ISERVERREPLAY_H #endif // ISERVERREPLAY_H

View File

@ -1,38 +1,38 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef ISERVERREPLAYCONTEXT_H #ifndef ISERVERREPLAYCONTEXT_H
#define ISERVERREPLAYCONTEXT_H #define ISERVERREPLAYCONTEXT_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "replay/ireplaycontext.h" #include "replay/ireplaycontext.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class IGameEvent; class IGameEvent;
class IReplaySessionRecorder; class IReplaySessionRecorder;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#define REPLAYHISTORYMANAGER_INTERFACE_VERSION_SERVER "VENGINE_SERVER_REPLAY_HISTORY_MANAGER_001" #define REPLAYHISTORYMANAGER_INTERFACE_VERSION_SERVER "VENGINE_SERVER_REPLAY_HISTORY_MANAGER_001"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class IServerReplayContext : public IReplayContext class IServerReplayContext : public IReplayContext
{ {
public: public:
virtual void FlagForConVarSanityCheck() = 0; // Checks replay_enable / replay_local_fileserver_path / replay_downloadurlport / replay_downloadurlpath virtual void FlagForConVarSanityCheck() = 0; // Checks replay_enable / replay_local_fileserver_path / replay_downloadurlport / replay_downloadurlpath
virtual IGameEvent *CreateReplaySessionInfoEvent() = 0; // Create "replay_sessioninfo" event w/ appropriate fields filled in virtual IGameEvent *CreateReplaySessionInfoEvent() = 0; // Create "replay_sessioninfo" event w/ appropriate fields filled in
virtual IReplaySessionRecorder *GetSessionRecorder() = 0; virtual IReplaySessionRecorder *GetSessionRecorder() = 0;
virtual const char *GetLocalFileServerPath() const = 0; // Returns the local path where session blocks and such should be published for download virtual const char *GetLocalFileServerPath() const = 0; // Returns the local path where session blocks and such should be published for download
virtual void CreateSessionOnClient( int nClientSlot ) = 0; virtual void CreateSessionOnClient( int nClientSlot ) = 0;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // ISERVERREPLAYCONTEXT_H #endif // ISERVERREPLAYCONTEXT_H

View File

@ -1,63 +1,63 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef REPLAYPERFORMANCE_H #ifndef REPLAYPERFORMANCE_H
#define REPLAYPERFORMANCE_H #define REPLAYPERFORMANCE_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "shared_defs.h" #include "shared_defs.h"
#include "qlimits.h" #include "qlimits.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class CReplay; class CReplay;
class KeyValues; class KeyValues;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class CReplayPerformance class CReplayPerformance
{ {
public: public:
CReplayPerformance( CReplay *pReplay ); CReplayPerformance( CReplay *pReplay );
inline bool HasInTick() const { return m_nTickIn >= 0; } inline bool HasInTick() const { return m_nTickIn >= 0; }
inline bool HasOutTick() const { return m_nTickOut >= 0; } inline bool HasOutTick() const { return m_nTickOut >= 0; }
inline int GetTickIn() const { return m_nTickIn; } inline int GetTickIn() const { return m_nTickIn; }
inline int GetTickOut() const { return m_nTickOut; } inline int GetTickOut() const { return m_nTickOut; }
void Copy( const CReplayPerformance *pSrc ); void Copy( const CReplayPerformance *pSrc );
void CopyTicks( const CReplayPerformance *pSrc ); void CopyTicks( const CReplayPerformance *pSrc );
void SetFilename( const char *pFilename ); void SetFilename( const char *pFilename );
const char *GetFullPerformanceFilename(); const char *GetFullPerformanceFilename();
void AutoNameIfHasNoTitle( const char *pMapName ); void AutoNameIfHasNoTitle( const char *pMapName );
void SetTitle( const wchar_t *pTitle ); void SetTitle( const wchar_t *pTitle );
// NOTE: Doesn't copy exactly - gets a valid filename for the returned performance. // NOTE: Doesn't copy exactly - gets a valid filename for the returned performance.
CReplayPerformance *MakeCopy() const; CReplayPerformance *MakeCopy() const;
void Read( KeyValues *pIn ); void Read( KeyValues *pIn );
void Write( KeyValues *pOut ); void Write( KeyValues *pOut );
// NOTE: Any changes made here should be reflected in the copy constructor // NOTE: Any changes made here should be reflected in the copy constructor
// (which is called from MakeCopy()). // (which is called from MakeCopy()).
wchar_t m_wszTitle[MAX_TAKE_TITLE_LENGTH]; wchar_t m_wszTitle[MAX_TAKE_TITLE_LENGTH];
char m_szBaseFilename[ MAX_OSPATH ]; char m_szBaseFilename[ MAX_OSPATH ];
CReplay *m_pReplay; CReplay *m_pReplay;
int m_nTickIn; int m_nTickIn;
int m_nTickOut; int m_nTickOut;
private: private:
CReplayPerformance( const CReplayPerformance *pPerformance ); CReplayPerformance( const CReplayPerformance *pPerformance );
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // REPLAYPERFORMANCE_H #endif // REPLAYPERFORMANCE_H

View File

@ -1,62 +1,62 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef RENDERMOVIEPARAMS_H #ifndef RENDERMOVIEPARAMS_H
#define RENDERMOVIEPARAMS_H #define RENDERMOVIEPARAMS_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "tier1/utlstring.h" #include "tier1/utlstring.h"
#include "tier1/strtools.h" #include "tier1/strtools.h"
#include "replay/replayhandle.h" #include "replay/replayhandle.h"
#include "replay/shared_defs.h" #include "replay/shared_defs.h"
#include "video/ivideoservices.h" #include "video/ivideoservices.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
typedef unsigned int MovieHandle_t; typedef unsigned int MovieHandle_t;
struct RenderMovieParams_t struct RenderMovieParams_t
{ {
inline RenderMovieParams_t() : m_iPerformance( -1 ) { V_memset( this, 0, sizeof( RenderMovieParams_t ) ); m_Settings.m_FPS.SetFPS( 0, false ); } inline RenderMovieParams_t() : m_iPerformance( -1 ) { V_memset( this, 0, sizeof( RenderMovieParams_t ) ); m_Settings.m_FPS.SetFPS( 0, false ); }
ReplayHandle_t m_hReplay; ReplayHandle_t m_hReplay;
int m_iPerformance; // -1 for default view, otherwise this is an index into the replay's m_vecPerformances vector. int m_iPerformance; // -1 for default view, otherwise this is an index into the replay's m_vecPerformances vector.
wchar_t m_wszTitle[MAX_REPLAY_TITLE_LENGTH]; wchar_t m_wszTitle[MAX_REPLAY_TITLE_LENGTH];
char m_szVideoPreset[64]; char m_szVideoPreset[64];
char m_szExtension[16]; // File extension char m_szExtension[16]; // File extension
bool m_bQuitWhenFinished; bool m_bQuitWhenFinished;
bool m_bExportRaw; // Export movie as raw TGA frames and a .WAV bool m_bExportRaw; // Export movie as raw TGA frames and a .WAV
float m_flEngineFps; float m_flEngineFps;
struct ReplayRenderSettings_t struct ReplayRenderSettings_t
{ {
uint16 m_nWidth; uint16 m_nWidth;
uint16 m_nHeight; uint16 m_nHeight;
int8 m_nMotionBlurQuality; // [0,MAX_MOTION_BLUR_QUALITY] int8 m_nMotionBlurQuality; // [0,MAX_MOTION_BLUR_QUALITY]
VideoFrameRate_t m_FPS; // Actual framerate can be calculated with m_FPS.GetFps() VideoFrameRate_t m_FPS; // Actual framerate can be calculated with m_FPS.GetFps()
VideoEncodeCodec_t m_Codec; VideoEncodeCodec_t m_Codec;
bool m_bMotionBlurEnabled; // Motion blur enabled? bool m_bMotionBlurEnabled; // Motion blur enabled?
bool m_bAAEnabled; // Antialiasing enabled? bool m_bAAEnabled; // Antialiasing enabled?
int8 m_nEncodingQuality; // [0,100] int8 m_nEncodingQuality; // [0,100]
bool m_bRaw; // This movie was exported as raw TGA frames and a .WAV file? bool m_bRaw; // This movie was exported as raw TGA frames and a .WAV file?
} }
m_Settings; m_Settings;
}; };
typedef RenderMovieParams_t::ReplayRenderSettings_t ReplayRenderSettings_t; typedef RenderMovieParams_t::ReplayRenderSettings_t ReplayRenderSettings_t;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#define MAX_DOF_QUALITY 2 #define MAX_DOF_QUALITY 2
#define MAX_MOTION_BLUR_QUALITY 3 #define MAX_MOTION_BLUR_QUALITY 3
#define SUBPIXEL_JITTER_SAMPLES 16 #define SUBPIXEL_JITTER_SAMPLES 16
#define CHEAP_DOF_SAMPLES 4 #define CHEAP_DOF_SAMPLES 4
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // RENDERMOVIEPARAMS_H #endif // RENDERMOVIEPARAMS_H

View File

@ -1,146 +1,146 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef REPLAY_H #ifndef REPLAY_H
#define REPLAY_H #define REPLAY_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "replay/iqueryablereplayitem.h" #include "replay/iqueryablereplayitem.h"
#include "replay/replaytime.h" #include "replay/replaytime.h"
#include "replay/basereplayserializeable.h" #include "replay/basereplayserializeable.h"
#include "qlimits.h" #include "qlimits.h"
#include "utlstring.h" #include "utlstring.h"
#include "utlvector.h" #include "utlvector.h"
#include "replay/shared_defs.h" #include "replay/shared_defs.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class IReplayDownloadEventHandler; class IReplayDownloadEventHandler;
class CReplayScreenshot; class CReplayScreenshot;
class CReplayPerformance; class CReplayPerformance;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class CReplay : public CBaseReplaySerializeable, class CReplay : public CBaseReplaySerializeable,
public IQueryableReplayItem public IQueryableReplayItem
{ {
typedef CBaseReplaySerializeable BaseClass; typedef CBaseReplaySerializeable BaseClass;
public: public:
enum ReplayStatus_t enum ReplayStatus_t
{ {
REPLAYSTATUS_INVALID, REPLAYSTATUS_INVALID,
REPLAYSTATUS_ERROR, REPLAYSTATUS_ERROR,
REPLAYSTATUS_DOWNLOADPHASE, // Multiple sub-states during download state REPLAYSTATUS_DOWNLOADPHASE, // Multiple sub-states during download state
REPLAYSTATUS_READYTOCONVERT, // Download is complete, ready to convert REPLAYSTATUS_READYTOCONVERT, // Download is complete, ready to convert
REPLAYSTATUS_RENDERING, // Currently rendering the file REPLAYSTATUS_RENDERING, // Currently rendering the file
REPLAYSTATUS_RENDERED, REPLAYSTATUS_RENDERED,
REPLAYSTATUS_MAX REPLAYSTATUS_MAX
}; };
CReplay(); CReplay();
virtual ~CReplay() {} virtual ~CReplay() {}
// //
// IReplaySerializeable // IReplaySerializeable
// //
virtual const char *GetSubKeyTitle() const; virtual const char *GetSubKeyTitle() const;
virtual const char *GetPath() const; virtual const char *GetPath() const;
virtual void OnDelete(); virtual void OnDelete();
virtual bool Read( KeyValues *pIn ); virtual bool Read( KeyValues *pIn );
virtual void Write( KeyValues *pOut ); virtual void Write( KeyValues *pOut );
virtual void DumpGameSpecificData() const {} virtual void DumpGameSpecificData() const {}
virtual void Update() {} virtual void Update() {}
// Hooks to allow replays to setup event listeners, etc. // Hooks to allow replays to setup event listeners, etc.
virtual void OnBeginRecording() {} virtual void OnBeginRecording() {}
virtual void OnEndRecording() {} virtual void OnEndRecording() {}
// Called when a replay is "completed" // Called when a replay is "completed"
virtual void OnComplete(); virtual void OnComplete();
// Should we allow this replay to be deleted? // Should we allow this replay to be deleted?
virtual bool ShouldAllowDelete() const { return true; } virtual bool ShouldAllowDelete() const { return true; }
void AutoNameTitleIfEmpty(); void AutoNameTitleIfEmpty();
void AddScreenshot( int nWidth, int nHeight, const char *pBaseFilename ); void AddScreenshot( int nWidth, int nHeight, const char *pBaseFilename );
bool HasReconstructedReplay() const; bool HasReconstructedReplay() const;
bool IsSignificantBlock( int iBlockReconstruction ) const; // Does this replay care about the given block? bool IsSignificantBlock( int iBlockReconstruction ) const; // Does this replay care about the given block?
CReplayPerformance *AddNewPerformance( bool bGenTitle = true, bool bGenFilename = true ); CReplayPerformance *AddNewPerformance( bool bGenTitle = true, bool bGenFilename = true );
void AddPerformance( KeyValues *pIn ); void AddPerformance( KeyValues *pIn );
void AddPerformance( CReplayPerformance *pPerformance ); void AddPerformance( CReplayPerformance *pPerformance );
// Accessors: // Accessors:
inline int GetScreenshotCount() const { return m_vecScreenshots.Count(); } inline int GetScreenshotCount() const { return m_vecScreenshots.Count(); }
inline const CReplayScreenshot *GetScreenshot( int i ) const { return m_vecScreenshots[ i ]; } inline const CReplayScreenshot *GetScreenshot( int i ) const { return m_vecScreenshots[ i ]; }
bool IsDownloaded() const; bool IsDownloaded() const;
inline int GetPerformanceCount() const { return m_vecPerformances.Count(); } inline int GetPerformanceCount() const { return m_vecPerformances.Count(); }
CReplayPerformance *GetPerformance( int i ); CReplayPerformance *GetPerformance( int i );
const CReplayPerformance *GetPerformance( int i ) const; const CReplayPerformance *GetPerformance( int i ) const;
inline bool HasPerformance( CReplayPerformance *pPerformance ) { return m_vecPerformances.Find( pPerformance ) != m_vecPerformances.InvalidIndex(); } inline bool HasPerformance( CReplayPerformance *pPerformance ) { return m_vecPerformances.Find( pPerformance ) != m_vecPerformances.InvalidIndex(); }
bool FindPerformance( CReplayPerformance *pPerformance, int &iResult ); bool FindPerformance( CReplayPerformance *pPerformance, int &iResult );
CReplayPerformance *GetPerformanceWithTitle( const wchar_t *pTitle ); CReplayPerformance *GetPerformanceWithTitle( const wchar_t *pTitle );
inline const char *GetMapName() const { return m_szMapName; } inline const char *GetMapName() const { return m_szMapName; }
inline int GetSpawnTick() const { return m_nSpawnTick; } inline int GetSpawnTick() const { return m_nSpawnTick; }
inline int GetDeathTick() const { return m_nDeathTick; } inline int GetDeathTick() const { return m_nDeathTick; }
// IQueryableReplayItem implementation: // IQueryableReplayItem implementation:
virtual const CReplayTime &GetItemDate() const; virtual const CReplayTime &GetItemDate() const;
virtual bool IsItemRendered() const; virtual bool IsItemRendered() const;
virtual CReplay *GetItemReplay(); virtual CReplay *GetItemReplay();
virtual ReplayHandle_t GetItemReplayHandle() const; virtual ReplayHandle_t GetItemReplayHandle() const;
virtual QueryableReplayItemHandle_t GetItemHandle() const; virtual QueryableReplayItemHandle_t GetItemHandle() const;
virtual const wchar_t *GetItemTitle() const; virtual const wchar_t *GetItemTitle() const;
virtual void SetItemTitle( const wchar_t *pTitle ); virtual void SetItemTitle( const wchar_t *pTitle );
virtual float GetItemLength() const; virtual float GetItemLength() const;
virtual void *GetUserData(); virtual void *GetUserData();
virtual void SetUserData( void* pUserData ); virtual void SetUserData( void* pUserData );
virtual bool IsItemAMovie() const; virtual bool IsItemAMovie() const;
// Non-persistent data // Non-persistent data
mutable IReplayDownloadEventHandler *m_pDownloadEventHandler; // Implemented by replay browser - the reason we've got one per replay rather than mutable IReplayDownloadEventHandler *m_pDownloadEventHandler; // Implemented by replay browser - the reason we've got one per replay rather than
// one per download group is because the browser needs to receive events per-thumbnail // one per download group is because the browser needs to receive events per-thumbnail
bool m_bSaved; // True as soon as the replay is saved to disk for the first time bool m_bSaved; // True as soon as the replay is saved to disk for the first time
bool m_bRequestedByUser; // Did the user request to save this replay? bool m_bRequestedByUser; // Did the user request to save this replay?
bool m_bComplete; // Indicates whether the replay is done recording - this should be false bool m_bComplete; // Indicates whether the replay is done recording - this should be false
// until the player dies, the round ends, or the level changes // until the player dies, the round ends, or the level changes
void *m_pUserData; void *m_pUserData;
float m_flNextUpdateTime; float m_flNextUpdateTime;
bool m_bDirty; bool m_bDirty;
// Persistent data // Persistent data
ReplayHandle_t m_hSession; // The recording session in which this replay was recorded ReplayHandle_t m_hSession; // The recording session in which this replay was recorded
char m_szMapName[MAX_OSPATH]; char m_szMapName[MAX_OSPATH];
ReplayStatus_t m_nStatus; ReplayStatus_t m_nStatus;
const char* m_pFileURL; // In the form <protocol>://<server address>:<port number>/path/file - points to the string in the download group const char* m_pFileURL; // In the form <protocol>://<server address>:<port number>/path/file - points to the string in the download group
wchar_t m_wszTitle[MAX_REPLAY_TITLE_LENGTH]; wchar_t m_wszTitle[MAX_REPLAY_TITLE_LENGTH];
CUtlString m_strKilledBy; // Name of player who killed, if any CUtlString m_strKilledBy; // Name of player who killed, if any
int m_nDeathTime; int m_nDeathTime;
int m_nSpawnTick; int m_nSpawnTick;
int m_nDeathTick; int m_nDeathTick;
float m_flLength; // The length of the entire replay, including the post-death time, in seconds float m_flLength; // The length of the entire replay, including the post-death time, in seconds
bool m_bRendered; // Has the replay been rendered yet? bool m_bRendered; // Has the replay been rendered yet?
int m_nPlayerSlot; // Player slot (+1), used to determine which player recorded the demo during playback int m_nPlayerSlot; // Player slot (+1), used to determine which player recorded the demo during playback
int m_nPostDeathRecordTime; // replay_postdeathrecordtime at the time of record int m_nPostDeathRecordTime; // replay_postdeathrecordtime at the time of record
CUtlVector< CReplayScreenshot * > m_vecScreenshots; CUtlVector< CReplayScreenshot * > m_vecScreenshots;
CUtlVector< CReplayPerformance * > m_vecPerformances; CUtlVector< CReplayPerformance * > m_vecPerformances;
int m_iMaxSessionBlockRequired; // The maximum session block required to reconstruct a viewable .dem file from spawn tick until length int m_iMaxSessionBlockRequired; // The maximum session block required to reconstruct a viewable .dem file from spawn tick until length
CReplayTime m_RecordTime; // Contains time/date when spawn tick was recorded CReplayTime m_RecordTime; // Contains time/date when spawn tick was recorded
float m_flStartTime; // Start time (uses engine's host_time) float m_flStartTime; // Start time (uses engine's host_time)
CUtlString m_strReconstructedFilename; CUtlString m_strReconstructedFilename;
bool m_bSavedDuringThisSession; bool m_bSavedDuringThisSession;
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // REPLAY_H #endif // REPLAY_H

View File

@ -1,25 +1,25 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef REPLAYHANDLE_H #ifndef REPLAYHANDLE_H
#define REPLAYHANDLE_H #define REPLAYHANDLE_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "platform.h" #include "platform.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
typedef uint32 ReplayHandle_t; typedef uint32 ReplayHandle_t;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#define REPLAY_HANDLE_INVALID ( (ReplayHandle_t)-1 ) #define REPLAY_HANDLE_INVALID ( (ReplayHandle_t)-1 )
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // REPLAYHANDLE_H #endif // REPLAYHANDLE_H

View File

@ -1,21 +1,21 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef REPLAYLIB_H #ifndef REPLAYLIB_H
#define REPLAYLIB_H #define REPLAYLIB_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class IClientReplayContext; class IClientReplayContext;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
bool ReplayLib_Init( const char *pGameDir, IClientReplayContext *pClientReplayContext ); bool ReplayLib_Init( const char *pGameDir, IClientReplayContext *pClientReplayContext );
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // REPLAYLIB_H #endif // REPLAYLIB_H

View File

@ -1,57 +1,57 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef REPLAYTIME_H #ifndef REPLAYTIME_H
#define REPLAYTIME_H #define REPLAYTIME_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class KeyValues; class KeyValues;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "vgui/ILocalize.h" #include "vgui/ILocalize.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class CReplayTime class CReplayTime
{ {
public: public:
CReplayTime(); CReplayTime();
void InitDateAndTimeToNow(); void InitDateAndTimeToNow();
void Read( KeyValues *pIn ); void Read( KeyValues *pIn );
void Write( KeyValues *pOut ); void Write( KeyValues *pOut );
// Modifiers: // Modifiers:
void SetDate( int nDay, int nMonth, int nYear ); void SetDate( int nDay, int nMonth, int nYear );
void SetTime( int nHour, int nMin, int nSec ); void SetTime( int nHour, int nMin, int nSec );
inline void SetRawDate( int nRawDate ) { m_fDate = nRawDate; } inline void SetRawDate( int nRawDate ) { m_fDate = nRawDate; }
inline void SetRawTime( int nRawTime ) { m_fTime = nRawTime; } inline void SetRawTime( int nRawTime ) { m_fTime = nRawTime; }
// Accessors: // Accessors:
void GetTime( int &nHour, int &nMin, int &nSec ) const; void GetTime( int &nHour, int &nMin, int &nSec ) const;
void GetDate( int &nDay, int &nMonth, int &nYear ) const; void GetDate( int &nDay, int &nMonth, int &nYear ) const;
static const char *FormatTimeString( int nSecs ); static const char *FormatTimeString( int nSecs );
static const char *FormatPreciseTimeString( float flSecs ); static const char *FormatPreciseTimeString( float flSecs );
static const wchar_t *GetLocalizedMonth( vgui::ILocalize *pLocalize, int nMonth ); static const wchar_t *GetLocalizedMonth( vgui::ILocalize *pLocalize, int nMonth );
static const wchar_t *GetLocalizedDay( vgui::ILocalize *pLocalize, int nDay ); static const wchar_t *GetLocalizedDay( vgui::ILocalize *pLocalize, int nDay );
static const wchar_t *GetLocalizedYear( vgui::ILocalize *pLocalize, int nYear ); static const wchar_t *GetLocalizedYear( vgui::ILocalize *pLocalize, int nYear );
static const wchar_t *GetLocalizedTime( vgui::ILocalize *pLocalize, int nHour, int nMin, int nSec ); static const wchar_t *GetLocalizedTime( vgui::ILocalize *pLocalize, int nHour, int nMin, int nSec );
static const wchar_t *GetLocalizedDate( vgui::ILocalize *pLocalize, int nDay, int nMonth, int nYear, static const wchar_t *GetLocalizedDate( vgui::ILocalize *pLocalize, int nDay, int nMonth, int nYear,
int *pHour = NULL, int *pMin = NULL, int *pSec = NULL, bool bForceFullFormat = false ); // bForceFullFormat true will keep from returning "today" or "yesterday" int *pHour = NULL, int *pMin = NULL, int *pSec = NULL, bool bForceFullFormat = false ); // bForceFullFormat true will keep from returning "today" or "yesterday"
static const wchar_t *GetLocalizedDate( vgui::ILocalize *pLocalize, const CReplayTime &t, bool bForceFullFormat = false ); static const wchar_t *GetLocalizedDate( vgui::ILocalize *pLocalize, const CReplayTime &t, bool bForceFullFormat = false );
int m_fDate; // Representation of a date (bitfield) int m_fDate; // Representation of a date (bitfield)
int m_fTime; // Representation of time (bitfield) int m_fTime; // Representation of time (bitfield)
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // REPLAYTIME_H #endif // REPLAYTIME_H

View File

@ -1,43 +1,43 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#ifndef REPLAYUTILS_H #ifndef REPLAYUTILS_H
#define REPLAYUTILS_H #define REPLAYUTILS_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
#include "utlstring.h" #include "utlstring.h"
void Replay_GetFirstAvailableFilename( char *pDst, int nDstLen, const char *pIdealFilename, const char *pExt, void Replay_GetFirstAvailableFilename( char *pDst, int nDstLen, const char *pIdealFilename, const char *pExt,
const char *pFilePath, int nStartIndex ); const char *pFilePath, int nStartIndex );
void Replay_ConstructReplayFilenameString( CUtlString &strOut, const char *pReplaySubDir, const char *pFilename, const char *pGameDir ); void Replay_ConstructReplayFilenameString( CUtlString &strOut, const char *pReplaySubDir, const char *pFilename, const char *pGameDir );
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
// Util function, copied from src/engine/common.cpp // Util function, copied from src/engine/common.cpp
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
char *Replay_va( PRINTF_FORMAT_STRING const char *format, ... ); char *Replay_va( PRINTF_FORMAT_STRING const char *format, ... );
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
// Return the base dir, e.g. "c:\...\game\tf\replays\" // Return the base dir, e.g. "c:\...\game\tf\replays\"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
const char *Replay_GetBaseDir(); const char *Replay_GetBaseDir();
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
// Set the game directory (only to be called from ReplayLib_Init()) // Set the game directory (only to be called from ReplayLib_Init())
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
void Replay_SetGameDir( const char *pGameDir ); void Replay_SetGameDir( const char *pGameDir );
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
// Return the base dir, e.g. "c:\...\game\tf\replays\" // Return the base dir, e.g. "c:\...\game\tf\replays\"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
const char *Replay_GetGameDir(); const char *Replay_GetGameDir();
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
// Get a name of the format "<map>: <current date & time>" - used for replays and takes. // Get a name of the format "<map>: <current date & time>" - used for replays and takes.
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
void Replay_GetAutoName( OUT_Z_BYTECAP(nDestSizeInBytes) wchar_t *pDest, int nDestSizeInBytes, const char *pMapName ); void Replay_GetAutoName( OUT_Z_BYTECAP(nDestSizeInBytes) wchar_t *pDest, int nDestSizeInBytes, const char *pMapName );
#endif // REPLAY_H #endif // REPLAY_H

View File

@ -1,72 +1,72 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef SCREENSHOT_H #ifndef SCREENSHOT_H
#define SCREENSHOT_H #define SCREENSHOT_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "replay/basereplayserializeable.h" #include "replay/basereplayserializeable.h"
#include "mathlib/vector.h" #include "mathlib/vector.h"
#include "qlimits.h" #include "qlimits.h"
#include "strtools.h" #include "strtools.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#define SUBDIR_SCREENSHOTS "screenshots" #define SUBDIR_SCREENSHOTS "screenshots"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class CReplayScreenshot : public CBaseReplaySerializeable class CReplayScreenshot : public CBaseReplaySerializeable
{ {
public: public:
inline CReplayScreenshot( int nWidth = 0, int nHeight = 0, const char *pBaseFilename = NULL ) inline CReplayScreenshot( int nWidth = 0, int nHeight = 0, const char *pBaseFilename = NULL )
: m_nWidth( nWidth ), m_nHeight( nHeight ) : m_nWidth( nWidth ), m_nHeight( nHeight )
{ {
if ( pBaseFilename ) if ( pBaseFilename )
{ {
V_strncpy( m_szBaseFilename, pBaseFilename, sizeof( m_szBaseFilename ) ); V_strncpy( m_szBaseFilename, pBaseFilename, sizeof( m_szBaseFilename ) );
} }
} }
virtual bool Read( KeyValues *pIn ); virtual bool Read( KeyValues *pIn );
virtual void Write( KeyValues *pOut ); virtual void Write( KeyValues *pOut );
virtual const char *GetSubKeyTitle() const; virtual const char *GetSubKeyTitle() const;
virtual const char *GetPath() const; virtual const char *GetPath() const;
int m_nWidth; // Screenshot width (does not include power-of-2 padding) int m_nWidth; // Screenshot width (does not include power-of-2 padding)
int m_nHeight; // Screenshot height (does not include power-of-2 padding) int m_nHeight; // Screenshot height (does not include power-of-2 padding)
char m_szBaseFilename[ MAX_OSPATH ]; char m_szBaseFilename[ MAX_OSPATH ];
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
struct CaptureScreenshotParams_t // To be passed from the client into IReplayHistoryManager::CaptureScreenshot() struct CaptureScreenshotParams_t // To be passed from the client into IReplayHistoryManager::CaptureScreenshot()
{ {
float m_flDelay; // Delay from now (in seconds) when we will take the screenshot float m_flDelay; // Delay from now (in seconds) when we will take the screenshot
int m_nEntity; // Should be 0 if no camera adjustment is needed, otherwise should be the index of the entity index from which m_posCamera will be based int m_nEntity; // Should be 0 if no camera adjustment is needed, otherwise should be the index of the entity index from which m_posCamera will be based
Vector m_posCamera; // Local position, relative to entity's index (if m_nEntity > 0) for camera position Vector m_posCamera; // Local position, relative to entity's index (if m_nEntity > 0) for camera position
QAngle m_angCamera; // World angles of camera - used if m_bUseCameraAngles is true QAngle m_angCamera; // World angles of camera - used if m_bUseCameraAngles is true
bool m_bUseCameraAngles; // Should we use m_angCamera - m_nEntity can't be 0 bool m_bUseCameraAngles; // Should we use m_angCamera - m_nEntity can't be 0
bool m_bIgnoreMinTimeBetweenScreenshots; // Force screenshot, regardless of replay_mintimebetweenscreenshots? bool m_bIgnoreMinTimeBetweenScreenshots; // Force screenshot, regardless of replay_mintimebetweenscreenshots?
bool m_bPrimary; // Only set to true for the primary screenshot, which is taken when the user saves their replay bool m_bPrimary; // Only set to true for the primary screenshot, which is taken when the user saves their replay
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
struct WriteReplayScreenshotParams_t // Passed from the engine into the client to take a screenshot struct WriteReplayScreenshotParams_t // Passed from the engine into the client to take a screenshot
{ {
const char *m_pFilename; const char *m_pFilename;
int m_nWidth; int m_nWidth;
int m_nHeight; int m_nHeight;
Vector *m_pOrigin; // Perspective origin from which to render. Can be NULL Vector *m_pOrigin; // Perspective origin from which to render. Can be NULL
QAngle *m_pAngles; // Perspective angles from which to render. Can be NULL QAngle *m_pAngles; // Perspective angles from which to render. Can be NULL
}; };
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // SCREENSHOT_H #endif // SCREENSHOT_H

View File

@ -1,73 +1,73 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
//=======================================================================================// //=======================================================================================//
#ifndef SHARED_DEFS_H #ifndef SHARED_DEFS_H
#define SHARED_DEFS_H #define SHARED_DEFS_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#include "platform.h" #include "platform.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#define SUBDIR_REPLAY "replay" #define SUBDIR_REPLAY "replay"
#define SUBDIR_REPLAYS "replays" #define SUBDIR_REPLAYS "replays"
#define SUBDIR_SESSIONS "sessions" #define SUBDIR_SESSIONS "sessions"
#define SUBDIR_BLOCKS "blocks" #define SUBDIR_BLOCKS "blocks"
#define SUBDIR_CLIENT "client" #define SUBDIR_CLIENT "client"
#define SUBDIR_MOVIES "movies" #define SUBDIR_MOVIES "movies"
#define SUBDIR_PERFORMANCES "edits" #define SUBDIR_PERFORMANCES "edits"
#define SUBDIR_SERVER "server" #define SUBDIR_SERVER "server"
#define SUBDIR_RENDERED "rendered" #define SUBDIR_RENDERED "rendered"
#define SUBDIR_TMP "tmp" #define SUBDIR_TMP "tmp"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#define BLOCK_FILE_EXTENSION "block" #define BLOCK_FILE_EXTENSION "block"
#define GENERIC_FILE_EXTENSION "dmx" #define GENERIC_FILE_EXTENSION "dmx"
#define DEMO_FILE_EXTENSION "dem" #define DEMO_FILE_EXTENSION "dem"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#define MOVIE_HANDLE_BASE 10000 // 10,000 #define MOVIE_HANDLE_BASE 10000 // 10,000
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#define BUILD_CURL ( defined( WIN32 ) && !defined( _X360 ) ) || defined( POSIX ) #define BUILD_CURL ( defined( WIN32 ) && !defined( _X360 ) ) || defined( POSIX )
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#define MIN_SERVER_DUMP_INTERVAL 10 #define MIN_SERVER_DUMP_INTERVAL 10
#define MAX_SERVER_DUMP_INTERVAL 30 #define MAX_SERVER_DUMP_INTERVAL 30
#define DOWNLOAD_TIMEOUT_THRESHOLD 90 // Timeout for a replay download - if no blocks #define DOWNLOAD_TIMEOUT_THRESHOLD 90 // Timeout for a replay download - if no blocks
// are added or updated after this many seconds, // are added or updated after this many seconds,
// the replay will be put in the error state. // the replay will be put in the error state.
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#define MAX_TIMES_TO_SHOW_REPLAY_WELCOME_DLG 1 #define MAX_TIMES_TO_SHOW_REPLAY_WELCOME_DLG 1
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#define MAX_SESSIONNAME_LENGTH 260 #define MAX_SESSIONNAME_LENGTH 260
#define MAX_REPLAY_TITLE_LENGTH 256 #define MAX_REPLAY_TITLE_LENGTH 256
#define MAX_TAKE_TITLE_LENGTH 256 #define MAX_TAKE_TITLE_LENGTH 256
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#define DEFAULT_COMPRESSOR_TYPE COMPRESSORTYPE_BZ2 #define DEFAULT_COMPRESSOR_TYPE COMPRESSORTYPE_BZ2
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#define JOB_FAILED ( (JobStatus_t) -1 ) #define JOB_FAILED ( (JobStatus_t) -1 )
#define DOWNLOAD_MAX_SIZE ( 8 * 1024 * 1024 ) // 8 MB #define DOWNLOAD_MAX_SIZE ( 8 * 1024 * 1024 ) // 8 MB
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
#endif // SHARED_DEFS_H #endif // SHARED_DEFS_H

File diff suppressed because it is too large Load Diff

View File

@ -1,38 +1,38 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: StudioMDL byteswapping functions. // Purpose: StudioMDL byteswapping functions.
// //
// $NoKeywords: $ // $NoKeywords: $
//============================================================================= //=============================================================================
#ifndef STUDIOBYTESWAP_H #ifndef STUDIOBYTESWAP_H
#define STUDIOBYTESWAP_H #define STUDIOBYTESWAP_H
#if defined(_WIN32) #if defined(_WIN32)
#pragma once #pragma once
#endif #endif
#include "byteswap.h" #include "byteswap.h"
struct studiohdr_t; struct studiohdr_t;
class IPhysicsCollision; class IPhysicsCollision;
namespace StudioByteSwap namespace StudioByteSwap
{ {
typedef bool (*CompressFunc_t)( const void *pInput, int inputSize, void **pOutput, int *pOutputSize ); typedef bool (*CompressFunc_t)( const void *pInput, int inputSize, void **pOutput, int *pOutputSize );
//void SetTargetBigEndian( bool bigEndian ); //void SetTargetBigEndian( bool bigEndian );
void ActivateByteSwapping( bool bActivate ); void ActivateByteSwapping( bool bActivate );
void SourceIsNative( bool bActivate ); void SourceIsNative( bool bActivate );
void SetVerbose( bool bVerbose ); void SetVerbose( bool bVerbose );
void SetCollisionInterface( IPhysicsCollision *pPhysicsCollision ); void SetCollisionInterface( IPhysicsCollision *pPhysicsCollision );
int ByteswapStudioFile( const char *pFilename, void *pOutBase, const void *pFileBase, int fileSize, studiohdr_t *pHdr, CompressFunc_t pCompressFunc = NULL ); int ByteswapStudioFile( const char *pFilename, void *pOutBase, const void *pFileBase, int fileSize, studiohdr_t *pHdr, CompressFunc_t pCompressFunc = NULL );
int ByteswapPHY( void *pOutBase, const void *pFileBase, int fileSize ); int ByteswapPHY( void *pOutBase, const void *pFileBase, int fileSize );
int ByteswapANI( studiohdr_t* pHdr, void *pOutBase, const void *pFileBase, int filesize ); int ByteswapANI( studiohdr_t* pHdr, void *pOutBase, const void *pFileBase, int filesize );
int ByteswapVVD( void *pOutBase, const void *pFileBase, int fileSize ); int ByteswapVVD( void *pOutBase, const void *pFileBase, int fileSize );
int ByteswapVTX( void *pOutBase, const void *pFileBase, int fileSize ); int ByteswapVTX( void *pOutBase, const void *pFileBase, int fileSize );
int ByteswapMDL( void *pOutBase, const void *pFileBase, int fileSize ); int ByteswapMDL( void *pOutBase, const void *pFileBase, int fileSize );
#define BYTESWAP_ALIGNMENT_PADDING 4096 #define BYTESWAP_ALIGNMENT_PADDING 4096
} }
#endif // STUDIOBYTESWAP_H #endif // STUDIOBYTESWAP_H

View File

@ -1,35 +1,35 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: // Purpose:
// //
// $NoKeywords: $ // $NoKeywords: $
//=============================================================================// //=============================================================================//
#ifndef USERID_H #ifndef USERID_H
#define USERID_H #define USERID_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
#if !defined( INCLUDED_STEAM_STEAMUSERIDTYPES_H ) #if !defined( INCLUDED_STEAM_STEAMUSERIDTYPES_H )
#include "SteamCommon.h" #include "SteamCommon.h"
#endif #endif
#define IDTYPE_WON 0 #define IDTYPE_WON 0
#define IDTYPE_STEAM 1 #define IDTYPE_STEAM 1
#define IDTYPE_VALVE 2 #define IDTYPE_VALVE 2
#define IDTYPE_HLTV 3 #define IDTYPE_HLTV 3
#define IDTYPE_REPLAY 4 #define IDTYPE_REPLAY 4
typedef struct USERID_s typedef struct USERID_s
{ {
int idtype; int idtype;
union union
{ {
TSteamGlobalUserID steamid; TSteamGlobalUserID steamid;
} uid; } uid;
// unsigned int clientip; // unsigned int clientip;
} USERID_t; } USERID_t;
#endif // USERID_H #endif // USERID_H

View File

@ -1,237 +1,237 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: Win32 replacements for XBox. // Purpose: Win32 replacements for XBox.
// //
//============================================================================= //=============================================================================
#if !defined( XBOXSTUBS_H ) && !defined( _X360 ) #if !defined( XBOXSTUBS_H ) && !defined( _X360 )
#define XBOXSTUBS_H #define XBOXSTUBS_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
#include "tier0/platform.h" #include "tier0/platform.h"
// Content creation/open flags // Content creation/open flags
#define XCONTENTFLAG_NONE 0x00 #define XCONTENTFLAG_NONE 0x00
#define XCONTENTFLAG_CREATENEW 0x00 #define XCONTENTFLAG_CREATENEW 0x00
#define XCONTENTFLAG_CREATEALWAYS 0x00 #define XCONTENTFLAG_CREATEALWAYS 0x00
#define XCONTENTFLAG_OPENEXISTING 0x00 #define XCONTENTFLAG_OPENEXISTING 0x00
#define XCONTENTFLAG_OPENALWAYS 0x00 #define XCONTENTFLAG_OPENALWAYS 0x00
#define XCONTENTFLAG_TRUNCATEEXISTING 0x00 #define XCONTENTFLAG_TRUNCATEEXISTING 0x00
// Content attributes // Content attributes
#define XCONTENTFLAG_NOPROFILE_TRANSFER 0x00 #define XCONTENTFLAG_NOPROFILE_TRANSFER 0x00
#define XCONTENTFLAG_NODEVICE_TRANSFER 0x00 #define XCONTENTFLAG_NODEVICE_TRANSFER 0x00
#define XCONTENTFLAG_STRONG_SIGNED 0x00 #define XCONTENTFLAG_STRONG_SIGNED 0x00
#define XCONTENTFLAG_ALLOWPROFILE_TRANSFER 0x00 #define XCONTENTFLAG_ALLOWPROFILE_TRANSFER 0x00
#define XCONTENTFLAG_MOVEONLY_TRANSFER 0x00 #define XCONTENTFLAG_MOVEONLY_TRANSFER 0x00
// Console device ports // Console device ports
#define XDEVICE_PORT0 0 #define XDEVICE_PORT0 0
#define XDEVICE_PORT1 1 #define XDEVICE_PORT1 1
#define XDEVICE_PORT2 2 #define XDEVICE_PORT2 2
#define XDEVICE_PORT3 3 #define XDEVICE_PORT3 3
#define XUSER_MAX_COUNT 4 #define XUSER_MAX_COUNT 4
#define XUSER_INDEX_NONE 0x000000FE #define XUSER_INDEX_NONE 0x000000FE
#define XBX_CLR_DEFAULT 0xFF000000 #define XBX_CLR_DEFAULT 0xFF000000
#define XBX_CLR_WARNING 0x0000FFFF #define XBX_CLR_WARNING 0x0000FFFF
#define XBX_CLR_ERROR 0x000000FF #define XBX_CLR_ERROR 0x000000FF
#define XBOX_MINBORDERSAFE 0 #define XBOX_MINBORDERSAFE 0
#define XBOX_MAXBORDERSAFE 0 #define XBOX_MAXBORDERSAFE 0
typedef enum typedef enum
{ {
XK_NULL, XK_NULL,
XK_BUTTON_UP, XK_BUTTON_UP,
XK_BUTTON_DOWN, XK_BUTTON_DOWN,
XK_BUTTON_LEFT, XK_BUTTON_LEFT,
XK_BUTTON_RIGHT, XK_BUTTON_RIGHT,
XK_BUTTON_START, XK_BUTTON_START,
XK_BUTTON_BACK, XK_BUTTON_BACK,
XK_BUTTON_STICK1, XK_BUTTON_STICK1,
XK_BUTTON_STICK2, XK_BUTTON_STICK2,
XK_BUTTON_A, XK_BUTTON_A,
XK_BUTTON_B, XK_BUTTON_B,
XK_BUTTON_X, XK_BUTTON_X,
XK_BUTTON_Y, XK_BUTTON_Y,
XK_BUTTON_LEFT_SHOULDER, XK_BUTTON_LEFT_SHOULDER,
XK_BUTTON_RIGHT_SHOULDER, XK_BUTTON_RIGHT_SHOULDER,
XK_BUTTON_LTRIGGER, XK_BUTTON_LTRIGGER,
XK_BUTTON_RTRIGGER, XK_BUTTON_RTRIGGER,
XK_STICK1_UP, XK_STICK1_UP,
XK_STICK1_DOWN, XK_STICK1_DOWN,
XK_STICK1_LEFT, XK_STICK1_LEFT,
XK_STICK1_RIGHT, XK_STICK1_RIGHT,
XK_STICK2_UP, XK_STICK2_UP,
XK_STICK2_DOWN, XK_STICK2_DOWN,
XK_STICK2_LEFT, XK_STICK2_LEFT,
XK_STICK2_RIGHT, XK_STICK2_RIGHT,
XK_MAX_KEYS, XK_MAX_KEYS,
} xKey_t; } xKey_t;
//typedef enum //typedef enum
//{ //{
// XVRB_NONE, // off // XVRB_NONE, // off
// XVRB_ERROR, // fatal error // XVRB_ERROR, // fatal error
// XVRB_ALWAYS, // no matter what // XVRB_ALWAYS, // no matter what
// XVRB_WARNING, // non-fatal warnings // XVRB_WARNING, // non-fatal warnings
// XVRB_STATUS, // status reports // XVRB_STATUS, // status reports
// XVRB_ALL, // XVRB_ALL,
//} xverbose_e; //} xverbose_e;
typedef unsigned short WORD; typedef unsigned short WORD;
#ifndef POSIX #ifndef POSIX
typedef unsigned long DWORD; typedef unsigned long DWORD;
typedef void* HANDLE; typedef void* HANDLE;
typedef unsigned __int64 ULONGLONG; typedef unsigned __int64 ULONGLONG;
#endif #endif
#ifdef POSIX #ifdef POSIX
typedef DWORD COLORREF; typedef DWORD COLORREF;
#endif #endif
#ifndef INVALID_HANDLE_VALUE #ifndef INVALID_HANDLE_VALUE
#define INVALID_HANDLE_VALUE ((HANDLE)-1) #define INVALID_HANDLE_VALUE ((HANDLE)-1)
#endif #endif
// typedef struct { // typedef struct {
// IN_ADDR ina; // IP address (zero if not static/DHCP) // IN_ADDR ina; // IP address (zero if not static/DHCP)
// IN_ADDR inaOnline; // Online IP address (zero if not online) // IN_ADDR inaOnline; // Online IP address (zero if not online)
// WORD wPortOnline; // Online port // WORD wPortOnline; // Online port
// BYTE abEnet[6]; // Ethernet MAC address // BYTE abEnet[6]; // Ethernet MAC address
// BYTE abOnline[20]; // Online identification // BYTE abOnline[20]; // Online identification
// } XNADDR; // } XNADDR;
typedef int XNADDR; typedef int XNADDR;
typedef uint64 XUID; typedef uint64 XUID;
typedef struct { typedef struct {
BYTE ab[8]; // xbox to xbox key identifier BYTE ab[8]; // xbox to xbox key identifier
} XNKID; } XNKID;
typedef struct { typedef struct {
BYTE ab[16]; // xbox to xbox key exchange key BYTE ab[16]; // xbox to xbox key exchange key
} XNKEY; } XNKEY;
typedef struct _XSESSION_INFO typedef struct _XSESSION_INFO
{ {
XNKID sessionID; // 8 bytes XNKID sessionID; // 8 bytes
XNADDR hostAddress; // 36 bytes XNADDR hostAddress; // 36 bytes
XNKEY keyExchangeKey; // 16 bytes XNKEY keyExchangeKey; // 16 bytes
} XSESSION_INFO, *PXSESSION_INFO; } XSESSION_INFO, *PXSESSION_INFO;
typedef struct _XUSER_DATA typedef struct _XUSER_DATA
{ {
BYTE type; BYTE type;
union union
{ {
int nData; // XUSER_DATA_TYPE_INT32 int nData; // XUSER_DATA_TYPE_INT32
int64 i64Data; // XUSER_DATA_TYPE_INT64 int64 i64Data; // XUSER_DATA_TYPE_INT64
double dblData; // XUSER_DATA_TYPE_DOUBLE double dblData; // XUSER_DATA_TYPE_DOUBLE
struct // XUSER_DATA_TYPE_UNICODE struct // XUSER_DATA_TYPE_UNICODE
{ {
uint cbData; // Includes null-terminator uint cbData; // Includes null-terminator
char * pwszData; char * pwszData;
} string; } string;
float fData; // XUSER_DATA_TYPE_FLOAT float fData; // XUSER_DATA_TYPE_FLOAT
struct // XUSER_DATA_TYPE_BINARY struct // XUSER_DATA_TYPE_BINARY
{ {
uint cbData; uint cbData;
char * pbData; char * pbData;
} binary; } binary;
}; };
} XUSER_DATA, *PXUSER_DATA; } XUSER_DATA, *PXUSER_DATA;
typedef struct _XUSER_PROPERTY typedef struct _XUSER_PROPERTY
{ {
DWORD dwPropertyId; DWORD dwPropertyId;
XUSER_DATA value; XUSER_DATA value;
} XUSER_PROPERTY, *PXUSER_PROPERTY; } XUSER_PROPERTY, *PXUSER_PROPERTY;
typedef struct _XUSER_CONTEXT typedef struct _XUSER_CONTEXT
{ {
DWORD dwContextId; DWORD dwContextId;
DWORD dwValue; DWORD dwValue;
} XUSER_CONTEXT, *PXUSER_CONTEXT; } XUSER_CONTEXT, *PXUSER_CONTEXT;
typedef struct _XSESSION_SEARCHRESULT typedef struct _XSESSION_SEARCHRESULT
{ {
XSESSION_INFO info; XSESSION_INFO info;
DWORD dwOpenPublicSlots; DWORD dwOpenPublicSlots;
DWORD dwOpenPrivateSlots; DWORD dwOpenPrivateSlots;
DWORD dwFilledPublicSlots; DWORD dwFilledPublicSlots;
DWORD dwFilledPrivateSlots; DWORD dwFilledPrivateSlots;
DWORD cProperties; DWORD cProperties;
DWORD cContexts; DWORD cContexts;
PXUSER_PROPERTY pProperties; PXUSER_PROPERTY pProperties;
PXUSER_CONTEXT pContexts; PXUSER_CONTEXT pContexts;
} XSESSION_SEARCHRESULT, *PXSESSION_SEARCHRESULT; } XSESSION_SEARCHRESULT, *PXSESSION_SEARCHRESULT;
typedef struct _XSESSION_SEARCHRESULT_HEADER typedef struct _XSESSION_SEARCHRESULT_HEADER
{ {
DWORD dwSearchResults; DWORD dwSearchResults;
XSESSION_SEARCHRESULT *pResults; XSESSION_SEARCHRESULT *pResults;
} XSESSION_SEARCHRESULT_HEADER, *PXSESSION_SEARCHRESULT_HEADER; } XSESSION_SEARCHRESULT_HEADER, *PXSESSION_SEARCHRESULT_HEADER;
typedef struct _XSESSION_REGISTRANT typedef struct _XSESSION_REGISTRANT
{ {
uint64 qwMachineID; uint64 qwMachineID;
DWORD bTrustworthiness; DWORD bTrustworthiness;
DWORD bNumUsers; DWORD bNumUsers;
XUID *rgUsers; XUID *rgUsers;
} XSESSION_REGISTRANT; } XSESSION_REGISTRANT;
typedef struct _XSESSION_REGISTRATION_RESULTS typedef struct _XSESSION_REGISTRATION_RESULTS
{ {
DWORD wNumRegistrants; DWORD wNumRegistrants;
XSESSION_REGISTRANT *rgRegistrants; XSESSION_REGISTRANT *rgRegistrants;
} XSESSION_REGISTRATION_RESULTS, *PXSESSION_REGISTRATION_RESULTS; } XSESSION_REGISTRATION_RESULTS, *PXSESSION_REGISTRATION_RESULTS;
typedef struct { typedef struct {
BYTE bFlags; BYTE bFlags;
BYTE bReserved; BYTE bReserved;
WORD cProbesXmit; WORD cProbesXmit;
WORD cProbesRecv; WORD cProbesRecv;
WORD cbData; WORD cbData;
BYTE * pbData; BYTE * pbData;
WORD wRttMinInMsecs; WORD wRttMinInMsecs;
WORD wRttMedInMsecs; WORD wRttMedInMsecs;
DWORD dwUpBitsPerSec; DWORD dwUpBitsPerSec;
DWORD dwDnBitsPerSec; DWORD dwDnBitsPerSec;
} XNQOSINFO; } XNQOSINFO;
typedef struct { typedef struct {
uint cxnqos; uint cxnqos;
uint cxnqosPending; uint cxnqosPending;
XNQOSINFO axnqosinfo[1]; XNQOSINFO axnqosinfo[1];
} XNQOS; } XNQOS;
#define XSESSION_CREATE_HOST 0 #define XSESSION_CREATE_HOST 0
#define XUSER_DATA_TYPE_INT32 0 #define XUSER_DATA_TYPE_INT32 0
#define XSESSION_CREATE_USES_ARBITRATION 0 #define XSESSION_CREATE_USES_ARBITRATION 0
#define XNET_QOS_LISTEN_ENABLE 0 #define XNET_QOS_LISTEN_ENABLE 0
#define XNET_QOS_LISTEN_DISABLE 0 #define XNET_QOS_LISTEN_DISABLE 0
#define XNET_QOS_LISTEN_SET_DATA 0 #define XNET_QOS_LISTEN_SET_DATA 0
FORCEINLINE void XBX_ProcessEvents() {} FORCEINLINE void XBX_ProcessEvents() {}
FORCEINLINE unsigned int XBX_GetSystemTime() { return 0; } FORCEINLINE unsigned int XBX_GetSystemTime() { return 0; }
FORCEINLINE int XBX_GetPrimaryUserId() { return 0; } FORCEINLINE int XBX_GetPrimaryUserId() { return 0; }
FORCEINLINE void XBX_SetPrimaryUserId( DWORD idx ) {} FORCEINLINE void XBX_SetPrimaryUserId( DWORD idx ) {}
FORCEINLINE int XBX_GetStorageDeviceId() { return 0; } FORCEINLINE int XBX_GetStorageDeviceId() { return 0; }
FORCEINLINE void XBX_SetStorageDeviceId( DWORD idx ) {} FORCEINLINE void XBX_SetStorageDeviceId( DWORD idx ) {}
FORCEINLINE const char *XBX_GetLanguageString() { return ""; } FORCEINLINE const char *XBX_GetLanguageString() { return ""; }
FORCEINLINE bool XBX_IsLocalized() { return false; } FORCEINLINE bool XBX_IsLocalized() { return false; }
#define XCONTENT_MAX_DISPLAYNAME_LENGTH 128 #define XCONTENT_MAX_DISPLAYNAME_LENGTH 128
#define XCONTENT_MAX_FILENAME_LENGTH 42 #define XCONTENT_MAX_FILENAME_LENGTH 42
#define XBX_INVALID_STORAGE_ID ((DWORD) -1) #define XBX_INVALID_STORAGE_ID ((DWORD) -1)
#define XBX_STORAGE_DECLINED ((DWORD) -2) #define XBX_STORAGE_DECLINED ((DWORD) -2)
#endif // XBOXSTUBS_H #endif // XBOXSTUBS_H

View File

@ -1,22 +1,22 @@
use File::DosGlob; use File::DosGlob;
@ARGV = map { @ARGV = map {
my @g = File::DosGlob::glob($_) if /[*?]/; my @g = File::DosGlob::glob($_) if /[*?]/;
@g ? @g : $_; @g ? @g : $_;
} @ARGV; } @ARGV;
open FILE, ">__tmpshaderlist.txt"; open FILE, ">__tmpshaderlist.txt";
foreach $arg (@ARGV) foreach $arg (@ARGV)
{ {
if( $arg =~ m/\.fxc$/i || $arg =~ m/\.vsh$/i || $arg =~ m/\.psh$/i ) if( $arg =~ m/\.fxc$/i || $arg =~ m/\.vsh$/i || $arg =~ m/\.psh$/i )
{ {
print $arg . "\n"; print $arg . "\n";
print FILE $arg . "\n"; print FILE $arg . "\n";
} }
} }
close FILE; close FILE;
system "buildshaders.bat __tmpshaderlist"; system "buildshaders.bat __tmpshaderlist";
unlink "__tmpshaderlist.txt"; unlink "__tmpshaderlist.txt";

View File

@ -1,116 +1,116 @@
use String::CRC32; use String::CRC32;
BEGIN {use File::Basename; push @INC, dirname($0); } BEGIN {use File::Basename; push @INC, dirname($0); }
require "valve_perl_helpers.pl"; require "valve_perl_helpers.pl";
sub GetShaderType sub GetShaderType
{ {
my $shadername = shift; my $shadername = shift;
my $shadertype; my $shadertype;
if( $shadername =~ m/\.vsh/i ) if( $shadername =~ m/\.vsh/i )
{ {
$shadertype = "vsh"; $shadertype = "vsh";
} }
elsif( $shadername =~ m/\.psh/i ) elsif( $shadername =~ m/\.psh/i )
{ {
$shadertype = "psh"; $shadertype = "psh";
} }
elsif( $shadername =~ m/\.fxc/i ) elsif( $shadername =~ m/\.fxc/i )
{ {
$shadertype = "fxc"; $shadertype = "fxc";
} }
else else
{ {
die; die;
} }
return $shadertype; return $shadertype;
} }
sub GetShaderSrc sub GetShaderSrc
{ {
my $shadername = shift; my $shadername = shift;
if ( $shadername =~ m/^(.*)-----/i ) if ( $shadername =~ m/^(.*)-----/i )
{ {
return $1; return $1;
} }
else else
{ {
return $shadername; return $shadername;
} }
} }
sub GetShaderType sub GetShaderType
{ {
my $shadername = shift; my $shadername = shift;
my $shadertype; my $shadertype;
if( $shadername =~ m/\.vsh/i ) if( $shadername =~ m/\.vsh/i )
{ {
$shadertype = "vsh"; $shadertype = "vsh";
} }
elsif( $shadername =~ m/\.psh/i ) elsif( $shadername =~ m/\.psh/i )
{ {
$shadertype = "psh"; $shadertype = "psh";
} }
elsif( $shadername =~ m/\.fxc/i ) elsif( $shadername =~ m/\.fxc/i )
{ {
$shadertype = "fxc"; $shadertype = "fxc";
} }
else else
{ {
die; die;
} }
return $shadertype; return $shadertype;
} }
sub GetShaderBase sub GetShaderBase
{ {
my $shadername = shift; my $shadername = shift;
if ( $shadername =~ m/-----(.*)$/i ) if ( $shadername =~ m/-----(.*)$/i )
{ {
return $1; return $1;
} }
else else
{ {
my $shadertype = &GetShaderType( $shadername ); my $shadertype = &GetShaderType( $shadername );
$shadername =~ s/\.$shadertype//i; $shadername =~ s/\.$shadertype//i;
return $shadername; return $shadername;
} }
} }
$g_x360 = 0; $g_x360 = 0;
$g_vcsext = ".vcs"; $g_vcsext = ".vcs";
while( 1 ) while( 1 )
{ {
$inputbase = shift; $inputbase = shift;
if( $inputbase =~ m/-x360/ ) if( $inputbase =~ m/-x360/ )
{ {
$g_x360 = 1; $g_x360 = 1;
$g_vcsext = ".360.vcs"; $g_vcsext = ".360.vcs";
} }
else else
{ {
last; last;
} }
} }
# rip the txt off the end if it's there. # rip the txt off the end if it's there.
$inputbase =~ s/\.txt//i; $inputbase =~ s/\.txt//i;
my @srcfiles = &LoadShaderListFile( $inputbase ); my @srcfiles = &LoadShaderListFile( $inputbase );
foreach $srcfile ( @srcfiles ) foreach $srcfile ( @srcfiles )
{ {
my $shadertype = &GetShaderType( $srcfile ); my $shadertype = &GetShaderType( $srcfile );
my $shaderbase = &GetShaderBase( $srcfile ); my $shaderbase = &GetShaderBase( $srcfile );
my $shadersrc = &GetShaderSrc( $srcfile ); my $shadersrc = &GetShaderSrc( $srcfile );
my $vcsFileName = "..\\..\\..\\game\\hl2\\shaders\\$shadertype\\$shaderbase" . $g_vcsext; my $vcsFileName = "..\\..\\..\\game\\hl2\\shaders\\$shadertype\\$shaderbase" . $g_vcsext;
# print "shadersrc: $shadersrc vcsFileName: $vcsFileName\n"; # print "shadersrc: $shadersrc vcsFileName: $vcsFileName\n";
if( $g_x360 && ( $shaderbase =~ m/_ps20$/i ) ) if( $g_x360 && ( $shaderbase =~ m/_ps20$/i ) )
{ {
next; # skip _ps20 files for 360 next; # skip _ps20 files for 360
} }
&CheckCRCAgainstTarget( $shadersrc, $vcsFileName, 1 ); &CheckCRCAgainstTarget( $shadersrc, $vcsFileName, 1 );
} }

View File

@ -1,75 +1,75 @@
BEGIN {use File::Basename; push @INC, dirname($0); } BEGIN {use File::Basename; push @INC, dirname($0); }
require "valve_perl_helpers.pl"; require "valve_perl_helpers.pl";
use Cwd; use Cwd;
use String::CRC32; use String::CRC32;
my $txtfilename = shift; my $txtfilename = shift;
my $arg = shift; my $arg = shift;
my $is360 = 0; my $is360 = 0;
my $platformextension = ""; my $platformextension = "";
if( $arg =~ m/-x360/i ) if( $arg =~ m/-x360/i )
{ {
$is360 = 1; $is360 = 1;
$platformextension = ".360"; $platformextension = ".360";
} }
open TXTFILE, "<$txtfilename"; open TXTFILE, "<$txtfilename";
my $src; my $src;
my $dst; my $dst;
while( $src = <TXTFILE> ) while( $src = <TXTFILE> )
{ {
# get rid of comments # get rid of comments
$src =~ s,//.*,,g; $src =~ s,//.*,,g;
# skip blank lines # skip blank lines
if( $src =~ m/^\s*$/ ) if( $src =~ m/^\s*$/ )
{ {
next; next;
} }
# Get rid of newlines. # Get rid of newlines.
$src =~ s/\n//g; $src =~ s/\n//g;
# Save off the shader source filename. # Save off the shader source filename.
my $dst = $src; my $dst = $src;
$dst =~ s/_tmp//gi; $dst =~ s/_tmp//gi;
# Does the dst exist? # Does the dst exist?
my $dstexists = -e $dst; my $dstexists = -e $dst;
my $srcexists = -e $src; my $srcexists = -e $src;
# What are the time stamps for the src and dst? # What are the time stamps for the src and dst?
my $srcmodtime = ( stat $src )[9]; my $srcmodtime = ( stat $src )[9];
my $dstmodtime = ( stat $dst )[9]; my $dstmodtime = ( stat $dst )[9];
# Open for edit or add if different than what is in perforce already. # Open for edit or add if different than what is in perforce already.
if( !$dstexists || ( $srcmodtime != $dstmodtime ) ) if( !$dstexists || ( $srcmodtime != $dstmodtime ) )
{ {
# Make the target writable if it exists # Make the target writable if it exists
if( $dstexists ) if( $dstexists )
{ {
MakeFileWritable( $dst ); MakeFileWritable( $dst );
} }
my $dir = $dst; my $dir = $dst;
$dir =~ s,([^/\\]*$),,; # rip the filename off the end $dir =~ s,([^/\\]*$),,; # rip the filename off the end
my $filename = $1; my $filename = $1;
# create the target directory if it doesn't exist # create the target directory if it doesn't exist
if( !$dstexists ) if( !$dstexists )
{ {
&MakeDirHier( $dir, 0777 ); &MakeDirHier( $dir, 0777 );
} }
# copy the file to its targets. . . we want to see STDERR here if there is an error. # copy the file to its targets. . . we want to see STDERR here if there is an error.
my $cmd = "copy $src $dst > nul"; my $cmd = "copy $src $dst > nul";
# print STDERR "$cmd\n"; # print STDERR "$cmd\n";
system $cmd; system $cmd;
MakeFileReadOnly( $dst ); MakeFileReadOnly( $dst );
} }
} }
close TXTFILE; close TXTFILE;

View File

@ -1,172 +1,172 @@
BEGIN {use File::Basename; push @INC, dirname($0); } BEGIN {use File::Basename; push @INC, dirname($0); }
require "valve_perl_helpers.pl"; require "valve_perl_helpers.pl";
use Cwd; use Cwd;
use String::CRC32; use String::CRC32;
sub ReadInputFileWithIncludes sub ReadInputFileWithIncludes
{ {
local( $filename ) = shift; local( $filename ) = shift;
local( *INPUT ); local( *INPUT );
local( $output ); local( $output );
open INPUT, "<$filename" || die; open INPUT, "<$filename" || die;
local( $line ); local( $line );
local( $linenum ) = 1; local( $linenum ) = 1;
while( $line = <INPUT> ) while( $line = <INPUT> )
{ {
if( $line =~ m/\#include\s+\"(.*)\"/i ) if( $line =~ m/\#include\s+\"(.*)\"/i )
{ {
$output.= ReadInputFileWithIncludes( $1 ); $output.= ReadInputFileWithIncludes( $1 );
} }
else else
{ {
$output .= $line; $output .= $line;
} }
} }
close INPUT; close INPUT;
return $output; return $output;
} }
sub PatchCRC sub PatchCRC
{ {
my $filename = shift; my $filename = shift;
my $crc = shift; my $crc = shift;
# print STDERR "PatchCRC( $filename, $crc )\n"; # print STDERR "PatchCRC( $filename, $crc )\n";
local( *FP ); local( *FP );
open FP, "+<$filename" || die; open FP, "+<$filename" || die;
binmode( FP ); binmode( FP );
seek FP, 6 * 4, 0; seek FP, 6 * 4, 0;
my $uInt = "I"; my $uInt = "I";
if( $filename =~ m/360/ ) if( $filename =~ m/360/ )
{ {
$uInt = "N"; $uInt = "N";
} }
print FP pack $uInt, $crc; print FP pack $uInt, $crc;
close FP; close FP;
} }
my $txtfilename = shift; my $txtfilename = shift;
my $arg = shift; my $arg = shift;
my $is360 = 0; my $is360 = 0;
my $platformextension = ""; my $platformextension = "";
if( $arg =~ m/-x360/i ) if( $arg =~ m/-x360/i )
{ {
$is360 = 1; $is360 = 1;
$platformextension = ".360"; $platformextension = ".360";
} }
# Get the changelist number for the Shader Auto Checkout changelist. Will create the changelist if it doesn't exist. # Get the changelist number for the Shader Auto Checkout changelist. Will create the changelist if it doesn't exist.
my $changelistnumber = `valve_p4_create_changelist.cmd ..\\..\\..\\game\\hl2\\shaders \"Shader Auto Checkout VCS\"`; my $changelistnumber = `valve_p4_create_changelist.cmd ..\\..\\..\\game\\hl2\\shaders \"Shader Auto Checkout VCS\"`;
# Get rid of the newline # Get rid of the newline
$changelistnumber =~ s/\n//g; $changelistnumber =~ s/\n//g;
my $changelistarg = ""; my $changelistarg = "";
if( $changelistnumber != 0 ) if( $changelistnumber != 0 )
{ {
$changelistarg = "-c $changelistnumber" $changelistarg = "-c $changelistnumber"
} }
open TXTFILE, "<$txtfilename"; open TXTFILE, "<$txtfilename";
my $src; my $src;
my $dst; my $dst;
while( $src = <TXTFILE> ) while( $src = <TXTFILE> )
{ {
# get rid of comments # get rid of comments
$src =~ s,//.*,,g; $src =~ s,//.*,,g;
# skip blank lines # skip blank lines
if( $src =~ m/^\s*$/ ) if( $src =~ m/^\s*$/ )
{ {
next; next;
} }
# Get rid of newlines. # Get rid of newlines.
$src =~ s/\n//g; $src =~ s/\n//g;
# Save off the shader source filename. # Save off the shader source filename.
my $shadersrcfilename = $src; my $shadersrcfilename = $src;
$shadersrcfilename =~ s/-----.*$//; $shadersrcfilename =~ s/-----.*$//;
# use only target basename. # use only target basename.
$src =~ s/^.*-----//; $src =~ s/^.*-----//;
# where the binary vcs file is # where the binary vcs file is
my $spath = ""; my $spath = "";
if ( $shadersrcfilename =~ m@\.fxc@i ) if ( $shadersrcfilename =~ m@\.fxc@i )
{ {
$spath = "shaders\\fxc\\"; $spath = "shaders\\fxc\\";
} }
if ( $shadersrcfilename =~ m@\.vsh@i ) if ( $shadersrcfilename =~ m@\.vsh@i )
{ {
$spath = "shaders\\vsh\\"; $spath = "shaders\\vsh\\";
} }
if ( $shadersrcfilename =~ m@\.psh@i ) if ( $shadersrcfilename =~ m@\.psh@i )
{ {
$spath = "shaders\\psh\\"; $spath = "shaders\\psh\\";
} }
# make the source have path and extension # make the source have path and extension
$src = $spath . $src . $platformextension . ".vcs"; $src = $spath . $src . $platformextension . ".vcs";
# build the dest filename. # build the dest filename.
$dst = $src; $dst = $src;
$dst =~ s/shaders\\/..\\..\\..\\game\\hl2\\shaders\\/i; $dst =~ s/shaders\\/..\\..\\..\\game\\hl2\\shaders\\/i;
# Does the dst exist? # Does the dst exist?
my $dstexists = -e $dst; my $dstexists = -e $dst;
my $srcexists = -e $src; my $srcexists = -e $src;
# What are the time stamps for the src and dst? # What are the time stamps for the src and dst?
my $srcmodtime = ( stat $src )[9]; my $srcmodtime = ( stat $src )[9];
my $dstmodtime = ( stat $dst )[9]; my $dstmodtime = ( stat $dst )[9];
# Write $dst to a file so that we can do perforce stuff to it later. # Write $dst to a file so that we can do perforce stuff to it later.
local( *VCSLIST ); local( *VCSLIST );
open VCSLIST, ">>vcslist.txt" || die; open VCSLIST, ">>vcslist.txt" || die;
print VCSLIST $dst . "\n"; print VCSLIST $dst . "\n";
close VCSLIST; close VCSLIST;
# Open for edit or add if different than what is in perforce already. # Open for edit or add if different than what is in perforce already.
if( !$dstexists || ( $srcmodtime != $dstmodtime ) ) if( !$dstexists || ( $srcmodtime != $dstmodtime ) )
{ {
if ( $srcexists && $shadersrcfilename =~ m@\.fxc@i ) if ( $srcexists && $shadersrcfilename =~ m@\.fxc@i )
{ {
# Get the CRC for the source file. # Get the CRC for the source file.
my $srccode = ReadInputFileWithIncludes( $shadersrcfilename ); my $srccode = ReadInputFileWithIncludes( $shadersrcfilename );
my $crc = crc32( $srccode ); my $crc = crc32( $srccode );
# Patch the source VCS file with the CRC32 of the source code used to build that file. # Patch the source VCS file with the CRC32 of the source code used to build that file.
PatchCRC( $src, $crc ); PatchCRC( $src, $crc );
} }
# Make the target vcs writable if it exists # Make the target vcs writable if it exists
if( $dstexists ) if( $dstexists )
{ {
MakeFileWritable( $dst ); MakeFileWritable( $dst );
} }
my $dir = $dst; my $dir = $dst;
$dir =~ s,([^/\\]*$),,; # rip the filename off the end $dir =~ s,([^/\\]*$),,; # rip the filename off the end
my $filename = $1; my $filename = $1;
# create the target directory if it doesn't exist # create the target directory if it doesn't exist
if( !$dstexists ) if( !$dstexists )
{ {
&MakeDirHier( $dir, 0777 ); &MakeDirHier( $dir, 0777 );
} }
# copy the file to its targets. . . we want to see STDERR here if there is an error. # copy the file to its targets. . . we want to see STDERR here if there is an error.
my $cmd = "copy $src $dst > nul"; my $cmd = "copy $src $dst > nul";
# print STDERR "$cmd\n"; # print STDERR "$cmd\n";
system $cmd; system $cmd;
MakeFileReadOnly( $dst ); MakeFileReadOnly( $dst );
} }
} }
close TXTFILE; close TXTFILE;

View File

@ -1,110 +1,110 @@
#!perl #!perl
use File::Find; use File::Find;
&BuildRemapTable; &BuildRemapTable;
find(\&convert, "." ); find(\&convert, "." );
sub convert sub convert
{ {
return unless (/\.pcf$/i); return unless (/\.pcf$/i);
return if (/^tmp\.pcf$/i); return if (/^tmp\.pcf$/i);
return if (/^tmp2\.pcf$/i); return if (/^tmp2\.pcf$/i);
return if (/360\.pcf$/i); return if (/360\.pcf$/i);
print STDERR "process ", $File::Find::name," ($_) dir=",`cd`," \n"; print STDERR "process ", $File::Find::name," ($_) dir=",`cd`," \n";
my $fname=$_; my $fname=$_;
print `p4 edit $fname`; print `p4 edit $fname`;
print `dmxconvert -i $_ -o tmp.pcf -oe keyvalues2`; print `dmxconvert -i $_ -o tmp.pcf -oe keyvalues2`;
open(TMP, "tmp.pcf" ) || return; open(TMP, "tmp.pcf" ) || return;
open(OUT, ">tmp2.pcf" ) || die; open(OUT, ">tmp2.pcf" ) || die;
while(<TMP>) while(<TMP>)
{ {
s/[\n\r]//g; s/[\n\r]//g;
if ( (/^(\s*\"functionName\"\s*\"string\"\s*\")(.*)\"(.*)$/) && if ( (/^(\s*\"functionName\"\s*\"string\"\s*\")(.*)\"(.*)$/) &&
length($map{$2}) ) length($map{$2}) )
{ {
$_=$1.$map{$2}.'"'.$3; $_=$1.$map{$2}.'"'.$3;
} }
if ( (/^(\s*\"name\"\s*\"string\"\s*\")(.*)\"(.*)$/) && if ( (/^(\s*\"name\"\s*\"string\"\s*\")(.*)\"(.*)$/) &&
length($map{$2}) ) length($map{$2}) )
{ {
$_=$1.$map{$2}.'"'.$3; $_=$1.$map{$2}.'"'.$3;
} }
print OUT "$_\n"; print OUT "$_\n";
} }
close OUT; close OUT;
close TMP; close TMP;
print `dmxconvert -i tmp2.pcf -o $fname -ie keyvalues2 -oe binary`; print `dmxconvert -i tmp2.pcf -o $fname -ie keyvalues2 -oe binary`;
unlink "tmp.pcf"; unlink "tmp.pcf";
unlink "tmp2.pcf"; unlink "tmp2.pcf";
} }
sub BuildRemapTable sub BuildRemapTable
{ {
$map{"alpha_fade"}= "Alpha Fade and Decay"; $map{"alpha_fade"}= "Alpha Fade and Decay";
$map{"alpha_fade_in_random"}= "Alpha Fade In Random"; $map{"alpha_fade_in_random"}= "Alpha Fade In Random";
$map{"alpha_fade_out_random"}= "Alpha Fade Out Random"; $map{"alpha_fade_out_random"}= "Alpha Fade Out Random";
$map{"basic_movement"}= "Movement Basic"; $map{"basic_movement"}= "Movement Basic";
$map{"color_fade"}= "Color Fade"; $map{"color_fade"}= "Color Fade";
$map{"controlpoint_light"}= "Color Light From Control Point"; $map{"controlpoint_light"}= "Color Light From Control Point";
$map{"Dampen Movement Relative to Control Point"}= "Movement Dampen Relative to Control Point"; $map{"Dampen Movement Relative to Control Point"}= "Movement Dampen Relative to Control Point";
$map{"Distance Between Control Points Scale"}= "Remap Distance Between Two Control Points to Scalar"; $map{"Distance Between Control Points Scale"}= "Remap Distance Between Two Control Points to Scalar";
$map{"Distance to Control Points Scale"}= "Remap Distance to Control Point to Scalar"; $map{"Distance to Control Points Scale"}= "Remap Distance to Control Point to Scalar";
$map{"lifespan_decay"}= "Lifespan Decay"; $map{"lifespan_decay"}= "Lifespan Decay";
$map{"lock to bone"}= "Movement Lock to Bone"; $map{"lock to bone"}= "Movement Lock to Bone";
$map{"postion_lock_to_controlpoint"}= "Movement Lock to Control Point"; $map{"postion_lock_to_controlpoint"}= "Movement Lock to Control Point";
$map{"maintain position along path"}= "Movement Maintain Position Along Path"; $map{"maintain position along path"}= "Movement Maintain Position Along Path";
$map{"Match Particle Velocities"}= "Movement Match Particle Velocities"; $map{"Match Particle Velocities"}= "Movement Match Particle Velocities";
$map{"Max Velocity"}= "Movement Max Velocity"; $map{"Max Velocity"}= "Movement Max Velocity";
$map{"noise"}= "Noise Scalar"; $map{"noise"}= "Noise Scalar";
$map{"vector noise"}= "Noise Vector"; $map{"vector noise"}= "Noise Vector";
$map{"oscillate_scalar"}= "Oscillate Scalar"; $map{"oscillate_scalar"}= "Oscillate Scalar";
$map{"oscillate_vector"}= "Oscillate Vector"; $map{"oscillate_vector"}= "Oscillate Vector";
$map{"Orient Rotation to 2D Direction"}= "Rotation Orient to 2D Direction"; $map{"Orient Rotation to 2D Direction"}= "Rotation Orient to 2D Direction";
$map{"radius_scale"}= "Radius Scale"; $map{"radius_scale"}= "Radius Scale";
$map{"Random Cull"}= "Cull Random"; $map{"Random Cull"}= "Cull Random";
$map{"remap_scalar"}= "Remap Scalar"; $map{"remap_scalar"}= "Remap Scalar";
$map{"rotation_movement"}= "Rotation Basic"; $map{"rotation_movement"}= "Rotation Basic";
$map{"rotation_spin"}= "Rotation Spin Roll"; $map{"rotation_spin"}= "Rotation Spin Roll";
$map{"rotation_spin yaw"}= "Rotation Spin Yaw"; $map{"rotation_spin yaw"}= "Rotation Spin Yaw";
$map{"alpha_random"}= "Alpha Random"; $map{"alpha_random"}= "Alpha Random";
$map{"color_random"}= "Color Random"; $map{"color_random"}= "Color Random";
$map{"create from parent particles"}= "Position From Parent Particles"; $map{"create from parent particles"}= "Position From Parent Particles";
$map{"Create In Hierarchy"}= "Position In CP Hierarchy"; $map{"Create In Hierarchy"}= "Position In CP Hierarchy";
$map{"random position along path"}= "Position Along Path Random"; $map{"random position along path"}= "Position Along Path Random";
$map{"random position on model"}= "Position on Model Random"; $map{"random position on model"}= "Position on Model Random";
$map{"sequential position along path"}= "Position Along Path Sequential"; $map{"sequential position along path"}= "Position Along Path Sequential";
$map{"position_offset_random"}= "Position Modify Offset Random"; $map{"position_offset_random"}= "Position Modify Offset Random";
$map{"position_warp_random"}= "Position Modify Warp Random"; $map{"position_warp_random"}= "Position Modify Warp Random";
$map{"position_within_box"}= "Position Within Box Random"; $map{"position_within_box"}= "Position Within Box Random";
$map{"position_within_sphere"}= "Position Within Sphere Random"; $map{"position_within_sphere"}= "Position Within Sphere Random";
$map{"Inherit Velocity"}= "Velocity Inherit from Control Point"; $map{"Inherit Velocity"}= "Velocity Inherit from Control Point";
$map{"Initial Repulsion Velocity"}= "Velocity Repulse from World"; $map{"Initial Repulsion Velocity"}= "Velocity Repulse from World";
$map{"Initial Velocity Noise"}= "Velocity Noise"; $map{"Initial Velocity Noise"}= "Velocity Noise";
$map{"Initial Scalar Noise"}= "Remap Noise to Scalar"; $map{"Initial Scalar Noise"}= "Remap Noise to Scalar";
$map{"Lifespan from distance to world"}= "Lifetime from Time to Impact"; $map{"Lifespan from distance to world"}= "Lifetime from Time to Impact";
$map{"Pre-Age Noise"}= "Lifetime Pre-Age Noise"; $map{"Pre-Age Noise"}= "Lifetime Pre-Age Noise";
$map{"lifetime_random"}= "Lifetime Random"; $map{"lifetime_random"}= "Lifetime Random";
$map{"radius_random"}= "Radius Random"; $map{"radius_random"}= "Radius Random";
$map{"random yaw"}= "Rotation Yaw Random"; $map{"random yaw"}= "Rotation Yaw Random";
$map{"Randomly Flip Yaw"}= "Rotation Yaw Flip Random"; $map{"Randomly Flip Yaw"}= "Rotation Yaw Flip Random";
$map{"rotation_random"}= "Rotation Random"; $map{"rotation_random"}= "Rotation Random";
$map{"rotation_speed_random"}= "Rotation Speed Random"; $map{"rotation_speed_random"}= "Rotation Speed Random";
$map{"sequence_random"}= "Sequence Random"; $map{"sequence_random"}= "Sequence Random";
$map{"second_sequence_random"}= "Sequence Two Random"; $map{"second_sequence_random"}= "Sequence Two Random";
$map{"trail_length_random"}= "Trail Length Random"; $map{"trail_length_random"}= "Trail Length Random";
$map{"velocity_random"}= "Velocity Random"; $map{"velocity_random"}= "Velocity Random";
} }

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,3 @@
#!/bin/bash #!/bin/bash
exec $(dirname $0)/ccache "${DT_TOOLCHAIN_DIR}"/usr/bin/clang -Qunused-arguments "$@" exec $(dirname $0)/ccache "${DT_TOOLCHAIN_DIR}"/usr/bin/clang -Qunused-arguments "$@"

View File

@ -1,333 +1,333 @@
use String::CRC32; use String::CRC32;
BEGIN {use File::Basename; push @INC, dirname($0); } BEGIN {use File::Basename; push @INC, dirname($0); }
require "valve_perl_helpers.pl"; require "valve_perl_helpers.pl";
sub BuildDefineOptions sub BuildDefineOptions
{ {
local( $output ); local( $output );
local( $combo ) = shift; local( $combo ) = shift;
local( $i ); local( $i );
for( $i = 0; $i < scalar( @dynamicDefineNames ); $i++ ) for( $i = 0; $i < scalar( @dynamicDefineNames ); $i++ )
{ {
local( $val ) = ( $combo % ( $dynamicDefineMax[$i] - $dynamicDefineMin[$i] + 1 ) ) + $dynamicDefineMin[$i]; local( $val ) = ( $combo % ( $dynamicDefineMax[$i] - $dynamicDefineMin[$i] + 1 ) ) + $dynamicDefineMin[$i];
$output .= "/D$dynamicDefineNames[$i]=$val "; $output .= "/D$dynamicDefineNames[$i]=$val ";
$combo = $combo / ( $dynamicDefineMax[$i] - $dynamicDefineMin[$i] + 1 ); $combo = $combo / ( $dynamicDefineMax[$i] - $dynamicDefineMin[$i] + 1 );
} }
for( $i = 0; $i < scalar( @staticDefineNames ); $i++ ) for( $i = 0; $i < scalar( @staticDefineNames ); $i++ )
{ {
local( $val ) = ( $combo % ( $staticDefineMax[$i] - $staticDefineMin[$i] + 1 ) ) + $staticDefineMin[$i]; local( $val ) = ( $combo % ( $staticDefineMax[$i] - $staticDefineMin[$i] + 1 ) ) + $staticDefineMin[$i];
$output .= "/D$staticDefineNames[$i]=$val "; $output .= "/D$staticDefineNames[$i]=$val ";
$combo = $combo / ( $staticDefineMax[$i] - $staticDefineMin[$i] + 1 ); $combo = $combo / ( $staticDefineMax[$i] - $staticDefineMin[$i] + 1 );
} }
return $output; return $output;
} }
sub CalcNumCombos sub CalcNumCombos
{ {
local( $i, $numCombos ); local( $i, $numCombos );
$numCombos = 1; $numCombos = 1;
for( $i = 0; $i < scalar( @dynamicDefineNames ); $i++ ) for( $i = 0; $i < scalar( @dynamicDefineNames ); $i++ )
{ {
$numCombos *= $dynamicDefineMax[$i] - $dynamicDefineMin[$i] + 1; $numCombos *= $dynamicDefineMax[$i] - $dynamicDefineMin[$i] + 1;
} }
for( $i = 0; $i < scalar( @staticDefineNames ); $i++ ) for( $i = 0; $i < scalar( @staticDefineNames ); $i++ )
{ {
$numCombos *= $staticDefineMax[$i] - $staticDefineMin[$i] + 1; $numCombos *= $staticDefineMax[$i] - $staticDefineMin[$i] + 1;
} }
return $numCombos; return $numCombos;
} }
sub CalcNumDynamicCombos sub CalcNumDynamicCombos
{ {
local( $i, $numCombos ); local( $i, $numCombos );
$numCombos = 1; $numCombos = 1;
for( $i = 0; $i < scalar( @dynamicDefineNames ); $i++ ) for( $i = 0; $i < scalar( @dynamicDefineNames ); $i++ )
{ {
$numCombos *= $dynamicDefineMax[$i] - $dynamicDefineMin[$i] + 1; $numCombos *= $dynamicDefineMax[$i] - $dynamicDefineMin[$i] + 1;
} }
return $numCombos; return $numCombos;
} }
$g_dx9 = 1; $g_dx9 = 1;
while( 1 ) while( 1 )
{ {
$psh_filename = shift; $psh_filename = shift;
if( $psh_filename =~ m/-source/ ) if( $psh_filename =~ m/-source/ )
{ {
$g_SourceDir = shift; $g_SourceDir = shift;
} }
elsif( $psh_filename =~ m/-x360/ ) elsif( $psh_filename =~ m/-x360/ )
{ {
$g_x360 = 1; $g_x360 = 1;
} }
else else
{ {
last; last;
} }
} }
$psh_filename =~ s/-----.*$//; $psh_filename =~ s/-----.*$//;
# Get the shader binary version number from a header file. # Get the shader binary version number from a header file.
open FILE, "<$g_SourceDir\\public\\materialsystem\\shader_vcs_version.h" || die; open FILE, "<$g_SourceDir\\public\\materialsystem\\shader_vcs_version.h" || die;
while( $line = <FILE> ) while( $line = <FILE> )
{ {
if( $line =~ m/^\#define\s+SHADER_VCS_VERSION_NUMBER\s+(\d+)\s*$/ ) if( $line =~ m/^\#define\s+SHADER_VCS_VERSION_NUMBER\s+(\d+)\s*$/ )
{ {
$shaderVersion = $1; $shaderVersion = $1;
last; last;
} }
} }
if( !defined $shaderVersion ) if( !defined $shaderVersion )
{ {
die "couldn't get shader version from shader_vcs_version.h"; die "couldn't get shader version from shader_vcs_version.h";
} }
close FILE; close FILE;
local( @staticDefineNames ); local( @staticDefineNames );
local( @staticDefineMin ); local( @staticDefineMin );
local( @staticDefineMax ); local( @staticDefineMax );
local( @dynamicDefineNames ); local( @dynamicDefineNames );
local( @dynamicDefineMin ); local( @dynamicDefineMin );
local( @dynamicDefineMax ); local( @dynamicDefineMax );
# Parse the combos. # Parse the combos.
open PSH, "<$psh_filename"; open PSH, "<$psh_filename";
while( <PSH> ) while( <PSH> )
{ {
last if( !m,^;, ); last if( !m,^;, );
s,^;\s*,,; s,^;\s*,,;
if( m/\s*STATIC\s*\:\s*\"(.*)\"\s+\"(\d+)\.\.(\d+)\"/ ) if( m/\s*STATIC\s*\:\s*\"(.*)\"\s+\"(\d+)\.\.(\d+)\"/ )
{ {
local( $name, $min, $max ); local( $name, $min, $max );
$name = $1; $name = $1;
$min = $2; $min = $2;
$max = $3; $max = $3;
# print "\"STATIC: $name\" \"$min..$max\"\n"; # print "\"STATIC: $name\" \"$min..$max\"\n";
if (/\[(.*)\]/) if (/\[(.*)\]/)
{ {
$platforms=$1; $platforms=$1;
next if ( ($g_x360) && (!($platforms=~/XBOX/i)) ); next if ( ($g_x360) && (!($platforms=~/XBOX/i)) );
next if ( (!$g_x360) && (!($platforms=~/PC/i)) ); next if ( (!$g_x360) && (!($platforms=~/PC/i)) );
} }
push @staticDefineNames, $name; push @staticDefineNames, $name;
push @staticDefineMin, $min; push @staticDefineMin, $min;
push @staticDefineMax, $max; push @staticDefineMax, $max;
} }
elsif( m/\s*DYNAMIC\s*\:\s*\"(.*)\"\s+\"(\d+)\.\.(\d+)\"/ ) elsif( m/\s*DYNAMIC\s*\:\s*\"(.*)\"\s+\"(\d+)\.\.(\d+)\"/ )
{ {
local( $name, $min, $max ); local( $name, $min, $max );
$name = $1; $name = $1;
$min = $2; $min = $2;
$max = $3; $max = $3;
# print "\"DYNAMIC: $name\" \"$min..$max\"\n"; # print "\"DYNAMIC: $name\" \"$min..$max\"\n";
if (/\[(.*)\]/) if (/\[(.*)\]/)
{ {
$platforms=$1; $platforms=$1;
next if ( ($g_x360) && (!($platforms=~/XBOX/i)) ); next if ( ($g_x360) && (!($platforms=~/XBOX/i)) );
next if ( (!$g_x360) && (!($platforms=~/PC/i)) ); next if ( (!$g_x360) && (!($platforms=~/PC/i)) );
} }
push @dynamicDefineNames, $name; push @dynamicDefineNames, $name;
push @dynamicDefineMin, $min; push @dynamicDefineMin, $min;
push @dynamicDefineMax, $max; push @dynamicDefineMax, $max;
} }
} }
close PSH; close PSH;
$numCombos = &CalcNumCombos(); $numCombos = &CalcNumCombos();
$numDynamicCombos = &CalcNumDynamicCombos(); $numDynamicCombos = &CalcNumDynamicCombos();
print "$psh_filename\n"; print "$psh_filename\n";
#print "$numCombos combos\n"; #print "$numCombos combos\n";
#print "$numDynamicCombos dynamic combos\n"; #print "$numDynamicCombos dynamic combos\n";
if( $g_x360 ) if( $g_x360 )
{ {
$pshtmp = "pshtmp9_360"; $pshtmp = "pshtmp9_360";
} }
elsif( $g_dx9 ) elsif( $g_dx9 )
{ {
$pshtmp = "pshtmp9"; $pshtmp = "pshtmp9";
} }
else else
{ {
$pshtmp = "pshtmp8"; $pshtmp = "pshtmp8";
} }
$basename = $psh_filename; $basename = $psh_filename;
$basename =~ s/\.psh$//i; $basename =~ s/\.psh$//i;
for( $shaderCombo = 0; $shaderCombo < $numCombos; $shaderCombo++ ) for( $shaderCombo = 0; $shaderCombo < $numCombos; $shaderCombo++ )
{ {
my $tempFilename = "shader$shaderCombo.o"; my $tempFilename = "shader$shaderCombo.o";
unlink $tempFilename; unlink $tempFilename;
if( $g_x360 ) if( $g_x360 )
{ {
$cmd = "$g_SourceDir\\x360xdk\\bin\\win32\\psa /D_X360=1 /Foshader$shaderCombo.o /nologo " . &BuildDefineOptions( $shaderCombo ) . "$psh_filename > NIL"; $cmd = "$g_SourceDir\\x360xdk\\bin\\win32\\psa /D_X360=1 /Foshader$shaderCombo.o /nologo " . &BuildDefineOptions( $shaderCombo ) . "$psh_filename > NIL";
} }
else else
{ {
$cmd = "$g_SourceDir\\dx9sdk\\utilities\\psa /Foshader$shaderCombo.o /nologo " . &BuildDefineOptions( $shaderCombo ) . "$psh_filename > NIL"; $cmd = "$g_SourceDir\\dx9sdk\\utilities\\psa /Foshader$shaderCombo.o /nologo " . &BuildDefineOptions( $shaderCombo ) . "$psh_filename > NIL";
} }
if( !stat $pshtmp ) if( !stat $pshtmp )
{ {
mkdir $pshtmp, 0777 || die $!; mkdir $pshtmp, 0777 || die $!;
} }
# print $cmd . "\n"; # print $cmd . "\n";
system $cmd || die $!; system $cmd || die $!;
# Make sure a file got generated because sometimes the die above won't happen on compile errors. # Make sure a file got generated because sometimes the die above won't happen on compile errors.
my $filesize = (stat $tempFilename)[7]; my $filesize = (stat $tempFilename)[7];
if ( !$filesize ) if ( !$filesize )
{ {
die "Error compiling shader$shaderCombo.o"; die "Error compiling shader$shaderCombo.o";
} }
push @outputHeader, @hdr; push @outputHeader, @hdr;
} }
$basename =~ s/\.fxc//gi; $basename =~ s/\.fxc//gi;
push @outputHeader, "static PrecompiledShaderByteCode_t " . $basename . "_pixel_shaders[" . $numCombos . "] = \n"; push @outputHeader, "static PrecompiledShaderByteCode_t " . $basename . "_pixel_shaders[" . $numCombos . "] = \n";
push @outputHeader, "{\n"; push @outputHeader, "{\n";
local( $j ); local( $j );
for( $j = 0; $j < $numCombos; $j++ ) for( $j = 0; $j < $numCombos; $j++ )
{ {
local( $thing ) = "pixelShader_" . $basename . "_" . $j; local( $thing ) = "pixelShader_" . $basename . "_" . $j;
push @outputHeader, "\t{ " . "$thing, sizeof( $thing ) },\n"; push @outputHeader, "\t{ " . "$thing, sizeof( $thing ) },\n";
} }
push @outputHeader, "};\n"; push @outputHeader, "};\n";
push @outputHeader, "struct $basename" . "PixelShader_t : public PrecompiledShader_t\n"; push @outputHeader, "struct $basename" . "PixelShader_t : public PrecompiledShader_t\n";
push @outputHeader, "{\n"; push @outputHeader, "{\n";
push @outputHeader, "\t$basename" . "PixelShader_t()\n"; push @outputHeader, "\t$basename" . "PixelShader_t()\n";
push @outputHeader, "\t{\n"; push @outputHeader, "\t{\n";
push @outputHeader, "\t\tm_nFlags = 0;\n"; push @outputHeader, "\t\tm_nFlags = 0;\n";
push @outputHeader, "\t\tm_pByteCode = " . $basename . "_pixel_shaders;\n"; push @outputHeader, "\t\tm_pByteCode = " . $basename . "_pixel_shaders;\n";
push @outputHeader, "\t\tm_nShaderCount = $numCombos;\n"; push @outputHeader, "\t\tm_nShaderCount = $numCombos;\n";
#push @outputHeader, "\t\tm_nDynamicCombos = m_nShaderCount;\n"; #push @outputHeader, "\t\tm_nDynamicCombos = m_nShaderCount;\n";
push @outputHeader, "\t\t// NOTE!!! psh_prep.pl shaders are always static combos!\n"; push @outputHeader, "\t\t// NOTE!!! psh_prep.pl shaders are always static combos!\n";
push @outputHeader, "\t\tm_nDynamicCombos = 1;\n"; push @outputHeader, "\t\tm_nDynamicCombos = 1;\n";
push @outputHeader, "\t\tm_pName = \"$basename\";\n"; push @outputHeader, "\t\tm_pName = \"$basename\";\n";
if( $basename =~ /vs\d\d/ ) # hack if( $basename =~ /vs\d\d/ ) # hack
{ {
push @outputHeader, "\t\tGetShaderDLL()->InsertPrecompiledShader( PRECOMPILED_VERTEX_SHADER, this );\n"; push @outputHeader, "\t\tGetShaderDLL()->InsertPrecompiledShader( PRECOMPILED_VERTEX_SHADER, this );\n";
} }
else else
{ {
push @outputHeader, "\t\tGetShaderDLL()->InsertPrecompiledShader( PRECOMPILED_PIXEL_SHADER, this );\n"; push @outputHeader, "\t\tGetShaderDLL()->InsertPrecompiledShader( PRECOMPILED_PIXEL_SHADER, this );\n";
} }
push @outputHeader, "\t}\n"; push @outputHeader, "\t}\n";
push @outputHeader, "\tvirtual const PrecompiledShaderByteCode_t &GetByteCode( int shaderID )\n"; push @outputHeader, "\tvirtual const PrecompiledShaderByteCode_t &GetByteCode( int shaderID )\n";
push @outputHeader, "\t{\n"; push @outputHeader, "\t{\n";
push @outputHeader, "\t\treturn m_pByteCode[shaderID];\n"; push @outputHeader, "\t\treturn m_pByteCode[shaderID];\n";
push @outputHeader, "\t}\n"; push @outputHeader, "\t}\n";
push @outputHeader, "};\n"; push @outputHeader, "};\n";
push @outputHeader, "static $basename" . "PixelShader_t $basename" . "_PixelShaderInstance;\n"; push @outputHeader, "static $basename" . "PixelShader_t $basename" . "_PixelShaderInstance;\n";
&MakeDirHier( "shaders/psh" ); &MakeDirHier( "shaders/psh" );
my $vcsName = ""; my $vcsName = "";
if( $g_x360 ) if( $g_x360 )
{ {
$vcsName = $basename . ".360.vcs"; $vcsName = $basename . ".360.vcs";
} }
else else
{ {
$vcsName = $basename . ".vcs"; $vcsName = $basename . ".vcs";
} }
open COMPILEDSHADER, ">shaders/psh/$vcsName" || die; open COMPILEDSHADER, ">shaders/psh/$vcsName" || die;
binmode( COMPILEDSHADER ); binmode( COMPILEDSHADER );
# #
# Write out the part of the header that we know. . we'll write the rest after writing the object code. # Write out the part of the header that we know. . we'll write the rest after writing the object code.
# #
#print $numCombos . "\n"; #print $numCombos . "\n";
# Pack arguments # Pack arguments
my $sInt = "i"; my $sInt = "i";
my $uInt = "I"; my $uInt = "I";
if ( $g_x360 ) if ( $g_x360 )
{ {
# Change arguments to "big endian long" # Change arguments to "big endian long"
$sInt = "N"; $sInt = "N";
$uInt = "N"; $uInt = "N";
} }
open PSH, "<$psh_filename"; open PSH, "<$psh_filename";
my $crc = crc32( *PSH ); my $crc = crc32( *PSH );
close PSH; close PSH;
#print STDERR "crc for $psh_filename: $crc\n"; #print STDERR "crc for $psh_filename: $crc\n";
# version # version
print COMPILEDSHADER pack $sInt, 4; print COMPILEDSHADER pack $sInt, 4;
# totalCombos # totalCombos
print COMPILEDSHADER pack $sInt, $numCombos; print COMPILEDSHADER pack $sInt, $numCombos;
# dynamic combos # dynamic combos
print COMPILEDSHADER pack $sInt, $numDynamicCombos; print COMPILEDSHADER pack $sInt, $numDynamicCombos;
# flags # flags
print COMPILEDSHADER pack $uInt, 0x0; # nothing here for now. print COMPILEDSHADER pack $uInt, 0x0; # nothing here for now.
# centroid mask # centroid mask
print COMPILEDSHADER pack $uInt, 0; print COMPILEDSHADER pack $uInt, 0;
# reference size for diffs # reference size for diffs
print COMPILEDSHADER pack $uInt, 0; print COMPILEDSHADER pack $uInt, 0;
# crc32 of the source code # crc32 of the source code
print COMPILEDSHADER pack $uInt, $crc; print COMPILEDSHADER pack $uInt, $crc;
my $beginningOfDir = tell COMPILEDSHADER; my $beginningOfDir = tell COMPILEDSHADER;
# Write out a blank directionary. . we'll fill it in later. # Write out a blank directionary. . we'll fill it in later.
for( $i = 0; $i < $numCombos; $i++ ) for( $i = 0; $i < $numCombos; $i++ )
{ {
# offset from beginning of file. # offset from beginning of file.
print COMPILEDSHADER pack $sInt, 0; print COMPILEDSHADER pack $sInt, 0;
# size # size
print COMPILEDSHADER pack $sInt, 0; print COMPILEDSHADER pack $sInt, 0;
} }
my $startByteCode = tell COMPILEDSHADER; my $startByteCode = tell COMPILEDSHADER;
my @byteCodeStart; my @byteCodeStart;
my @byteCodeSize; my @byteCodeSize;
# Write out the shader object code. # Write out the shader object code.
for( $shaderCombo = 0; $shaderCombo < $numCombos; $shaderCombo++ ) for( $shaderCombo = 0; $shaderCombo < $numCombos; $shaderCombo++ )
{ {
my $filename = "shader$shaderCombo\.o"; my $filename = "shader$shaderCombo\.o";
my $filesize = (stat $filename)[7]; my $filesize = (stat $filename)[7];
$byteCodeStart[$shaderCombo] = tell COMPILEDSHADER; $byteCodeStart[$shaderCombo] = tell COMPILEDSHADER;
$byteCodeSize[$shaderCombo] = $filesize; $byteCodeSize[$shaderCombo] = $filesize;
open SHADERBYTECODE, "<$filename"; open SHADERBYTECODE, "<$filename";
binmode SHADERBYTECODE; binmode SHADERBYTECODE;
my $bin; my $bin;
my $numread = read SHADERBYTECODE, $bin, $filesize; my $numread = read SHADERBYTECODE, $bin, $filesize;
# print "filename: $filename numread: $numread filesize: $filesize\n"; # print "filename: $filename numread: $numread filesize: $filesize\n";
close SHADERBYTECODE; close SHADERBYTECODE;
unlink $filename; unlink $filename;
print COMPILEDSHADER $bin; print COMPILEDSHADER $bin;
} }
# Seek back to the directory and write it out. # Seek back to the directory and write it out.
seek COMPILEDSHADER, $beginningOfDir, 0; seek COMPILEDSHADER, $beginningOfDir, 0;
for( $i = 0; $i < $numCombos; $i++ ) for( $i = 0; $i < $numCombos; $i++ )
{ {
# offset from beginning of file. # offset from beginning of file.
print COMPILEDSHADER pack $sInt, $byteCodeStart[$i]; print COMPILEDSHADER pack $sInt, $byteCodeStart[$i];
# size # size
print COMPILEDSHADER pack $sInt, $byteCodeSize[$i]; print COMPILEDSHADER pack $sInt, $byteCodeSize[$i];
} }
close COMPILEDSHADER; close COMPILEDSHADER;

View File

@ -1,36 +1,36 @@
#! perl #! perl
my $fname=shift || die "format is shaderinfo blah.vcs"; my $fname=shift || die "format is shaderinfo blah.vcs";
open(SHADER, $fname) || die "can't open $fname"; open(SHADER, $fname) || die "can't open $fname";
binmode SHADER; binmode SHADER;
read(SHADER,$header,20); read(SHADER,$header,20);
($ver,$ntotal,$ndynamic,$flags,$centroidmask)=unpack("LLLLL",$header); ($ver,$ntotal,$ndynamic,$flags,$centroidmask)=unpack("LLLLL",$header);
#print "Version $ver total combos=$ntotal, num dynamic combos=$ndynamic,\n flags=$flags, centroid mask=$centroidmask\n"; #print "Version $ver total combos=$ntotal, num dynamic combos=$ndynamic,\n flags=$flags, centroid mask=$centroidmask\n";
read(SHADER,$refsize,4); read(SHADER,$refsize,4);
$refsize=unpack("L",$refsize); $refsize=unpack("L",$refsize);
#print "Size of reference shader for diffing=$refsize\n"; #print "Size of reference shader for diffing=$refsize\n";
seek(SHADER,$refsize,1); seek(SHADER,$refsize,1);
$nskipped_combos=0; $nskipped_combos=0;
for(1..$ntotal) for(1..$ntotal)
{ {
read(SHADER,$combodata,8); read(SHADER,$combodata,8);
($ofs,$combosize)=unpack("LL",$combodata); ($ofs,$combosize)=unpack("LL",$combodata);
if ( $ofs == 0xffffffff) if ( $ofs == 0xffffffff)
{ {
$nskipped_combos++; $nskipped_combos++;
} }
else else
{ {
} }
} }
#print "$nskipped_combos skipped, for an actual total of ",$ntotal-$nskipped_combos,"\n"; #print "$nskipped_combos skipped, for an actual total of ",$ntotal-$nskipped_combos,"\n";
#print "Real to skipped ratio = ",($ntotal-$nskipped_combos)/$ntotal,"\n"; #print "Real to skipped ratio = ",($ntotal-$nskipped_combos)/$ntotal,"\n";
# csv output - name, real combos, virtual combos, dynamic combos # csv output - name, real combos, virtual combos, dynamic combos
my $real_combos=$ntotal-$nskipped_combos; my $real_combos=$ntotal-$nskipped_combos;
print "$fname,$real_combos,$ntotal,$ndynamic\n"; print "$fname,$real_combos,$ntotal,$ndynamic\n";

View File

@ -1,54 +1,54 @@
$infilename = shift; $infilename = shift;
$outfilename1 = shift; $outfilename1 = shift;
$outfilename2 = shift; $outfilename2 = shift;
open INPUT, $infilename || die; open INPUT, $infilename || die;
@input = <INPUT>; @input = <INPUT>;
close INPUT; close INPUT;
open MERGEDMINE, ">$outfilename1" || die; open MERGEDMINE, ">$outfilename1" || die;
open MERGEDTHEIRS, ">$outfilename2" || die; open MERGEDTHEIRS, ">$outfilename2" || die;
for( $i = 0; $i < scalar( @input ); $i++ ) for( $i = 0; $i < scalar( @input ); $i++ )
{ {
$line = $input[$i]; $line = $input[$i];
if( $line =~ m/^(.*)<<<<<<</ ) if( $line =~ m/^(.*)<<<<<<</ )
{ {
$first = 1; $first = 1;
$second = 0; $second = 0;
print MERGEDMINE $1; print MERGEDMINE $1;
print MERGEDTHEIRS $1; print MERGEDTHEIRS $1;
next; next;
} }
# Make sure that we are in a split block so that comments with ======= don't mess us up. # Make sure that we are in a split block so that comments with ======= don't mess us up.
if( $line =~ m/^(.*)=======$/ && $first == 1 ) if( $line =~ m/^(.*)=======$/ && $first == 1 )
{ {
$first = 0; $first = 0;
$second = 1; $second = 1;
print MERGEDMINE $1; print MERGEDMINE $1;
next; next;
} }
if( $line =~ m/^(.*)>>>>>>>/ ) if( $line =~ m/^(.*)>>>>>>>/ )
{ {
$first = $second = 0; $first = $second = 0;
print MERGEDTHEIRS $1; print MERGEDTHEIRS $1;
next; next;
} }
if( $first ) if( $first )
{ {
print MERGEDMINE $line; print MERGEDMINE $line;
} }
elsif( $second ) elsif( $second )
{ {
print MERGEDTHEIRS $line; print MERGEDTHEIRS $line;
} }
else else
{ {
print MERGEDMINE $line; print MERGEDMINE $line;
print MERGEDTHEIRS $line; print MERGEDTHEIRS $line;
} }
} }
close MERGEDMINE; close MERGEDMINE;
close MERGEDTHEIRS; close MERGEDTHEIRS;

View File

@ -1,6 +1,6 @@
foreach $_ (sort <> ) foreach $_ (sort <> )
{ {
next if( defined( $prevline ) && $_ eq $prevline ); next if( defined( $prevline ) && $_ eq $prevline );
$prevline = $_; $prevline = $_;
print; print;
} }

View File

@ -1,305 +1,305 @@
use String::CRC32; use String::CRC32;
BEGIN {use File::Basename; push @INC, dirname($0); } BEGIN {use File::Basename; push @INC, dirname($0); }
require "valve_perl_helpers.pl"; require "valve_perl_helpers.pl";
$dynamic_compile = defined $ENV{"dynamic_shaders"} && $ENV{"dynamic_shaders"} != 0; $dynamic_compile = defined $ENV{"dynamic_shaders"} && $ENV{"dynamic_shaders"} != 0;
$depnum = 0; $depnum = 0;
$baseSourceDir = "."; $baseSourceDir = ".";
my %dep; my %dep;
sub GetAsmShaderDependencies_R sub GetAsmShaderDependencies_R
{ {
local( $shadername ) = shift; local( $shadername ) = shift;
local( *SHADER ); local( *SHADER );
open SHADER, "<$shadername"; open SHADER, "<$shadername";
while( <SHADER> ) while( <SHADER> )
{ {
if( m/^\s*\#\s*include\s+\"(.*)\"/ ) if( m/^\s*\#\s*include\s+\"(.*)\"/ )
{ {
# make sure it isn't in there already. # make sure it isn't in there already.
if( !defined( $dep{$1} ) ) if( !defined( $dep{$1} ) )
{ {
$dep{$1} = 1; $dep{$1} = 1;
GetAsmShaderDependencies_R( $1 ); GetAsmShaderDependencies_R( $1 );
} }
} }
} }
close SHADER; close SHADER;
} }
sub GetAsmShaderDependencies sub GetAsmShaderDependencies
{ {
local( $shadername ) = shift; local( $shadername ) = shift;
undef %dep; undef %dep;
GetAsmShaderDependencies_R( $shadername ); GetAsmShaderDependencies_R( $shadername );
# local( $i ); # local( $i );
# foreach $i ( keys( %dep ) ) # foreach $i ( keys( %dep ) )
# { # {
# print "$shadername depends on $i\n"; # print "$shadername depends on $i\n";
# } # }
return keys( %dep ); return keys( %dep );
} }
sub GetShaderType sub GetShaderType
{ {
my $shadername = shift; my $shadername = shift;
my $shadertype; my $shadertype;
if( $shadername =~ m/\.vsh/i ) if( $shadername =~ m/\.vsh/i )
{ {
$shadertype = "vsh"; $shadertype = "vsh";
} }
elsif( $shadername =~ m/\.psh/i ) elsif( $shadername =~ m/\.psh/i )
{ {
$shadertype = "psh"; $shadertype = "psh";
} }
elsif( $shadername =~ m/\.fxc/i ) elsif( $shadername =~ m/\.fxc/i )
{ {
$shadertype = "fxc"; $shadertype = "fxc";
} }
else else
{ {
die; die;
} }
return $shadertype; return $shadertype;
} }
sub GetShaderSrc sub GetShaderSrc
{ {
my $shadername = shift; my $shadername = shift;
if ( $shadername =~ m/^(.*)-----/i ) if ( $shadername =~ m/^(.*)-----/i )
{ {
return $1; return $1;
} }
else else
{ {
return $shadername; return $shadername;
} }
} }
sub GetShaderBase sub GetShaderBase
{ {
my $shadername = shift; my $shadername = shift;
if ( $shadername =~ m/-----(.*)$/i ) if ( $shadername =~ m/-----(.*)$/i )
{ {
return $1; return $1;
} }
else else
{ {
my $shadertype = &GetShaderType( $shadername ); my $shadertype = &GetShaderType( $shadername );
$shadername =~ s/\.$shadertype//i; $shadername =~ s/\.$shadertype//i;
return $shadername; return $shadername;
} }
} }
sub DoAsmShader sub DoAsmShader
{ {
my $argstring = shift; my $argstring = shift;
my $shadername = &GetShaderSrc( $argstring ); my $shadername = &GetShaderSrc( $argstring );
my $shaderbase = &GetShaderBase( $argstring ); my $shaderbase = &GetShaderBase( $argstring );
my $shadertype = &GetShaderType( $argstring ); my $shadertype = &GetShaderType( $argstring );
my $incfile = ""; my $incfile = "";
if( $shadertype eq "fxc" || $shadertype eq "vsh" ) if( $shadertype eq "fxc" || $shadertype eq "vsh" )
{ {
$incfile = $shadertype . "tmp9" . $g_tmpfolder . "\\$shaderbase.inc "; $incfile = $shadertype . "tmp9" . $g_tmpfolder . "\\$shaderbase.inc ";
} }
my $vcsfile = $shaderbase . $g_vcsext; my $vcsfile = $shaderbase . $g_vcsext;
my $bWillCompileVcs = 1; my $bWillCompileVcs = 1;
if( ( $shadertype eq "fxc") && $dynamic_compile ) if( ( $shadertype eq "fxc") && $dynamic_compile )
{ {
$bWillCompileVcs = 0; $bWillCompileVcs = 0;
} }
if( $shadercrcpass{$argstring} ) if( $shadercrcpass{$argstring} )
{ {
$bWillCompileVcs = 0; $bWillCompileVcs = 0;
} }
if( $bWillCompileVcs ) if( $bWillCompileVcs )
{ {
&output_makefile_line( $incfile . "shaders\\$shadertype\\$vcsfile: $shadername @dep\n") ; &output_makefile_line( $incfile . "shaders\\$shadertype\\$vcsfile: $shadername @dep\n") ;
} }
else else
{ {
# psh files don't need a rule at this point since they don't have inc files and we aren't compiling a vcs. # psh files don't need a rule at this point since they don't have inc files and we aren't compiling a vcs.
if( $shadertype eq "fxc" || $shadertype eq "vsh" ) if( $shadertype eq "fxc" || $shadertype eq "vsh" )
{ {
&output_makefile_line( $incfile . ": $shadername @dep\n") ; &output_makefile_line( $incfile . ": $shadername @dep\n") ;
} }
} }
my $x360switch = ""; my $x360switch = "";
my $moreswitches = ""; my $moreswitches = "";
if( !$bWillCompileVcs && $shadertype eq "fxc" ) if( !$bWillCompileVcs && $shadertype eq "fxc" )
{ {
$moreswitches .= "-novcs "; $moreswitches .= "-novcs ";
} }
if( $g_x360 ) if( $g_x360 )
{ {
$x360switch = "-x360"; $x360switch = "-x360";
if( $bWillCompileVcs && ( $shaderbase =~ m/_ps20$/i ) ) if( $bWillCompileVcs && ( $shaderbase =~ m/_ps20$/i ) )
{ {
$moreswitches .= "-novcs "; $moreswitches .= "-novcs ";
$bWillCompileVcs = 0; $bWillCompileVcs = 0;
} }
} }
# if we are psh and we are compiling the vcs, we don't need this rule. # if we are psh and we are compiling the vcs, we don't need this rule.
if( !( $shadertype eq "psh" && !$bWillCompileVcs ) ) if( !( $shadertype eq "psh" && !$bWillCompileVcs ) )
{ {
&output_makefile_line( "\tperl $g_SourceDir\\devtools\\bin\\" . $shadertype . "_prep.pl $moreswitches $x360switch -source \"$g_SourceDir\" $argstring\n") ; &output_makefile_line( "\tperl $g_SourceDir\\devtools\\bin\\" . $shadertype . "_prep.pl $moreswitches $x360switch -source \"$g_SourceDir\" $argstring\n") ;
} }
if( $bWillCompileVcs ) if( $bWillCompileVcs )
{ {
&output_makefile_line( "\techo $shadername>> filestocopy.txt\n") ; &output_makefile_line( "\techo $shadername>> filestocopy.txt\n") ;
my $dep; my $dep;
foreach $dep( @dep ) foreach $dep( @dep )
{ {
&output_makefile_line( "\techo $dep>> filestocopy.txt\n") ; &output_makefile_line( "\techo $dep>> filestocopy.txt\n") ;
} }
} }
&output_makefile_line( "\n") ; &output_makefile_line( "\n") ;
} }
if( scalar( @ARGV ) == 0 ) if( scalar( @ARGV ) == 0 )
{ {
die "Usage updateshaders.pl shaderprojectbasename\n\tie: updateshaders.pl stdshaders_dx6\n"; die "Usage updateshaders.pl shaderprojectbasename\n\tie: updateshaders.pl stdshaders_dx6\n";
} }
$g_x360 = 0; $g_x360 = 0;
$g_tmpfolder = "_tmp"; $g_tmpfolder = "_tmp";
$g_vcsext = ".vcs"; $g_vcsext = ".vcs";
while( 1 ) while( 1 )
{ {
$inputbase = shift; $inputbase = shift;
if( $inputbase =~ m/-source/ ) if( $inputbase =~ m/-source/ )
{ {
$g_SourceDir = shift; $g_SourceDir = shift;
} }
elsif( $inputbase =~ m/-x360/ ) elsif( $inputbase =~ m/-x360/ )
{ {
$g_x360 = 1; $g_x360 = 1;
$g_tmpfolder = "_360_tmp"; $g_tmpfolder = "_360_tmp";
$g_vcsext = ".360.vcs"; $g_vcsext = ".360.vcs";
} }
elsif( $inputbase =~ m/-execute/ ) elsif( $inputbase =~ m/-execute/ )
{ {
$g_execute = 1; $g_execute = 1;
} }
elsif( $inputbase =~ m/-nv3x/ ) elsif( $inputbase =~ m/-nv3x/ )
{ {
$nv3x = 1; $nv3x = 1;
} }
else else
{ {
last; last;
} }
} }
my @srcfiles = &LoadShaderListFile( $inputbase ); my @srcfiles = &LoadShaderListFile( $inputbase );
open MAKEFILE, ">makefile\.$inputbase"; open MAKEFILE, ">makefile\.$inputbase";
open COPYFILE, ">makefile\.$inputbase\.copy"; open COPYFILE, ">makefile\.$inputbase\.copy";
open INCLIST, ">inclist.txt"; open INCLIST, ">inclist.txt";
open VCSLIST, ">vcslist.txt"; open VCSLIST, ">vcslist.txt";
# make a default dependency that depends on all of the shaders. # make a default dependency that depends on all of the shaders.
&output_makefile_line( "default: ") ; &output_makefile_line( "default: ") ;
foreach $shader ( @srcfiles ) foreach $shader ( @srcfiles )
{ {
my $shadertype = &GetShaderType( $shader ); my $shadertype = &GetShaderType( $shader );
my $shaderbase = &GetShaderBase( $shader ); my $shaderbase = &GetShaderBase( $shader );
my $shadersrc = &GetShaderSrc( $shader ); my $shadersrc = &GetShaderSrc( $shader );
if( $shadertype eq "fxc" || $shadertype eq "vsh" ) if( $shadertype eq "fxc" || $shadertype eq "vsh" )
{ {
# We only generate inc files for fxc and vsh files. # We only generate inc files for fxc and vsh files.
my $incFileName = "$shadertype" . "tmp9" . $g_tmpfolder . "\\" . $shaderbase . "\.inc"; my $incFileName = "$shadertype" . "tmp9" . $g_tmpfolder . "\\" . $shaderbase . "\.inc";
&output_makefile_line( " $incFileName" ); &output_makefile_line( " $incFileName" );
&output_inclist_line( "$incFileName\n" ); &output_inclist_line( "$incFileName\n" );
} }
my $vcsfile = $shaderbase . $g_vcsext; my $vcsfile = $shaderbase . $g_vcsext;
my $compilevcs = 1; my $compilevcs = 1;
if( $shadertype eq "fxc" && $dynamic_compile ) if( $shadertype eq "fxc" && $dynamic_compile )
{ {
$compilevcs = 0; $compilevcs = 0;
} }
if( $g_x360 && ( $shaderbase =~ m/_ps20$/i ) ) if( $g_x360 && ( $shaderbase =~ m/_ps20$/i ) )
{ {
$compilevcs = 0; $compilevcs = 0;
} }
if( $compilevcs ) if( $compilevcs )
{ {
my $vcsFileName = "..\\..\\..\\game\\hl2\\shaders\\$shadertype\\$shaderbase" . $g_vcsext; my $vcsFileName = "..\\..\\..\\game\\hl2\\shaders\\$shadertype\\$shaderbase" . $g_vcsext;
# We want to check for perforce operations even if the crc matches in the event that a file has been manually reverted and needs to be checked out again. # We want to check for perforce operations even if the crc matches in the event that a file has been manually reverted and needs to be checked out again.
&output_vcslist_line( "$vcsFileName\n" ); &output_vcslist_line( "$vcsFileName\n" );
$shadercrcpass{$shader} = &CheckCRCAgainstTarget( $shadersrc, $vcsFileName, 0 ); $shadercrcpass{$shader} = &CheckCRCAgainstTarget( $shadersrc, $vcsFileName, 0 );
if( $shadercrcpass{$shader} ) if( $shadercrcpass{$shader} )
{ {
$compilevcs = 0; $compilevcs = 0;
} }
} }
if( $compilevcs ) if( $compilevcs )
{ {
&output_makefile_line( " shaders\\$shadertype\\$vcsfile" ); &output_makefile_line( " shaders\\$shadertype\\$vcsfile" );
# emit a list of vcs files to copy to the target since we want to build them. # emit a list of vcs files to copy to the target since we want to build them.
&output_copyfile_line( GetShaderSrc($shader) . "-----" . GetShaderBase($shader) . "\n" ); &output_copyfile_line( GetShaderSrc($shader) . "-----" . GetShaderBase($shader) . "\n" );
} }
} }
&output_makefile_line( "\n\n") ; &output_makefile_line( "\n\n") ;
# Insert all of our vertex shaders and depencencies # Insert all of our vertex shaders and depencencies
$lastshader = ""; $lastshader = "";
foreach $shader ( @srcfiles ) foreach $shader ( @srcfiles )
{ {
my $currentshader = &GetShaderSrc( $shader ); my $currentshader = &GetShaderSrc( $shader );
if ( $lastshader ne $currentshader ) if ( $lastshader ne $currentshader )
{ {
$lastshader = $currentshader; $lastshader = $currentshader;
@dep = &GetAsmShaderDependencies( $lastshader ); @dep = &GetAsmShaderDependencies( $lastshader );
} }
&DoAsmShader( $shader ); &DoAsmShader( $shader );
} }
close VCSLIST; close VCSLIST;
close INCLIST; close INCLIST;
close COPYFILE; close COPYFILE;
close MAKEFILE; close MAKEFILE;
# nuke the copyfile if it is zero length # nuke the copyfile if it is zero length
if( ( stat "makefile\.$inputbase\.copy" )[7] == 0 ) if( ( stat "makefile\.$inputbase\.copy" )[7] == 0 )
{ {
unlink "makefile\.$inputbase\.copy"; unlink "makefile\.$inputbase\.copy";
} }
sub output_makefile_line sub output_makefile_line
{ {
local ($_)=@_; local ($_)=@_;
print MAKEFILE $_; print MAKEFILE $_;
} }
sub output_copyfile_line sub output_copyfile_line
{ {
local ($_)=@_; local ($_)=@_;
print COPYFILE $_; print COPYFILE $_;
} }
sub output_vcslist_line sub output_vcslist_line
{ {
local ($_)=@_; local ($_)=@_;
print VCSLIST $_; print VCSLIST $_;
} }
sub output_inclist_line sub output_inclist_line
{ {
local ($_)=@_; local ($_)=@_;
print INCLIST $_; print INCLIST $_;
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,40 +1,40 @@
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// FGDLIB.VPC // FGDLIB.VPC
// //
// Project Script // Project Script
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
$Macro SRCDIR ".." $Macro SRCDIR ".."
$Include "$SRCDIR\vpc_scripts\source_lib_base.vpc" $Include "$SRCDIR\vpc_scripts\source_lib_base.vpc"
$Configuration $Configuration
{ {
$Compiler $Compiler
{ {
$AdditionalIncludeDirectories "$BASE,$SRCDIR\utils\common" $AdditionalIncludeDirectories "$BASE,$SRCDIR\utils\common"
} }
} }
$Project "Fgdlib" $Project "Fgdlib"
{ {
$Folder "Source Files" $Folder "Source Files"
{ {
$File "gamedata.cpp" $File "gamedata.cpp"
$File "gdclass.cpp" $File "gdclass.cpp"
$File "gdvar.cpp" $File "gdvar.cpp"
$File "inputoutput.cpp" $File "inputoutput.cpp"
$File "wckeyvalues.cpp" $File "wckeyvalues.cpp"
} }
$Folder "Header Files" $Folder "Header Files"
{ {
$File "$SRCDIR\public\fgdlib\fgdlib.h" $File "$SRCDIR\public\fgdlib\fgdlib.h"
$File "$SRCDIR\public\fgdlib\gamedata.h" $File "$SRCDIR\public\fgdlib\gamedata.h"
$File "$SRCDIR\public\fgdlib\gdclass.h" $File "$SRCDIR\public\fgdlib\gdclass.h"
$File "$SRCDIR\public\fgdlib\gdvar.h" $File "$SRCDIR\public\fgdlib\gdvar.h"
$File "$SRCDIR\public\fgdlib\helperinfo.h" $File "$SRCDIR\public\fgdlib\helperinfo.h"
$File "$SRCDIR\public\fgdlib\ieditortexture.h" $File "$SRCDIR\public\fgdlib\ieditortexture.h"
$File "$SRCDIR\public\fgdlib\inputoutput.h" $File "$SRCDIR\public\fgdlib\inputoutput.h"
$File "$SRCDIR\public\fgdlib\wckeyvalues.h" $File "$SRCDIR\public\fgdlib\wckeyvalues.h"
} }
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,171 +1,171 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: // Purpose:
// //
//============================================================================= //=============================================================================
#include <tier0/dbg.h> #include <tier0/dbg.h>
#include "fgdlib/InputOutput.h" #include "fgdlib/InputOutput.h"
// 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>
typedef struct typedef struct
{ {
InputOutputType_t eType; // The enumeration of this type. InputOutputType_t eType; // The enumeration of this type.
char *pszName; // The name of this type. char *pszName; // The name of this type.
} TypeMap_t; } TypeMap_t;
char *CClassInputOutputBase::g_pszEmpty = ""; char *CClassInputOutputBase::g_pszEmpty = "";
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Maps type names to type enums for inputs and outputs. // Maps type names to type enums for inputs and outputs.
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
static TypeMap_t TypeMap[] = static TypeMap_t TypeMap[] =
{ {
{ iotVoid, "void" }, { iotVoid, "void" },
{ iotInt, "integer" }, { iotInt, "integer" },
{ iotBool, "bool" }, { iotBool, "bool" },
{ iotString, "string" }, { iotString, "string" },
{ iotFloat, "float" }, { iotFloat, "float" },
{ iotVector, "vector" }, { iotVector, "vector" },
{ iotEHandle, "target_destination" }, { iotEHandle, "target_destination" },
{ iotColor, "color255" }, { iotColor, "color255" },
{ iotEHandle, "ehandle" }, // for backwards compatibility { iotEHandle, "ehandle" }, // for backwards compatibility
}; };
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
CClassInputOutputBase::CClassInputOutputBase(void) CClassInputOutputBase::CClassInputOutputBase(void)
{ {
m_eType = iotInvalid; m_eType = iotInvalid;
m_pszDescription = NULL; m_pszDescription = NULL;
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
// Input : pszName - // Input : pszName -
// eType - // eType -
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
CClassInputOutputBase::CClassInputOutputBase(const char *pszName, InputOutputType_t eType) CClassInputOutputBase::CClassInputOutputBase(const char *pszName, InputOutputType_t eType)
{ {
m_pszDescription = NULL; m_pszDescription = NULL;
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: Destructor. // Purpose: Destructor.
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
CClassInputOutputBase::~CClassInputOutputBase(void) CClassInputOutputBase::~CClassInputOutputBase(void)
{ {
delete m_pszDescription; delete m_pszDescription;
m_pszDescription = NULL; m_pszDescription = NULL;
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: Returns a string representing the type of this I/O, eg. "integer". // Purpose: Returns a string representing the type of this I/O, eg. "integer".
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
const char *CClassInputOutputBase::GetTypeText(void) const char *CClassInputOutputBase::GetTypeText(void)
{ {
for (int i = 0; i < sizeof(TypeMap) / sizeof(TypeMap[0]); i++) for (int i = 0; i < sizeof(TypeMap) / sizeof(TypeMap[0]); i++)
{ {
if (TypeMap[i].eType == m_eType) if (TypeMap[i].eType == m_eType)
{ {
return(TypeMap[i].pszName); return(TypeMap[i].pszName);
} }
} }
return("unknown"); return("unknown");
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
// Input : szType - // Input : szType -
// Output : InputOutputType_t // Output : InputOutputType_t
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
InputOutputType_t CClassInputOutputBase::SetType(const char *szType) InputOutputType_t CClassInputOutputBase::SetType(const char *szType)
{ {
for (int i = 0; i < sizeof(TypeMap) / sizeof(TypeMap[0]); i++) for (int i = 0; i < sizeof(TypeMap) / sizeof(TypeMap[0]); i++)
{ {
if (!stricmp(TypeMap[i].pszName, szType)) if (!stricmp(TypeMap[i].pszName, szType))
{ {
m_eType = TypeMap[i].eType; m_eType = TypeMap[i].eType;
return(m_eType); return(m_eType);
} }
} }
return(iotInvalid); return(iotInvalid);
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: Assignment operator. // Purpose: Assignment operator.
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
CClassInputOutputBase &CClassInputOutputBase::operator =(CClassInputOutputBase &Other) CClassInputOutputBase &CClassInputOutputBase::operator =(CClassInputOutputBase &Other)
{ {
strcpy(m_szName, Other.m_szName); strcpy(m_szName, Other.m_szName);
m_eType = Other.m_eType; m_eType = Other.m_eType;
// //
// Copy the description. // Copy the description.
// //
delete m_pszDescription; delete m_pszDescription;
if (Other.m_pszDescription != NULL) if (Other.m_pszDescription != NULL)
{ {
m_pszDescription = new char[strlen(Other.m_pszDescription) + 1]; m_pszDescription = new char[strlen(Other.m_pszDescription) + 1];
strcpy(m_pszDescription, Other.m_pszDescription); strcpy(m_pszDescription, Other.m_pszDescription);
} }
else else
{ {
m_pszDescription = NULL; m_pszDescription = NULL;
} }
return(*this); return(*this);
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
CClassInput::CClassInput(void) CClassInput::CClassInput(void)
{ {
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
// Input : pszName - // Input : pszName -
// eType - // eType -
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
CClassInput::CClassInput(const char *pszName, InputOutputType_t eType) CClassInput::CClassInput(const char *pszName, InputOutputType_t eType)
: CClassInputOutputBase(pszName, eType) : CClassInputOutputBase(pszName, eType)
{ {
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
CClassOutput::CClassOutput(void) CClassOutput::CClassOutput(void)
{ {
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
// Input : pszName - // Input : pszName -
// eType - // eType -
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
CClassOutput::CClassOutput(const char *pszName, InputOutputType_t eType) CClassOutput::CClassOutput(const char *pszName, InputOutputType_t eType)
: CClassInputOutputBase(pszName, eType) : CClassInputOutputBase(pszName, eType)
{ {
} }

View File

@ -1,282 +1,282 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: // Purpose:
// //
//============================================================================= //=============================================================================
#include "fgdlib/WCKeyValues.h" #include "fgdlib/WCKeyValues.h"
// 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>
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: Destructor. // Purpose: Destructor.
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
MDkeyvalue::~MDkeyvalue(void) MDkeyvalue::~MDkeyvalue(void)
{ {
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: Assignment operator. // Purpose: Assignment operator.
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
MDkeyvalue &MDkeyvalue::operator =(const MDkeyvalue &other) MDkeyvalue &MDkeyvalue::operator =(const MDkeyvalue &other)
{ {
V_strcpy_safe(szKey, other.szKey); V_strcpy_safe(szKey, other.szKey);
V_strcpy_safe(szValue, other.szValue); V_strcpy_safe(szValue, other.szValue);
return(*this); return(*this);
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void WCKVBase_Vector::RemoveKeyAt(int nIndex) void WCKVBase_Vector::RemoveKeyAt(int nIndex)
{ {
Assert(nIndex >= 0); Assert(nIndex >= 0);
Assert(nIndex < (int)m_KeyValues.Count()); Assert(nIndex < (int)m_KeyValues.Count());
if ((nIndex >= 0) && (nIndex < (int)m_KeyValues.Count())) if ((nIndex >= 0) && (nIndex < (int)m_KeyValues.Count()))
{ {
m_KeyValues.Remove(nIndex); m_KeyValues.Remove(nIndex);
} }
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: Adds the key to the keyvalue array. Allows duplicate keys. // Purpose: Adds the key to the keyvalue array. Allows duplicate keys.
// //
// NOTE: This should only be used for keyvalue lists that do not require // NOTE: This should only be used for keyvalue lists that do not require
// unique key names! If you use this function then you should use GetCount // unique key names! If you use this function then you should use GetCount
// and GetKey/Value by index rather than GetValue by key name. // and GetKey/Value by index rather than GetValue by key name.
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void WCKVBase_Vector::AddKeyValue(const char *pszKey, const char *pszValue) void WCKVBase_Vector::AddKeyValue(const char *pszKey, const char *pszValue)
{ {
if (!pszKey || !pszValue) if (!pszKey || !pszValue)
{ {
return; return;
} }
char szTmpKey[KEYVALUE_MAX_KEY_LENGTH]; char szTmpKey[KEYVALUE_MAX_KEY_LENGTH];
char szTmpValue[KEYVALUE_MAX_VALUE_LENGTH]; char szTmpValue[KEYVALUE_MAX_VALUE_LENGTH];
V_strcpy_safe(szTmpKey, pszKey); V_strcpy_safe(szTmpKey, pszKey);
V_strcpy_safe(szTmpValue, pszValue); V_strcpy_safe(szTmpValue, pszValue);
StripEdgeWhiteSpace(szTmpKey); StripEdgeWhiteSpace(szTmpKey);
StripEdgeWhiteSpace(szTmpValue); StripEdgeWhiteSpace(szTmpValue);
// //
// Add the keyvalue to our list. // Add the keyvalue to our list.
// //
MDkeyvalue newkv; MDkeyvalue newkv;
V_strcpy_safe(newkv.szKey, szTmpKey); V_strcpy_safe(newkv.szKey, szTmpKey);
V_strcpy_safe(newkv.szValue, szTmpValue); V_strcpy_safe(newkv.szValue, szTmpValue);
m_KeyValues.AddToTail(newkv); m_KeyValues.AddToTail(newkv);
} }
int WCKVBase_Vector::FindByKeyName( const char *pKeyName ) const int WCKVBase_Vector::FindByKeyName( const char *pKeyName ) const
{ {
for ( int i=0; i < m_KeyValues.Count(); i++ ) for ( int i=0; i < m_KeyValues.Count(); i++ )
{ {
if ( V_stricmp( m_KeyValues[i].szKey, pKeyName ) == 0 ) if ( V_stricmp( m_KeyValues[i].szKey, pKeyName ) == 0 )
return i; return i;
} }
return GetInvalidIndex(); return GetInvalidIndex();
} }
void WCKVBase_Vector::InsertKeyValue( const MDkeyvalue &kv ) void WCKVBase_Vector::InsertKeyValue( const MDkeyvalue &kv )
{ {
m_KeyValues.AddToTail( kv ); m_KeyValues.AddToTail( kv );
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void WCKVBase_Dict::RemoveKeyAt(int nIndex) void WCKVBase_Dict::RemoveKeyAt(int nIndex)
{ {
m_KeyValues.RemoveAt(nIndex); m_KeyValues.RemoveAt(nIndex);
} }
int WCKVBase_Dict::FindByKeyName( const char *pKeyName ) const int WCKVBase_Dict::FindByKeyName( const char *pKeyName ) const
{ {
return m_KeyValues.Find( pKeyName ); return m_KeyValues.Find( pKeyName );
} }
void WCKVBase_Dict::InsertKeyValue( const MDkeyvalue &kv ) void WCKVBase_Dict::InsertKeyValue( const MDkeyvalue &kv )
{ {
m_KeyValues.Insert( kv.szKey, kv ); m_KeyValues.Insert( kv.szKey, kv );
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: Constructor. Sets the initial size of the keyvalue array. // Purpose: Constructor. Sets the initial size of the keyvalue array.
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
template<class Base> template<class Base>
WCKeyValuesT<Base>::WCKeyValuesT(void) WCKeyValuesT<Base>::WCKeyValuesT(void)
{ {
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: Destructor. Deletes the contents of this keyvalue array. // Purpose: Destructor. Deletes the contents of this keyvalue array.
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
template<class Base> template<class Base>
WCKeyValuesT<Base>::~WCKeyValuesT(void) WCKeyValuesT<Base>::~WCKeyValuesT(void)
{ {
//int i = 0; //int i = 0;
//while (i < m_KeyValues.GetSize()) //while (i < m_KeyValues.GetSize())
//{ //{
// delete m_KeyValues.GetAt(i++); // delete m_KeyValues.GetAt(i++);
//} //}
RemoveAll(); RemoveAll();
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
template<class Base> template<class Base>
const char *WCKeyValuesT<Base>::GetValue(const char *pszKey, int *piIndex) const const char *WCKeyValuesT<Base>::GetValue(const char *pszKey, int *piIndex) const
{ {
int i = FindByKeyName( pszKey ); int i = FindByKeyName( pszKey );
if ( i == GetInvalidIndex() ) if ( i == GetInvalidIndex() )
{ {
return NULL; return NULL;
} }
else else
{ {
if(piIndex) if(piIndex)
piIndex[0] = i; piIndex[0] = i;
return m_KeyValues[i].szValue; return m_KeyValues[i].szValue;
} }
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
template<class Base> template<class Base>
void WCKeyValuesT<Base>::RemoveKey(const char *pszKey) void WCKeyValuesT<Base>::RemoveKey(const char *pszKey)
{ {
SetValue(pszKey, (const char *)NULL); SetValue(pszKey, (const char *)NULL);
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
template<class Base> template<class Base>
void WCKeyValuesT<Base>::SetValue(const char *pszKey, int iValue) void WCKeyValuesT<Base>::SetValue(const char *pszKey, int iValue)
{ {
char szValue[100]; char szValue[100];
itoa(iValue, szValue, 10); itoa(iValue, szValue, 10);
SetValue(pszKey, szValue); SetValue(pszKey, szValue);
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: Strips leading and trailing whitespace from the string. // Purpose: Strips leading and trailing whitespace from the string.
// Input : psz - // Input : psz -
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void StripEdgeWhiteSpace(char *psz) void StripEdgeWhiteSpace(char *psz)
{ {
if (!psz || !*psz) if (!psz || !*psz)
return; return;
char *pszBase = psz; char *pszBase = psz;
while (V_isspace(*psz)) while (V_isspace(*psz))
{ {
psz++; psz++;
} }
int iLen = strlen(psz) - 1; int iLen = strlen(psz) - 1;
if ( iLen >= 0 ) if ( iLen >= 0 )
{ {
while (V_isspace(psz[iLen])) while (V_isspace(psz[iLen]))
{ {
psz[iLen--] = 0; psz[iLen--] = 0;
} }
} }
if (psz != pszBase) if (psz != pszBase)
{ {
memmove(pszBase, psz, iLen + 2); memmove(pszBase, psz, iLen + 2);
} }
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
// Input : pszKey - // Input : pszKey -
// pszValue - // pszValue -
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
template<class Base> template<class Base>
void WCKeyValuesT<Base>::SetValue(const char *pszKey, const char *pszValue) void WCKeyValuesT<Base>::SetValue(const char *pszKey, const char *pszValue)
{ {
char szTmpKey[KEYVALUE_MAX_KEY_LENGTH]; char szTmpKey[KEYVALUE_MAX_KEY_LENGTH];
char szTmpValue[KEYVALUE_MAX_VALUE_LENGTH]; char szTmpValue[KEYVALUE_MAX_VALUE_LENGTH];
V_strcpy_safe(szTmpKey, pszKey); V_strcpy_safe(szTmpKey, pszKey);
if (pszValue != NULL) if (pszValue != NULL)
{ {
V_strcpy_safe(szTmpValue, pszValue); V_strcpy_safe(szTmpValue, pszValue);
} }
else else
{ {
szTmpValue[0] = 0; szTmpValue[0] = 0;
} }
StripEdgeWhiteSpace(szTmpKey); StripEdgeWhiteSpace(szTmpKey);
StripEdgeWhiteSpace(szTmpValue); StripEdgeWhiteSpace(szTmpValue);
int i = FindByKeyName( szTmpKey ); int i = FindByKeyName( szTmpKey );
if ( i == GetInvalidIndex() ) if ( i == GetInvalidIndex() )
{ {
if ( pszValue ) if ( pszValue )
{ {
// //
// Add the keyvalue to our list. // Add the keyvalue to our list.
// //
MDkeyvalue newkv; MDkeyvalue newkv;
Q_strncpy( newkv.szKey, szTmpKey, sizeof( newkv.szKey ) ); Q_strncpy( newkv.szKey, szTmpKey, sizeof( newkv.szKey ) );
Q_strncpy( newkv.szValue, szTmpValue, sizeof( newkv.szValue ) ); Q_strncpy( newkv.szValue, szTmpValue, sizeof( newkv.szValue ) );
InsertKeyValue( newkv ); InsertKeyValue( newkv );
} }
} }
else else
{ {
if (pszValue != NULL) if (pszValue != NULL)
{ {
V_strncpy(m_KeyValues[i].szValue, szTmpValue, sizeof(m_KeyValues[i].szValue)); V_strncpy(m_KeyValues[i].szValue, szTmpValue, sizeof(m_KeyValues[i].szValue));
} }
// //
// If we are setting to a NULL value, delete the key. // If we are setting to a NULL value, delete the key.
// //
else else
{ {
RemoveKeyAt( i ); RemoveKeyAt( i );
} }
} }
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
template<class Base> template<class Base>
void WCKeyValuesT<Base>::RemoveAll(void) void WCKeyValuesT<Base>::RemoveAll(void)
{ {
m_KeyValues.RemoveAll(); m_KeyValues.RemoveAll();
} }
// Explicit instantiations. // Explicit instantiations.
template class WCKeyValuesT<WCKVBase_Dict>; template class WCKeyValuesT<WCKVBase_Dict>;
template class WCKeyValuesT<WCKVBase_Vector>; template class WCKeyValuesT<WCKVBase_Vector>;

View File

@ -1,53 +1,53 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: Acts exactly like "AnimatedTexture", but ONLY if the texture // Purpose: Acts exactly like "AnimatedTexture", but ONLY if the texture
// it's working on matches the desired texture to work on. // it's working on matches the desired texture to work on.
// //
// This assumes that some other proxy will be switching out the textures. // This assumes that some other proxy will be switching out the textures.
// //
// $NoKeywords: $ // $NoKeywords: $
//=============================================================================// //=============================================================================//
#include "cbase.h" #include "cbase.h"
#include "materialsystem/imaterialproxy.h" #include "materialsystem/imaterialproxy.h"
#include "materialsystem/imaterialvar.h" #include "materialsystem/imaterialvar.h"
#include "materialsystem/imaterial.h" #include "materialsystem/imaterial.h"
#include "materialsystem/itexture.h" #include "materialsystem/itexture.h"
#include "baseanimatedtextureproxy.h" #include "baseanimatedtextureproxy.h"
#include "utlstring.h" #include "utlstring.h"
#include <KeyValues.h> #include <KeyValues.h>
// 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"
class CAnimateSpecificTexture : public CBaseAnimatedTextureProxy class CAnimateSpecificTexture : public CBaseAnimatedTextureProxy
{ {
private: private:
CUtlString m_OnlyAnimateOnTexture; CUtlString m_OnlyAnimateOnTexture;
public: public:
virtual float GetAnimationStartTime( void* pBaseEntity ) { return 0; } virtual float GetAnimationStartTime( void* pBaseEntity ) { return 0; }
virtual bool Init( IMaterial *pMaterial, KeyValues *pKeyValues ); virtual bool Init( IMaterial *pMaterial, KeyValues *pKeyValues );
virtual void OnBind( void *pC_BaseEntity ); virtual void OnBind( void *pC_BaseEntity );
virtual void Release( void ) { delete this; } virtual void Release( void ) { delete this; }
}; };
bool CAnimateSpecificTexture::Init( IMaterial *pMaterial, KeyValues *pKeyValues ) bool CAnimateSpecificTexture::Init( IMaterial *pMaterial, KeyValues *pKeyValues )
{ {
char const* pszAnimateOnTexture = pKeyValues->GetString( "onlyAnimateOnTexture" ); char const* pszAnimateOnTexture = pKeyValues->GetString( "onlyAnimateOnTexture" );
if( !pszAnimateOnTexture ) if( !pszAnimateOnTexture )
return false; return false;
m_OnlyAnimateOnTexture.Set( pszAnimateOnTexture ); m_OnlyAnimateOnTexture.Set( pszAnimateOnTexture );
return CBaseAnimatedTextureProxy::Init( pMaterial, pKeyValues ); return CBaseAnimatedTextureProxy::Init( pMaterial, pKeyValues );
} }
void CAnimateSpecificTexture::OnBind( void *pC_BaseEntity ) void CAnimateSpecificTexture::OnBind( void *pC_BaseEntity )
{ {
if( FStrEq( m_AnimatedTextureVar->GetTextureValue()->GetName(), m_OnlyAnimateOnTexture ) ) if( FStrEq( m_AnimatedTextureVar->GetTextureValue()->GetName(), m_OnlyAnimateOnTexture ) )
{ {
CBaseAnimatedTextureProxy::OnBind( pC_BaseEntity ); CBaseAnimatedTextureProxy::OnBind( pC_BaseEntity );
} }
//else do nothing //else do nothing
} }
EXPOSE_INTERFACE( CAnimateSpecificTexture, IMaterialProxy, "AnimateSpecificTexture" IMATERIAL_PROXY_INTERFACE_VERSION ); EXPOSE_INTERFACE( CAnimateSpecificTexture, IMaterialProxy, "AnimateSpecificTexture" IMATERIAL_PROXY_INTERFACE_VERSION );

View File

@ -1,65 +1,65 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: // Purpose:
// //
// $NoKeywords: $ // $NoKeywords: $
//=============================================================================// //=============================================================================//
#ifndef C_ENVPROJECTEDTEXTURE_H #ifndef C_ENVPROJECTEDTEXTURE_H
#define C_ENVPROJECTEDTEXTURE_H #define C_ENVPROJECTEDTEXTURE_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
#include "c_baseentity.h" #include "c_baseentity.h"
#include "basetypes.h" #include "basetypes.h"
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
class C_EnvProjectedTexture : public C_BaseEntity class C_EnvProjectedTexture : public C_BaseEntity
{ {
DECLARE_CLASS( C_EnvProjectedTexture, C_BaseEntity ); DECLARE_CLASS( C_EnvProjectedTexture, C_BaseEntity );
public: public:
DECLARE_CLIENTCLASS(); DECLARE_CLIENTCLASS();
C_EnvProjectedTexture(); C_EnvProjectedTexture();
~C_EnvProjectedTexture(); ~C_EnvProjectedTexture();
virtual void OnDataChanged( DataUpdateType_t updateType ); virtual void OnDataChanged( DataUpdateType_t updateType );
void ShutDownLightHandle( void ); void ShutDownLightHandle( void );
virtual void Simulate(); virtual void Simulate();
void UpdateLight( bool bForceUpdate ); void UpdateLight( bool bForceUpdate );
bool ShadowsEnabled(); bool ShadowsEnabled();
float GetFOV(); float GetFOV();
private: private:
ClientShadowHandle_t m_LightHandle; ClientShadowHandle_t m_LightHandle;
EHANDLE m_hTargetEntity; EHANDLE m_hTargetEntity;
bool m_bState; bool m_bState;
float m_flLightFOV; float m_flLightFOV;
bool m_bEnableShadows; bool m_bEnableShadows;
bool m_bLightOnlyTarget; bool m_bLightOnlyTarget;
bool m_bLightWorld; bool m_bLightWorld;
bool m_bCameraSpace; bool m_bCameraSpace;
color32 m_cLightColor; color32 m_cLightColor;
float m_flAmbient; float m_flAmbient;
char m_SpotlightTextureName[ MAX_PATH ]; char m_SpotlightTextureName[ MAX_PATH ];
int m_nSpotlightTextureFrame; int m_nSpotlightTextureFrame;
int m_nShadowQuality; int m_nShadowQuality;
bool m_bCurrentShadow; bool m_bCurrentShadow;
public: public:
C_EnvProjectedTexture *m_pNext; C_EnvProjectedTexture *m_pNext;
}; };
C_EnvProjectedTexture* GetEnvProjectedTextureList(); C_EnvProjectedTexture* GetEnvProjectedTextureList();
#endif // C_ENVPROJECTEDTEXTURE_H #endif // C_ENVPROJECTEDTEXTURE_H

File diff suppressed because it is too large Load Diff

View File

@ -1,60 +1,60 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: Water LOD control entity. // Purpose: Water LOD control entity.
// //
// $NoKeywords: $ // $NoKeywords: $
//=============================================================================// //=============================================================================//
#include "cbase.h" #include "cbase.h"
#include "iviewrender.h" #include "iviewrender.h"
// 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"
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// FIXME: This really should inherit from something more lightweight // FIXME: This really should inherit from something more lightweight
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// Purpose : Water LOD control entity // Purpose : Water LOD control entity
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
class C_WaterLODControl : public C_BaseEntity class C_WaterLODControl : public C_BaseEntity
{ {
public: public:
DECLARE_CLASS( C_WaterLODControl, C_BaseEntity ); DECLARE_CLASS( C_WaterLODControl, C_BaseEntity );
DECLARE_CLIENTCLASS(); DECLARE_CLIENTCLASS();
void OnDataChanged(DataUpdateType_t updateType); void OnDataChanged(DataUpdateType_t updateType);
bool ShouldDraw(); bool ShouldDraw();
private: private:
float m_flCheapWaterStartDistance; float m_flCheapWaterStartDistance;
float m_flCheapWaterEndDistance; float m_flCheapWaterEndDistance;
}; };
IMPLEMENT_CLIENTCLASS_DT(C_WaterLODControl, DT_WaterLODControl, CWaterLODControl) IMPLEMENT_CLIENTCLASS_DT(C_WaterLODControl, DT_WaterLODControl, CWaterLODControl)
RecvPropFloat(RECVINFO(m_flCheapWaterStartDistance)), RecvPropFloat(RECVINFO(m_flCheapWaterStartDistance)),
RecvPropFloat(RECVINFO(m_flCheapWaterEndDistance)), RecvPropFloat(RECVINFO(m_flCheapWaterEndDistance)),
END_RECV_TABLE() END_RECV_TABLE()
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// Purpose : // Purpose :
// Input : // Input :
// Output : // Output :
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void C_WaterLODControl::OnDataChanged(DataUpdateType_t updateType) void C_WaterLODControl::OnDataChanged(DataUpdateType_t updateType)
{ {
view->SetCheapWaterStartDistance( m_flCheapWaterStartDistance ); view->SetCheapWaterStartDistance( m_flCheapWaterStartDistance );
view->SetCheapWaterEndDistance( m_flCheapWaterEndDistance ); view->SetCheapWaterEndDistance( m_flCheapWaterEndDistance );
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// We don't draw... // We don't draw...
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
bool C_WaterLODControl::ShouldDraw() bool C_WaterLODControl::ShouldDraw()
{ {
return false; return false;
} }

View File

@ -1,231 +1,231 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: Utility code. // Purpose: Utility code.
// //
// $NoKeywords: $ // $NoKeywords: $
//=============================================================================// //=============================================================================//
#include "cbase.h" #include "cbase.h"
#include "IEffects.h" #include "IEffects.h"
#include "fx.h" #include "fx.h"
#include "c_te_legacytempents.h" #include "c_te_legacytempents.h"
// 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"
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Client-server neutral effects interface // Client-server neutral effects interface
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
class CEffectsClient : public IEffects class CEffectsClient : public IEffects
{ {
public: public:
CEffectsClient(); CEffectsClient();
virtual ~CEffectsClient(); virtual ~CEffectsClient();
// Members of the IEffect interface // Members of the IEffect interface
virtual void Beam( const Vector &Start, const Vector &End, int nModelIndex, virtual void Beam( const Vector &Start, const Vector &End, int nModelIndex,
int nHaloIndex, unsigned char frameStart, unsigned char frameRate, int nHaloIndex, unsigned char frameStart, unsigned char frameRate,
float flLife, unsigned char width, unsigned char endWidth, unsigned char fadeLength, float flLife, unsigned char width, unsigned char endWidth, unsigned char fadeLength,
unsigned char noise, unsigned char red, unsigned char green, unsigned char noise, unsigned char red, unsigned char green,
unsigned char blue, unsigned char brightness, unsigned char speed); unsigned char blue, unsigned char brightness, unsigned char speed);
virtual void Smoke( const Vector &origin, int modelIndex, float scale, float framerate ); virtual void Smoke( const Vector &origin, int modelIndex, float scale, float framerate );
virtual void Sparks( const Vector &position, int nMagnitude = 1, int nTrailLength = 1, const Vector *pvecDir = NULL ); virtual void Sparks( const Vector &position, int nMagnitude = 1, int nTrailLength = 1, const Vector *pvecDir = NULL );
virtual void Dust( const Vector &pos, const Vector &dir, float size, float speed ); virtual void Dust( const Vector &pos, const Vector &dir, float size, float speed );
virtual void MuzzleFlash( const Vector &origin, const QAngle &angles, float fScale, int type ); virtual void MuzzleFlash( const Vector &origin, const QAngle &angles, float fScale, int type );
virtual void MetalSparks( const Vector &position, const Vector &direction ); virtual void MetalSparks( const Vector &position, const Vector &direction );
virtual void EnergySplash( const Vector &position, const Vector &direction, bool bExplosive = false ); virtual void EnergySplash( const Vector &position, const Vector &direction, bool bExplosive = false );
virtual void Ricochet( const Vector &position, const Vector &direction ); virtual void Ricochet( const Vector &position, const Vector &direction );
// FIXME: Should these methods remain in this interface? Or go in some // FIXME: Should these methods remain in this interface? Or go in some
// other client-server neutral interface? // other client-server neutral interface?
virtual float Time(); virtual float Time();
virtual bool IsServer(); virtual bool IsServer();
virtual void SuppressEffectsSounds( bool bSuppress ); virtual void SuppressEffectsSounds( bool bSuppress );
private: private:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: Returning true means don't even call TE func // Purpose: Returning true means don't even call TE func
// Input : filter - // Input : filter -
// *suppress_host - // *suppress_host -
// Output : static bool // Output : static bool
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
bool SuppressTE( C_RecipientFilter& filter ) bool SuppressTE( C_RecipientFilter& filter )
{ {
if ( !CanPredict() ) if ( !CanPredict() )
return true; return true;
if ( !filter.GetRecipientCount() ) if ( !filter.GetRecipientCount() )
{ {
// Suppress it // Suppress it
return true; return true;
} }
// There's at least one recipient // There's at least one recipient
return false; return false;
} }
bool m_bSuppressSound; bool m_bSuppressSound;
}; };
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Client-server neutral effects interface accessor // Client-server neutral effects interface accessor
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
static CEffectsClient s_EffectClient; static CEffectsClient s_EffectClient;
EXPOSE_SINGLE_INTERFACE_GLOBALVAR(CEffectsClient, IEffects, IEFFECTS_INTERFACE_VERSION, s_EffectClient); EXPOSE_SINGLE_INTERFACE_GLOBALVAR(CEffectsClient, IEffects, IEFFECTS_INTERFACE_VERSION, s_EffectClient);
IEffects *g_pEffects = &s_EffectClient; IEffects *g_pEffects = &s_EffectClient;
ConVar r_decals( "r_decals", "2048" ); ConVar r_decals( "r_decals", "2048" );
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// constructor, destructor // constructor, destructor
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
CEffectsClient::CEffectsClient() CEffectsClient::CEffectsClient()
{ {
m_bSuppressSound = false; m_bSuppressSound = false;
} }
CEffectsClient::~CEffectsClient() CEffectsClient::~CEffectsClient()
{ {
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Suppress sound on effects // Suppress sound on effects
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CEffectsClient::SuppressEffectsSounds( bool bSuppress ) void CEffectsClient::SuppressEffectsSounds( bool bSuppress )
{ {
m_bSuppressSound = bSuppress; m_bSuppressSound = bSuppress;
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Generates a beam // Generates a beam
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CEffectsClient::Beam( const Vector &vecStartPoint, const Vector &vecEndPoint, void CEffectsClient::Beam( const Vector &vecStartPoint, const Vector &vecEndPoint,
int nModelIndex, int nHaloIndex, unsigned char frameStart, unsigned char nFrameRate, int nModelIndex, int nHaloIndex, unsigned char frameStart, unsigned char nFrameRate,
float flLife, unsigned char nWidth, unsigned char nEndWidth, unsigned char nFadeLength, float flLife, unsigned char nWidth, unsigned char nEndWidth, unsigned char nFadeLength,
unsigned char noise, unsigned char r, unsigned char g, unsigned char noise, unsigned char r, unsigned char g,
unsigned char b, unsigned char brightness, unsigned char nSpeed) unsigned char b, unsigned char brightness, unsigned char nSpeed)
{ {
Assert(0); Assert(0);
// CBroadcastRecipientFilter filter; // CBroadcastRecipientFilter filter;
// if ( !SuppressTE( filter ) ) // if ( !SuppressTE( filter ) )
// { // {
// beams->CreateBeamPoints( vecStartPoint, vecEndPoint, nModelIndex, nHaloIndex, // beams->CreateBeamPoints( vecStartPoint, vecEndPoint, nModelIndex, nHaloIndex,
// m_fHaloScale, // m_fHaloScale,
// flLife, 0.1 * nWidth, 0.1 * nEndWidth, nFadeLength, 0.01 * nAmplitude, a, 0.1 * nSpeed, // flLife, 0.1 * nWidth, 0.1 * nEndWidth, nFadeLength, 0.01 * nAmplitude, a, 0.1 * nSpeed,
// m_nStartFrame, 0.1 * nFrameRate, r, g, b ); // m_nStartFrame, 0.1 * nFrameRate, r, g, b );
// } // }
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Generates various tempent effects // Generates various tempent effects
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CEffectsClient::Smoke( const Vector &vecOrigin, int modelIndex, float scale, float framerate ) void CEffectsClient::Smoke( const Vector &vecOrigin, int modelIndex, float scale, float framerate )
{ {
CPVSFilter filter( vecOrigin ); CPVSFilter filter( vecOrigin );
if ( !SuppressTE( filter ) ) if ( !SuppressTE( filter ) )
{ {
int iColor = random->RandomInt(20,35); int iColor = random->RandomInt(20,35);
color32 color; color32 color;
color.r = iColor; color.r = iColor;
color.g = iColor; color.g = iColor;
color.b = iColor; color.b = iColor;
color.a = iColor; color.a = iColor;
QAngle angles; QAngle angles;
VectorAngles( Vector(0,0,1), angles ); VectorAngles( Vector(0,0,1), angles );
FX_Smoke( vecOrigin, angles, scale * 0.1f, 4, (unsigned char *)&color, 255 ); FX_Smoke( vecOrigin, angles, scale * 0.1f, 4, (unsigned char *)&color, 255 );
} }
} }
void CEffectsClient::Sparks( const Vector &position, int nMagnitude, int nTrailLength, const Vector *pVecDir ) void CEffectsClient::Sparks( const Vector &position, int nMagnitude, int nTrailLength, const Vector *pVecDir )
{ {
CPVSFilter filter( position ); CPVSFilter filter( position );
if ( !SuppressTE( filter ) ) if ( !SuppressTE( filter ) )
{ {
FX_ElectricSpark( position, nMagnitude, nTrailLength, pVecDir ); FX_ElectricSpark( position, nMagnitude, nTrailLength, pVecDir );
} }
} }
void CEffectsClient::Dust( const Vector &pos, const Vector &dir, float size, float speed ) void CEffectsClient::Dust( const Vector &pos, const Vector &dir, float size, float speed )
{ {
CPVSFilter filter( pos ); CPVSFilter filter( pos );
if ( !SuppressTE( filter ) ) if ( !SuppressTE( filter ) )
{ {
FX_Dust( pos, dir, size, speed ); FX_Dust( pos, dir, size, speed );
} }
} }
void CEffectsClient::MuzzleFlash( const Vector &vecOrigin, const QAngle &vecAngles, float flScale, int iType ) void CEffectsClient::MuzzleFlash( const Vector &vecOrigin, const QAngle &vecAngles, float flScale, int iType )
{ {
CPVSFilter filter( vecOrigin ); CPVSFilter filter( vecOrigin );
if ( !SuppressTE( filter ) ) if ( !SuppressTE( filter ) )
{ {
switch( iType ) switch( iType )
{ {
case MUZZLEFLASH_TYPE_DEFAULT: case MUZZLEFLASH_TYPE_DEFAULT:
FX_MuzzleEffect( vecOrigin, vecAngles, flScale, INVALID_EHANDLE_INDEX ); FX_MuzzleEffect( vecOrigin, vecAngles, flScale, INVALID_EHANDLE_INDEX );
break; break;
case MUZZLEFLASH_TYPE_GUNSHIP: case MUZZLEFLASH_TYPE_GUNSHIP:
FX_GunshipMuzzleEffect( vecOrigin, vecAngles, flScale, INVALID_EHANDLE_INDEX ); FX_GunshipMuzzleEffect( vecOrigin, vecAngles, flScale, INVALID_EHANDLE_INDEX );
break; break;
case MUZZLEFLASH_TYPE_STRIDER: case MUZZLEFLASH_TYPE_STRIDER:
FX_StriderMuzzleEffect( vecOrigin, vecAngles, flScale, INVALID_EHANDLE_INDEX ); FX_StriderMuzzleEffect( vecOrigin, vecAngles, flScale, INVALID_EHANDLE_INDEX );
break; break;
default: default:
Msg("No case for Muzzleflash type: %d\n", iType ); Msg("No case for Muzzleflash type: %d\n", iType );
break; break;
} }
} }
} }
void CEffectsClient::MetalSparks( const Vector &position, const Vector &direction ) void CEffectsClient::MetalSparks( const Vector &position, const Vector &direction )
{ {
CPVSFilter filter( position ); CPVSFilter filter( position );
if ( !SuppressTE( filter ) ) if ( !SuppressTE( filter ) )
{ {
FX_MetalSpark( position, direction, direction ); FX_MetalSpark( position, direction, direction );
} }
} }
void CEffectsClient::EnergySplash( const Vector &position, const Vector &direction, bool bExplosive ) void CEffectsClient::EnergySplash( const Vector &position, const Vector &direction, bool bExplosive )
{ {
CPVSFilter filter( position ); CPVSFilter filter( position );
if ( !SuppressTE( filter ) ) if ( !SuppressTE( filter ) )
{ {
FX_EnergySplash( position, direction, bExplosive ); FX_EnergySplash( position, direction, bExplosive );
} }
} }
void CEffectsClient::Ricochet( const Vector &position, const Vector &direction ) void CEffectsClient::Ricochet( const Vector &position, const Vector &direction )
{ {
CPVSFilter filter( position ); CPVSFilter filter( position );
if ( !SuppressTE( filter ) ) if ( !SuppressTE( filter ) )
{ {
FX_MetalSpark( position, direction, direction ); FX_MetalSpark( position, direction, direction );
if ( !m_bSuppressSound ) if ( !m_bSuppressSound )
{ {
FX_RicochetSound( position ); FX_RicochetSound( position );
} }
} }
} }
// FIXME: Should these methods remain in this interface? Or go in some // FIXME: Should these methods remain in this interface? Or go in some
// other client-server neutral interface? // other client-server neutral interface?
float CEffectsClient::Time() float CEffectsClient::Time()
{ {
return gpGlobals->curtime; return gpGlobals->curtime;
} }
bool CEffectsClient::IsServer() bool CEffectsClient::IsServer()
{ {
return false; return false;
} }

View File

@ -1,63 +1,63 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: // Purpose:
// //
// $NoKeywords: $ // $NoKeywords: $
//=============================================================================// //=============================================================================//
#include "cbase.h" #include "cbase.h"
#include "functionproxy.h" #include "functionproxy.h"
#include "toolframework_client.h" #include "toolframework_client.h"
// 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"
// forward declarations // forward declarations
void ToolFramework_RecordMaterialParams( IMaterial *pMaterial ); void ToolFramework_RecordMaterialParams( IMaterial *pMaterial );
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Returns the player health (from 0 to 1) // Returns the player health (from 0 to 1)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
class CProxyIsNPC : public CResultProxy class CProxyIsNPC : public CResultProxy
{ {
public: public:
bool Init( IMaterial *pMaterial, KeyValues *pKeyValues ); bool Init( IMaterial *pMaterial, KeyValues *pKeyValues );
void OnBind( void *pC_BaseEntity ); void OnBind( void *pC_BaseEntity );
private: private:
CFloatInput m_Factor; CFloatInput m_Factor;
}; };
bool CProxyIsNPC::Init( IMaterial *pMaterial, KeyValues *pKeyValues ) bool CProxyIsNPC::Init( IMaterial *pMaterial, KeyValues *pKeyValues )
{ {
if (!CResultProxy::Init( pMaterial, pKeyValues )) if (!CResultProxy::Init( pMaterial, pKeyValues ))
return false; return false;
if (!m_Factor.Init( pMaterial, pKeyValues, "scale", 1 )) if (!m_Factor.Init( pMaterial, pKeyValues, "scale", 1 ))
return false; return false;
return true; return true;
} }
void CProxyIsNPC::OnBind( void *pC_BaseEntity ) void CProxyIsNPC::OnBind( void *pC_BaseEntity )
{ {
if ( !pC_BaseEntity ) if ( !pC_BaseEntity )
return; return;
C_BaseEntity *pEntity = BindArgToEntity( pC_BaseEntity ); C_BaseEntity *pEntity = BindArgToEntity( pC_BaseEntity );
if ( pEntity && pEntity->IsNPC() ) if ( pEntity && pEntity->IsNPC() )
{ {
SetFloatResult( m_Factor.GetFloat() ); SetFloatResult( m_Factor.GetFloat() );
} }
else else
{ {
SetFloatResult( 0.0f ); SetFloatResult( 0.0f );
} }
if ( ToolsEnabled() ) if ( ToolsEnabled() )
{ {
ToolFramework_RecordMaterialParams( GetMaterial() ); ToolFramework_RecordMaterialParams( GetMaterial() );
} }
} }
EXPOSE_INTERFACE( CProxyIsNPC, IMaterialProxy, "IsNPC" IMATERIAL_PROXY_INTERFACE_VERSION ); EXPOSE_INTERFACE( CProxyIsNPC, IMaterialProxy, "IsNPC" IMATERIAL_PROXY_INTERFACE_VERSION );

View File

@ -1,60 +1,60 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: // Purpose:
// //
// $NoKeywords: $ // $NoKeywords: $
//=============================================================================// //=============================================================================//
#include "cbase.h" #include "cbase.h"
#include "materialsystem/imaterialproxy.h" #include "materialsystem/imaterialproxy.h"
#include "materialsystem/imaterial.h" #include "materialsystem/imaterial.h"
#include "materialsystem/imaterialvar.h" #include "materialsystem/imaterialvar.h"
// $monitorTextureVar // $monitorTextureVar
class CMonitorMaterialProxy : public IMaterialProxy class CMonitorMaterialProxy : public IMaterialProxy
{ {
public: public:
CMonitorMaterialProxy(); CMonitorMaterialProxy();
virtual ~CMonitorMaterialProxy(); virtual ~CMonitorMaterialProxy();
virtual bool Init( IMaterial *pMaterial, KeyValues *pKeyValues ); virtual bool Init( IMaterial *pMaterial, KeyValues *pKeyValues );
virtual void OnBind( void *pC_BaseEntity ); virtual void OnBind( void *pC_BaseEntity );
virtual void Release( void ) { delete this; } virtual void Release( void ) { delete this; }
private: private:
IMaterialVar *m_pMonitorTextureVar; IMaterialVar *m_pMonitorTextureVar;
}; };
CMonitorMaterialProxy::CMonitorMaterialProxy() CMonitorMaterialProxy::CMonitorMaterialProxy()
{ {
m_pMonitorTextureVar = NULL; m_pMonitorTextureVar = NULL;
} }
CMonitorMaterialProxy::~CMonitorMaterialProxy() CMonitorMaterialProxy::~CMonitorMaterialProxy()
{ {
m_pMonitorTextureVar = NULL; m_pMonitorTextureVar = NULL;
} }
bool CMonitorMaterialProxy::Init( IMaterial *pMaterial, KeyValues *pKeyValues ) bool CMonitorMaterialProxy::Init( IMaterial *pMaterial, KeyValues *pKeyValues )
{ {
char const* pMonitorTextureVarName = pKeyValues->getString( "$monitorTextureVar" ); char const* pMonitorTextureVarName = pKeyValues->getString( "$monitorTextureVar" );
if( !pMonitorTextureVarName ) if( !pMonitorTextureVarName )
return false; return false;
bool foundVar; bool foundVar;
m_pMonitorTextureVar = pMaterial->FindVar( pMonitorTextureVarName, &foundVar, false ); m_pMonitorTextureVar = pMaterial->FindVar( pMonitorTextureVarName, &foundVar, false );
if( !foundVar ) if( !foundVar )
{ {
m_pMonitorTextureVar = NULL; m_pMonitorTextureVar = NULL;
return false; return false;
} }
return true; return true;
} }
void CMonitorMaterialProxy::OnBind( void *pC_BaseEntity ) void CMonitorMaterialProxy::OnBind( void *pC_BaseEntity )
{ {
if( !m_pMonitorTextureVar ) if( !m_pMonitorTextureVar )
{ {
return; return;
} }
} }
EXPOSE_INTERFACE( CMonitorMaterialProxy, IMaterialProxy, "Monitor" IMATERIAL_PROXY_INTERFACE_VERSION ); EXPOSE_INTERFACE( CMonitorMaterialProxy, IMaterialProxy, "Monitor" IMATERIAL_PROXY_INTERFACE_VERSION );

View File

@ -1,59 +1,59 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: // Purpose:
// //
// $NoKeywords: $ // $NoKeywords: $
//=============================================================================// //=============================================================================//
#include "cbase.h" #include "cbase.h"
#include "functionproxy.h" #include "functionproxy.h"
#include "toolframework_client.h" #include "toolframework_client.h"
// 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"
// forward declarations // forward declarations
void ToolFramework_RecordMaterialParams( IMaterial *pMaterial ); void ToolFramework_RecordMaterialParams( IMaterial *pMaterial );
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Returns the player health (from 0 to 1) // Returns the player health (from 0 to 1)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
class CProxyHealth : public CResultProxy class CProxyHealth : public CResultProxy
{ {
public: public:
bool Init( IMaterial *pMaterial, KeyValues *pKeyValues ); bool Init( IMaterial *pMaterial, KeyValues *pKeyValues );
void OnBind( void *pC_BaseEntity ); void OnBind( void *pC_BaseEntity );
private: private:
CFloatInput m_Factor; CFloatInput m_Factor;
}; };
bool CProxyHealth::Init( IMaterial *pMaterial, KeyValues *pKeyValues ) bool CProxyHealth::Init( IMaterial *pMaterial, KeyValues *pKeyValues )
{ {
if (!CResultProxy::Init( pMaterial, pKeyValues )) if (!CResultProxy::Init( pMaterial, pKeyValues ))
return false; return false;
if (!m_Factor.Init( pMaterial, pKeyValues, "scale", 1 )) if (!m_Factor.Init( pMaterial, pKeyValues, "scale", 1 ))
return false; return false;
return true; return true;
} }
void CProxyHealth::OnBind( void *pC_BaseEntity ) void CProxyHealth::OnBind( void *pC_BaseEntity )
{ {
if (!pC_BaseEntity) if (!pC_BaseEntity)
return; return;
C_BaseEntity *pEntity = BindArgToEntity( pC_BaseEntity ); C_BaseEntity *pEntity = BindArgToEntity( pC_BaseEntity );
Assert( m_pResult ); Assert( m_pResult );
SetFloatResult( pEntity->HealthFraction() * m_Factor.GetFloat() ); SetFloatResult( pEntity->HealthFraction() * m_Factor.GetFloat() );
if ( ToolsEnabled() ) if ( ToolsEnabled() )
{ {
ToolFramework_RecordMaterialParams( GetMaterial() ); ToolFramework_RecordMaterialParams( GetMaterial() );
} }
} }
EXPOSE_INTERFACE( CProxyHealth, IMaterialProxy, "Health" IMATERIAL_PROXY_INTERFACE_VERSION ); EXPOSE_INTERFACE( CProxyHealth, IMaterialProxy, "Health" IMATERIAL_PROXY_INTERFACE_VERSION );

View File

@ -1,317 +1,317 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
#include "cbase.h" #include "cbase.h"
#include "KeyValues.h" #include "KeyValues.h"
#include "cdll_client_int.h" #include "cdll_client_int.h"
#include "view_scene.h" #include "view_scene.h"
#include "viewrender.h" #include "viewrender.h"
#include "tier0/icommandline.h" #include "tier0/icommandline.h"
#include "materialsystem/imesh.h" #include "materialsystem/imesh.h"
#include "materialsystem/imaterial.h" #include "materialsystem/imaterial.h"
#include "materialsystem/imaterialsystemhardwareconfig.h" #include "materialsystem/imaterialsystemhardwareconfig.h"
#include "materialsystem/imaterialvar.h" #include "materialsystem/imaterialvar.h"
#include "ScreenSpaceEffects.h" #include "ScreenSpaceEffects.h"
// 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"
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// CScreenSpaceEffectRegistration code // CScreenSpaceEffectRegistration code
// Used to register and effect with the IScreenSpaceEffectManager // Used to register and effect with the IScreenSpaceEffectManager
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
CScreenSpaceEffectRegistration *CScreenSpaceEffectRegistration::s_pHead = NULL; CScreenSpaceEffectRegistration *CScreenSpaceEffectRegistration::s_pHead = NULL;
CScreenSpaceEffectRegistration::CScreenSpaceEffectRegistration( const char *pName, IScreenSpaceEffect *pEffect ) CScreenSpaceEffectRegistration::CScreenSpaceEffectRegistration( const char *pName, IScreenSpaceEffect *pEffect )
{ {
m_pEffectName = pName; m_pEffectName = pName;
m_pEffect = pEffect; m_pEffect = pEffect;
m_pNext = s_pHead; m_pNext = s_pHead;
s_pHead = this; s_pHead = this;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// CScreenSpaceEffectManager - Implementation of IScreenSpaceEffectManager // CScreenSpaceEffectManager - Implementation of IScreenSpaceEffectManager
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
class CScreenSpaceEffectManager : public IScreenSpaceEffectManager class CScreenSpaceEffectManager : public IScreenSpaceEffectManager
{ {
public: public:
virtual void InitScreenSpaceEffects( ); virtual void InitScreenSpaceEffects( );
virtual void ShutdownScreenSpaceEffects( ); virtual void ShutdownScreenSpaceEffects( );
virtual IScreenSpaceEffect *GetScreenSpaceEffect( const char *pEffectName ); virtual IScreenSpaceEffect *GetScreenSpaceEffect( const char *pEffectName );
virtual void SetScreenSpaceEffectParams( const char *pEffectName, KeyValues *params ); virtual void SetScreenSpaceEffectParams( const char *pEffectName, KeyValues *params );
virtual void SetScreenSpaceEffectParams( IScreenSpaceEffect *pEffect, KeyValues *params ); virtual void SetScreenSpaceEffectParams( IScreenSpaceEffect *pEffect, KeyValues *params );
virtual void EnableScreenSpaceEffect( const char *pEffectName ); virtual void EnableScreenSpaceEffect( const char *pEffectName );
virtual void EnableScreenSpaceEffect( IScreenSpaceEffect *pEffect ); virtual void EnableScreenSpaceEffect( IScreenSpaceEffect *pEffect );
virtual void DisableScreenSpaceEffect( const char *pEffectName ); virtual void DisableScreenSpaceEffect( const char *pEffectName );
virtual void DisableScreenSpaceEffect( IScreenSpaceEffect *pEffect ); virtual void DisableScreenSpaceEffect( IScreenSpaceEffect *pEffect );
virtual void DisableAllScreenSpaceEffects( ); virtual void DisableAllScreenSpaceEffects( );
virtual void RenderEffects( int x, int y, int w, int h ); virtual void RenderEffects( int x, int y, int w, int h );
}; };
CScreenSpaceEffectManager g_ScreenSpaceEffectManager; CScreenSpaceEffectManager g_ScreenSpaceEffectManager;
IScreenSpaceEffectManager *g_pScreenSpaceEffects = &g_ScreenSpaceEffectManager; IScreenSpaceEffectManager *g_pScreenSpaceEffects = &g_ScreenSpaceEffectManager;
//--------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------
// CScreenSpaceEffectManager::InitScreenSpaceEffects - Initialise all registered effects // CScreenSpaceEffectManager::InitScreenSpaceEffects - Initialise all registered effects
//--------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------
void CScreenSpaceEffectManager::InitScreenSpaceEffects( ) void CScreenSpaceEffectManager::InitScreenSpaceEffects( )
{ {
if ( CommandLine()->FindParm( "-filmgrain" ) ) if ( CommandLine()->FindParm( "-filmgrain" ) )
{ {
GetScreenSpaceEffect( "filmgrain" )->Enable( true ); GetScreenSpaceEffect( "filmgrain" )->Enable( true );
} }
for( CScreenSpaceEffectRegistration *pReg=CScreenSpaceEffectRegistration::s_pHead; pReg!=NULL; pReg=pReg->m_pNext ) for( CScreenSpaceEffectRegistration *pReg=CScreenSpaceEffectRegistration::s_pHead; pReg!=NULL; pReg=pReg->m_pNext )
{ {
IScreenSpaceEffect *pEffect = pReg->m_pEffect; IScreenSpaceEffect *pEffect = pReg->m_pEffect;
if( pEffect ) if( pEffect )
{ {
bool bIsEnabled = pEffect->IsEnabled( ); bool bIsEnabled = pEffect->IsEnabled( );
pEffect->Init( ); pEffect->Init( );
pEffect->Enable( bIsEnabled ); pEffect->Enable( bIsEnabled );
} }
} }
} }
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
// CScreenSpaceEffectManager::ShutdownScreenSpaceEffects - Shutdown all registered effects // CScreenSpaceEffectManager::ShutdownScreenSpaceEffects - Shutdown all registered effects
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
void CScreenSpaceEffectManager::ShutdownScreenSpaceEffects( ) void CScreenSpaceEffectManager::ShutdownScreenSpaceEffects( )
{ {
for( CScreenSpaceEffectRegistration *pReg=CScreenSpaceEffectRegistration::s_pHead; pReg!=NULL; pReg=pReg->m_pNext ) for( CScreenSpaceEffectRegistration *pReg=CScreenSpaceEffectRegistration::s_pHead; pReg!=NULL; pReg=pReg->m_pNext )
{ {
IScreenSpaceEffect *pEffect = pReg->m_pEffect; IScreenSpaceEffect *pEffect = pReg->m_pEffect;
if( pEffect ) if( pEffect )
{ {
pEffect->Shutdown( ); pEffect->Shutdown( );
} }
} }
} }
//--------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------
// CScreenSpaceEffectManager::GetScreenSpaceEffect - Returns a point to the named effect // CScreenSpaceEffectManager::GetScreenSpaceEffect - Returns a point to the named effect
//--------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------
IScreenSpaceEffect *CScreenSpaceEffectManager::GetScreenSpaceEffect( const char *pEffectName ) IScreenSpaceEffect *CScreenSpaceEffectManager::GetScreenSpaceEffect( const char *pEffectName )
{ {
for( CScreenSpaceEffectRegistration *pReg=CScreenSpaceEffectRegistration::s_pHead; pReg!=NULL; pReg=pReg->m_pNext ) for( CScreenSpaceEffectRegistration *pReg=CScreenSpaceEffectRegistration::s_pHead; pReg!=NULL; pReg=pReg->m_pNext )
{ {
if( !Q_stricmp( pReg->m_pEffectName, pEffectName ) ) if( !Q_stricmp( pReg->m_pEffectName, pEffectName ) )
{ {
IScreenSpaceEffect *pEffect = pReg->m_pEffect; IScreenSpaceEffect *pEffect = pReg->m_pEffect;
return pEffect; return pEffect;
} }
} }
Warning( "Could not find screen space effect %s\n", pEffectName ); Warning( "Could not find screen space effect %s\n", pEffectName );
return NULL; return NULL;
} }
//--------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------
// CScreenSpaceEffectManager::SetScreenSpaceEffectParams // CScreenSpaceEffectManager::SetScreenSpaceEffectParams
// - Assign parameters to the specified effect // - Assign parameters to the specified effect
//--------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------
void CScreenSpaceEffectManager::SetScreenSpaceEffectParams( const char *pEffectName, KeyValues *params ) void CScreenSpaceEffectManager::SetScreenSpaceEffectParams( const char *pEffectName, KeyValues *params )
{ {
IScreenSpaceEffect *pEffect = GetScreenSpaceEffect( pEffectName ); IScreenSpaceEffect *pEffect = GetScreenSpaceEffect( pEffectName );
if( pEffect ) if( pEffect )
SetScreenSpaceEffectParams( pEffect, params ); SetScreenSpaceEffectParams( pEffect, params );
} }
void CScreenSpaceEffectManager::SetScreenSpaceEffectParams( IScreenSpaceEffect *pEffect, KeyValues *params ) void CScreenSpaceEffectManager::SetScreenSpaceEffectParams( IScreenSpaceEffect *pEffect, KeyValues *params )
{ {
if( pEffect ) if( pEffect )
pEffect->SetParameters( params ); pEffect->SetParameters( params );
} }
//--------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------
// CScreenSpaceEffectManager::EnableScreenSpaceEffect // CScreenSpaceEffectManager::EnableScreenSpaceEffect
// - Enables the specified effect // - Enables the specified effect
//--------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------
void CScreenSpaceEffectManager::EnableScreenSpaceEffect( const char *pEffectName ) void CScreenSpaceEffectManager::EnableScreenSpaceEffect( const char *pEffectName )
{ {
IScreenSpaceEffect *pEffect = GetScreenSpaceEffect( pEffectName ); IScreenSpaceEffect *pEffect = GetScreenSpaceEffect( pEffectName );
if( pEffect ) if( pEffect )
EnableScreenSpaceEffect( pEffect ); EnableScreenSpaceEffect( pEffect );
} }
void CScreenSpaceEffectManager::EnableScreenSpaceEffect( IScreenSpaceEffect *pEffect ) void CScreenSpaceEffectManager::EnableScreenSpaceEffect( IScreenSpaceEffect *pEffect )
{ {
if( pEffect ) if( pEffect )
pEffect->Enable( true ); pEffect->Enable( true );
} }
//--------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------
// CScreenSpaceEffectManager::DisableScreenSpaceEffect // CScreenSpaceEffectManager::DisableScreenSpaceEffect
// - Disables the specified effect // - Disables the specified effect
//--------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------
void CScreenSpaceEffectManager::DisableScreenSpaceEffect( const char *pEffectName ) void CScreenSpaceEffectManager::DisableScreenSpaceEffect( const char *pEffectName )
{ {
IScreenSpaceEffect *pEffect = GetScreenSpaceEffect( pEffectName ); IScreenSpaceEffect *pEffect = GetScreenSpaceEffect( pEffectName );
if( pEffect ) if( pEffect )
DisableScreenSpaceEffect( pEffect ); DisableScreenSpaceEffect( pEffect );
} }
void CScreenSpaceEffectManager::DisableScreenSpaceEffect( IScreenSpaceEffect *pEffect ) void CScreenSpaceEffectManager::DisableScreenSpaceEffect( IScreenSpaceEffect *pEffect )
{ {
if( pEffect ) if( pEffect )
pEffect->Enable( false ); pEffect->Enable( false );
} }
//--------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------
// CScreenSpaceEffectManager::DisableAllScreenSpaceEffects // CScreenSpaceEffectManager::DisableAllScreenSpaceEffects
// - Disables all registered screen space effects // - Disables all registered screen space effects
//--------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------
void CScreenSpaceEffectManager::DisableAllScreenSpaceEffects( ) void CScreenSpaceEffectManager::DisableAllScreenSpaceEffects( )
{ {
for( CScreenSpaceEffectRegistration *pReg=CScreenSpaceEffectRegistration::s_pHead; pReg!=NULL; pReg=pReg->m_pNext ) for( CScreenSpaceEffectRegistration *pReg=CScreenSpaceEffectRegistration::s_pHead; pReg!=NULL; pReg=pReg->m_pNext )
{ {
IScreenSpaceEffect *pEffect = pReg->m_pEffect; IScreenSpaceEffect *pEffect = pReg->m_pEffect;
if( pEffect ) if( pEffect )
{ {
pEffect->Enable( false ); pEffect->Enable( false );
} }
} }
} }
//--------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------
// CScreenSpaceEffectManager::RenderEffects // CScreenSpaceEffectManager::RenderEffects
// - Renders all registered screen space effects // - Renders all registered screen space effects
//--------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------
void CScreenSpaceEffectManager::RenderEffects( int x, int y, int w, int h ) void CScreenSpaceEffectManager::RenderEffects( int x, int y, int w, int h )
{ {
for( CScreenSpaceEffectRegistration *pReg=CScreenSpaceEffectRegistration::s_pHead; pReg!=NULL; pReg=pReg->m_pNext ) for( CScreenSpaceEffectRegistration *pReg=CScreenSpaceEffectRegistration::s_pHead; pReg!=NULL; pReg=pReg->m_pNext )
{ {
IScreenSpaceEffect *pEffect = pReg->m_pEffect; IScreenSpaceEffect *pEffect = pReg->m_pEffect;
if( pEffect ) if( pEffect )
{ {
pEffect->Render( x, y, w, h ); pEffect->Render( x, y, w, h );
} }
} }
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// Example post-processing effect // Example post-processing effect
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
class CExampleEffect : public IScreenSpaceEffect class CExampleEffect : public IScreenSpaceEffect
{ {
public: public:
CExampleEffect( ); CExampleEffect( );
~CExampleEffect( ); ~CExampleEffect( );
void Init( ); void Init( );
void Shutdown( ); void Shutdown( );
void SetParameters( KeyValues *params ); void SetParameters( KeyValues *params );
void Render( int x, int y, int w, int h ); void Render( int x, int y, int w, int h );
void Enable( bool bEnable ); void Enable( bool bEnable );
bool IsEnabled( ); bool IsEnabled( );
private: private:
bool m_bEnable; bool m_bEnable;
CMaterialReference m_Material; CMaterialReference m_Material;
}; };
ADD_SCREENSPACE_EFFECT( CExampleEffect, exampleeffect ); ADD_SCREENSPACE_EFFECT( CExampleEffect, exampleeffect );
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// CExampleEffect constructor // CExampleEffect constructor
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
CExampleEffect::CExampleEffect( ) CExampleEffect::CExampleEffect( )
{ {
m_bEnable = false; m_bEnable = false;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// CExampleEffect destructor // CExampleEffect destructor
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
CExampleEffect::~CExampleEffect( ) CExampleEffect::~CExampleEffect( )
{ {
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// CExampleEffect init // CExampleEffect init
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void CExampleEffect::Init( ) void CExampleEffect::Init( )
{ {
// This is just example code, init your effect material here // This is just example code, init your effect material here
//m_Material.Init( "engine/exampleeffect", TEXTURE_GROUP_OTHER ); //m_Material.Init( "engine/exampleeffect", TEXTURE_GROUP_OTHER );
m_bEnable = false; m_bEnable = false;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// CExampleEffect shutdown // CExampleEffect shutdown
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void CExampleEffect::Shutdown( ) void CExampleEffect::Shutdown( )
{ {
m_Material.Shutdown(); m_Material.Shutdown();
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// CExampleEffect enable // CExampleEffect enable
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void CExampleEffect::Enable( bool bEnable ) void CExampleEffect::Enable( bool bEnable )
{ {
// This is just example code, don't enable it // This is just example code, don't enable it
// m_bEnable = bEnable; // m_bEnable = bEnable;
} }
bool CExampleEffect::IsEnabled( ) bool CExampleEffect::IsEnabled( )
{ {
return m_bEnable; return m_bEnable;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// CExampleEffect SetParameters // CExampleEffect SetParameters
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void CExampleEffect::SetParameters( KeyValues *params ) void CExampleEffect::SetParameters( KeyValues *params )
{ {
if( params->GetDataType( "example_param" ) == KeyValues::TYPE_STRING ) if( params->GetDataType( "example_param" ) == KeyValues::TYPE_STRING )
{ {
// ... // ...
} }
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// CExampleEffect render // CExampleEffect render
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void CExampleEffect::Render( int x, int y, int w, int h ) void CExampleEffect::Render( int x, int y, int w, int h )
{ {
if ( !IsEnabled() ) if ( !IsEnabled() )
return; return;
// Render Effect // Render Effect
Rect_t actualRect; Rect_t actualRect;
UpdateScreenEffectTexture( 0, x, y, w, h, false, &actualRect ); UpdateScreenEffectTexture( 0, x, y, w, h, false, &actualRect );
ITexture *pTexture = GetFullFrameFrameBufferTexture( 0 ); ITexture *pTexture = GetFullFrameFrameBufferTexture( 0 );
CMatRenderContextPtr pRenderContext( materials ); CMatRenderContextPtr pRenderContext( materials );
pRenderContext->DrawScreenSpaceRectangle( m_Material, x, y, w, h, pRenderContext->DrawScreenSpaceRectangle( m_Material, x, y, w, h,
actualRect.x, actualRect.y, actualRect.x+actualRect.width-1, actualRect.y+actualRect.height-1, actualRect.x, actualRect.y, actualRect.x+actualRect.width-1, actualRect.y+actualRect.height-1,
pTexture->GetActualWidth(), pTexture->GetActualHeight() ); pTexture->GetActualWidth(), pTexture->GetActualHeight() );
} }

View File

@ -1,88 +1,88 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: // Purpose:
// //
// $NoKeywords: $ // $NoKeywords: $
// //
//=====================================================================================// //=====================================================================================//
#ifndef SCREENSPACEEFFECTS_H #ifndef SCREENSPACEEFFECTS_H
#define SCREENSPACEEFFECTS_H #define SCREENSPACEEFFECTS_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
class KeyValues; class KeyValues;
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// Simple base class for screen space post-processing effects // Simple base class for screen space post-processing effects
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
abstract_class IScreenSpaceEffect abstract_class IScreenSpaceEffect
{ {
public: public:
virtual void Init( ) = 0; virtual void Init( ) = 0;
virtual void Shutdown( ) = 0; virtual void Shutdown( ) = 0;
virtual void SetParameters( KeyValues *params ) = 0; virtual void SetParameters( KeyValues *params ) = 0;
virtual void Render( int x, int y, int w, int h ) = 0; virtual void Render( int x, int y, int w, int h ) = 0;
virtual void Enable( bool bEnable ) = 0; virtual void Enable( bool bEnable ) = 0;
virtual bool IsEnabled( ) = 0; virtual bool IsEnabled( ) = 0;
}; };
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// Interface class for managing screen space post-processing effects // Interface class for managing screen space post-processing effects
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
abstract_class IScreenSpaceEffectManager abstract_class IScreenSpaceEffectManager
{ {
public: public:
virtual void InitScreenSpaceEffects( ) = 0; virtual void InitScreenSpaceEffects( ) = 0;
virtual void ShutdownScreenSpaceEffects( ) = 0; virtual void ShutdownScreenSpaceEffects( ) = 0;
virtual IScreenSpaceEffect *GetScreenSpaceEffect( const char *pEffectName ) = 0; virtual IScreenSpaceEffect *GetScreenSpaceEffect( const char *pEffectName ) = 0;
virtual void SetScreenSpaceEffectParams( const char *pEffectName, KeyValues *params ) = 0; virtual void SetScreenSpaceEffectParams( const char *pEffectName, KeyValues *params ) = 0;
virtual void SetScreenSpaceEffectParams( IScreenSpaceEffect *pEffect, KeyValues *params ) = 0; virtual void SetScreenSpaceEffectParams( IScreenSpaceEffect *pEffect, KeyValues *params ) = 0;
virtual void EnableScreenSpaceEffect( const char *pEffectName ) = 0; virtual void EnableScreenSpaceEffect( const char *pEffectName ) = 0;
virtual void EnableScreenSpaceEffect( IScreenSpaceEffect *pEffect ) = 0; virtual void EnableScreenSpaceEffect( IScreenSpaceEffect *pEffect ) = 0;
virtual void DisableScreenSpaceEffect( const char *pEffectName ) = 0; virtual void DisableScreenSpaceEffect( const char *pEffectName ) = 0;
virtual void DisableScreenSpaceEffect( IScreenSpaceEffect *pEffect ) = 0; virtual void DisableScreenSpaceEffect( IScreenSpaceEffect *pEffect ) = 0;
virtual void DisableAllScreenSpaceEffects( ) = 0; virtual void DisableAllScreenSpaceEffects( ) = 0;
virtual void RenderEffects( int x, int y, int w, int h ) = 0; virtual void RenderEffects( int x, int y, int w, int h ) = 0;
}; };
extern IScreenSpaceEffectManager *g_pScreenSpaceEffects; extern IScreenSpaceEffectManager *g_pScreenSpaceEffects;
//------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------
// Registration class for adding screen space effects to the IScreenSpaceEffectManager // Registration class for adding screen space effects to the IScreenSpaceEffectManager
//------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------
class CScreenSpaceEffectRegistration class CScreenSpaceEffectRegistration
{ {
public: public:
CScreenSpaceEffectRegistration( const char *pName, IScreenSpaceEffect *pEffect ); CScreenSpaceEffectRegistration( const char *pName, IScreenSpaceEffect *pEffect );
const char *m_pEffectName; const char *m_pEffectName;
IScreenSpaceEffect *m_pEffect; IScreenSpaceEffect *m_pEffect;
CScreenSpaceEffectRegistration *m_pNext; CScreenSpaceEffectRegistration *m_pNext;
static CScreenSpaceEffectRegistration *s_pHead; static CScreenSpaceEffectRegistration *s_pHead;
}; };
#define ADD_SCREENSPACE_EFFECT( CEffect, pEffectName ) CEffect pEffectName##_effect; \ #define ADD_SCREENSPACE_EFFECT( CEffect, pEffectName ) CEffect pEffectName##_effect; \
CScreenSpaceEffectRegistration pEffectName##_reg( #pEffectName, &pEffectName##_effect ); CScreenSpaceEffectRegistration pEffectName##_reg( #pEffectName, &pEffectName##_effect );
#endif #endif

View File

@ -1,172 +1,172 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: This is a panel which is rendered image on top of an entity // Purpose: This is a panel which is rendered image on top of an entity
// //
// $Revision: $ // $Revision: $
// $NoKeywords: $ // $NoKeywords: $
//=============================================================================// //=============================================================================//
#include "cbase.h" #include "cbase.h"
#include "TeamBitmapImage.h" #include "TeamBitmapImage.h"
#include <KeyValues.h> #include <KeyValues.h>
#include "vgui_bitmapimage.h" #include "vgui_bitmapimage.h"
#include "panelmetaclassmgr.h" #include "panelmetaclassmgr.h"
#include "VGuiMatSurface/IMatSystemSurface.h" #include "VGuiMatSurface/IMatSystemSurface.h"
#include <vgui_controls/Panel.h> #include <vgui_controls/Panel.h>
// 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"
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// A multiplexer bitmap that chooses a bitmap based on team // A multiplexer bitmap that chooses a bitmap based on team
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
CTeamBitmapImage::CTeamBitmapImage() : m_Alpha(1.0f) CTeamBitmapImage::CTeamBitmapImage() : m_Alpha(1.0f)
{ {
memset( m_ppImage, 0, BITMAP_COUNT * sizeof(BitmapImage*) ); memset( m_ppImage, 0, BITMAP_COUNT * sizeof(BitmapImage*) );
m_pEntity = NULL; m_pEntity = NULL;
m_bRelativeTeams = 0; m_bRelativeTeams = 0;
} }
CTeamBitmapImage::~CTeamBitmapImage() CTeamBitmapImage::~CTeamBitmapImage()
{ {
int i; int i;
for ( i = 0; i < BITMAP_COUNT; ++i ) for ( i = 0; i < BITMAP_COUNT; ++i )
{ {
if (m_ppImage[i]) if (m_ppImage[i])
delete m_ppImage[i]; delete m_ppImage[i];
} }
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// initialization // initialization
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
bool CTeamBitmapImage::Init( vgui::Panel *pParent, KeyValues* pInitData, C_BaseEntity* pEntity ) bool CTeamBitmapImage::Init( vgui::Panel *pParent, KeyValues* pInitData, C_BaseEntity* pEntity )
{ {
static const char *pRelativeTeamNames[BITMAP_COUNT] = static const char *pRelativeTeamNames[BITMAP_COUNT] =
{ {
"NoTeam", "NoTeam",
"MyTeam", "MyTeam",
"EnemyTeam", "EnemyTeam",
}; };
static const char *pAbsoluteTeamNames[BITMAP_COUNT] = static const char *pAbsoluteTeamNames[BITMAP_COUNT] =
{ {
"Team0", "Team0",
"Team1", "Team1",
"Team2", "Team2",
}; };
m_pEntity = pEntity; m_pEntity = pEntity;
m_bRelativeTeams = (pInitData->GetInt( "relativeteam" ) != 0); m_bRelativeTeams = (pInitData->GetInt( "relativeteam" ) != 0);
const char **ppTeamNames = m_bRelativeTeams ? pRelativeTeamNames : pAbsoluteTeamNames; const char **ppTeamNames = m_bRelativeTeams ? pRelativeTeamNames : pAbsoluteTeamNames;
int i; int i;
for ( i = 0 ; i < BITMAP_COUNT; ++i ) for ( i = 0 ; i < BITMAP_COUNT; ++i )
{ {
// Default to null // Default to null
m_ppImage[i] = NULL; m_ppImage[i] = NULL;
// Look for team section // Look for team section
KeyValues *pTeamKV = pInitData->FindKey( ppTeamNames[i] ); KeyValues *pTeamKV = pInitData->FindKey( ppTeamNames[i] );
if ( !pTeamKV ) if ( !pTeamKV )
continue; continue;
char const* pClassImage = pTeamKV->GetString( "material" ); char const* pClassImage = pTeamKV->GetString( "material" );
if ( !pClassImage || !pClassImage[ 0 ] ) if ( !pClassImage || !pClassImage[ 0 ] )
return false; return false;
// modulation color // modulation color
Color color; Color color;
if (!ParseRGBA( pTeamKV, "color", color )) if (!ParseRGBA( pTeamKV, "color", color ))
color.SetColor( 255, 255, 255, 255 ); color.SetColor( 255, 255, 255, 255 );
// hook in the bitmap // hook in the bitmap
m_ppImage[i] = new BitmapImage( pParent->GetVPanel(), pClassImage ); m_ppImage[i] = new BitmapImage( pParent->GetVPanel(), pClassImage );
m_ppImage[i]->SetColor( color ); m_ppImage[i]->SetColor( color );
} }
return true; return true;
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Alpha modulate... // Alpha modulate...
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CTeamBitmapImage::SetAlpha( float alpha ) void CTeamBitmapImage::SetAlpha( float alpha )
{ {
m_Alpha = clamp( alpha, 0.0f, 1.0f ); m_Alpha = clamp( alpha, 0.0f, 1.0f );
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// draw // draw
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CTeamBitmapImage::Paint( float yaw /*= 0.0f*/ ) void CTeamBitmapImage::Paint( float yaw /*= 0.0f*/ )
{ {
if (m_Alpha == 0.0f) if (m_Alpha == 0.0f)
return; return;
int team = 0; int team = 0;
if (m_bRelativeTeams) if (m_bRelativeTeams)
{ {
if (GetEntity()) if (GetEntity())
{ {
if (GetEntity()->GetTeamNumber() != 0) if (GetEntity()->GetTeamNumber() != 0)
{ {
team = GetEntity()->InLocalTeam() ? 1 : 2; team = GetEntity()->InLocalTeam() ? 1 : 2;
} }
} }
} }
else else
{ {
if (GetEntity()) if (GetEntity())
team = GetEntity()->GetTeamNumber(); team = GetEntity()->GetTeamNumber();
} }
// Paint the image for the current team // Paint the image for the current team
if (m_ppImage[team]) if (m_ppImage[team])
{ {
// Modulate the color based on the alpha.... // Modulate the color based on the alpha....
Color color = m_ppImage[team]->GetColor(); Color color = m_ppImage[team]->GetColor();
int alpha = color[3]; int alpha = color[3];
color[3] = (alpha * m_Alpha); color[3] = (alpha * m_Alpha);
m_ppImage[team]->SetColor( color ); m_ppImage[team]->SetColor( color );
if ( yaw != 0.0f ) if ( yaw != 0.0f )
{ {
g_pMatSystemSurface->DisableClipping( true ); g_pMatSystemSurface->DisableClipping( true );
m_ppImage[team]->DoPaint( m_ppImage[team]->GetRenderSizePanel(), yaw ); m_ppImage[team]->DoPaint( m_ppImage[team]->GetRenderSizePanel(), yaw );
g_pMatSystemSurface->DisableClipping( false ); g_pMatSystemSurface->DisableClipping( false );
} }
else else
{ {
// Paint // Paint
m_ppImage[team]->Paint(); m_ppImage[team]->Paint();
} }
// restore previous color // restore previous color
color[3] = alpha; color[3] = alpha;
m_ppImage[team]->SetColor( color ); m_ppImage[team]->SetColor( color );
} }
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Helper method to initialize a team image from KeyValues data.. // Helper method to initialize a team image from KeyValues data..
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
bool InitializeTeamImage( KeyValues *pInitData, const char* pSectionName, vgui::Panel *pParent, C_BaseEntity *pEntity, CTeamBitmapImage* pTeamImage ) bool InitializeTeamImage( KeyValues *pInitData, const char* pSectionName, vgui::Panel *pParent, C_BaseEntity *pEntity, CTeamBitmapImage* pTeamImage )
{ {
KeyValues *pTeamImageSection = pInitData; KeyValues *pTeamImageSection = pInitData;
if (pSectionName) if (pSectionName)
{ {
pTeamImageSection = pInitData->FindKey( pSectionName ); pTeamImageSection = pInitData->FindKey( pSectionName );
if ( !pTeamImageSection ) if ( !pTeamImageSection )
return false; return false;
} }
return pTeamImage->Init( pParent, pTeamImageSection, pEntity ); return pTeamImage->Init( pParent, pTeamImageSection, pEntity );
} }

View File

@ -1,80 +1,80 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: This is a panel which is rendered image on top of an entity // Purpose: This is a panel which is rendered image on top of an entity
// //
// $Revision: $ // $Revision: $
// $NoKeywords: $ // $NoKeywords: $
//=============================================================================// //=============================================================================//
#ifndef TEAMBITMAPIMAGE_H #ifndef TEAMBITMAPIMAGE_H
#define TEAMBITMAPIMAGE_H #define TEAMBITMAPIMAGE_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
//#include "tf_shareddefs.h" //#include "tf_shareddefs.h"
#include <vgui/VGUI.h> #include <vgui/VGUI.h>
namespace vgui namespace vgui
{ {
class Panel; class Panel;
} }
class BitmapImage; class BitmapImage;
class C_BaseEntity; class C_BaseEntity;
class KeyValues; class KeyValues;
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// A multiplexer bitmap that chooses a bitmap based on team // A multiplexer bitmap that chooses a bitmap based on team
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
class CTeamBitmapImage class CTeamBitmapImage
{ {
public: public:
// construction, destruction // construction, destruction
CTeamBitmapImage(); CTeamBitmapImage();
~CTeamBitmapImage(); ~CTeamBitmapImage();
// initialization // initialization
bool Init( vgui::Panel *pParent, KeyValues* pInitData, C_BaseEntity* pEntity ); bool Init( vgui::Panel *pParent, KeyValues* pInitData, C_BaseEntity* pEntity );
// Alpha override... // Alpha override...
void SetAlpha( float alpha ); void SetAlpha( float alpha );
// Paint the sucka. Paint it the size of the parent panel // Paint the sucka. Paint it the size of the parent panel
void Paint( float yaw = 0.0f ); void Paint( float yaw = 0.0f );
protected: protected:
// Wrapper so we can implement this with EHANDLES some day // Wrapper so we can implement this with EHANDLES some day
C_BaseEntity *GetEntity() { return m_pEntity; } C_BaseEntity *GetEntity() { return m_pEntity; }
private: private:
enum enum
{ {
// NOTE: Was MAX_TF_TEAMS not 4, but I don't like the dependency here. // NOTE: Was MAX_TF_TEAMS not 4, but I don't like the dependency here.
BITMAP_COUNT = 4 + 1 BITMAP_COUNT = 4 + 1
}; };
BitmapImage *m_ppImage[ BITMAP_COUNT ]; BitmapImage *m_ppImage[ BITMAP_COUNT ];
C_BaseEntity *m_pEntity; C_BaseEntity *m_pEntity;
float m_Alpha; float m_Alpha;
bool m_bRelativeTeams; bool m_bRelativeTeams;
}; };
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Helper method to initialize a team image from KeyValues data.. // Helper method to initialize a team image from KeyValues data..
// KeyValues contains the bitmap data. pSectionName, if it exists, // KeyValues contains the bitmap data. pSectionName, if it exists,
// indicates which subsection of pInitData should be looked at to get at the // indicates which subsection of pInitData should be looked at to get at the
// image data. The final argument is the bitmap image to initialize. // image data. The final argument is the bitmap image to initialize.
// The function returns true if it succeeded. // The function returns true if it succeeded.
// //
// NOTE: This function looks for the key values 'material' and 'color' // NOTE: This function looks for the key values 'material' and 'color'
// and uses them to set up the material + modulation color of the image // and uses them to set up the material + modulation color of the image
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
bool InitializeTeamImage( KeyValues *pInitData, const char* pSectionName, bool InitializeTeamImage( KeyValues *pInitData, const char* pSectionName,
vgui::Panel *pParent, C_BaseEntity *pEntity, CTeamBitmapImage* pBitmapImage ); vgui::Panel *pParent, C_BaseEntity *pEntity, CTeamBitmapImage* pBitmapImage );
#endif // TEAMBITMAPIMAGE_H #endif // TEAMBITMAPIMAGE_H

View File

@ -1,83 +1,83 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: This is a panel which is rendered image on top of an entity // Purpose: This is a panel which is rendered image on top of an entity
// //
// $Revision: $ // $Revision: $
// $NoKeywords: $ // $NoKeywords: $
//=============================================================================// //=============================================================================//
#include "cbase.h" #include "cbase.h"
#include "ViewConeImage.h" #include "ViewConeImage.h"
#include <KeyValues.h> #include <KeyValues.h>
#include <vgui_controls/Panel.h> #include <vgui_controls/Panel.h>
#include "VGuiMatSurface/IMatSystemSurface.h" #include "VGuiMatSurface/IMatSystemSurface.h"
// 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"
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// initialization // initialization
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
bool CViewConeImage::Init( vgui::Panel *pParent, KeyValues* pInitData ) bool CViewConeImage::Init( vgui::Panel *pParent, KeyValues* pInitData )
{ {
Assert( pParent ); Assert( pParent );
// Load viewcone material // Load viewcone material
if (!m_Image.Init( pParent->GetVPanel(), pInitData )) if (!m_Image.Init( pParent->GetVPanel(), pInitData ))
return false; return false;
// Position the view cone... // Position the view cone...
int viewconesize = pInitData->GetInt( "size", 32 ); int viewconesize = pInitData->GetInt( "size", 32 );
m_Image.SetRenderSize( viewconesize, viewconesize ); m_Image.SetRenderSize( viewconesize, viewconesize );
int cx, cy; int cx, cy;
pParent->GetSize( cx, cy ); pParent->GetSize( cx, cy );
m_Image.SetPos( (cx - viewconesize) / 2, (cy - viewconesize) / 2 ); m_Image.SetPos( (cx - viewconesize) / 2, (cy - viewconesize) / 2 );
return true; return true;
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Paint the sucka // Paint the sucka
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CViewConeImage::Paint( float yaw ) void CViewConeImage::Paint( float yaw )
{ {
g_pMatSystemSurface->DisableClipping( true ); g_pMatSystemSurface->DisableClipping( true );
m_Image.DoPaint( NULL, yaw ); m_Image.DoPaint( NULL, yaw );
g_pMatSystemSurface->DisableClipping( false ); g_pMatSystemSurface->DisableClipping( false );
} }
void CViewConeImage::SetColor( int r, int g, int b ) void CViewConeImage::SetColor( int r, int g, int b )
{ {
m_Image.SetColor( Color( r, g, b, 255 ) ); m_Image.SetColor( Color( r, g, b, 255 ) );
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Helper method to initialize a view cone image from KeyValues data.. // Helper method to initialize a view cone image from KeyValues data..
// KeyValues contains the bitmap data, pSectionName, if it exists, // KeyValues contains the bitmap data, pSectionName, if it exists,
// indicates which subsection of pInitData should be looked at to get at the // indicates which subsection of pInitData should be looked at to get at the
// image data. The final argument is the bitmap image to initialize. // image data. The final argument is the bitmap image to initialize.
// The function returns true if it succeeded. // The function returns true if it succeeded.
// //
// NOTE: This function looks for the key values 'material' and 'color' // NOTE: This function looks for the key values 'material' and 'color'
// and uses them to set up the material + modulation color of the image // and uses them to set up the material + modulation color of the image
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
bool InitializeViewConeImage( KeyValues *pInitData, const char* pSectionName, bool InitializeViewConeImage( KeyValues *pInitData, const char* pSectionName,
vgui::Panel *pParent, CViewConeImage* pViewConeImage ) vgui::Panel *pParent, CViewConeImage* pViewConeImage )
{ {
KeyValues *pViewConeImageSection; KeyValues *pViewConeImageSection;
if (pSectionName) if (pSectionName)
{ {
pViewConeImageSection = pInitData->FindKey( pSectionName ); pViewConeImageSection = pInitData->FindKey( pSectionName );
if ( !pViewConeImageSection ) if ( !pViewConeImageSection )
return false; return false;
} }
else else
{ {
pViewConeImageSection = pInitData; pViewConeImageSection = pInitData;
} }
return pViewConeImage->Init( pParent, pViewConeImageSection ); return pViewConeImage->Init( pParent, pViewConeImageSection );
} }

View File

@ -1,56 +1,56 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: This is a panel which draws a viewcone // Purpose: This is a panel which draws a viewcone
// //
// $Revision: $ // $Revision: $
// $NoKeywords: $ // $NoKeywords: $
//=============================================================================// //=============================================================================//
#ifndef VIEWCONEIMAGE_H #ifndef VIEWCONEIMAGE_H
#define VIEWCONEIMAGE_H #define VIEWCONEIMAGE_H
#include "shareddefs.h" #include "shareddefs.h"
#include "vgui_bitmapimage.h" #include "vgui_bitmapimage.h"
namespace vgui namespace vgui
{ {
class Panel; class Panel;
} }
class C_BaseEntity; class C_BaseEntity;
class KeyValues; class KeyValues;
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// A bitmap that renders a view cone based on angles // A bitmap that renders a view cone based on angles
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
class CViewConeImage class CViewConeImage
{ {
public: public:
// initialization // initialization
bool Init( vgui::Panel *pParent, KeyValues* pInitData ); bool Init( vgui::Panel *pParent, KeyValues* pInitData );
// Paint the sucka // Paint the sucka
void Paint( float yaw ); void Paint( float yaw );
void SetColor( int r, int g, int b ); void SetColor( int r, int g, int b );
private: private:
BitmapImage m_Image; BitmapImage m_Image;
}; };
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Helper method to initialize a view cone image from KeyValues data.. // Helper method to initialize a view cone image from KeyValues data..
// KeyValues contains the bitmap data, pSectionName, if it exists, // KeyValues contains the bitmap data, pSectionName, if it exists,
// indicates which subsection of pInitData should be looked at to get at the // indicates which subsection of pInitData should be looked at to get at the
// image data. The final argument is the bitmap image to initialize. // image data. The final argument is the bitmap image to initialize.
// The function returns true if it succeeded. // The function returns true if it succeeded.
// //
// NOTE: This function looks for the key values 'material' and 'color' // NOTE: This function looks for the key values 'material' and 'color'
// and uses them to set up the material + modulation color of the image // and uses them to set up the material + modulation color of the image
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
bool InitializeViewConeImage( KeyValues *pInitData, const char* pSectionName, bool InitializeViewConeImage( KeyValues *pInitData, const char* pSectionName,
vgui::Panel *pParent, CViewConeImage* pViewConeImage ); vgui::Panel *pParent, CViewConeImage* pViewConeImage );
#endif // VIEWCONEIMAGE_H #endif // VIEWCONEIMAGE_H

View File

@ -1,83 +1,83 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: // Purpose:
// //
// $NoKeywords: $ // $NoKeywords: $
//=============================================================================// //=============================================================================//
#include "cbase.h" #include "cbase.h"
#include "materialsystem/imaterialproxy.h" #include "materialsystem/imaterialproxy.h"
#include "materialsystem/imaterial.h" #include "materialsystem/imaterial.h"
#include "materialsystem/imaterialvar.h" #include "materialsystem/imaterialvar.h"
#include "iviewrender.h" #include "iviewrender.h"
#include "toolframework_client.h" #include "toolframework_client.h"
// 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"
// forward declarations // forward declarations
void ToolFramework_RecordMaterialParams( IMaterial *pMaterial ); void ToolFramework_RecordMaterialParams( IMaterial *pMaterial );
// no inputs, assumes that the results go into $CHEAPWATERSTARTDISTANCE and $CHEAPWATERENDDISTANCE // no inputs, assumes that the results go into $CHEAPWATERSTARTDISTANCE and $CHEAPWATERENDDISTANCE
class CWaterLODMaterialProxy : public IMaterialProxy class CWaterLODMaterialProxy : public IMaterialProxy
{ {
public: public:
CWaterLODMaterialProxy(); CWaterLODMaterialProxy();
virtual ~CWaterLODMaterialProxy(); virtual ~CWaterLODMaterialProxy();
virtual bool Init( IMaterial *pMaterial, KeyValues *pKeyValues ); virtual bool Init( IMaterial *pMaterial, KeyValues *pKeyValues );
virtual void OnBind( void *pC_BaseEntity ); virtual void OnBind( void *pC_BaseEntity );
virtual void Release( void ) { delete this; } virtual void Release( void ) { delete this; }
virtual IMaterial *GetMaterial(); virtual IMaterial *GetMaterial();
private: private:
IMaterialVar *m_pCheapWaterStartDistanceVar; IMaterialVar *m_pCheapWaterStartDistanceVar;
IMaterialVar *m_pCheapWaterEndDistanceVar; IMaterialVar *m_pCheapWaterEndDistanceVar;
}; };
CWaterLODMaterialProxy::CWaterLODMaterialProxy() CWaterLODMaterialProxy::CWaterLODMaterialProxy()
{ {
m_pCheapWaterStartDistanceVar = NULL; m_pCheapWaterStartDistanceVar = NULL;
m_pCheapWaterEndDistanceVar = NULL; m_pCheapWaterEndDistanceVar = NULL;
} }
CWaterLODMaterialProxy::~CWaterLODMaterialProxy() CWaterLODMaterialProxy::~CWaterLODMaterialProxy()
{ {
} }
bool CWaterLODMaterialProxy::Init( IMaterial *pMaterial, KeyValues *pKeyValues ) bool CWaterLODMaterialProxy::Init( IMaterial *pMaterial, KeyValues *pKeyValues )
{ {
bool foundVar; bool foundVar;
m_pCheapWaterStartDistanceVar = pMaterial->FindVar( "$CHEAPWATERSTARTDISTANCE", &foundVar, false ); m_pCheapWaterStartDistanceVar = pMaterial->FindVar( "$CHEAPWATERSTARTDISTANCE", &foundVar, false );
if( !foundVar ) if( !foundVar )
return false; return false;
m_pCheapWaterEndDistanceVar = pMaterial->FindVar( "$CHEAPWATERENDDISTANCE", &foundVar, false ); m_pCheapWaterEndDistanceVar = pMaterial->FindVar( "$CHEAPWATERENDDISTANCE", &foundVar, false );
if( !foundVar ) if( !foundVar )
return false; return false;
return true; return true;
} }
void CWaterLODMaterialProxy::OnBind( void *pC_BaseEntity ) void CWaterLODMaterialProxy::OnBind( void *pC_BaseEntity )
{ {
if( !m_pCheapWaterStartDistanceVar || !m_pCheapWaterEndDistanceVar ) if( !m_pCheapWaterStartDistanceVar || !m_pCheapWaterEndDistanceVar )
{ {
return; return;
} }
float start, end; float start, end;
view->GetWaterLODParams( start, end ); view->GetWaterLODParams( start, end );
m_pCheapWaterStartDistanceVar->SetFloatValue( start ); m_pCheapWaterStartDistanceVar->SetFloatValue( start );
m_pCheapWaterEndDistanceVar->SetFloatValue( end ); m_pCheapWaterEndDistanceVar->SetFloatValue( end );
if ( ToolsEnabled() ) if ( ToolsEnabled() )
{ {
ToolFramework_RecordMaterialParams( GetMaterial() ); ToolFramework_RecordMaterialParams( GetMaterial() );
} }
} }
IMaterial *CWaterLODMaterialProxy::GetMaterial() IMaterial *CWaterLODMaterialProxy::GetMaterial()
{ {
return m_pCheapWaterStartDistanceVar->GetOwningMaterial(); return m_pCheapWaterStartDistanceVar->GetOwningMaterial();
} }
EXPOSE_INTERFACE( CWaterLODMaterialProxy, IMaterialProxy, "WaterLOD" IMATERIAL_PROXY_INTERFACE_VERSION ); EXPOSE_INTERFACE( CWaterLODMaterialProxy, IMaterialProxy, "WaterLOD" IMATERIAL_PROXY_INTERFACE_VERSION );

View File

@ -1,78 +1,78 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: // Purpose:
// //
//=============================================================================// //=============================================================================//
#include "cbase.h" #include "cbase.h"
#include "materialsystem/imaterialproxy.h" #include "materialsystem/imaterialproxy.h"
#include "materialsystem/imaterial.h" #include "materialsystem/imaterial.h"
#include "materialsystem/imaterialvar.h" #include "materialsystem/imaterialvar.h"
#include "c_world.h" #include "c_world.h"
#include "toolframework_client.h" #include "toolframework_client.h"
// 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"
// forward declarations // forward declarations
void ToolFramework_RecordMaterialParams( IMaterial *pMaterial ); void ToolFramework_RecordMaterialParams( IMaterial *pMaterial );
class CWorldDimsProxy : public IMaterialProxy class CWorldDimsProxy : public IMaterialProxy
{ {
public: public:
CWorldDimsProxy(); CWorldDimsProxy();
virtual ~CWorldDimsProxy(); virtual ~CWorldDimsProxy();
virtual bool Init( IMaterial *pMaterial, KeyValues *pKeyValues ); virtual bool Init( IMaterial *pMaterial, KeyValues *pKeyValues );
virtual void OnBind( void *pC_BaseEntity ); virtual void OnBind( void *pC_BaseEntity );
virtual void Release( void ) { delete this; } virtual void Release( void ) { delete this; }
virtual IMaterial *GetMaterial(); virtual IMaterial *GetMaterial();
public: public:
IMaterialVar *m_pMinsVar; IMaterialVar *m_pMinsVar;
IMaterialVar *m_pMaxsVar; IMaterialVar *m_pMaxsVar;
}; };
CWorldDimsProxy::CWorldDimsProxy() CWorldDimsProxy::CWorldDimsProxy()
{ {
m_pMinsVar = m_pMaxsVar = NULL; m_pMinsVar = m_pMaxsVar = NULL;
} }
CWorldDimsProxy::~CWorldDimsProxy() CWorldDimsProxy::~CWorldDimsProxy()
{ {
} }
bool CWorldDimsProxy::Init( IMaterial *pMaterial, KeyValues *pKeyValues ) bool CWorldDimsProxy::Init( IMaterial *pMaterial, KeyValues *pKeyValues )
{ {
m_pMinsVar = pMaterial->FindVar( "$world_mins", NULL, false ); m_pMinsVar = pMaterial->FindVar( "$world_mins", NULL, false );
m_pMaxsVar = pMaterial->FindVar( "$world_maxs", NULL, false ); m_pMaxsVar = pMaterial->FindVar( "$world_maxs", NULL, false );
return true; return true;
} }
void CWorldDimsProxy::OnBind( void *pC_BaseEntity ) void CWorldDimsProxy::OnBind( void *pC_BaseEntity )
{ {
if ( m_pMinsVar && m_pMaxsVar ) if ( m_pMinsVar && m_pMaxsVar )
{ {
C_World *pWorld = GetClientWorldEntity(); C_World *pWorld = GetClientWorldEntity();
if ( pWorld ) if ( pWorld )
{ {
m_pMinsVar->SetVecValue( (const float*)&pWorld->m_WorldMins, 3 ); m_pMinsVar->SetVecValue( (const float*)&pWorld->m_WorldMins, 3 );
m_pMaxsVar->SetVecValue( (const float*)&pWorld->m_WorldMaxs, 3 ); m_pMaxsVar->SetVecValue( (const float*)&pWorld->m_WorldMaxs, 3 );
} }
} }
if ( ToolsEnabled() ) if ( ToolsEnabled() )
{ {
ToolFramework_RecordMaterialParams( GetMaterial() ); ToolFramework_RecordMaterialParams( GetMaterial() );
} }
} }
IMaterial *CWorldDimsProxy::GetMaterial() IMaterial *CWorldDimsProxy::GetMaterial()
{ {
return m_pMinsVar->GetOwningMaterial(); return m_pMinsVar->GetOwningMaterial();
} }
EXPOSE_INTERFACE( CWorldDimsProxy, IMaterialProxy, "WorldDims" IMATERIAL_PROXY_INTERFACE_VERSION ); EXPOSE_INTERFACE( CWorldDimsProxy, IMaterialProxy, "WorldDims" IMATERIAL_PROXY_INTERFACE_VERSION );

View File

@ -1,272 +1,272 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: // Purpose:
// //
// $NoKeywords: $ // $NoKeywords: $
//============================================================================= //=============================================================================
#include "cbase.h" #include "cbase.h"
#include "hud.h" #include "hud.h"
#include "hud_macros.h" #include "hud_macros.h"
#include "hudelement.h" #include "hudelement.h"
#include "iclientmode.h" #include "iclientmode.h"
#include "ienginevgui.h" #include "ienginevgui.h"
#include <vgui/ILocalize.h> #include <vgui/ILocalize.h>
#include <vgui/ISurface.h> #include <vgui/ISurface.h>
#include <vgui/IVGui.h> #include <vgui/IVGui.h>
#include <vgui_controls/EditablePanel.h> #include <vgui_controls/EditablePanel.h>
#include <vgui_controls/Label.h> #include <vgui_controls/Label.h>
#include <vgui_controls/ImagePanel.h> #include <vgui_controls/ImagePanel.h>
#include "achievement_notification_panel.h" #include "achievement_notification_panel.h"
#include "steam/steam_api.h" #include "steam/steam_api.h"
#include "iachievementmgr.h" #include "iachievementmgr.h"
#include "fmtstr.h" #include "fmtstr.h"
// 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"
using namespace vgui; using namespace vgui;
#define ACHIEVEMENT_NOTIFICATION_DURATION 10.0f #define ACHIEVEMENT_NOTIFICATION_DURATION 10.0f
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
DECLARE_HUDELEMENT_DEPTH( CAchievementNotificationPanel, 100 ); DECLARE_HUDELEMENT_DEPTH( CAchievementNotificationPanel, 100 );
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
CAchievementNotificationPanel::CAchievementNotificationPanel( const char *pElementName ) : CHudElement( pElementName ), BaseClass( NULL, "AchievementNotificationPanel" ) CAchievementNotificationPanel::CAchievementNotificationPanel( const char *pElementName ) : CHudElement( pElementName ), BaseClass( NULL, "AchievementNotificationPanel" )
{ {
Panel *pParent = g_pClientMode->GetViewport(); Panel *pParent = g_pClientMode->GetViewport();
SetParent( pParent ); SetParent( pParent );
m_flHideTime = 0; m_flHideTime = 0;
m_pPanelBackground = new EditablePanel( this, "Notification_Background" ); m_pPanelBackground = new EditablePanel( this, "Notification_Background" );
m_pIcon = new ImagePanel( this, "Notification_Icon" ); m_pIcon = new ImagePanel( this, "Notification_Icon" );
m_pLabelHeading = new Label( this, "HeadingLabel", "" ); m_pLabelHeading = new Label( this, "HeadingLabel", "" );
m_pLabelTitle = new Label( this, "TitleLabel", "" ); m_pLabelTitle = new Label( this, "TitleLabel", "" );
m_pIcon->SetShouldScaleImage( true ); m_pIcon->SetShouldScaleImage( true );
vgui::ivgui()->AddTickSignal( GetVPanel() ); vgui::ivgui()->AddTickSignal( GetVPanel() );
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CAchievementNotificationPanel::Init() void CAchievementNotificationPanel::Init()
{ {
ListenForGameEvent( "achievement_event" ); ListenForGameEvent( "achievement_event" );
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CAchievementNotificationPanel::ApplySchemeSettings( IScheme *pScheme ) void CAchievementNotificationPanel::ApplySchemeSettings( IScheme *pScheme )
{ {
// load control settings... // load control settings...
LoadControlSettings( "resource/UI/AchievementNotification.res" ); LoadControlSettings( "resource/UI/AchievementNotification.res" );
BaseClass::ApplySchemeSettings( pScheme ); BaseClass::ApplySchemeSettings( pScheme );
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CAchievementNotificationPanel::PerformLayout( void ) void CAchievementNotificationPanel::PerformLayout( void )
{ {
BaseClass::PerformLayout(); BaseClass::PerformLayout();
// Set background color of various elements. Need to do this in code, if we do it in res file it gets slammed by the // Set background color of various elements. Need to do this in code, if we do it in res file it gets slammed by the
// scheme. (Incl. label background: some products don't have label background colors set in their scheme and helpfully slam it to white.) // scheme. (Incl. label background: some products don't have label background colors set in their scheme and helpfully slam it to white.)
SetBgColor( Color( 0, 0, 0, 0 ) ); SetBgColor( Color( 0, 0, 0, 0 ) );
m_pLabelHeading->SetBgColor( Color( 0, 0, 0, 0 ) ); m_pLabelHeading->SetBgColor( Color( 0, 0, 0, 0 ) );
m_pLabelTitle->SetBgColor( Color( 0, 0, 0, 0 ) ); m_pLabelTitle->SetBgColor( Color( 0, 0, 0, 0 ) );
m_pPanelBackground->SetBgColor( Color( 62,70,55, 200 ) ); m_pPanelBackground->SetBgColor( Color( 62,70,55, 200 ) );
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CAchievementNotificationPanel::FireGameEvent( IGameEvent * event ) void CAchievementNotificationPanel::FireGameEvent( IGameEvent * event )
{ {
const char *name = event->GetName(); const char *name = event->GetName();
if ( 0 == Q_strcmp( name, "achievement_event" ) ) if ( 0 == Q_strcmp( name, "achievement_event" ) )
{ {
const char *pchName = event->GetString( "achievement_name" ); const char *pchName = event->GetString( "achievement_name" );
int iCur = event->GetInt( "cur_val" ); int iCur = event->GetInt( "cur_val" );
int iMax = event->GetInt( "max_val" ); int iMax = event->GetInt( "max_val" );
wchar_t szLocalizedName[256]=L""; wchar_t szLocalizedName[256]=L"";
if ( IsPC() ) if ( IsPC() )
{ {
// shouldn't ever get achievement progress if steam not running and user logged in, but check just in case // shouldn't ever get achievement progress if steam not running and user logged in, but check just in case
if ( !steamapicontext->SteamUserStats() ) if ( !steamapicontext->SteamUserStats() )
{ {
Msg( "Steam not running, achievement progress notification not displayed\n" ); Msg( "Steam not running, achievement progress notification not displayed\n" );
} }
else else
{ {
// use Steam to show achievement progress UI // use Steam to show achievement progress UI
steamapicontext->SteamUserStats()->IndicateAchievementProgress( pchName, iCur, iMax ); steamapicontext->SteamUserStats()->IndicateAchievementProgress( pchName, iCur, iMax );
} }
} }
else else
{ {
// on X360 we need to show our own achievement progress UI // on X360 we need to show our own achievement progress UI
const wchar_t *pchLocalizedName = ACHIEVEMENT_LOCALIZED_NAME_FROM_STR( pchName ); const wchar_t *pchLocalizedName = ACHIEVEMENT_LOCALIZED_NAME_FROM_STR( pchName );
Assert( pchLocalizedName ); Assert( pchLocalizedName );
if ( !pchLocalizedName || !pchLocalizedName[0] ) if ( !pchLocalizedName || !pchLocalizedName[0] )
return; return;
Q_wcsncpy( szLocalizedName, pchLocalizedName, sizeof( szLocalizedName ) ); Q_wcsncpy( szLocalizedName, pchLocalizedName, sizeof( szLocalizedName ) );
// this is achievement progress, compose the message of form: "<name> (<#>/<max>)" // this is achievement progress, compose the message of form: "<name> (<#>/<max>)"
wchar_t szFmt[128]=L""; wchar_t szFmt[128]=L"";
wchar_t szText[512]=L""; wchar_t szText[512]=L"";
wchar_t szNumFound[16]=L""; wchar_t szNumFound[16]=L"";
wchar_t szNumTotal[16]=L""; wchar_t szNumTotal[16]=L"";
_snwprintf( szNumFound, ARRAYSIZE( szNumFound ), L"%i", iCur ); _snwprintf( szNumFound, ARRAYSIZE( szNumFound ), L"%i", iCur );
_snwprintf( szNumTotal, ARRAYSIZE( szNumTotal ), L"%i", iMax ); _snwprintf( szNumTotal, ARRAYSIZE( szNumTotal ), L"%i", iMax );
const wchar_t *pchFmt = g_pVGuiLocalize->Find( "#GameUI_Achievement_Progress_Fmt" ); const wchar_t *pchFmt = g_pVGuiLocalize->Find( "#GameUI_Achievement_Progress_Fmt" );
if ( !pchFmt || !pchFmt[0] ) if ( !pchFmt || !pchFmt[0] )
return; return;
Q_wcsncpy( szFmt, pchFmt, sizeof( szFmt ) ); Q_wcsncpy( szFmt, pchFmt, sizeof( szFmt ) );
g_pVGuiLocalize->ConstructString( szText, sizeof( szText ), szFmt, 3, szLocalizedName, szNumFound, szNumTotal ); g_pVGuiLocalize->ConstructString( szText, sizeof( szText ), szFmt, 3, szLocalizedName, szNumFound, szNumTotal );
AddNotification( pchName, g_pVGuiLocalize->Find( "#GameUI_Achievement_Progress" ), szText ); AddNotification( pchName, g_pVGuiLocalize->Find( "#GameUI_Achievement_Progress" ), szText );
} }
} }
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: Called on each tick // Purpose: Called on each tick
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CAchievementNotificationPanel::OnTick( void ) void CAchievementNotificationPanel::OnTick( void )
{ {
if ( ( m_flHideTime > 0 ) && ( m_flHideTime < gpGlobals->curtime ) ) if ( ( m_flHideTime > 0 ) && ( m_flHideTime < gpGlobals->curtime ) )
{ {
m_flHideTime = 0; m_flHideTime = 0;
ShowNextNotification(); ShowNextNotification();
} }
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
bool CAchievementNotificationPanel::ShouldDraw( void ) bool CAchievementNotificationPanel::ShouldDraw( void )
{ {
return ( ( m_flHideTime > 0 ) && ( m_flHideTime > gpGlobals->curtime ) && CHudElement::ShouldDraw() ); return ( ( m_flHideTime > 0 ) && ( m_flHideTime > gpGlobals->curtime ) && CHudElement::ShouldDraw() );
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CAchievementNotificationPanel::AddNotification( const char *szIconBaseName, const wchar_t *pHeading, const wchar_t *pTitle ) void CAchievementNotificationPanel::AddNotification( const char *szIconBaseName, const wchar_t *pHeading, const wchar_t *pTitle )
{ {
// put this notification in our queue // put this notification in our queue
int iQueueItem = m_queueNotification.AddToTail(); int iQueueItem = m_queueNotification.AddToTail();
Notification_t &notification = m_queueNotification[iQueueItem]; Notification_t &notification = m_queueNotification[iQueueItem];
Q_strncpy( notification.szIconBaseName, szIconBaseName, ARRAYSIZE( notification.szIconBaseName ) ); Q_strncpy( notification.szIconBaseName, szIconBaseName, ARRAYSIZE( notification.szIconBaseName ) );
Q_wcsncpy( notification.szHeading, pHeading, sizeof( notification.szHeading ) ); Q_wcsncpy( notification.szHeading, pHeading, sizeof( notification.szHeading ) );
Q_wcsncpy( notification.szTitle, pTitle, sizeof( notification.szTitle ) ); Q_wcsncpy( notification.szTitle, pTitle, sizeof( notification.szTitle ) );
// if we are not currently displaying a notification, go ahead and show this one // if we are not currently displaying a notification, go ahead and show this one
if ( 0 == m_flHideTime ) if ( 0 == m_flHideTime )
{ {
ShowNextNotification(); ShowNextNotification();
} }
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: Shows next notification in queue if there is one // Purpose: Shows next notification in queue if there is one
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CAchievementNotificationPanel::ShowNextNotification() void CAchievementNotificationPanel::ShowNextNotification()
{ {
// see if we have anything to do // see if we have anything to do
if ( 0 == m_queueNotification.Count() ) if ( 0 == m_queueNotification.Count() )
{ {
m_flHideTime = 0; m_flHideTime = 0;
return; return;
} }
Notification_t &notification = m_queueNotification[ m_queueNotification.Head() ]; Notification_t &notification = m_queueNotification[ m_queueNotification.Head() ];
m_flHideTime = gpGlobals->curtime + ACHIEVEMENT_NOTIFICATION_DURATION; m_flHideTime = gpGlobals->curtime + ACHIEVEMENT_NOTIFICATION_DURATION;
// set the text and icon in the dialog // set the text and icon in the dialog
SetDialogVariable( "heading", notification.szHeading ); SetDialogVariable( "heading", notification.szHeading );
SetDialogVariable( "title", notification.szTitle ); SetDialogVariable( "title", notification.szTitle );
const char *pchIconBaseName = notification.szIconBaseName; const char *pchIconBaseName = notification.szIconBaseName;
if ( pchIconBaseName && pchIconBaseName[0] ) if ( pchIconBaseName && pchIconBaseName[0] )
{ {
m_pIcon->SetImage( CFmtStr( "achievements/%s.vmt", pchIconBaseName ) ); m_pIcon->SetImage( CFmtStr( "achievements/%s.vmt", pchIconBaseName ) );
} }
// resize the panel so it always looks good // resize the panel so it always looks good
// get fonts // get fonts
HFont hFontHeading = m_pLabelHeading->GetFont(); HFont hFontHeading = m_pLabelHeading->GetFont();
HFont hFontTitle = m_pLabelTitle->GetFont(); HFont hFontTitle = m_pLabelTitle->GetFont();
// determine how wide the text strings are // determine how wide the text strings are
int iHeadingWidth = UTIL_ComputeStringWidth( hFontHeading, notification.szHeading ); int iHeadingWidth = UTIL_ComputeStringWidth( hFontHeading, notification.szHeading );
int iTitleWidth = UTIL_ComputeStringWidth( hFontTitle, notification.szTitle ); int iTitleWidth = UTIL_ComputeStringWidth( hFontTitle, notification.szTitle );
// use the widest string // use the widest string
int iTextWidth = MAX( iHeadingWidth, iTitleWidth ); int iTextWidth = MAX( iHeadingWidth, iTitleWidth );
// don't let it be insanely wide // don't let it be insanely wide
iTextWidth = MIN( iTextWidth, XRES( 300 ) ); iTextWidth = MIN( iTextWidth, XRES( 300 ) );
int iIconWidth = m_pIcon->GetWide(); int iIconWidth = m_pIcon->GetWide();
int iSpacing = XRES( 10 ); int iSpacing = XRES( 10 );
int iPanelWidth = iSpacing + iIconWidth + iSpacing + iTextWidth + iSpacing; int iPanelWidth = iSpacing + iIconWidth + iSpacing + iTextWidth + iSpacing;
int iPanelX = GetWide() - iPanelWidth; int iPanelX = GetWide() - iPanelWidth;
int iIconX = iPanelX + iSpacing; int iIconX = iPanelX + iSpacing;
int iTextX = iIconX + iIconWidth + iSpacing; int iTextX = iIconX + iIconWidth + iSpacing;
// resize all the elements // resize all the elements
SetXAndWide( m_pPanelBackground, iPanelX, iPanelWidth ); SetXAndWide( m_pPanelBackground, iPanelX, iPanelWidth );
SetXAndWide( m_pIcon, iIconX, iIconWidth ); SetXAndWide( m_pIcon, iIconX, iIconWidth );
SetXAndWide( m_pLabelHeading, iTextX, iTextWidth ); SetXAndWide( m_pLabelHeading, iTextX, iTextWidth );
SetXAndWide( m_pLabelTitle, iTextX, iTextWidth ); SetXAndWide( m_pLabelTitle, iTextX, iTextWidth );
m_queueNotification.Remove( m_queueNotification.Head() ); m_queueNotification.Remove( m_queueNotification.Head() );
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CAchievementNotificationPanel::SetXAndWide( Panel *pPanel, int x, int wide ) void CAchievementNotificationPanel::SetXAndWide( Panel *pPanel, int x, int wide )
{ {
int xCur, yCur; int xCur, yCur;
pPanel->GetPos( xCur, yCur ); pPanel->GetPos( xCur, yCur );
pPanel->SetPos( x, yCur ); pPanel->SetPos( x, yCur );
pPanel->SetWide( wide ); pPanel->SetWide( wide );
} }
CON_COMMAND_F( achievement_notification_test, "Test the hud notification UI", FCVAR_CHEAT | FCVAR_DEVELOPMENTONLY ) CON_COMMAND_F( achievement_notification_test, "Test the hud notification UI", FCVAR_CHEAT | FCVAR_DEVELOPMENTONLY )
{ {
static int iCount=0; static int iCount=0;
CAchievementNotificationPanel *pPanel = GET_HUDELEMENT( CAchievementNotificationPanel ); CAchievementNotificationPanel *pPanel = GET_HUDELEMENT( CAchievementNotificationPanel );
if ( pPanel ) if ( pPanel )
{ {
pPanel->AddNotification( "HL2_KILL_ODESSAGUNSHIP", L"Achievement Progress", ( 0 == ( iCount % 2 ) ? L"Test Notification Message A (1/10)" : pPanel->AddNotification( "HL2_KILL_ODESSAGUNSHIP", L"Achievement Progress", ( 0 == ( iCount % 2 ) ? L"Test Notification Message A (1/10)" :
L"Test Message B" ) ); L"Test Message B" ) );
} }
#if 0 #if 0
IGameEvent *event = gameeventmanager->CreateEvent( "achievement_event" ); IGameEvent *event = gameeventmanager->CreateEvent( "achievement_event" );
if ( event ) if ( event )
{ {
const char *szTestStr[] = { "TF_GET_HEADSHOTS", "TF_PLAY_GAME_EVERYMAP", "TF_PLAY_GAME_EVERYCLASS", "TF_GET_HEALPOINTS" }; const char *szTestStr[] = { "TF_GET_HEADSHOTS", "TF_PLAY_GAME_EVERYMAP", "TF_PLAY_GAME_EVERYCLASS", "TF_GET_HEALPOINTS" };
event->SetString( "achievement_name", szTestStr[iCount%ARRAYSIZE(szTestStr)] ); event->SetString( "achievement_name", szTestStr[iCount%ARRAYSIZE(szTestStr)] );
event->SetInt( "cur_val", ( iCount%9 ) + 1 ); event->SetInt( "cur_val", ( iCount%9 ) + 1 );
event->SetInt( "max_val", 10 ); event->SetInt( "max_val", 10 );
gameeventmanager->FireEvent( event ); gameeventmanager->FireEvent( event );
} }
#endif #endif
iCount++; iCount++;
} }

View File

@ -1,57 +1,57 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: // Purpose:
// //
// $NoKeywords: $ // $NoKeywords: $
//=============================================================================// //=============================================================================//
#ifndef ACHIEVEMENT_NOTIFICATION_PANEL_H #ifndef ACHIEVEMENT_NOTIFICATION_PANEL_H
#define ACHIEVEMENT_NOTIFICATION_PANEL_H #define ACHIEVEMENT_NOTIFICATION_PANEL_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
#include <vgui_controls/EditablePanel.h> #include <vgui_controls/EditablePanel.h>
#include "hudelement.h" #include "hudelement.h"
using namespace vgui; using namespace vgui;
class CAchievementNotificationPanel : public CHudElement, public EditablePanel class CAchievementNotificationPanel : public CHudElement, public EditablePanel
{ {
DECLARE_CLASS_SIMPLE( CAchievementNotificationPanel, EditablePanel ); DECLARE_CLASS_SIMPLE( CAchievementNotificationPanel, EditablePanel );
public: public:
CAchievementNotificationPanel( const char *pElementName ); CAchievementNotificationPanel( const char *pElementName );
virtual void Init(); virtual void Init();
virtual void ApplySchemeSettings( IScheme *scheme ); virtual void ApplySchemeSettings( IScheme *scheme );
virtual bool ShouldDraw( void ); virtual bool ShouldDraw( void );
virtual void PerformLayout( void ); virtual void PerformLayout( void );
virtual void LevelInit( void ) { m_flHideTime = 0; } virtual void LevelInit( void ) { m_flHideTime = 0; }
virtual void FireGameEvent( IGameEvent * event ); virtual void FireGameEvent( IGameEvent * event );
virtual void OnTick( void ); virtual void OnTick( void );
void AddNotification( const char *szIconBaseName, const wchar_t *pHeading, const wchar_t *pTitle ); void AddNotification( const char *szIconBaseName, const wchar_t *pHeading, const wchar_t *pTitle );
private: private:
void ShowNextNotification(); void ShowNextNotification();
void SetXAndWide( Panel *pPanel, int x, int wide ); void SetXAndWide( Panel *pPanel, int x, int wide );
float m_flHideTime; float m_flHideTime;
Label *m_pLabelHeading; Label *m_pLabelHeading;
Label *m_pLabelTitle; Label *m_pLabelTitle;
EditablePanel *m_pPanelBackground; EditablePanel *m_pPanelBackground;
ImagePanel *m_pIcon; ImagePanel *m_pIcon;
struct Notification_t struct Notification_t
{ {
char szIconBaseName[255]; char szIconBaseName[255];
wchar_t szHeading[255]; wchar_t szHeading[255];
wchar_t szTitle[255]; wchar_t szTitle[255];
}; };
CUtlLinkedList<Notification_t> m_queueNotification; CUtlLinkedList<Notification_t> m_queueNotification;
}; };
#endif // ACHIEVEMENT_NOTIFICATION_PANEL_H #endif // ACHIEVEMENT_NOTIFICATION_PANEL_H

View File

@ -1,62 +1,62 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: // Purpose:
// //
// $NoKeywords: $ // $NoKeywords: $
//=============================================================================// //=============================================================================//
#include "cbase.h" #include "cbase.h"
#include "proxyentity.h" #include "proxyentity.h"
#include "materialsystem/imaterial.h" #include "materialsystem/imaterial.h"
#include "materialsystem/imaterialvar.h" #include "materialsystem/imaterialvar.h"
// 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"
// $sineVar : name of variable that controls the alpha level (float) // $sineVar : name of variable that controls the alpha level (float)
class CAlphaMaterialProxy : public CEntityMaterialProxy class CAlphaMaterialProxy : public CEntityMaterialProxy
{ {
public: public:
CAlphaMaterialProxy(); CAlphaMaterialProxy();
virtual ~CAlphaMaterialProxy(); virtual ~CAlphaMaterialProxy();
virtual bool Init( IMaterial *pMaterial, KeyValues *pKeyValues ); virtual bool Init( IMaterial *pMaterial, KeyValues *pKeyValues );
virtual void OnBind( C_BaseEntity *pEntity ); virtual void OnBind( C_BaseEntity *pEntity );
virtual IMaterial *GetMaterial(); virtual IMaterial *GetMaterial();
private: private:
IMaterialVar *m_AlphaVar; IMaterialVar *m_AlphaVar;
}; };
CAlphaMaterialProxy::CAlphaMaterialProxy() CAlphaMaterialProxy::CAlphaMaterialProxy()
{ {
m_AlphaVar = NULL; m_AlphaVar = NULL;
} }
CAlphaMaterialProxy::~CAlphaMaterialProxy() CAlphaMaterialProxy::~CAlphaMaterialProxy()
{ {
} }
bool CAlphaMaterialProxy::Init( IMaterial *pMaterial, KeyValues *pKeyValues ) bool CAlphaMaterialProxy::Init( IMaterial *pMaterial, KeyValues *pKeyValues )
{ {
bool foundVar; bool foundVar;
m_AlphaVar = pMaterial->FindVar( "$alpha", &foundVar, false ); m_AlphaVar = pMaterial->FindVar( "$alpha", &foundVar, false );
return foundVar; return foundVar;
} }
void CAlphaMaterialProxy::OnBind( C_BaseEntity *pEnt ) void CAlphaMaterialProxy::OnBind( C_BaseEntity *pEnt )
{ {
if (m_AlphaVar) if (m_AlphaVar)
{ {
m_AlphaVar->SetFloatValue( pEnt->m_clrRender->a ); m_AlphaVar->SetFloatValue( pEnt->m_clrRender->a );
} }
} }
IMaterial *CAlphaMaterialProxy::GetMaterial() IMaterial *CAlphaMaterialProxy::GetMaterial()
{ {
if ( !m_AlphaVar ) if ( !m_AlphaVar )
return NULL; return NULL;
return m_AlphaVar->GetOwningMaterial(); return m_AlphaVar->GetOwningMaterial();
} }
EXPOSE_INTERFACE( CAlphaMaterialProxy, IMaterialProxy, "Alpha" IMATERIAL_PROXY_INTERFACE_VERSION ); EXPOSE_INTERFACE( CAlphaMaterialProxy, IMaterialProxy, "Alpha" IMATERIAL_PROXY_INTERFACE_VERSION );

View File

@ -1,51 +1,51 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: // Purpose:
// //
// $NoKeywords: $ // $NoKeywords: $
//=============================================================================// //=============================================================================//
#include "cbase.h" #include "cbase.h"
#include "baseanimatedtextureproxy.h" #include "baseanimatedtextureproxy.h"
// 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"
class CAnimatedEntityTextureProxy : public CBaseAnimatedTextureProxy class CAnimatedEntityTextureProxy : public CBaseAnimatedTextureProxy
{ {
public: public:
CAnimatedEntityTextureProxy() {} CAnimatedEntityTextureProxy() {}
virtual ~CAnimatedEntityTextureProxy() {} virtual ~CAnimatedEntityTextureProxy() {}
virtual float GetAnimationStartTime( void* pBaseEntity ); virtual float GetAnimationStartTime( void* pBaseEntity );
virtual void AnimationWrapped( void* pC_BaseEntity ); virtual void AnimationWrapped( void* pC_BaseEntity );
}; };
EXPOSE_INTERFACE( CAnimatedEntityTextureProxy, IMaterialProxy, "AnimatedEntityTexture" IMATERIAL_PROXY_INTERFACE_VERSION ); EXPOSE_INTERFACE( CAnimatedEntityTextureProxy, IMaterialProxy, "AnimatedEntityTexture" IMATERIAL_PROXY_INTERFACE_VERSION );
float CAnimatedEntityTextureProxy::GetAnimationStartTime( void* pArg ) float CAnimatedEntityTextureProxy::GetAnimationStartTime( void* pArg )
{ {
IClientRenderable *pRend = (IClientRenderable *)pArg; IClientRenderable *pRend = (IClientRenderable *)pArg;
if (!pRend) if (!pRend)
return 0.0f; return 0.0f;
C_BaseEntity* pEntity = pRend->GetIClientUnknown()->GetBaseEntity(); C_BaseEntity* pEntity = pRend->GetIClientUnknown()->GetBaseEntity();
if (pEntity) if (pEntity)
{ {
return pEntity->GetTextureAnimationStartTime(); return pEntity->GetTextureAnimationStartTime();
} }
return 0.0f; return 0.0f;
} }
void CAnimatedEntityTextureProxy::AnimationWrapped( void* pArg ) void CAnimatedEntityTextureProxy::AnimationWrapped( void* pArg )
{ {
IClientRenderable *pRend = (IClientRenderable *)pArg; IClientRenderable *pRend = (IClientRenderable *)pArg;
if (!pRend) if (!pRend)
return; return;
C_BaseEntity* pEntity = pRend->GetIClientUnknown()->GetBaseEntity(); C_BaseEntity* pEntity = pRend->GetIClientUnknown()->GetBaseEntity();
if (pEntity) if (pEntity)
{ {
pEntity->TextureAnimationWrapped(); pEntity->TextureAnimationWrapped();
} }
} }

View File

@ -1,56 +1,56 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: // Purpose:
// //
//=============================================================================// //=============================================================================//
#include "cbase.h" #include "cbase.h"
#include "baseanimatedtextureproxy.h" #include "baseanimatedtextureproxy.h"
// 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"
class CAnimatedOffsetTextureProxy : public CBaseAnimatedTextureProxy class CAnimatedOffsetTextureProxy : public CBaseAnimatedTextureProxy
{ {
public: public:
CAnimatedOffsetTextureProxy() : m_flFrameOffset( 0.0f ) {} CAnimatedOffsetTextureProxy() : m_flFrameOffset( 0.0f ) {}
virtual ~CAnimatedOffsetTextureProxy() {} virtual ~CAnimatedOffsetTextureProxy() {}
virtual float GetAnimationStartTime( void* pBaseEntity ); virtual float GetAnimationStartTime( void* pBaseEntity );
virtual void OnBind( void *pBaseEntity ); virtual void OnBind( void *pBaseEntity );
protected: protected:
float m_flFrameOffset; float m_flFrameOffset;
}; };
EXPOSE_INTERFACE( CAnimatedOffsetTextureProxy, IMaterialProxy, "AnimatedOffsetTexture" IMATERIAL_PROXY_INTERFACE_VERSION ); EXPOSE_INTERFACE( CAnimatedOffsetTextureProxy, IMaterialProxy, "AnimatedOffsetTexture" IMATERIAL_PROXY_INTERFACE_VERSION );
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
// Input : pArg - // Input : pArg -
// Output : float // Output : float
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
float CAnimatedOffsetTextureProxy::GetAnimationStartTime( void* pArg ) float CAnimatedOffsetTextureProxy::GetAnimationStartTime( void* pArg )
{ {
return m_flFrameOffset; return m_flFrameOffset;
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
// Input : *pBaseEntity - // Input : *pBaseEntity -
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CAnimatedOffsetTextureProxy::OnBind( void *pBaseEntity ) void CAnimatedOffsetTextureProxy::OnBind( void *pBaseEntity )
{ {
C_BaseEntity* pEntity = (C_BaseEntity*)pBaseEntity; C_BaseEntity* pEntity = (C_BaseEntity*)pBaseEntity;
if ( pEntity ) if ( pEntity )
{ {
m_flFrameOffset = pEntity->GetTextureAnimationStartTime(); m_flFrameOffset = pEntity->GetTextureAnimationStartTime();
} }
// Call into the base class // Call into the base class
CBaseAnimatedTextureProxy::OnBind( pBaseEntity ); CBaseAnimatedTextureProxy::OnBind( pBaseEntity );
} }

View File

@ -1,29 +1,29 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: // Purpose:
// //
// $NoKeywords: $ // $NoKeywords: $
//=============================================================================// //=============================================================================//
#include "cbase.h" #include "cbase.h"
#include "baseanimatedtextureproxy.h" #include "baseanimatedtextureproxy.h"
// 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"
class CAnimatedTextureProxy : public CBaseAnimatedTextureProxy class CAnimatedTextureProxy : public CBaseAnimatedTextureProxy
{ {
public: public:
CAnimatedTextureProxy() {} CAnimatedTextureProxy() {}
virtual ~CAnimatedTextureProxy() {} virtual ~CAnimatedTextureProxy() {}
virtual float GetAnimationStartTime( void* pBaseEntity ); virtual float GetAnimationStartTime( void* pBaseEntity );
}; };
EXPOSE_INTERFACE( CAnimatedTextureProxy, IMaterialProxy, "AnimatedTexture" IMATERIAL_PROXY_INTERFACE_VERSION ); EXPOSE_INTERFACE( CAnimatedTextureProxy, IMaterialProxy, "AnimatedTexture" IMATERIAL_PROXY_INTERFACE_VERSION );
#pragma warning (disable : 4100) #pragma warning (disable : 4100)
float CAnimatedTextureProxy::GetAnimationStartTime( void* pBaseEntity ) float CAnimatedTextureProxy::GetAnimationStartTime( void* pBaseEntity )
{ {
return 0; return 0;
} }

View File

@ -1,213 +1,213 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: // Purpose:
// //
//=============================================================================// //=============================================================================//
#ifndef ANIMATIONLAYER_H #ifndef ANIMATIONLAYER_H
#define ANIMATIONLAYER_H #define ANIMATIONLAYER_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
#include "rangecheckedvar.h" #include "rangecheckedvar.h"
#include "lerp_functions.h" #include "lerp_functions.h"
#include "networkvar.h" #include "networkvar.h"
class C_AnimationLayer class C_AnimationLayer
{ {
public: public:
// This allows the datatables to access private members. // This allows the datatables to access private members.
ALLOW_DATATABLES_PRIVATE_ACCESS(); ALLOW_DATATABLES_PRIVATE_ACCESS();
C_AnimationLayer(); C_AnimationLayer();
void Reset(); void Reset();
void SetOrder( int order ); void SetOrder( int order );
public: public:
bool IsActive( void ); bool IsActive( void );
CRangeCheckedVar<int, -1, 65535, 0> m_nSequence; CRangeCheckedVar<int, -1, 65535, 0> m_nSequence;
CRangeCheckedVar<float, -2, 2, 0> m_flPrevCycle; CRangeCheckedVar<float, -2, 2, 0> m_flPrevCycle;
CRangeCheckedVar<float, -5, 5, 0> m_flWeight; CRangeCheckedVar<float, -5, 5, 0> m_flWeight;
int m_nOrder; int m_nOrder;
// used for automatic crossfades between sequence changes // used for automatic crossfades between sequence changes
CRangeCheckedVar<float, -50, 50, 1> m_flPlaybackRate; CRangeCheckedVar<float, -50, 50, 1> m_flPlaybackRate;
CRangeCheckedVar<float, -2, 2, 0> m_flCycle; CRangeCheckedVar<float, -2, 2, 0> m_flCycle;
float GetFadeout( float flCurTime ); float GetFadeout( float flCurTime );
void BlendWeight(); void BlendWeight();
float m_flLayerAnimtime; float m_flLayerAnimtime;
float m_flLayerFadeOuttime; float m_flLayerFadeOuttime;
float m_flBlendIn; float m_flBlendIn;
float m_flBlendOut; float m_flBlendOut;
bool m_bClientBlend; bool m_bClientBlend;
}; };
#ifdef CLIENT_DLL #ifdef CLIENT_DLL
#define CAnimationLayer C_AnimationLayer #define CAnimationLayer C_AnimationLayer
#endif #endif
inline C_AnimationLayer::C_AnimationLayer() inline C_AnimationLayer::C_AnimationLayer()
{ {
Reset(); Reset();
} }
inline void C_AnimationLayer::Reset() inline void C_AnimationLayer::Reset()
{ {
m_nSequence = 0; m_nSequence = 0;
m_flPrevCycle = 0; m_flPrevCycle = 0;
m_flWeight = 0; m_flWeight = 0;
m_flPlaybackRate = 0; m_flPlaybackRate = 0;
m_flCycle = 0; m_flCycle = 0;
m_flLayerAnimtime = 0; m_flLayerAnimtime = 0;
m_flLayerFadeOuttime = 0; m_flLayerFadeOuttime = 0;
m_flBlendIn = 0; m_flBlendIn = 0;
m_flBlendOut = 0; m_flBlendOut = 0;
m_bClientBlend = false; m_bClientBlend = false;
} }
inline void C_AnimationLayer::SetOrder( int order ) inline void C_AnimationLayer::SetOrder( int order )
{ {
m_nOrder = order; m_nOrder = order;
} }
inline float C_AnimationLayer::GetFadeout( float flCurTime ) inline float C_AnimationLayer::GetFadeout( float flCurTime )
{ {
float s; float s;
if (m_flLayerFadeOuttime <= 0.0f) if (m_flLayerFadeOuttime <= 0.0f)
{ {
s = 0; s = 0;
} }
else else
{ {
// blend in over 0.2 seconds // blend in over 0.2 seconds
s = 1.0 - (flCurTime - m_flLayerAnimtime) / m_flLayerFadeOuttime; s = 1.0 - (flCurTime - m_flLayerAnimtime) / m_flLayerFadeOuttime;
if (s > 0 && s <= 1.0) if (s > 0 && s <= 1.0)
{ {
// do a nice spline curve // do a nice spline curve
s = 3 * s * s - 2 * s * s * s; s = 3 * s * s - 2 * s * s * s;
} }
else if ( s > 1.0f ) else if ( s > 1.0f )
{ {
// Shouldn't happen, but maybe curtime is behind animtime? // Shouldn't happen, but maybe curtime is behind animtime?
s = 1.0f; s = 1.0f;
} }
} }
return s; return s;
} }
inline C_AnimationLayer LoopingLerp( float flPercent, C_AnimationLayer& from, C_AnimationLayer& to ) inline C_AnimationLayer LoopingLerp( float flPercent, C_AnimationLayer& from, C_AnimationLayer& to )
{ {
C_AnimationLayer output; C_AnimationLayer output;
output.m_nSequence = to.m_nSequence; output.m_nSequence = to.m_nSequence;
output.m_flCycle = LoopingLerp( flPercent, (float)from.m_flCycle, (float)to.m_flCycle ); output.m_flCycle = LoopingLerp( flPercent, (float)from.m_flCycle, (float)to.m_flCycle );
output.m_flPrevCycle = to.m_flPrevCycle; output.m_flPrevCycle = to.m_flPrevCycle;
output.m_flWeight = Lerp( flPercent, from.m_flWeight, to.m_flWeight ); output.m_flWeight = Lerp( flPercent, from.m_flWeight, to.m_flWeight );
output.m_nOrder = to.m_nOrder; output.m_nOrder = to.m_nOrder;
output.m_flLayerAnimtime = to.m_flLayerAnimtime; output.m_flLayerAnimtime = to.m_flLayerAnimtime;
output.m_flLayerFadeOuttime = to.m_flLayerFadeOuttime; output.m_flLayerFadeOuttime = to.m_flLayerFadeOuttime;
return output; return output;
} }
inline C_AnimationLayer Lerp( float flPercent, const C_AnimationLayer& from, const C_AnimationLayer& to ) inline C_AnimationLayer Lerp( float flPercent, const C_AnimationLayer& from, const C_AnimationLayer& to )
{ {
C_AnimationLayer output; C_AnimationLayer output;
output.m_nSequence = to.m_nSequence; output.m_nSequence = to.m_nSequence;
output.m_flCycle = Lerp( flPercent, from.m_flCycle, to.m_flCycle ); output.m_flCycle = Lerp( flPercent, from.m_flCycle, to.m_flCycle );
output.m_flPrevCycle = to.m_flPrevCycle; output.m_flPrevCycle = to.m_flPrevCycle;
output.m_flWeight = Lerp( flPercent, from.m_flWeight, to.m_flWeight ); output.m_flWeight = Lerp( flPercent, from.m_flWeight, to.m_flWeight );
output.m_nOrder = to.m_nOrder; output.m_nOrder = to.m_nOrder;
output.m_flLayerAnimtime = to.m_flLayerAnimtime; output.m_flLayerAnimtime = to.m_flLayerAnimtime;
output.m_flLayerFadeOuttime = to.m_flLayerFadeOuttime; output.m_flLayerFadeOuttime = to.m_flLayerFadeOuttime;
return output; return output;
} }
inline C_AnimationLayer LoopingLerp_Hermite( float flPercent, C_AnimationLayer& prev, C_AnimationLayer& from, C_AnimationLayer& to ) inline C_AnimationLayer LoopingLerp_Hermite( float flPercent, C_AnimationLayer& prev, C_AnimationLayer& from, C_AnimationLayer& to )
{ {
C_AnimationLayer output; C_AnimationLayer output;
output.m_nSequence = to.m_nSequence; output.m_nSequence = to.m_nSequence;
output.m_flCycle = LoopingLerp_Hermite( flPercent, (float)prev.m_flCycle, (float)from.m_flCycle, (float)to.m_flCycle ); output.m_flCycle = LoopingLerp_Hermite( flPercent, (float)prev.m_flCycle, (float)from.m_flCycle, (float)to.m_flCycle );
output.m_flPrevCycle = to.m_flPrevCycle; output.m_flPrevCycle = to.m_flPrevCycle;
output.m_flWeight = Lerp( flPercent, from.m_flWeight, to.m_flWeight ); output.m_flWeight = Lerp( flPercent, from.m_flWeight, to.m_flWeight );
output.m_nOrder = to.m_nOrder; output.m_nOrder = to.m_nOrder;
output.m_flLayerAnimtime = to.m_flLayerAnimtime; output.m_flLayerAnimtime = to.m_flLayerAnimtime;
output.m_flLayerFadeOuttime = to.m_flLayerFadeOuttime; output.m_flLayerFadeOuttime = to.m_flLayerFadeOuttime;
return output; return output;
} }
// YWB: Specialization for interpolating euler angles via quaternions... // YWB: Specialization for interpolating euler angles via quaternions...
inline C_AnimationLayer Lerp_Hermite( float flPercent, const C_AnimationLayer& prev, const C_AnimationLayer& from, const C_AnimationLayer& to ) inline C_AnimationLayer Lerp_Hermite( float flPercent, const C_AnimationLayer& prev, const C_AnimationLayer& from, const C_AnimationLayer& to )
{ {
C_AnimationLayer output; C_AnimationLayer output;
output.m_nSequence = to.m_nSequence; output.m_nSequence = to.m_nSequence;
output.m_flCycle = Lerp_Hermite( flPercent, prev.m_flCycle, from.m_flCycle, to.m_flCycle ); output.m_flCycle = Lerp_Hermite( flPercent, prev.m_flCycle, from.m_flCycle, to.m_flCycle );
output.m_flPrevCycle = to.m_flPrevCycle; output.m_flPrevCycle = to.m_flPrevCycle;
output.m_flWeight = Lerp( flPercent, from.m_flWeight, to.m_flWeight ); output.m_flWeight = Lerp( flPercent, from.m_flWeight, to.m_flWeight );
output.m_nOrder = to.m_nOrder; output.m_nOrder = to.m_nOrder;
output.m_flLayerAnimtime = to.m_flLayerAnimtime; output.m_flLayerAnimtime = to.m_flLayerAnimtime;
output.m_flLayerFadeOuttime = to.m_flLayerFadeOuttime; output.m_flLayerFadeOuttime = to.m_flLayerFadeOuttime;
return output; return output;
} }
inline void Lerp_Clamp( C_AnimationLayer &val ) inline void Lerp_Clamp( C_AnimationLayer &val )
{ {
Lerp_Clamp( val.m_nSequence ); Lerp_Clamp( val.m_nSequence );
Lerp_Clamp( val.m_flCycle ); Lerp_Clamp( val.m_flCycle );
Lerp_Clamp( val.m_flPrevCycle ); Lerp_Clamp( val.m_flPrevCycle );
Lerp_Clamp( val.m_flWeight ); Lerp_Clamp( val.m_flWeight );
Lerp_Clamp( val.m_nOrder ); Lerp_Clamp( val.m_nOrder );
Lerp_Clamp( val.m_flLayerAnimtime ); Lerp_Clamp( val.m_flLayerAnimtime );
Lerp_Clamp( val.m_flLayerFadeOuttime ); Lerp_Clamp( val.m_flLayerFadeOuttime );
} }
inline void C_AnimationLayer::BlendWeight() inline void C_AnimationLayer::BlendWeight()
{ {
if ( !m_bClientBlend ) if ( !m_bClientBlend )
return; return;
m_flWeight = 1; m_flWeight = 1;
// blend in? // blend in?
if ( m_flBlendIn != 0.0f ) if ( m_flBlendIn != 0.0f )
{ {
if (m_flCycle < m_flBlendIn) if (m_flCycle < m_flBlendIn)
{ {
m_flWeight = m_flCycle / m_flBlendIn; m_flWeight = m_flCycle / m_flBlendIn;
} }
} }
// blend out? // blend out?
if ( m_flBlendOut != 0.0f ) if ( m_flBlendOut != 0.0f )
{ {
if (m_flCycle > 1.0 - m_flBlendOut) if (m_flCycle > 1.0 - m_flBlendOut)
{ {
m_flWeight = (1.0 - m_flCycle) / m_flBlendOut; m_flWeight = (1.0 - m_flCycle) / m_flBlendOut;
} }
} }
m_flWeight = 3.0 * m_flWeight * m_flWeight - 2.0 * m_flWeight * m_flWeight * m_flWeight; m_flWeight = 3.0 * m_flWeight * m_flWeight - 2.0 * m_flWeight * m_flWeight * m_flWeight;
if (m_nSequence == 0) if (m_nSequence == 0)
m_flWeight = 0; m_flWeight = 0;
} }
#endif // ANIMATIONLAYER_H #endif // ANIMATIONLAYER_H

Some files were not shown because too many files have changed in this diff Show More