```csharp
using Impostor.Api.Events;
+using Impostor.Api.Events.Player;
using Microsoft.Extensions.Logging;
namespace Impostor.Plugins.Example.Handlers
/// The event you want to listen for.
/// </param>
[EventListener]
- public void OnGameStarted(GameStartedEvent e)
+ public void OnGameStarted(IGameStartedEvent e)
{
_logger.LogInformation($"Game is starting.");
}
[EventListener]
- public void OnGameEnded(GameEndedEvent e)
+ public void OnGameEnded(IGameEndedEvent e)
{
_logger.LogInformation($"Game has ended.");
}
[EventListener]
- public void OnPlayerChat(PlayerChatEvent e)
+ public void OnPlayerChat(IPlayerChatEvent e)
{
_logger.LogInformation($"{e.PlayerControl.PlayerInfo.PlayerName} said {e.Message}");
}
# Code files
[*.{cs,csx,vb,vbx}]
indent_size = 4
+insert_final_newline = true
# XML project files
[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj}]
+++ /dev/null
-using Impostor.Api.Games;
-
-namespace Impostor.Api.Events
-{
- /// <summary>
- /// Called whenever a new <see cref="IGame"/> is created.
- /// </summary>
- public sealed class GameCreatedEvent : IGameEvent
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="GameCreatedEvent"/> class.
- /// </summary>
- /// <param name="game">Instance of the game.</param>
- public GameCreatedEvent(IGame game)
- {
- Game = game;
- }
-
- /// <inheritdoc/>
- public IGame Game { get; }
- }
-}
\ No newline at end of file
+++ /dev/null
-using Impostor.Api.Games;
-
-namespace Impostor.Api.Events
-{
- /// <summary>
- /// Called whenever a new <see cref="IGame"/> is destroyed.
- /// </summary>
- public sealed class GameDestroyedEvent : IGameEvent
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="GameDestroyedEvent"/> class.
- /// </summary>
- /// <param name="game">Instance of the game.</param>
- public GameDestroyedEvent(IGame game)
- {
- Game = game;
- }
-
- /// <inheritdoc/>
- public IGame Game { get; }
- }
-}
\ No newline at end of file
+++ /dev/null
-using Impostor.Api.Games;
-
-namespace Impostor.Api.Events
-{
- public class GameEndedEvent : IGameEvent
- {
- public GameEndedEvent(IGame game)
- {
- Game = game;
- }
-
- public IGame Game { get; }
- }
-}
\ No newline at end of file
+++ /dev/null
-using Impostor.Api.Games;
-
-namespace Impostor.Api.Events
-{
- /// <summary>
- /// The game is started here and players have been initialized.
- /// </summary>
- public class GameStartedEvent : IGameEvent
- {
- public GameStartedEvent(IGame game)
- {
- Game = game;
- }
-
- public IGame Game { get; }
- }
-}
\ No newline at end of file
+++ /dev/null
-using Impostor.Api.Games;
-
-namespace Impostor.Api.Events
-{
- /// <summary>
- /// Called when the game is going to start.
- /// When this is called, not all players are initialized properly yet.
- /// If you want to get correct player states, use <see cref="GameStartedEvent"/>.
- /// </summary>
- public class GameStartingEvent : IGameEvent
- {
- public GameStartingEvent(IGame game)
- {
- Game = game;
- }
-
- public IGame Game { get; }
- }
-}
\ No newline at end of file
--- /dev/null
+using Impostor.Api.Games;
+
+namespace Impostor.Api.Events
+{
+ /// <summary>
+ /// Called whenever a new <see cref="IGame"/> is created.
+ /// </summary>
+ public interface IGameCreatedEvent : IGameEvent
+ {
+ }
+}
--- /dev/null
+using Impostor.Api.Games;
+
+namespace Impostor.Api.Events
+{
+ /// <summary>
+ /// Called whenever a new <see cref="IGame"/> is destroyed.
+ /// </summary>
+ public interface IGameDestroyedEvent : IGameEvent
+ {
+ }
+}
--- /dev/null
+namespace Impostor.Api.Events
+{
+ public interface IGameEndedEvent : IGameEvent
+ {
+ }
+}
{
public interface IGameEvent : IEvent
{
+ /// <summary>
+ /// Gets the <see cref="IGame"/> this event belongs to.
+ /// </summary>
IGame Game { get; }
}
-}
\ No newline at end of file
+}
--- /dev/null
+namespace Impostor.Api.Events
+{
+ public interface IGamePlayerJoinedEvent : IGameEvent
+ {
+ }
+}
--- /dev/null
+namespace Impostor.Api.Events
+{
+ public interface IGamePlayerLeftEvent : IGameEvent
+ {
+ }
+}
--- /dev/null
+namespace Impostor.Api.Events
+{
+ /// <summary>
+ /// The game is started here and players have been initialized.
+ /// </summary>
+ public interface IGameStartedEvent : IGameEvent
+ {
+ }
+}
--- /dev/null
+namespace Impostor.Api.Events
+{
+ /// <summary>
+ /// Called when the game is going to start.
+ /// When this is called, not all players are initialized properly yet.
+ /// If you want to get correct player states, use <see cref="IGameStartedEvent"/>.
+ /// </summary>
+ public interface IGameStartingEvent : IGameEvent
+ {
+ }
+}
--- /dev/null
+namespace Impostor.Api.Events.Meeting
+{
+ public interface IMeetingEndedEvent : IMeetingEvent
+ {
+ }
+}
--- /dev/null
+using Impostor.Api.Net.Inner.Objects;
+
+namespace Impostor.Api.Events.Meeting
+{
+ public interface IMeetingEvent : IGameEvent
+ {
+ IInnerMeetingHud MeetingHud { get; }
+ }
+}
--- /dev/null
+namespace Impostor.Api.Events.Meeting
+{
+ public interface IMeetingStartedEvent : IMeetingEvent
+ {
+ }
+}
+++ /dev/null
-using Impostor.Api.Games;
-using Impostor.Api.Net.Inner.Objects;
-
-namespace Impostor.Api.Events.Meeting
-{
- public class MeetingEndedEvent : IEvent
- {
- public MeetingEndedEvent(IGame game, IInnerMeetingHud meetingHud)
- {
- Game = game;
- MeetingHud = meetingHud;
- }
-
- public IGame Game { get; }
-
- public IInnerMeetingHud MeetingHud { get; }
- }
-}
\ No newline at end of file
+++ /dev/null
-using Impostor.Api.Games;
-using Impostor.Api.Net.Inner.Objects;
-
-namespace Impostor.Api.Events.Meeting
-{
- public class MeetingStartedEvent : IEvent
- {
- public MeetingStartedEvent(IGame game, IInnerMeetingHud meetingHud)
- {
- Game = game;
- MeetingHud = meetingHud;
- }
-
- public IGame Game { get; }
-
- public IInnerMeetingHud MeetingHud { get; }
- }
-}
\ No newline at end of file
--- /dev/null
+namespace Impostor.Api.Events.Player
+{
+ public interface IPlayerChatEvent : IPlayerEvent
+ {
+ /// <summary>
+ /// Gets the message sent by the player.
+ /// </summary>
+ string Message { get; }
+ }
+}
--- /dev/null
+namespace Impostor.Api.Events.Player
+{
+ public interface IPlayerDestroyedEvent : IPlayerEvent
+ {
+ }
+}
--- /dev/null
+namespace Impostor.Api.Events.Player
+{
+ public interface IPlayerSpawnedEvent : IPlayerEvent
+ {
+ }
+}
+++ /dev/null
-using Impostor.Api.Games;
-using Impostor.Api.Net;
-using Impostor.Api.Net.Inner.Objects;
-
-namespace Impostor.Api.Events.Player
-{
- public class PlayerChatEvent : IPlayerEvent
- {
- public PlayerChatEvent(IGame game, IClientPlayer clientPlayer, IInnerPlayerControl playerControl, string message)
- {
- Game = game;
- ClientPlayer = clientPlayer;
- PlayerControl = playerControl;
- Message = message;
- }
-
- /// <inheritdoc/>
- public IGame Game { get; }
-
- /// <inheritdoc/>
- public IClientPlayer ClientPlayer { get; }
-
- /// <inheritdoc/>
- public IInnerPlayerControl PlayerControl { get; }
-
- /// <summary>
- /// Gets the message sent by the player.
- /// </summary>
- public string Message { get; }
- }
-}
\ No newline at end of file
+++ /dev/null
-using Impostor.Api.Games;
-using Impostor.Api.Net;
-using Impostor.Api.Net.Inner.Objects;
-
-namespace Impostor.Api.Events.Player
-{
- public class PlayerDestroyedEvent : IPlayerEvent
- {
- public PlayerDestroyedEvent(IGame game, IClientPlayer clientPlayer, IInnerPlayerControl playerControl)
- {
- Game = game;
- ClientPlayer = clientPlayer;
- PlayerControl = playerControl;
- }
-
- /// <inheritdoc/>
- public IGame Game { get; }
-
- /// <inheritdoc/>
- public IClientPlayer ClientPlayer { get; }
-
- /// <inheritdoc/>
- public IInnerPlayerControl PlayerControl { get; }
- }
-}
\ No newline at end of file
+++ /dev/null
-// using Impostor.Api.Games;
-// using Impostor.Api.Net;
-// using Impostor.Api.Net.Inner.Objects;
-//
-// namespace Impostor.Api.Events.Player
-// {
-// public class PlayerMovementEvent : IPlayerEvent
-// {
-// public PlayerMovementEvent(IGame game, IClientPlayer clientPlayer, IInnerPlayerControl playerControl)
-// {
-// Game = game;
-// ClientPlayer = clientPlayer;
-// PlayerControl = playerControl;
-// }
-//
-// public IGame Game { get; }
-//
-// public IClientPlayer ClientPlayer { get; }
-//
-// public IInnerPlayerControl PlayerControl { get; }
-// }
-// }
\ No newline at end of file
+++ /dev/null
-using Impostor.Api.Games;
-using Impostor.Api.Net;
-using Impostor.Api.Net.Inner.Objects;
-
-namespace Impostor.Api.Events.Player
-{
- public class PlayerSpawnedEvent : IPlayerEvent
- {
- public PlayerSpawnedEvent(IGame game, IClientPlayer clientPlayer, IInnerPlayerControl playerControl)
- {
- Game = game;
- ClientPlayer = clientPlayer;
- PlayerControl = playerControl;
- }
-
- /// <inheritdoc/>
- public IGame Game { get; }
-
- /// <inheritdoc/>
- public IClientPlayer ClientPlayer { get; }
-
- /// <inheritdoc/>
- public IInnerPlayerControl PlayerControl { get; }
- }
-}
\ No newline at end of file
+++ /dev/null
-using Impostor.Api.Games;
-using Impostor.Api.Net;
-
-namespace Impostor.Api.Events
-{
- public class PlayerJoinedGameEvent : IGameEvent
- {
- public PlayerJoinedGameEvent(IGame game, IClientPlayer player)
- {
- Game = game;
- Player = player;
- }
-
- public IGame Game { get; }
-
- public IClientPlayer Player { get; }
- }
-}
\ No newline at end of file
+++ /dev/null
-using Impostor.Api.Games;
-using Impostor.Api.Net;
-
-namespace Impostor.Api.Events
-{
- public class PlayerLeftGameEvent : IGameEvent
- {
- public PlayerLeftGameEvent(IGame game, IClientPlayer player, bool isBan)
- {
- Game = game;
- Player = player;
- IsBan = isBan;
- }
-
- public IGame Game { get; }
-
- public IClientPlayer Player { get; }
-
- public bool IsBan { get; }
- }
-}
\ No newline at end of file
@code {
private IDisposable _disposable;
- [EventListener(typeof(GameCreatedEvent))]
- [EventListener(typeof(GameDestroyedEvent))]
- [EventListener(typeof(PlayerJoinedGameEvent))]
- [EventListener(typeof(PlayerLeftGameEvent))]
+ [EventListener(typeof(IGameCreatedEvent))]
+ [EventListener(typeof(IGameDestroyedEvent))]
+ [EventListener(typeof(IGamePlayerJoinedEvent))]
+ [EventListener(typeof(IGamePlayerLeftEvent))]
public void OnGameCreated(IGameEvent e)
{
StateHasChanged();
using System;
using Impostor.Api.Events;
-using Impostor.Api.Events.Player;
namespace Impostor.Plugins.Example.Handlers
{
public class GameEventListener : IEventListener
{
[EventListener]
- public void OnGameCreated(GameCreatedEvent e)
+ public void OnGameCreated(IGameCreatedEvent e)
{
Console.WriteLine("Game > created");
}
[EventListener]
- public void OnGameStarting(GameStartingEvent e)
+ public void OnGameStarting(IGameStartingEvent e)
{
Console.WriteLine("Game > starting");
}
[EventListener]
- public void OnGameStarted(GameStartedEvent e)
+ public void OnGameStarted(IGameStartedEvent e)
{
Console.WriteLine("Game > started");
}
[EventListener]
- public void OnGameEnded(GameEndedEvent e)
+ public void OnGameEnded(IGameEndedEvent e)
{
Console.WriteLine("Game > ended");
}
[EventListener]
- public void OnGameDestroyed(GameDestroyedEvent e)
+ public void OnGameDestroyed(IGameDestroyedEvent e)
{
Console.WriteLine("Game > destroyed");
}
[EventListener]
- public void OnPlayerJoined(PlayerJoinedGameEvent e)
+ public void OnPlayerJoined(IGamePlayerJoinedEvent e)
{
Console.WriteLine("Player joined a game.");
}
[EventListener]
- public void OnPlayerLeftGame(PlayerLeftGameEvent e)
+ public void OnPlayerLeftGame(IGamePlayerLeftEvent e)
{
Console.WriteLine("Player left a game.");
}
}
-}
\ No newline at end of file
+}
public class MeetingEventListener : IEventListener
{
[EventListener]
- public void OnMeetingStarted(MeetingStartedEvent e)
+ public void OnMeetingStarted(IMeetingStartedEvent e)
{
Console.WriteLine("Meeting > started");
}
[EventListener]
- public void OnMeetingEnded(MeetingEndedEvent e)
+ public void OnMeetingEnded(IMeetingEndedEvent e)
{
Console.WriteLine("Meeting > ended");
}
}
-}
\ No newline at end of file
+}
public class PlayerEventListener : IEventListener
{
[EventListener]
- public void OnPlayerSpawned(PlayerSpawnedEvent e)
+ public void OnPlayerSpawned(IPlayerSpawnedEvent e)
{
Console.WriteLine(e.PlayerControl.PlayerInfo.PlayerName + " spawned");
}
[EventListener]
- public void OnPlayerDestroyed(PlayerDestroyedEvent e)
+ public void OnPlayerDestroyed(IPlayerDestroyedEvent e)
{
Console.WriteLine(e.PlayerControl.PlayerInfo.PlayerName + " destroyed");
}
[EventListener]
- public async ValueTask OnPlayerChat(PlayerChatEvent e)
+ public async ValueTask OnPlayerChat(IPlayerChatEvent e)
{
Console.WriteLine(e.PlayerControl.PlayerInfo.PlayerName + " said " + e.Message);
await e.PlayerControl.SendChatAsync(e.Message);
}
}
-}
\ No newline at end of file
+}
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
+using System.Reflection;
using System.Threading.Tasks;
using Impostor.Api.Events;
using Impostor.Api.Events.Managers;
private IEnumerable<EventHandler> GetHandlers<TEvent>(IServiceProvider services)
where TEvent : IEvent
{
+ var eventType = typeof(TEvent);
+ var interfaces = eventType.GetInterfaces();
+ if (interfaces.Length > 0 && _temporaryEventListeners.TryGetValue(interfaces[0], out var cb))
+ {
+ foreach (var eventListener in cb.GetEventListeners())
+ {
+ yield return new EventHandler(null, eventListener);
+ }
+ }
+
foreach (var handler in services.GetServices<IEventListener>())
{
if (handler is IManualEventListener manualEventListener && manualEventListener.CanExecute<TEvent>())
}
}
- if (_temporaryEventListeners.TryGetValue(typeof(TEvent), out var cb))
+ if (_temporaryEventListeners.TryGetValue(eventType, out cb))
{
foreach (var eventListener in cb.GetEventListeners())
{
--- /dev/null
+using Impostor.Api.Events;
+using Impostor.Api.Games;
+
+namespace Impostor.Server.Events
+{
+ public class GameCreatedEvent : IGameCreatedEvent
+ {
+ public GameCreatedEvent(IGame game)
+ {
+ Game = game;
+ }
+
+ public IGame Game { get; }
+ }
+}
--- /dev/null
+using Impostor.Api.Events;
+using Impostor.Api.Games;
+
+namespace Impostor.Server.Events
+{
+ public class GameDestroyedEvent : IGameDestroyedEvent
+ {
+ public GameDestroyedEvent(IGame game)
+ {
+ Game = game;
+ }
+
+ public IGame Game { get; }
+ }
+}
--- /dev/null
+using Impostor.Api.Events;
+using Impostor.Api.Games;
+
+namespace Impostor.Server.Events
+{
+ public class GameEndedEvent : IGameEndedEvent
+ {
+ public GameEndedEvent(IGame game)
+ {
+ Game = game;
+ }
+
+ public IGame Game { get; }
+ }
+}
--- /dev/null
+using Impostor.Api.Events;
+using Impostor.Api.Games;
+using Impostor.Api.Net;
+
+namespace Impostor.Server.Events
+{
+ public class GamePlayerJoinedEvent : IGamePlayerJoinedEvent
+ {
+ public GamePlayerJoinedEvent(IGame game, IClientPlayer player)
+ {
+ Game = game;
+ Player = player;
+ }
+
+ public IGame Game { get; }
+
+ public IClientPlayer Player { get; }
+ }
+}
--- /dev/null
+using Impostor.Api.Events;
+using Impostor.Api.Games;
+using Impostor.Api.Net;
+
+namespace Impostor.Server.Events
+{
+ public class GamePlayerLeftEvent : IGamePlayerLeftEvent
+ {
+ public GamePlayerLeftEvent(IGame game, IClientPlayer player, bool isBan)
+ {
+ Game = game;
+ Player = player;
+ IsBan = isBan;
+ }
+
+ public IGame Game { get; }
+
+ public IClientPlayer Player { get; }
+
+ public bool IsBan { get; }
+ }
+}
--- /dev/null
+using Impostor.Api.Events;
+using Impostor.Api.Games;
+
+namespace Impostor.Server.Events
+{
+ public class GameStartedEvent : IGameStartedEvent
+ {
+ public GameStartedEvent(IGame game)
+ {
+ Game = game;
+ }
+
+ public IGame Game { get; }
+ }
+}
--- /dev/null
+using Impostor.Api.Events;
+using Impostor.Api.Games;
+
+namespace Impostor.Server.Events
+{
+ public class GameStartingEvent : IGameStartingEvent
+ {
+ public GameStartingEvent(IGame game)
+ {
+ Game = game;
+ }
+
+ public IGame Game { get; }
+ }
+}
--- /dev/null
+using Impostor.Api.Events.Meeting;
+using Impostor.Api.Games;
+using Impostor.Api.Net.Inner.Objects;
+
+namespace Impostor.Server.Events.Meeting
+{
+ public class MeetingEndedEvent : IMeetingEndedEvent
+ {
+ public MeetingEndedEvent(IGame game, IInnerMeetingHud meetingHud)
+ {
+ Game = game;
+ MeetingHud = meetingHud;
+ }
+
+ public IGame Game { get; }
+
+ public IInnerMeetingHud MeetingHud { get; }
+ }
+}
--- /dev/null
+using Impostor.Api.Events.Meeting;
+using Impostor.Api.Games;
+using Impostor.Api.Net.Inner.Objects;
+
+namespace Impostor.Server.Events.Meeting
+{
+ public class MeetingStartedEvent : IMeetingStartedEvent
+ {
+ public MeetingStartedEvent(IGame game, IInnerMeetingHud meetingHud)
+ {
+ Game = game;
+ MeetingHud = meetingHud;
+ }
+
+ public IGame Game { get; }
+
+ public IInnerMeetingHud MeetingHud { get; }
+ }
+}
--- /dev/null
+using Impostor.Api.Events.Player;
+using Impostor.Api.Games;
+using Impostor.Api.Net;
+using Impostor.Api.Net.Inner.Objects;
+
+namespace Impostor.Server.Events.Player
+{
+ public class PlayerChatEvent : IPlayerChatEvent
+ {
+ public PlayerChatEvent(IGame game, IClientPlayer clientPlayer, IInnerPlayerControl playerControl, string message)
+ {
+ Game = game;
+ ClientPlayer = clientPlayer;
+ PlayerControl = playerControl;
+ Message = message;
+ }
+
+ public IGame Game { get; }
+
+ public IClientPlayer ClientPlayer { get; }
+
+ public IInnerPlayerControl PlayerControl { get; }
+
+ public string Message { get; }
+ }
+}
--- /dev/null
+using Impostor.Api.Events.Player;
+using Impostor.Api.Games;
+using Impostor.Api.Net;
+using Impostor.Api.Net.Inner.Objects;
+
+namespace Impostor.Server.Events.Player
+{
+ public class PlayerDestroyedEvent : IPlayerDestroyedEvent
+ {
+ public PlayerDestroyedEvent(IGame game, IClientPlayer clientPlayer, IInnerPlayerControl playerControl)
+ {
+ Game = game;
+ ClientPlayer = clientPlayer;
+ PlayerControl = playerControl;
+ }
+
+ public IGame Game { get; }
+
+ public IClientPlayer ClientPlayer { get; }
+
+ public IInnerPlayerControl PlayerControl { get; }
+ }
+}
--- /dev/null
+using Impostor.Api.Events.Player;
+using Impostor.Api.Games;
+using Impostor.Api.Net;
+using Impostor.Api.Net.Inner.Objects;
+
+namespace Impostor.Server.Events.Player
+{
+ // TODO: Finish and use event, needs to be pooled
+ public class PlayerMovementEvent : IPlayerEvent
+ {
+ public PlayerMovementEvent(IGame game, IClientPlayer clientPlayer, IInnerPlayerControl playerControl)
+ {
+ Game = game;
+ ClientPlayer = clientPlayer;
+ PlayerControl = playerControl;
+ }
+
+ public IGame Game { get; }
+
+ public IClientPlayer ClientPlayer { get; }
+
+ public IInnerPlayerControl PlayerControl { get; }
+ }
+}
--- /dev/null
+using Impostor.Api.Events.Player;
+using Impostor.Api.Games;
+using Impostor.Api.Net;
+using Impostor.Api.Net.Inner.Objects;
+
+namespace Impostor.Server.Events.Player
+{
+ public class PlayerSpawnedEvent : IPlayerSpawnedEvent
+ {
+ public PlayerSpawnedEvent(IGame game, IClientPlayer clientPlayer, IInnerPlayerControl playerControl)
+ {
+ Game = game;
+ ClientPlayer = clientPlayer;
+ PlayerControl = playerControl;
+ }
+
+ public IGame Game { get; }
+
+ public IClientPlayer ClientPlayer { get; }
+
+ public IInnerPlayerControl PlayerControl { get; }
+ }
+}
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
+ <s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=events_005Cgame/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=extensions/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
\ No newline at end of file
using Impostor.Api.Net.Messages.S2C;
using Impostor.Hazel;
using Impostor.Server.Config;
-using Impostor.Server.Net.Hazel;
using Impostor.Server.Net.Manager;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using System.Linq;
using System.Threading.Tasks;
using Impostor.Api;
-using Impostor.Api.Events;
using Impostor.Api.Events.Managers;
-using Impostor.Api.Events.Meeting;
using Impostor.Api.Net;
using Impostor.Api.Net.Messages;
+using Impostor.Server.Events.Meeting;
using Impostor.Server.Net.State;
using Microsoft.Extensions.Logging;
using System;
using System.Threading.Tasks;
using Impostor.Api;
-using Impostor.Api.Events;
using Impostor.Api.Events.Managers;
-using Impostor.Api.Events.Player;
using Impostor.Api.Innersloth;
using Impostor.Api.Net;
-using Impostor.Api.Net.Inner.Objects;
using Impostor.Api.Net.Messages;
+using Impostor.Server.Events.Player;
using Impostor.Server.Net.Inner.Objects.Components;
using Impostor.Server.Net.State;
using Microsoft.Extensions.DependencyInjection;
using System.Threading.Tasks;
using Impostor.Api.Innersloth;
using Impostor.Api.Net;
-using Impostor.Api.Net.Manager;
using Impostor.Api.Net.Messages;
using Impostor.Api.Net.Messages.S2C;
using Impostor.Hazel;
using System.Net;
using System.Threading.Tasks;
using Impostor.Api;
-using Impostor.Api.Events;
using Impostor.Api.Events.Managers;
using Impostor.Api.Games;
using Impostor.Api.Games.Managers;
using Impostor.Api.Innersloth;
using Impostor.Server.Config;
+using Impostor.Server.Events;
using Impostor.Server.Net.Redirector;
using Impostor.Server.Net.State;
using Microsoft.Extensions.DependencyInjection;
await _eventManager.CallAsync(new GameDestroyedEvent(game));
}
}
-}
\ No newline at end of file
+}
using System.Threading;
using System.Threading.Tasks;
using Impostor.Api;
-using Impostor.Api.Events;
-using Impostor.Api.Events.Meeting;
-using Impostor.Api.Events.Player;
using Impostor.Api.Innersloth;
using Impostor.Api.Net.Messages;
using Impostor.Api.Net.Messages.S2C;
using Impostor.Hazel;
+using Impostor.Server.Events.Meeting;
+using Impostor.Server.Events.Player;
using Impostor.Server.Net.Inner;
using Impostor.Server.Net.Inner.Objects;
using Impostor.Server.Net.Inner.Objects.Components;
{
switch (netObj)
{
- case InnerLobbyBehaviour lobby:
+ case InnerLobbyBehaviour:
{
GameNet.LobbyBehaviour = null;
break;
using System;
using System.Threading;
using System.Threading.Tasks;
-using Impostor.Api.Events;
using Impostor.Api.Games;
using Impostor.Api.Innersloth;
using Impostor.Api.Net;
using Impostor.Api.Net.Messages;
using Impostor.Hazel;
+using Impostor.Server.Events;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Impostor.Api.Net.Messages;
using Impostor.Api.Net.Messages.S2C;
using Impostor.Hazel;
-using Impostor.Hazel.Udp;
using Impostor.Server.Net.Inner;
namespace Impostor.Server.Net.State
using System.Linq;
using System.Threading.Tasks;
using Impostor.Api;
-using Impostor.Api.Events;
-using Impostor.Api.Events.Player;
using Impostor.Api.Innersloth;
using Impostor.Api.Net;
using Impostor.Api.Net.Messages;
using Impostor.Hazel;
+using Impostor.Server.Events;
using Impostor.Server.Net.Hazel;
using Microsoft.Extensions.Logging;
await InitGameDataAsync(player);
}
- await _eventManager.CallAsync(new PlayerJoinedGameEvent(this, player));
+ await _eventManager.CallAsync(new GamePlayerJoinedEvent(this, player));
}
private async ValueTask<bool> PlayerRemove(int playerId, bool isBan = false)
BanIp(player.Client.Connection.EndPoint.Address);
}
- await _eventManager.CallAsync(new PlayerLeftGameEvent(this, player, isBan));
+ await _eventManager.CallAsync(new GamePlayerLeftEvent(this, player, isBan));
// Player can refuse to be kicked and keep the connection open, check for this.
_ = Task.Run(async () =>
using System.Linq;
using System.Net;
using System.Threading.Tasks;
-using Impostor.Api.Events;
using Impostor.Api.Events.Managers;
using Impostor.Api.Games;
using Impostor.Api.Innersloth;
using Impostor.Api.Net;
using Impostor.Api.Net.Messages;
using Impostor.Api.Net.Messages.S2C;
+using Impostor.Server.Events;
using Impostor.Server.Net.Manager;
using Microsoft.Extensions.Logging;