Add zone callback for client messages so log messages can be piped to it

This commit is contained in:
Akkadius 2015-01-12 20:11:23 -06:00
parent 08a23265f8
commit 9d355f0f99
6 changed files with 20 additions and 3 deletions

View File

@ -106,6 +106,7 @@ static Console::Color LogColors[EQEmuLogSys::MaxLogID] = {
EQEmuLogSys::EQEmuLogSys(){ EQEmuLogSys::EQEmuLogSys(){
on_log_gmsay_hook = [](uint16 log_type, std::string&) {};
} }
EQEmuLogSys::~EQEmuLogSys(){ EQEmuLogSys::~EQEmuLogSys(){
@ -154,7 +155,6 @@ void EQEmuLogSys::LogDebug(DebugLevel debug_level, std::string message, ...)
va_start(args, message); va_start(args, message);
std::string output_message = vStringFormat(message.c_str(), args); std::string output_message = vStringFormat(message.c_str(), args);
va_end(args); va_end(args);
EQEmuLogSys::Log(EQEmuLogSys::LogType::Debug, output_message); EQEmuLogSys::Log(EQEmuLogSys::LogType::Debug, output_message);
} }
@ -191,6 +191,10 @@ void EQEmuLogSys::Log(uint16 log_type, const std::string message, ...)
std::string output_message = vStringFormat(message.c_str(), args); std::string output_message = vStringFormat(message.c_str(), args);
va_end(args); va_end(args);
if (EQEmuLogSys::log_platform == EQEmuExePlatform::ExePlatformZone){
on_log_gmsay_hook(output_message);
}
EQEmuLogSys::ConsoleMessage(log_type, output_message); EQEmuLogSys::ConsoleMessage(log_type, output_message);
char time_stamp[80]; char time_stamp[80];

View File

@ -21,6 +21,9 @@
#include <iostream> #include <iostream>
#include <fstream> #include <fstream>
#include <stdio.h>
#include <functional>
#include "types.h" #include "types.h"
class EQEmuLogSys { class EQEmuLogSys {
@ -89,9 +92,11 @@ public:
bool log_settings_loaded = false; bool log_settings_loaded = false;
int log_platform = 0; int log_platform = 0;
void OnLogHookCallBack(std::function<void(uint16 log_type, std::string&)> f) { on_log_gmsay_hook = f; }
private: private:
bool zone_general_init = false; bool zone_general_init = false;
std::function<void(uint16 log_type, std::string&)> on_log_gmsay_hook;
}; };
extern EQEmuLogSys logger; extern EQEmuLogSys logger;

View File

@ -21,6 +21,7 @@
#ifdef CLIENT_LOGS #ifdef CLIENT_LOGS
#include "client_logs.h" #include "client_logs.h"
#include "client.h" #include "client.h"
#include "entity.h"
#include <stdarg.h> #include <stdarg.h>
ClientLogs client_logs; ClientLogs client_logs;
@ -134,6 +135,10 @@ void ClientLogs::EQEmuIO_pva(EQEmuLog::LogIDs id, const char *prefix, const char
client_logs.msg(id, _buffer); client_logs.msg(id, _buffer);
} }
void ClientLogs::ClientMessage(uint16 log_type, std::string& message){
entity_list.MessageStatus(0, 80, 7, "%s", message.c_str());
}
#endif //CLIENT_LOGS #endif //CLIENT_LOGS

View File

@ -46,6 +46,7 @@ public:
void clear(); //unsubscribes everybody void clear(); //unsubscribes everybody
void msg(EQEmuLog::LogIDs id, const char *buf); void msg(EQEmuLog::LogIDs id, const char *buf);
static void ClientMessage(uint16 log_type, std::string& message);
protected: protected:

View File

@ -45,6 +45,7 @@
#include "../common/spdat.h" #include "../common/spdat.h"
#include "../common/eqemu_logsys.h" #include "../common/eqemu_logsys.h"
#include "client_logs.h"
#include "zone_config.h" #include "zone_config.h"
#include "masterentity.h" #include "masterentity.h"
#include "worldserver.h" #include "worldserver.h"
@ -115,6 +116,7 @@ extern void MapOpcodes();
int main(int argc, char** argv) { int main(int argc, char** argv) {
RegisterExecutablePlatform(ExePlatformZone); RegisterExecutablePlatform(ExePlatformZone);
logger.LoadLogSettings(); logger.LoadLogSettings();
logger.OnLog(&ClientLogs::ClientMessage);
set_exception_handler(); set_exception_handler();
const char *zone_name; const char *zone_name;

View File

@ -152,7 +152,7 @@ bool Zone::Bootup(uint32 iZoneID, uint32 iInstanceID, bool iStaticZone) {
/* Set Logging */ /* Set Logging */
logger.StartZoneLogs(StringFormat("%s_ver-%u_instid-%u_port-%u", zone->GetShortName(), zone->GetInstanceVersion(), zone->GetInstanceID(), ZoneConfig::get()->ZonePort)); logger.StartLogs(StringFormat("%s_ver-%u_instid-%u_port-%u", zone->GetShortName(), zone->GetInstanceVersion(), zone->GetInstanceID(), ZoneConfig::get()->ZonePort));
return true; return true;
} }