diff --git a/r5dev/sdklauncher/basepanel.cpp b/r5dev/sdklauncher/basepanel.cpp index 407fba17..2d3f1337 100644 --- a/r5dev/sdklauncher/basepanel.cpp +++ b/r5dev/sdklauncher/basepanel.cpp @@ -565,6 +565,11 @@ void CUIBaseSurface::LaunchGame(Forms::Control* pSender) //----------------------------------------------------------------------------- void CUIBaseSurface::ParseMaps() { + if (!fs::exists("vpk")) + { + return; + } + fs::directory_iterator fsDir("vpk"); std::regex rgArchiveRegex{ R"([^_]*_(.*)(.bsp.pak000_dir).*)" }; std::smatch smRegexMatches; diff --git a/r5dev/sdklauncher/sdklauncher.cpp b/r5dev/sdklauncher/sdklauncher.cpp index 4f6f00c9..ee70dfd9 100644 --- a/r5dev/sdklauncher/sdklauncher.cpp +++ b/r5dev/sdklauncher/sdklauncher.cpp @@ -32,9 +32,9 @@ void CLauncher::InitConsole() /////////////////////////////////////////////////////////////////////////////// void CLauncher::InitLogger() { - wconsole->set_pattern("[%^%l%$] %v"); - wconsole->set_level(spdlog::level::trace); - spdlog::set_default_logger(wconsole); // Set as default. + m_pLogger->set_pattern("[%^%l%$] %v"); + m_pLogger->set_level(spdlog::level::trace); + spdlog::set_default_logger(m_pLogger); // Set as default. } /////////////////////////////////////////////////////////////////////////////// @@ -265,7 +265,7 @@ int CLauncher::HandleInput() } catch (std::exception& e) { - g_pLauncher->AddLog(spdlog::level::level_enum::err, "SDK Launcher only takes numerical input. Error: {:s}.\n", e.what()); + g_pLauncher->AddLog(spdlog::level::level_enum::err, "SDK Launcher only takes numerical input; error: {:s}.\n", e.what()); Sleep(2000); return EXIT_FAILURE; } @@ -285,7 +285,7 @@ int CLauncher::HandleInput() bool CLauncher::Setup(eLaunchMode lMode, eLaunchState lState) { /////////////////////////////////////////////////////////////////////////// - std::string svCmdLineArgs = std::string(); + std::string svCmdLineArgs; /////////////////////////////////////////////////////////////////////////// switch (lMode) @@ -612,3 +612,8 @@ int main(int argc, char* argv[], char* envp[]) } return EXIT_SUCCESS; } + +/////////////////////////////////////////////////////////////////////////////// +// Singleton Launcher. +/////////////////////////////////////////////////////////////////////////////// +CLauncher* g_pLauncher(new CLauncher("win_console")); diff --git a/r5dev/sdklauncher/sdklauncher.h b/r5dev/sdklauncher/sdklauncher.h index 5a9c881e..aec54c9b 100644 --- a/r5dev/sdklauncher/sdklauncher.h +++ b/r5dev/sdklauncher/sdklauncher.h @@ -5,20 +5,25 @@ class CLauncher { public: - CLauncher() + CLauncher(const char* pszLoggerName) { - m_svCurrentDir = fs::current_path().u8string(); + m_pSurface = nullptr; + m_pLogger = spdlog::stdout_color_mt(pszLoggerName); + m_svCurrentDir = fs::current_path().u8string(); } ~CLauncher() { - delete[] m_pSurface; + if (m_pSurface) + { + delete m_pSurface; + } } template void AddLog(spdlog::level::level_enum nLevel, T&& svFormat, P &&... vParams) { String svBuffer = fmt::format(std::forward(svFormat), std::forward

(vParams)...).c_str(); - wconsole->log(nLevel, svBuffer.ToCString()); - wconsole->flush(); + m_pLogger->log(nLevel, svBuffer.ToCString()); + m_pLogger->flush(); if (m_pSurface) { @@ -41,12 +46,13 @@ public: CUIBaseSurface* GetMainSurface() const { return m_pSurface; } private: - CUIBaseSurface* m_pSurface = nullptr; - std::shared_ptr wconsole = spdlog::stdout_color_mt("win_console"); + CUIBaseSurface* m_pSurface; + std::shared_ptr m_pLogger; string m_svWorkerDll; string m_svGameExe; string m_svCmdLine; string m_svCurrentDir; }; -inline CLauncher* g_pLauncher = new CLauncher(); \ No newline at end of file + +extern CLauncher* g_pLauncher;