diff --git a/SharedLibraryCore/Events/Game/ClientCommandEvent.cs b/SharedLibraryCore/Events/Game/ClientCommandEvent.cs new file mode 100644 index 000000000..dfaf01c12 --- /dev/null +++ b/SharedLibraryCore/Events/Game/ClientCommandEvent.cs @@ -0,0 +1,6 @@ +namespace SharedLibraryCore.Events.Game; + +public class ClientCommandEvent : ClientMessageEvent +{ + +} diff --git a/SharedLibraryCore/Events/Game/ClientDamageEvent.cs b/SharedLibraryCore/Events/Game/ClientDamageEvent.cs new file mode 100644 index 000000000..bf2db64af --- /dev/null +++ b/SharedLibraryCore/Events/Game/ClientDamageEvent.cs @@ -0,0 +1,30 @@ +using SharedLibraryCore.Database.Models; + +namespace SharedLibraryCore.Events.Game; + +public class ClientDamageEvent : ClientGameEvent +{ + public EFClient Attacker => Origin; + + public void UpdateAttacker(EFClient client) + { + Origin = client; + } + + public EFClient Victim => Target; + + public string AttackerClientName => ClientName; + public string AttackerNetworkId => ClientNetworkId; + public int AttackerClientSlotNumber => ClientSlotNumber; + public string AttackerTeamName { get; init; } + + public string VictimClientName { get; init; } + public string VictimNetworkId { get; init; } + public int VictimClientSlotNumber { get; init; } + public string VictimTeamName { get; init; } + + public string WeaponName { get; init; } + public int Damage { get; init; } + public string MeansOfDeath { get; init; } + public string HitLocation { get; init; } +} diff --git a/SharedLibraryCore/Events/Game/ClientEnterMatchEvent.cs b/SharedLibraryCore/Events/Game/ClientEnterMatchEvent.cs new file mode 100644 index 000000000..e6ca5e7e7 --- /dev/null +++ b/SharedLibraryCore/Events/Game/ClientEnterMatchEvent.cs @@ -0,0 +1,6 @@ +namespace SharedLibraryCore.Events.Game; + +public class ClientEnterMatchEvent : ClientGameEvent +{ + +} diff --git a/SharedLibraryCore/Events/Game/ClientExitMatchEvent.cs b/SharedLibraryCore/Events/Game/ClientExitMatchEvent.cs new file mode 100644 index 000000000..b940ed0e9 --- /dev/null +++ b/SharedLibraryCore/Events/Game/ClientExitMatchEvent.cs @@ -0,0 +1,6 @@ +namespace SharedLibraryCore.Events.Game; + +public class ClientExitMatchEvent : ClientGameEvent +{ + +} diff --git a/SharedLibraryCore/Events/Game/ClientGameEvent.cs b/SharedLibraryCore/Events/Game/ClientGameEvent.cs new file mode 100644 index 000000000..87c80e53e --- /dev/null +++ b/SharedLibraryCore/Events/Game/ClientGameEvent.cs @@ -0,0 +1,12 @@ +using SharedLibraryCore.Database.Models; + +namespace SharedLibraryCore.Events.Game; + +public abstract class ClientGameEvent : GameEventV2 +{ + public string ClientName { get; init; } + public string ClientNetworkId { get; init; } + public int ClientSlotNumber { get; init; } + + public EFClient Client => Origin; +} diff --git a/SharedLibraryCore/Events/Game/ClientJoinTeamEvent.cs b/SharedLibraryCore/Events/Game/ClientJoinTeamEvent.cs new file mode 100644 index 000000000..02e264f87 --- /dev/null +++ b/SharedLibraryCore/Events/Game/ClientJoinTeamEvent.cs @@ -0,0 +1,20 @@ +using System; +using SharedLibraryCore.Database.Models; + +namespace SharedLibraryCore.Events.Game; + +public class ClientJoinTeamEvent : ClientGameEvent +{ + public string TeamName { get; init; } + public EFClient.TeamType? Team { + get + { + if (Enum.TryParse(typeof(EFClient.TeamType), TeamName, out var parsedTeam) && parsedTeam is not null) + { + return (EFClient.TeamType)parsedTeam; + } + + return null; + } + } +} diff --git a/SharedLibraryCore/Events/Game/ClientKillEvent.cs b/SharedLibraryCore/Events/Game/ClientKillEvent.cs new file mode 100644 index 000000000..e62fc5b12 --- /dev/null +++ b/SharedLibraryCore/Events/Game/ClientKillEvent.cs @@ -0,0 +1,6 @@ +namespace SharedLibraryCore.Events.Game; + +public class ClientKillEvent : ClientDamageEvent +{ + +} diff --git a/SharedLibraryCore/Events/Game/ClientMessageEvent.cs b/SharedLibraryCore/Events/Game/ClientMessageEvent.cs new file mode 100644 index 000000000..58491fabf --- /dev/null +++ b/SharedLibraryCore/Events/Game/ClientMessageEvent.cs @@ -0,0 +1,6 @@ +namespace SharedLibraryCore.Events.Game; + +public class ClientMessageEvent : ClientGameEvent +{ + public bool IsTeamMessage { get; init; } +} diff --git a/SharedLibraryCore/Events/Game/GameEventV2.cs b/SharedLibraryCore/Events/Game/GameEventV2.cs new file mode 100644 index 000000000..eb48e9aec --- /dev/null +++ b/SharedLibraryCore/Events/Game/GameEventV2.cs @@ -0,0 +1,8 @@ +using SharedLibraryCore.Interfaces; + +namespace SharedLibraryCore.Events.Game; + +public abstract class GameEventV2 : GameEvent +{ + public IGameServer Server { get; init; } +} diff --git a/SharedLibraryCore/Events/Game/GameScriptEvent.cs b/SharedLibraryCore/Events/Game/GameScriptEvent.cs new file mode 100644 index 000000000..c14f4bc7b --- /dev/null +++ b/SharedLibraryCore/Events/Game/GameScriptEvent.cs @@ -0,0 +1,6 @@ +namespace SharedLibraryCore.Events.Game; + +public class GameScriptEvent : GameEventV2 +{ + public string ScriptData { get; init; } +} diff --git a/SharedLibraryCore/Events/Game/MatchEndEvent.cs b/SharedLibraryCore/Events/Game/MatchEndEvent.cs new file mode 100644 index 000000000..72993e4c5 --- /dev/null +++ b/SharedLibraryCore/Events/Game/MatchEndEvent.cs @@ -0,0 +1,6 @@ +namespace SharedLibraryCore.Events.Game; + +public class MatchEndEvent : GameEventV2 +{ + public string SessionData { get; init; } +} diff --git a/SharedLibraryCore/Events/Game/MatchStartEvent.cs b/SharedLibraryCore/Events/Game/MatchStartEvent.cs new file mode 100644 index 000000000..0ad1901c2 --- /dev/null +++ b/SharedLibraryCore/Events/Game/MatchStartEvent.cs @@ -0,0 +1,8 @@ +using System.Collections.Generic; + +namespace SharedLibraryCore.Events.Game; + +public class MatchStartEvent : GameEventV2 +{ + public IReadOnlyDictionary SessionData { get; init; } = new Dictionary(); +} diff --git a/SharedLibraryCore/Events/Management/ClientExecuteCommandEvent.cs b/SharedLibraryCore/Events/Management/ClientExecuteCommandEvent.cs new file mode 100644 index 000000000..41cfcc572 --- /dev/null +++ b/SharedLibraryCore/Events/Management/ClientExecuteCommandEvent.cs @@ -0,0 +1,9 @@ +using SharedLibraryCore.Interfaces; + +namespace SharedLibraryCore.Events.Management; + +public class ClientExecuteCommandEvent : ClientStateEvent +{ + public IManagerCommand Command { get; init; } + public string CommandText { get; init; } +} diff --git a/SharedLibraryCore/Events/Management/ClientPenaltyEvent.cs b/SharedLibraryCore/Events/Management/ClientPenaltyEvent.cs new file mode 100644 index 000000000..54150e6bc --- /dev/null +++ b/SharedLibraryCore/Events/Management/ClientPenaltyEvent.cs @@ -0,0 +1,10 @@ +using Data.Models; +using Data.Models.Client; + +namespace SharedLibraryCore.Events.Management; + +public class ClientPenaltyEvent : ManagementEvent +{ + public EFClient Client { get; init; } + public EFPenalty Penalty { get; init; } +} diff --git a/SharedLibraryCore/Events/Management/ClientPenaltyRevokeEvent.cs b/SharedLibraryCore/Events/Management/ClientPenaltyRevokeEvent.cs new file mode 100644 index 000000000..b6d26ae95 --- /dev/null +++ b/SharedLibraryCore/Events/Management/ClientPenaltyRevokeEvent.cs @@ -0,0 +1,6 @@ +namespace SharedLibraryCore.Events.Management; + +public class ClientPenaltyRevokeEvent : ClientPenaltyEvent +{ + +} diff --git a/SharedLibraryCore/Events/Management/ClientPermissionChangeEvent.cs b/SharedLibraryCore/Events/Management/ClientPermissionChangeEvent.cs new file mode 100644 index 000000000..670481597 --- /dev/null +++ b/SharedLibraryCore/Events/Management/ClientPermissionChangeEvent.cs @@ -0,0 +1,9 @@ +using Data.Models.Client; + +namespace SharedLibraryCore.Events.Management; + +public class ClientPermissionChangeEvent : ClientStateEvent +{ + public EFClient.Permission OldPermission { get; init; } + public EFClient.Permission NewPermission { get; init; } +} diff --git a/SharedLibraryCore/Events/Management/ClientStateAuthorizeEvent.cs b/SharedLibraryCore/Events/Management/ClientStateAuthorizeEvent.cs new file mode 100644 index 000000000..95216c55a --- /dev/null +++ b/SharedLibraryCore/Events/Management/ClientStateAuthorizeEvent.cs @@ -0,0 +1,6 @@ +namespace SharedLibraryCore.Events.Management; + +public class ClientStateAuthorizeEvent : ClientStateEvent +{ + +} diff --git a/SharedLibraryCore/Events/Management/ClientStateDisposeEvent.cs b/SharedLibraryCore/Events/Management/ClientStateDisposeEvent.cs new file mode 100644 index 000000000..23248eb06 --- /dev/null +++ b/SharedLibraryCore/Events/Management/ClientStateDisposeEvent.cs @@ -0,0 +1,6 @@ +namespace SharedLibraryCore.Events.Management; + +public class ClientStateDisposeEvent : ClientStateEvent +{ + +} diff --git a/SharedLibraryCore/Events/Management/ClientStateEvent.cs b/SharedLibraryCore/Events/Management/ClientStateEvent.cs new file mode 100644 index 000000000..938acb223 --- /dev/null +++ b/SharedLibraryCore/Events/Management/ClientStateEvent.cs @@ -0,0 +1,8 @@ +using EFClient = SharedLibraryCore.Database.Models.EFClient; + +namespace SharedLibraryCore.Events.Management; + +public abstract class ClientStateEvent : ManagementEvent +{ + public EFClient Client { get; init; } +} diff --git a/SharedLibraryCore/Events/Management/ClientStateInitializeEvent.cs b/SharedLibraryCore/Events/Management/ClientStateInitializeEvent.cs new file mode 100644 index 000000000..8295c7746 --- /dev/null +++ b/SharedLibraryCore/Events/Management/ClientStateInitializeEvent.cs @@ -0,0 +1,6 @@ +namespace SharedLibraryCore.Events.Management; + +public class ClientStateInitializeEvent : ClientStateEvent +{ + +} diff --git a/SharedLibraryCore/Events/Management/LoginEvent.cs b/SharedLibraryCore/Events/Management/LoginEvent.cs new file mode 100644 index 000000000..9b4bb5289 --- /dev/null +++ b/SharedLibraryCore/Events/Management/LoginEvent.cs @@ -0,0 +1,14 @@ +namespace SharedLibraryCore.Events.Management; + +public class LoginEvent : ManagementEvent +{ + public enum LoginSourceType + { + Ingame, + Webfront + } + + public string EntityId { get; init; } + public string Identifier { get; init; } + public LoginSourceType LoginSource { get; init; } +} diff --git a/SharedLibraryCore/Events/Management/LogoutEvent.cs b/SharedLibraryCore/Events/Management/LogoutEvent.cs new file mode 100644 index 000000000..c810e38b3 --- /dev/null +++ b/SharedLibraryCore/Events/Management/LogoutEvent.cs @@ -0,0 +1,6 @@ +namespace SharedLibraryCore.Events.Management; + +public class LogoutEvent : LoginEvent +{ + +} diff --git a/SharedLibraryCore/Events/Management/ManagementEvent.cs b/SharedLibraryCore/Events/Management/ManagementEvent.cs new file mode 100644 index 000000000..1ec21dc7c --- /dev/null +++ b/SharedLibraryCore/Events/Management/ManagementEvent.cs @@ -0,0 +1,6 @@ +namespace SharedLibraryCore.Events.Management; + +public class ManagementEvent : CoreEvent +{ + +} diff --git a/SharedLibraryCore/Events/Management/NotifyAfterDelayCompleteEvent.cs b/SharedLibraryCore/Events/Management/NotifyAfterDelayCompleteEvent.cs new file mode 100644 index 000000000..c760ff1f5 --- /dev/null +++ b/SharedLibraryCore/Events/Management/NotifyAfterDelayCompleteEvent.cs @@ -0,0 +1,8 @@ +using System; + +namespace SharedLibraryCore.Events.Management; + +public class NotifyAfterDelayCompleteEvent : ManagementEvent +{ + public Delegate Action { get; init; } +} diff --git a/SharedLibraryCore/Events/Management/NotifyAfterDelayRequestEvent.cs b/SharedLibraryCore/Events/Management/NotifyAfterDelayRequestEvent.cs new file mode 100644 index 000000000..7386b1f93 --- /dev/null +++ b/SharedLibraryCore/Events/Management/NotifyAfterDelayRequestEvent.cs @@ -0,0 +1,9 @@ +using System; + +namespace SharedLibraryCore.Events.Management; + +public class NotifyAfterDelayRequestEvent : ManagementEvent +{ + public int DelayMs { get; init; } + public Action Action { get; init; } +} diff --git a/SharedLibraryCore/Events/Server/ClientDataUpdateEvent.cs b/SharedLibraryCore/Events/Server/ClientDataUpdateEvent.cs new file mode 100644 index 000000000..5ca423cea --- /dev/null +++ b/SharedLibraryCore/Events/Server/ClientDataUpdateEvent.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; +using SharedLibraryCore.Database.Models; + +namespace SharedLibraryCore.Events.Server; + +public class ClientDataUpdateEvent : GameServerEvent +{ + public IReadOnlyCollection Clients { get; init; } +} diff --git a/SharedLibraryCore/Events/Server/ConnectionInterruptEvent.cs b/SharedLibraryCore/Events/Server/ConnectionInterruptEvent.cs new file mode 100644 index 000000000..493766d0c --- /dev/null +++ b/SharedLibraryCore/Events/Server/ConnectionInterruptEvent.cs @@ -0,0 +1,6 @@ +namespace SharedLibraryCore.Events.Server; + +public class ConnectionInterruptEvent : GameServerEvent +{ + +} diff --git a/SharedLibraryCore/Events/Server/ConnectionRestoreEvent.cs b/SharedLibraryCore/Events/Server/ConnectionRestoreEvent.cs new file mode 100644 index 000000000..e6430d3c0 --- /dev/null +++ b/SharedLibraryCore/Events/Server/ConnectionRestoreEvent.cs @@ -0,0 +1,6 @@ +namespace SharedLibraryCore.Events.Server; + +public class ConnectionRestoreEvent : GameServerEvent +{ + +} diff --git a/SharedLibraryCore/Events/Server/GameServerEvent.cs b/SharedLibraryCore/Events/Server/GameServerEvent.cs new file mode 100644 index 000000000..4a0bfa4e4 --- /dev/null +++ b/SharedLibraryCore/Events/Server/GameServerEvent.cs @@ -0,0 +1,8 @@ +using SharedLibraryCore.Interfaces; + +namespace SharedLibraryCore.Events.Server; + +public abstract class GameServerEvent : CoreEvent +{ + public IGameServer Server { get; init; } +} diff --git a/SharedLibraryCore/Events/Server/MonitorStartEvent.cs b/SharedLibraryCore/Events/Server/MonitorStartEvent.cs new file mode 100644 index 000000000..fbe39dc29 --- /dev/null +++ b/SharedLibraryCore/Events/Server/MonitorStartEvent.cs @@ -0,0 +1,5 @@ +namespace SharedLibraryCore.Events.Server; + +public class MonitorStartEvent : GameServerEvent +{ +} diff --git a/SharedLibraryCore/Events/Server/MonitorStopEvent.cs b/SharedLibraryCore/Events/Server/MonitorStopEvent.cs new file mode 100644 index 000000000..79ca89034 --- /dev/null +++ b/SharedLibraryCore/Events/Server/MonitorStopEvent.cs @@ -0,0 +1,6 @@ +namespace SharedLibraryCore.Events.Server; + +public class MonitorStopEvent : GameServerEvent +{ + +} diff --git a/SharedLibraryCore/Events/Server/ServerCommandExecuteEvent.cs b/SharedLibraryCore/Events/Server/ServerCommandExecuteEvent.cs new file mode 100644 index 000000000..5ba96f9fc --- /dev/null +++ b/SharedLibraryCore/Events/Server/ServerCommandExecuteEvent.cs @@ -0,0 +1,7 @@ +namespace SharedLibraryCore.Events.Server; + +public class ServerCommandExecuteEvent : GameServerEvent +{ + public string Command { get; init; } + public string[] Output { get; init; } +} diff --git a/SharedLibraryCore/Events/Server/ServerValueReceiveEvent.cs b/SharedLibraryCore/Events/Server/ServerValueReceiveEvent.cs new file mode 100644 index 000000000..88e72e7f3 --- /dev/null +++ b/SharedLibraryCore/Events/Server/ServerValueReceiveEvent.cs @@ -0,0 +1,7 @@ +namespace SharedLibraryCore.Events.Server; + +public class ServerValueReceiveEvent : GameServerEvent +{ + public Dvar Response { get; init; } + public bool Success { get; init; } +} diff --git a/SharedLibraryCore/Events/Server/ServerValueRequestEvent.cs b/SharedLibraryCore/Events/Server/ServerValueRequestEvent.cs new file mode 100644 index 000000000..58bec1611 --- /dev/null +++ b/SharedLibraryCore/Events/Server/ServerValueRequestEvent.cs @@ -0,0 +1,17 @@ +using SharedLibraryCore.Interfaces; + +namespace SharedLibraryCore.Events.Server; + +public class ServerValueRequestEvent : GameServerEvent +{ + public ServerValueRequestEvent(string valueName, IGameServer server) + { + ValueName = valueName; + Server = server; + } + + public string ValueName { get; init; } + public int? DelayMs { get; init; } + public int? TimeoutMs { get; init; } + public string FallbackValue { get; init; } +} diff --git a/SharedLibraryCore/Events/Server/ServerValueSetCompleteEvent.cs b/SharedLibraryCore/Events/Server/ServerValueSetCompleteEvent.cs new file mode 100644 index 000000000..a292f8f14 --- /dev/null +++ b/SharedLibraryCore/Events/Server/ServerValueSetCompleteEvent.cs @@ -0,0 +1,8 @@ +namespace SharedLibraryCore.Events.Server; + +public class ServerValueSetCompleteEvent : GameServerEvent +{ + public bool Success { get; init; } + public string ValueName { get; init; } + public string Value { get; set; } +} diff --git a/SharedLibraryCore/Events/Server/ServerValueSetRequestEvent.cs b/SharedLibraryCore/Events/Server/ServerValueSetRequestEvent.cs new file mode 100644 index 000000000..3b9f7677c --- /dev/null +++ b/SharedLibraryCore/Events/Server/ServerValueSetRequestEvent.cs @@ -0,0 +1,18 @@ +using SharedLibraryCore.Interfaces; + +namespace SharedLibraryCore.Events.Server; + +public class ServerValueSetRequestEvent : GameServerEvent +{ + public ServerValueSetRequestEvent(string valueName, string value, IGameServer server) + { + ValueName = valueName; + Server = server; + Value = value; + } + + public string ValueName { get; init; } + public string Value { get; init; } + public int? DelayMs { get; init; } + public int? TimeoutMs { get; init; } +}