From dffcae8344a9178624c2a6bed4512b6daca959fd Mon Sep 17 00:00:00 2001 From: RaidMax Date: Sat, 22 Jun 2024 12:18:33 -0500 Subject: [PATCH] Add GameLogEvent as catch all for unhandled log lines --- Application/EventParsers/BaseEventParser.cs | 5 +++-- SharedLibraryCore/Events/Game/GameLogEvent.cs | 6 ++++++ .../Interfaces/Events/IGameEventSubscriptions.cs | 7 +++++++ 3 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 SharedLibraryCore/Events/Game/GameLogEvent.cs diff --git a/Application/EventParsers/BaseEventParser.cs b/Application/EventParsers/BaseEventParser.cs index 3f49be57..ff05d483 100644 --- a/Application/EventParsers/BaseEventParser.cs +++ b/Application/EventParsers/BaseEventParser.cs @@ -218,12 +218,13 @@ namespace IW4MAdmin.Application.EventParsers return GenerateDefaultEvent(logLine, gameTime); } - private static GameEvent GenerateDefaultEvent(string logLine, long gameTime) + private static GameLogEvent GenerateDefaultEvent(string logLine, long gameTime) { - return new GameEvent + return new GameLogEvent { Type = GameEvent.EventType.Unknown, Data = logLine, + LogLine = logLine, Origin = Utilities.IW4MAdminClient(), Target = Utilities.IW4MAdminClient(), RequiredEntity = GameEvent.EventRequiredEntity.None, diff --git a/SharedLibraryCore/Events/Game/GameLogEvent.cs b/SharedLibraryCore/Events/Game/GameLogEvent.cs new file mode 100644 index 00000000..b6213307 --- /dev/null +++ b/SharedLibraryCore/Events/Game/GameLogEvent.cs @@ -0,0 +1,6 @@ +namespace SharedLibraryCore.Events.Game; + +public class GameLogEvent : GameEventV2 +{ + public string LogLine { get; set; } +} diff --git a/SharedLibraryCore/Interfaces/Events/IGameEventSubscriptions.cs b/SharedLibraryCore/Interfaces/Events/IGameEventSubscriptions.cs index b4807712..986728fb 100644 --- a/SharedLibraryCore/Interfaces/Events/IGameEventSubscriptions.cs +++ b/SharedLibraryCore/Interfaces/Events/IGameEventSubscriptions.cs @@ -86,6 +86,11 @@ public interface IGameEventSubscriptions /// static event Func ScriptEventTriggered; + /// + /// Raised when game log prints a line that is not handled by any other cases + /// + static event Func GameLogEventTriggered; + static Task InvokeEventAsync(CoreEvent coreEvent, CancellationToken token) { return coreEvent switch @@ -100,6 +105,7 @@ public interface IGameEventSubscriptions ClientCommandEvent clientCommandEvent => ClientEnteredCommand?.InvokeAsync(clientCommandEvent, token) ?? Task.CompletedTask, ClientMessageEvent clientMessageEvent => ClientMessaged?.InvokeAsync(clientMessageEvent, token) ?? Task.CompletedTask, GameScriptEvent gameScriptEvent => ScriptEventTriggered?.InvokeAsync(gameScriptEvent, token) ?? Task.CompletedTask, + GameLogEvent gameLogEvent => GameLogEventTriggered?.InvokeAsync(gameLogEvent, token) ?? Task.CompletedTask, _ => Task.CompletedTask }; } @@ -116,5 +122,6 @@ public interface IGameEventSubscriptions ClientMessaged = null; ClientEnteredCommand = null; ScriptEventTriggered = null; + GameLogEventTriggered = null; } }