You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
128 lines
3.8 KiB
128 lines
3.8 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
//=============================================================================// |
|
|
|
#ifndef MAPRESLISTGENERATOR_H |
|
#define MAPRESLISTGENERATOR_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include "filesystem.h" |
|
#include "utlvector.h" |
|
#include "utlsymbol.h" |
|
#include "utlstring.h" |
|
|
|
// Map list creation |
|
// Map entry |
|
struct maplist_map_t |
|
{ |
|
char name[64]; |
|
}; |
|
|
|
// General purpose maplist generator. |
|
// aMaps: Utlvector you'd like filled with the maps. |
|
// bUseMapListFile: true if you want to use a maplist file, vs parsing the maps directory or using +map |
|
// pMapFile: If you're using a maplist file, this should be the filename of it |
|
// pSystemMsg: Used to preface and debug messages |
|
// iCurrentMap: The map in the list to begin at. Handles the -startmap parameter for you. |
|
bool BuildGeneralMapList( CUtlVector<maplist_map_t> *aMaps, bool bUseMapListFile, const char *pMapFile, char *pSystemMsg, int *iCurrentMap ); |
|
|
|
// initialization |
|
void MapReslistGenerator_Init(); |
|
void MapReslistGenerator_Shutdown(); |
|
void MapReslistGenerator_BuildMapList(); |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Handles collating lists of resources on level load |
|
// Used to generate reslists for steam |
|
//----------------------------------------------------------------------------- |
|
class CMapReslistGenerator |
|
{ |
|
public: |
|
CMapReslistGenerator(); |
|
|
|
// initializes the object to enable reslist generation |
|
void EnableReslistGeneration( bool usemaplistfile ); |
|
|
|
// starts the reslist generation (starts cycling maps) |
|
void StartReslistGeneration(); |
|
|
|
void BuildMapList(); |
|
|
|
void Shutdown(); |
|
|
|
// call every frame if we're enabled, just so that the next map can be triggered at the right time |
|
void RunFrame(); |
|
|
|
// returns true if reslist generation is enabled |
|
bool IsEnabled() { return m_bLoggingEnabled; } |
|
bool IsLoggingToMap() { return m_bLoggingEnabled && !m_bLogToEngineList; } |
|
|
|
// call to mark level load/end |
|
void OnLevelLoadStart(const char *levelName); |
|
void OnLevelLoadEnd(); |
|
void OnPlayerSpawn(); |
|
|
|
// call to mark resources as being precached |
|
void OnResourcePrecached(const char *relativePathFileName); |
|
void OnModelPrecached(const char *relativePathFileName); |
|
void OnSoundPrecached(const char *relativePathFileName); |
|
|
|
char const *LogPrefix(); |
|
|
|
void EnableDeletionsTracking(); |
|
void TrackDeletions( const char *fullPathFileName ); |
|
|
|
bool ShouldRebuildCaches(); |
|
char const *GetResListDirectory() const; |
|
|
|
void SetAutoQuit( bool bState ); |
|
|
|
private: |
|
static void TrackDeletionsLoggingFunc(const char *fullPathFileName, const char *options); |
|
static void FileSystemLoggingFunc(const char *fullPathFileName, const char *options); |
|
void OnResourcePrecachedFullPath(const char *fullPathFileName); |
|
void BuildEngineLogFromReslist(); |
|
void LogToEngineReslist( char const *pLine ); |
|
void WriteMapLog(); |
|
void SetPrefix( char const *mapname ); |
|
void SpewTrackedDeletionsLog(); |
|
void DoQuit(); |
|
|
|
bool m_bTrackingDeletions; |
|
bool m_bLoggingEnabled; |
|
bool m_bUsingMapList; |
|
bool m_bRestartOnTransition; |
|
// true for engine, false for map |
|
bool m_bLogToEngineList; |
|
bool m_bAutoQuit; |
|
|
|
// list of all maps to scan |
|
CUtlVector<maplist_map_t> m_Maps; |
|
int m_iCurrentMap; |
|
float m_flNextMapRunTime; |
|
int m_iFrameCountdownToRunningNextMap; |
|
CUtlSymbolTable m_AlreadyWrittenFileNames; |
|
int m_iPauseTimeBetweenMaps; |
|
int m_iPauseFramesBetweenMaps; |
|
|
|
char m_szPrefix[64]; |
|
char m_szLevelName[64]; |
|
|
|
CUtlSymbolTable m_DeletionList; |
|
CUtlRBTree< CUtlSymbol > m_DeletionListWarnings; |
|
CUtlSymbolTable m_DeletionListWarningsSymbols; |
|
|
|
CUtlRBTree< CUtlString, int > m_MapLog; |
|
CUtlRBTree< CUtlString, int > m_EngineLog; |
|
CUtlString m_sResListDir; |
|
}; |
|
|
|
// singleton accessor |
|
CMapReslistGenerator &MapReslistGenerator(); |
|
|
|
|
|
#endif // MAPRESLISTGENERATOR_H
|
|
|