]> git.deb.at Git - rhonda/impostor.git/commitdiff
Add meeting events
authorAeonLucid <aeonlucid@outlook.com>
Sat, 24 Oct 2020 23:29:58 +0000 (01:29 +0200)
committerAeonLucid <aeonlucid@outlook.com>
Sat, 24 Oct 2020 23:29:58 +0000 (01:29 +0200)
src/Impostor.Api/Events/Game/MeetingEndedEvent.cs [new file with mode: 0644]
src/Impostor.Api/Events/Game/MeetingStartedEvent.cs [new file with mode: 0644]
src/Impostor.Api/Net/Inner/Objects/IInnerMeetingHud.cs [new file with mode: 0644]
src/Impostor.Plugins.Example/ExamplePlugin.cs
src/Impostor.Plugins.Example/Handlers/MeetingEventListener.cs [new file with mode: 0644]
src/Impostor.Plugins.Example/Impostor.Plugins.Example.csproj
src/Impostor.Server/Impostor.Server.csproj
src/Impostor.Server/Net/Inner/Objects/Components/InnerCustomNetworkTransform.cs
src/Impostor.Server/Net/Inner/Objects/InnerMeetingHud.Api.cs [new file with mode: 0644]
src/Impostor.Server/Net/Inner/Objects/InnerMeetingHud.cs
src/Impostor.Server/Net/State/Game.Data.cs

diff --git a/src/Impostor.Api/Events/Game/MeetingEndedEvent.cs b/src/Impostor.Api/Events/Game/MeetingEndedEvent.cs
new file mode 100644 (file)
index 0000000..01be941
--- /dev/null
@@ -0,0 +1,18 @@
+using Impostor.Api.Games;
+using Impostor.Api.Net.Inner.Objects;
+
+namespace Impostor.Api.Events
+{
+    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
diff --git a/src/Impostor.Api/Events/Game/MeetingStartedEvent.cs b/src/Impostor.Api/Events/Game/MeetingStartedEvent.cs
new file mode 100644 (file)
index 0000000..1265b5b
--- /dev/null
@@ -0,0 +1,18 @@
+using Impostor.Api.Games;
+using Impostor.Api.Net.Inner.Objects;
+
+namespace Impostor.Api.Events
+{
+    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
diff --git a/src/Impostor.Api/Net/Inner/Objects/IInnerMeetingHud.cs b/src/Impostor.Api/Net/Inner/Objects/IInnerMeetingHud.cs
new file mode 100644 (file)
index 0000000..2976486
--- /dev/null
@@ -0,0 +1,7 @@
+namespace Impostor.Api.Net.Inner.Objects
+{
+    public interface IInnerMeetingHud
+    {
+        
+    }
+}
\ No newline at end of file
index 8f75cc98d2a703d72e341978fe050213c488d3e9..1482cd3acddb02aa57bba180ba2d5a512cedeb5c 100644 (file)
@@ -21,6 +21,7 @@ namespace Impostor.Plugins.Example
 
             eventManager.RegisterListener(new GameEventListener());
             eventManager.RegisterListener(new PlayerEventListener());
+            eventManager.RegisterListener(new MeetingEventListener());
         }
 
         public override ValueTask EnableAsync()
diff --git a/src/Impostor.Plugins.Example/Handlers/MeetingEventListener.cs b/src/Impostor.Plugins.Example/Handlers/MeetingEventListener.cs
new file mode 100644 (file)
index 0000000..1b98c41
--- /dev/null
@@ -0,0 +1,20 @@
+using System;
+using Impostor.Api.Events;
+
+namespace Impostor.Plugins.Example.Handlers
+{
+    public class MeetingEventListener : IEventListener
+    {
+        [EventListener]
+        public void OnMeetingStarted(MeetingStartedEvent e)
+        {
+            Console.WriteLine("Meeting > started");
+        }
+
+        [EventListener]
+        public void OnMeetingEnded(MeetingEndedEvent e)
+        {
+            Console.WriteLine("Meeting > ended");
+        }
+    }
+}
\ No newline at end of file
index 5f88c1ccaf7051d4b337d29cc2c3211ed52f87dd..582a9e801f4e56592d8b85b0fae4321a52aeda41 100644 (file)
@@ -5,6 +5,6 @@
     </PropertyGroup>
 
     <ItemGroup>
-        <ProjectReference Include="..\Impostor.Api\Impostor.Api.csproj"/>
+        <ProjectReference Include="..\Impostor.Api\Impostor.Api.csproj" />
     </ItemGroup>
 </Project>
index 4dcf406c92dc7b4e519230ef2f1bd4fe032b8cd5..a1fdf6f812c46db45eda7fd18b666cd25c0af35e 100644 (file)
@@ -9,6 +9,7 @@
         <IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
         <ApplicationIcon>icon.ico</ApplicationIcon>
         <CodeAnalysisRuleSet>ProjectRules.ruleset</CodeAnalysisRuleSet>
+        <Nullable>enable</Nullable>
     </PropertyGroup>
 
     <PropertyGroup>
index c621add3ef2c84646865d482b67945c9546cfc7d..d8e345f02798e2313a0d132d7fe6b672d202c2a1 100644 (file)
@@ -1,5 +1,4 @@
-using System;
-using System.Numerics;
+using System.Numerics;
 using System.Threading.Tasks;
 using Impostor.Api;
 using Impostor.Api.Innersloth;
@@ -53,7 +52,7 @@ namespace Impostor.Server.Net.Inner.Objects.Components
             return new Vector2(XRange.Lerp(v1), YRange.Lerp(v2));
         }
 
-        public override async ValueTask HandleRpc(ClientPlayer sender, ClientPlayer? target, RpcCalls call, IMessageReader reader)
+        public override ValueTask HandleRpc(ClientPlayer sender, ClientPlayer? target, RpcCalls call, IMessageReader reader)
         {
             if (call == RpcCalls.SnapTo)
             {
@@ -78,6 +77,8 @@ namespace Impostor.Server.Net.Inner.Objects.Components
             {
                 _logger.LogWarning("{0}: Unknown rpc call {1}", nameof(InnerCustomNetworkTransform), call);
             }
+
+            return default;
         }
 
         public override bool Serialize(IMessageWriter writer, bool initialState)
diff --git a/src/Impostor.Server/Net/Inner/Objects/InnerMeetingHud.Api.cs b/src/Impostor.Server/Net/Inner/Objects/InnerMeetingHud.Api.cs
new file mode 100644 (file)
index 0000000..5d120c5
--- /dev/null
@@ -0,0 +1,9 @@
+using Impostor.Api.Net.Inner.Objects;
+
+namespace Impostor.Server.Net.Inner.Objects
+{
+    internal partial class InnerMeetingHud : IInnerMeetingHud
+    {
+
+    }
+}
\ No newline at end of file
index 42c951871ffa2a6aa2985eb04550283b3a4ffa6c..439a050ad30e3cacde7eac0b55e1f0600e701714 100644 (file)
@@ -2,6 +2,8 @@
 using System.Linq;
 using System.Threading.Tasks;
 using Impostor.Api;
+using Impostor.Api.Events;
+using Impostor.Api.Events.Managers;
 using Impostor.Api.Net;
 using Impostor.Api.Net.Messages;
 using Impostor.Server.Net.State;
@@ -12,13 +14,15 @@ namespace Impostor.Server.Net.Inner.Objects
     internal partial class InnerMeetingHud : InnerNetObject
     {
         private readonly ILogger<InnerMeetingHud> _logger;
+        private readonly IEventManager _eventManager;
         private readonly Game _game;
         private readonly GameNet _gameNet;
         private PlayerVoteArea[] _playerStates;
 
-        public InnerMeetingHud(ILogger<InnerMeetingHud> logger, Game game)
+        public InnerMeetingHud(ILogger<InnerMeetingHud> logger, IEventManager eventManager, Game game)
         {
             _logger = logger;
+            _eventManager = eventManager;
             _game = game;
             _gameNet = game.GameNet;
             _playerStates = null;
@@ -40,13 +44,14 @@ namespace Impostor.Server.Net.Inner.Objects
                 .ToArray();
         }
 
-        public override ValueTask HandleRpc(ClientPlayer sender, ClientPlayer? target, RpcCalls call,
-            IMessageReader reader)
+        public override async ValueTask HandleRpc(ClientPlayer sender, ClientPlayer? target, RpcCalls call, IMessageReader reader)
         {
             switch (call)
             {
                 case RpcCalls.Close:
                 {
+                    Console.WriteLine("CLOSEEEE MEETING");
+
                     if (!sender.IsHost)
                     {
                         throw new ImpostorCheatException($"Client sent {nameof(RpcCalls.Close)} but was not a host");
@@ -75,6 +80,9 @@ namespace Impostor.Server.Net.Inner.Objects
                     var states = reader.ReadBytesAndSize();
                     var playerId = reader.ReadByte();
                     var tie = reader.ReadBoolean();
+
+                    await _eventManager.CallAsync(new MeetingEndedEvent(_game, this));
+
                     break;
                 }
 
@@ -108,8 +116,6 @@ namespace Impostor.Server.Net.Inner.Objects
                     break;
                 }
             }
-
-            return default;
         }
 
         public override bool Serialize(IMessageWriter writer, bool initialState)
index f3a8ff961b6e0c41413d228b47cc5c83352196de..29d20691b3224f362f5cc0f7769baf3ba6ccf7b5 100644 (file)
@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.Threading;
 using System.Threading.Tasks;
 using Impostor.Api;
+using Impostor.Api.Events;
 using Impostor.Api.Events.Net;
 using Impostor.Api.Innersloth;
 using Impostor.Api.Net.Messages;
@@ -103,6 +104,12 @@ namespace Impostor.Server.Net.State
 
                     break;
                 }
+
+                case InnerMeetingHud meetingHud:
+                {
+                    await _eventManager.CallAsync(new MeetingStartedEvent(this, meetingHud));
+                    break;
+                }
             }
         }