Files
DeathMessages/src/Log.cpp
T
2026-06-21 07:45:29 +08:00

49 lines
2.0 KiB
C++

#include "Entry.h"
#include "Global.h"
#include "ll/api/event/player/PlayerConnectEvent.h"
#include "ll/api/event/player/PlayerDieEvent.h"
#include "ll/api/event/player/PlayerDisconnectEvent.h"
#include "ll/api/event/EventBus.h"
ll::event::ListenerPtr playerConnectEventListener;
ll::event::ListenerPtr playerDieEventListener;
ll::event::ListenerPtr playerDisconnectEventListener;
void ListenEvents() {
auto& config = DeathMessages::Entry::getInstance().getConfig();
auto& eventBus = ll::event::EventBus::getInstance();
if (config.ConsoleLog.JoinMessage) {
playerConnectEventListener=eventBus.emplaceListener<ll::event::player::PlayerConnectEvent>([](ll::event::player::PlayerConnectEvent& ev) {
infoLogger->info(
fmt::format(fg(fmt::color::yellow), fmt::runtime(tr("multiplayer.player.joined", {ev.self().getRealName()})))
);
});
}
if (config.ConsoleLog.LeftMessage) {
playerDisconnectEventListener=eventBus.emplaceListener<ll::event::player::PlayerDisconnectEvent>(
[](ll::event::player::PlayerDisconnectEvent& ev) {
infoLogger->info(
fmt::format(fg(fmt::color::yellow), fmt::runtime(tr("multiplayer.player.left", {ev.self().getRealName()})))
);
}
);
}
if (config.ConsoleLog.DeathMessage) {
playerDieEventListener=eventBus.emplaceListener<ll::event::player::PlayerDieEvent>(
[](ll::event::player::PlayerDieEvent& ev) {
auto [key, params] = ev.source().getDeathMessage(ev.self().getRealName(), &ev.self());
auto info = tr(key, params);
deathLogger->info(info);
}
);
}
}
void uninstallEventListeners() {
auto& eventBus = ll::event::EventBus::getInstance();
eventBus.removeListener(playerDieEventListener);
eventBus.removeListener(playerConnectEventListener);
eventBus.removeListener(playerDisconnectEventListener);
}