summaryrefslogtreecommitdiff
path: root/replay/common/replayutils.cpp
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /replay/common/replayutils.cpp
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'replay/common/replayutils.cpp')
-rw-r--r--replay/common/replayutils.cpp130
1 files changed, 130 insertions, 0 deletions
diff --git a/replay/common/replayutils.cpp b/replay/common/replayutils.cpp
new file mode 100644
index 0000000..e8d63d5
--- /dev/null
+++ b/replay/common/replayutils.cpp
@@ -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 );
+}
+
+//----------------------------------------------------------------------------------------