diff --git a/core/CLogger.cpp b/core/CLogger.cpp index 3e56a65c..d458c02c 100644 --- a/core/CLogger.cpp +++ b/core/CLogger.cpp @@ -3,6 +3,17 @@ CLogger g_Logger; +void CLogger::OnSourceModStartup(bool late) +{ + //:TODO: read these options from a file, dont hardcode them + InitLogger(LoggingMode_PerMap, true); +} + +void CLogger::OnSourceModAllShutdown() +{ + CloseLogger(); +} + void CLogger::_NewMapFile() { if (!m_Active) diff --git a/core/CLogger.h b/core/CLogger.h index c28136f1..e08a8cb8 100644 --- a/core/CLogger.h +++ b/core/CLogger.h @@ -23,10 +23,13 @@ enum LoggingMode LoggingMode_HL2 }; -class CLogger +class CLogger : public SMGlobalClass { public: CLogger() : m_ErrMapStart(false), m_Active(false), m_DelayedStart(false), m_DailyPrintHdr(false) {} +public: //SMGlobalClass + void OnSourceModStartup(bool late); + void OnSourceModAllShutdown(); public: void InitLogger(LoggingMode mode, bool startlogging); void CloseLogger(); diff --git a/core/sm_globals.h b/core/sm_globals.h index 226ef801..90114c35 100644 --- a/core/sm_globals.h +++ b/core/sm_globals.h @@ -42,6 +42,13 @@ public: virtual void OnSourceModShutdown() { } + + /** + * @brief Called after SourceMod is completely shutted down + */ + virtual void OnSourceModAllShutdown() + { + } private: SMGlobalClass *m_pGlobalClassNext; static SMGlobalClass *head; diff --git a/core/sourcemod.cpp b/core/sourcemod.cpp index 52d1fee9..b0cf9650 100644 --- a/core/sourcemod.cpp +++ b/core/sourcemod.cpp @@ -6,6 +6,7 @@ #include #include "PluginSys.h" #include "ShareSys.h" +#include "CLogger.h" SH_DECL_HOOK6(IServerGameDLL, LevelInit, SH_NOATTRIB, false, bool, const char *, const char *, const char *, const char *, bool, bool); @@ -157,6 +158,8 @@ bool SourceModBase::LevelInit(char const *pMapName, char const *pMapEntities, ch m_IsMapLoading = true; m_IsLateLoadInMap = false; + g_Logger.MapChange(pMapName); + DoGlobalPluginLoads(); m_IsMapLoading = false;