mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-08 01:39:36 +00:00
1
This commit is contained in:
@@ -0,0 +1,130 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
//=======================================================================================//
|
||||
|
||||
#include "replay/replayutils.h"
|
||||
#include "dbg.h"
|
||||
#include "strtools.h"
|
||||
#include "qlimits.h"
|
||||
#include "filesystem.h"
|
||||
#include "replay/replaytime.h"
|
||||
#include "fmtstr.h"
|
||||
|
||||
// memdbgon must be the last include file in a .cpp file!!!
|
||||
#include "tier0/memdbgon.h"
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
|
||||
static char gs_szGameDir[MAX_OSPATH];
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
|
||||
void Replay_GetFirstAvailableFilename( char *pDst, int nDstLen, const char *pIdealFilename, const char *pExt,
|
||||
const char *pFilePath, int nStartIndex )
|
||||
{
|
||||
// Strip extension from ideal filename
|
||||
char szIdealFilename[ MAX_OSPATH ];
|
||||
V_StripExtension( pIdealFilename, szIdealFilename, sizeof( szIdealFilename ) );
|
||||
|
||||
int i = nStartIndex;
|
||||
while ( 1 )
|
||||
{
|
||||
V_strncpy( pDst, szIdealFilename, nDstLen );
|
||||
V_strcat( pDst, Replay_va( "_%i%s", i, pExt ), nDstLen );
|
||||
|
||||
// Get a potential working path/filename
|
||||
CFmtStr fmtTestFilename(
|
||||
"%s%c%s",
|
||||
pFilePath,
|
||||
CORRECT_PATH_SEPARATOR,
|
||||
pDst
|
||||
);
|
||||
|
||||
// Make sure slashes are correct for platform
|
||||
V_FixSlashes( fmtTestFilename.Access() );
|
||||
|
||||
// Fix up double slashes
|
||||
V_FixDoubleSlashes( fmtTestFilename.Access() );
|
||||
|
||||
if ( !g_pFullFileSystem->FileExists( fmtTestFilename ) )
|
||||
break;
|
||||
|
||||
++i;
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
|
||||
void Replay_ConstructReplayFilenameString( CUtlString &strOut, const char *pReplaySubDir, const char *pFilename, const char *pGameDir )
|
||||
{
|
||||
// Construct full filename
|
||||
strOut.Format( "%s%creplays%c%s%c%s", pGameDir,
|
||||
CORRECT_PATH_SEPARATOR, CORRECT_PATH_SEPARATOR, pReplaySubDir,
|
||||
CORRECT_PATH_SEPARATOR, pFilename
|
||||
);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
|
||||
char *Replay_va( const char *format, ... )
|
||||
{
|
||||
va_list argptr;
|
||||
static char string[8][512];
|
||||
static int curstring = 0;
|
||||
|
||||
curstring = ( curstring + 1 ) % 8;
|
||||
|
||||
va_start (argptr, format);
|
||||
Q_vsnprintf( string[curstring], sizeof( string[curstring] ), format, argptr );
|
||||
va_end (argptr);
|
||||
|
||||
return string[curstring];
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
|
||||
void Replay_SetGameDir( const char *pGameDir )
|
||||
{
|
||||
V_strcpy( gs_szGameDir, pGameDir );
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
|
||||
const char *Replay_GetGameDir()
|
||||
{
|
||||
return gs_szGameDir;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
|
||||
const char *Replay_GetBaseDir()
|
||||
{
|
||||
return Replay_va(
|
||||
"%s%creplays%c",
|
||||
Replay_GetGameDir(),
|
||||
CORRECT_PATH_SEPARATOR,
|
||||
CORRECT_PATH_SEPARATOR
|
||||
);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
|
||||
void Replay_GetAutoName( wchar_t *pDest, int nDestSize, const char *pMapName )
|
||||
{
|
||||
// Get date/time
|
||||
CReplayTime now;
|
||||
now.InitDateAndTimeToNow();
|
||||
|
||||
// Convert map name to unicode
|
||||
wchar_t wszMapName[256];
|
||||
extern vgui::ILocalize *g_pVGuiLocalize;
|
||||
g_pVGuiLocalize->ConvertANSIToUnicode( pMapName, wszMapName, sizeof( wszMapName ) );
|
||||
|
||||
// Get localized date as string
|
||||
const wchar_t *pLocalizedDate = CReplayTime::GetLocalizedDate( g_pVGuiLocalize, now, true );
|
||||
|
||||
// Create title
|
||||
g_pVGuiLocalize->ConstructString( pDest, nDestSize, L"%s1: %s2", 2, wszMapName, pLocalizedDate );
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
Reference in New Issue
Block a user