-using System;
-using System.Threading.Tasks;
-using Impostor.Api.Events.Managers;
+using System.Threading.Tasks;
using Impostor.Api.Plugins;
-using Impostor.Plugins.Example.Handlers;
using Microsoft.Extensions.Logging;
namespace Impostor.Plugins.Example
public class ExamplePlugin : PluginBase
{
private readonly ILogger<ExamplePlugin> _logger;
- private readonly IEventManager _eventManager;
- private IDisposable[] _cancel;
- public ExamplePlugin(ILogger<ExamplePlugin> logger, IEventManager eventManager)
+ public ExamplePlugin(ILogger<ExamplePlugin> logger)
{
_logger = logger;
- _eventManager = eventManager;
}
public override ValueTask EnableAsync()
{
_logger.LogInformation("Example is being enabled.");
-
- _cancel = new[]
- {
- _eventManager.RegisterListener(new GameEventListener()),
- _eventManager.RegisterListener(new PlayerEventListener()),
- _eventManager.RegisterListener(new MeetingEventListener())
- };
-
return default;
}
public override ValueTask DisableAsync()
{
_logger.LogInformation("Example is being disabled.");
-
- foreach (var c in _cancel)
- {
- c.Dispose();
- }
-
return default;
}
}
--- /dev/null
+using Impostor.Api.Events;
+using Impostor.Api.Plugins;
+using Impostor.Plugins.Example.Handlers;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Hosting;
+
+namespace Impostor.Plugins.Example
+{
+ public class ExamplePluginStartup : IPluginStartup
+ {
+ public void ConfigureHost(IHostBuilder host)
+ {
+ }
+
+ public void ConfigureServices(IServiceCollection services)
+ {
+ services.AddSingleton<IEventListener, GameEventListener>();
+ services.AddSingleton<IEventListener, PlayerEventListener>();
+ services.AddSingleton<IEventListener, MeetingEventListener>();
+ }
+ }
+}
using Impostor.Api.Events;
using Impostor.Api.Events.Player;
using Impostor.Api.Innersloth.Customization;
+using Microsoft.Extensions.Logging;
namespace Impostor.Plugins.Example.Handlers
{
{
private static readonly Random Random = new Random();
+ private readonly ILogger<PlayerEventListener> _logger;
+
+ public PlayerEventListener(ILogger<PlayerEventListener> logger)
+ {
+ _logger = logger;
+ }
+
[EventListener]
public void OnPlayerSpawned(IPlayerSpawnedEvent e)
{
- Console.WriteLine(e.PlayerControl.PlayerInfo.PlayerName + " spawned");
+ _logger.LogDebug(e.PlayerControl.PlayerInfo.PlayerName + " spawned");
// Need to make a local copy because it might be possible that
// the event gets changed after being handled.
var clientPlayer = e.ClientPlayer;
var playerControl = e.PlayerControl;
+ /*
Task.Run(async () =>
{
Console.WriteLine("Starting player task.");
await Task.Delay(TimeSpan.FromMilliseconds(5000));
}
- Console.WriteLine("Stopping player task.");
+ _logger.LogDebug("Stopping player task.");
});
+ */
}
[EventListener]
public void OnPlayerDestroyed(IPlayerDestroyedEvent e)
{
- Console.WriteLine(e.PlayerControl.PlayerInfo.PlayerName + " destroyed");
+ _logger.LogDebug(e.PlayerControl.PlayerInfo.PlayerName + " destroyed");
}
[EventListener]
public async ValueTask OnPlayerChat(IPlayerChatEvent e)
{
- Console.WriteLine(e.PlayerControl.PlayerInfo.PlayerName + " said " + e.Message);
+ _logger.LogDebug(e.PlayerControl.PlayerInfo.PlayerName + " said " + e.Message);
if (e.Message == "test")
{
await e.PlayerControl.SetNameAsync(e.Message);
await e.PlayerControl.SendChatAsync(e.Message);
}
+
+ [EventListener]
+ public void OnPlayerReportedBodyEvent(IPlayerReportedBodyEvent e)
+ {
+ _logger.LogDebug("Player reported body");
+ }
}
}
</PropertyGroup>
<ItemGroup>
- <ProjectReference Include="..\Impostor.Api\Impostor.Api.csproj"/>
+ <ProjectReference Include="..\Impostor.Api\Impostor.Api.csproj" />
</ItemGroup>
</Project>
{
foreach (var disposable in _disposables)
{
- disposable.Dispose();
+ disposable?.Dispose();
}
}
}
-}
\ No newline at end of file
+}