2016-01-04 14:58:00 -05:00
|
|
|
#include "STDInclude.hpp"
|
2015-12-23 16:21:03 -05:00
|
|
|
|
|
|
|
namespace Components
|
|
|
|
{
|
2015-12-31 07:37:25 -05:00
|
|
|
std::mutex Logger::MessageMutex;
|
|
|
|
std::vector<std::string> Logger::MessageQueue;
|
|
|
|
|
2015-12-23 16:21:03 -05:00
|
|
|
bool Logger::IsConsoleReady()
|
|
|
|
{
|
|
|
|
return (IsWindow(*(HWND*)0x64A3288) != FALSE);
|
|
|
|
}
|
|
|
|
|
|
|
|
void Logger::Print(const char* message, ...)
|
|
|
|
{
|
|
|
|
char buffer[0x1000] = { 0 };
|
|
|
|
|
|
|
|
va_list ap;
|
|
|
|
va_start(ap, message);
|
|
|
|
vsprintf_s(buffer, message, ap);
|
|
|
|
va_end(ap);
|
|
|
|
|
|
|
|
if (Logger::IsConsoleReady())
|
|
|
|
{
|
2015-12-31 07:37:25 -05:00
|
|
|
if (!Game::Sys_IsMainThread())
|
|
|
|
{
|
|
|
|
Logger::EnqueueMessage(buffer);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
Game::Com_PrintMessage(0, buffer, 0);
|
|
|
|
}
|
2015-12-23 16:21:03 -05:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
OutputDebugStringA(buffer);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void Logger::Error(const char* message, ...)
|
|
|
|
{
|
|
|
|
char buffer[0x1000] = { 0 };
|
|
|
|
|
|
|
|
va_list ap;
|
|
|
|
va_start(ap, message);
|
|
|
|
vsprintf_s(buffer, message, ap);
|
|
|
|
va_end(ap);
|
|
|
|
|
|
|
|
Game::Com_Error(0, "%s", buffer);
|
|
|
|
}
|
|
|
|
|
|
|
|
void Logger::SoftError(const char* message, ...)
|
|
|
|
{
|
|
|
|
char buffer[0x1000] = { 0 };
|
|
|
|
|
|
|
|
va_list ap;
|
|
|
|
va_start(ap, message);
|
|
|
|
vsprintf_s(buffer, message, ap);
|
|
|
|
va_end(ap);
|
|
|
|
|
|
|
|
Game::Com_Error(2, "%s", buffer);
|
|
|
|
}
|
|
|
|
|
2015-12-31 07:37:25 -05:00
|
|
|
void Logger::Frame()
|
|
|
|
{
|
|
|
|
Logger::MessageMutex.lock();
|
|
|
|
|
|
|
|
for (unsigned int i = 0; i < Logger::MessageQueue.size(); i++)
|
|
|
|
{
|
|
|
|
if (Logger::IsConsoleReady())
|
|
|
|
{
|
|
|
|
Game::Com_PrintMessage(0, Logger::MessageQueue[i].data(), 0);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
OutputDebugStringA(Logger::MessageQueue[i].data());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Logger::MessageQueue.clear();
|
|
|
|
Logger::MessageMutex.unlock();
|
|
|
|
}
|
|
|
|
|
|
|
|
void Logger::EnqueueMessage(std::string message)
|
|
|
|
{
|
|
|
|
Logger::MessageMutex.lock();
|
|
|
|
Logger::MessageQueue.push_back(message);
|
|
|
|
Logger::MessageMutex.unlock();
|
|
|
|
}
|
|
|
|
|
2015-12-23 16:21:03 -05:00
|
|
|
Logger::Logger()
|
|
|
|
{
|
2015-12-31 07:37:25 -05:00
|
|
|
Renderer::OnFrame(Logger::Frame); // Client
|
|
|
|
Dedicated::OnFrame(Logger::Frame); // Dedi
|
|
|
|
}
|
2015-12-23 16:21:03 -05:00
|
|
|
|
2015-12-31 07:37:25 -05:00
|
|
|
Logger::~Logger()
|
|
|
|
{
|
|
|
|
Logger::MessageMutex.lock();
|
|
|
|
Logger::MessageQueue.clear();
|
|
|
|
Logger::MessageMutex.unlock();
|
2015-12-23 16:21:03 -05:00
|
|
|
}
|
|
|
|
}
|