1
0
mirror of https://github.com/RaidMax/IW4M-Admin.git synced 2025-06-08 06:08:20 -05:00

Add GameLogEvent as catch all for unhandled log lines

This commit is contained in:
RaidMax 2024-06-22 12:18:33 -05:00
parent 4b6f3e8851
commit dffcae8344
3 changed files with 16 additions and 2 deletions

View File

@ -218,12 +218,13 @@ namespace IW4MAdmin.Application.EventParsers
return GenerateDefaultEvent(logLine, gameTime); 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, Type = GameEvent.EventType.Unknown,
Data = logLine, Data = logLine,
LogLine = logLine,
Origin = Utilities.IW4MAdminClient(), Origin = Utilities.IW4MAdminClient(),
Target = Utilities.IW4MAdminClient(), Target = Utilities.IW4MAdminClient(),
RequiredEntity = GameEvent.EventRequiredEntity.None, RequiredEntity = GameEvent.EventRequiredEntity.None,

View File

@ -0,0 +1,6 @@
namespace SharedLibraryCore.Events.Game;
public class GameLogEvent : GameEventV2
{
public string LogLine { get; set; }
}

View File

@ -86,6 +86,11 @@ public interface IGameEventSubscriptions
/// </summary> /// </summary>
static event Func<GameScriptEvent, CancellationToken, Task> ScriptEventTriggered; static event Func<GameScriptEvent, CancellationToken, Task> ScriptEventTriggered;
/// <summary>
/// Raised when game log prints a line that is not handled by any other cases
/// </summary>
static event Func<GameLogEvent, CancellationToken, Task> GameLogEventTriggered;
static Task InvokeEventAsync(CoreEvent coreEvent, CancellationToken token) static Task InvokeEventAsync(CoreEvent coreEvent, CancellationToken token)
{ {
return coreEvent switch return coreEvent switch
@ -100,6 +105,7 @@ public interface IGameEventSubscriptions
ClientCommandEvent clientCommandEvent => ClientEnteredCommand?.InvokeAsync(clientCommandEvent, token) ?? Task.CompletedTask, ClientCommandEvent clientCommandEvent => ClientEnteredCommand?.InvokeAsync(clientCommandEvent, token) ?? Task.CompletedTask,
ClientMessageEvent clientMessageEvent => ClientMessaged?.InvokeAsync(clientMessageEvent, token) ?? Task.CompletedTask, ClientMessageEvent clientMessageEvent => ClientMessaged?.InvokeAsync(clientMessageEvent, token) ?? Task.CompletedTask,
GameScriptEvent gameScriptEvent => ScriptEventTriggered?.InvokeAsync(gameScriptEvent, token) ?? Task.CompletedTask, GameScriptEvent gameScriptEvent => ScriptEventTriggered?.InvokeAsync(gameScriptEvent, token) ?? Task.CompletedTask,
GameLogEvent gameLogEvent => GameLogEventTriggered?.InvokeAsync(gameLogEvent, token) ?? Task.CompletedTask,
_ => Task.CompletedTask _ => Task.CompletedTask
}; };
} }
@ -116,5 +122,6 @@ public interface IGameEventSubscriptions
ClientMessaged = null; ClientMessaged = null;
ClientEnteredCommand = null; ClientEnteredCommand = null;
ScriptEventTriggered = null; ScriptEventTriggered = null;
GameLogEventTriggered = null;
} }
} }