IW4M-Admin/SharedLibraryCore/Interfaces/IEventParser.cs

50 lines
1.9 KiB
C#

using System;
using static SharedLibraryCore.Server;
namespace SharedLibraryCore.Interfaces
{
public interface IEventParser
{
/// <summary>
/// Generates a game event based on log line input
/// </summary>
/// <param name="logLine">single log line string</param>
/// <returns></returns>
/// todo: make this integrate without needing the server
GameEvent GenerateGameEvent(string logLine);
/// <summary>
/// Get game specific folder prefix for log files
/// </summary>
/// <returns>Game directory prefix</returns>
IEventParserConfiguration Configuration { get; set; }
/// <summary>
/// stores the game/client specific version (usually the value of the "version" DVAR)
/// </summary>
string Version { get; set; }
/// <summary>
/// specifies the game name (usually the internal studio iteration ie: IW4, T5 etc...)
/// </summary>
Game GameName { get; set; }
/// <summary>
/// specifies the connect URI used to join game servers via web browser
/// </summary>
string URLProtocolFormat { get; set; }
/// <summary>
/// specifies the text name of the game the parser is for
/// </summary>
string Name { get; set; }
/// <summary>
/// registers a custom event subtype to be triggered when a value is detected
/// </summary>
/// <param name="eventSubtype">subtype assigned to the event when generated</param>
/// <param name="eventTriggerValue">event keyword to trigger an event generation</param>
/// <param name="eventModifier">function pointer that modifies the generated game event</param>
void RegisterCustomEvent(string eventSubtype, string eventTriggerValue, Func<string, IEventParserConfiguration, GameEvent, GameEvent> eventModifier);
}
}