]> git.deb.at Git - rhonda/impostor.git/commitdiff
Add TaskTypes enum, PlayerCompletedTaskEvent, and updated ITaskInfo to use TaskTypes...
authorAlexejheroYTB <alexejhero@gmail.com>
Sun, 15 Nov 2020 22:40:38 +0000 (00:40 +0200)
committerGitHub <noreply@github.com>
Sun, 15 Nov 2020 22:40:38 +0000 (23:40 +0100)
src/Impostor.Api/Events/Game/Player/IPlayerCompletedTaskEvent.cs [new file with mode: 0644]
src/Impostor.Api/Innersloth/TaskTypes.cs [new file with mode: 0644]
src/Impostor.Api/Net/Inner/Objects/ITaskInfo.cs
src/Impostor.Server/Events/Game/Player/PlayerCompletedTaskEvent.cs [new file with mode: 0644]
src/Impostor.Server/Net/Inner/Objects/InnerGameData.TaskInfo.cs
src/Impostor.Server/Net/Inner/Objects/InnerGameData.cs
src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs
src/Impostor.Server/Net/Inner/Objects/Systems/ShipStatus/DoorsSystemType.cs

diff --git a/src/Impostor.Api/Events/Game/Player/IPlayerCompletedTaskEvent.cs b/src/Impostor.Api/Events/Game/Player/IPlayerCompletedTaskEvent.cs
new file mode 100644 (file)
index 0000000..593c53d
--- /dev/null
@@ -0,0 +1,9 @@
+using Impostor.Api.Innersloth;
+
+namespace Impostor.Api.Events.Player
+{
+    public interface IPlayerCompletedTaskEvent : IPlayerEvent
+    {
+        TaskTypes Task { get; }
+    }
+}
\ No newline at end of file
diff --git a/src/Impostor.Api/Innersloth/TaskTypes.cs b/src/Impostor.Api/Innersloth/TaskTypes.cs
new file mode 100644 (file)
index 0000000..8b15354
--- /dev/null
@@ -0,0 +1,49 @@
+namespace Impostor.Api.Innersloth
+{
+    public enum TaskTypes : uint
+    {
+        SubmitScan = 0,
+        PrimeShields = 1,
+        FuelEngines = 2,
+        ChartCourse = 3,
+        StartReactor = 4,
+        SwipeCard = 5,
+        ClearAsteroids = 6,
+        UploadData = 7,
+        InspectSample = 8,
+        EmptyChute = 9,
+        EmptyGarbage = 10,
+        AlignEngineOutput = 11,
+        FixWiring = 12,
+        CalibrateDistributor = 13,
+        DivertPower = 14,
+        UnlockManifolds = 15,
+        ResetReactor = 16,
+        FixLights = 17,
+        Filter = 18,
+        FixComms = 19,
+        RestoreOxy = 20,
+        StabilizeSteering = 21,
+        AssembleArtifact = 22,
+        SortSamples = 23,
+        MeasureWeather = 24,
+        EnterIdCode = 25,
+        BuyBeverage = 26,
+        ProcessData = 27,
+        RunDiagnostics = 28,
+        WaterPlants = 29,
+        MonitorOxygen = 30,
+        StoreArtifact = 31,
+        FillCanisters = 32,
+        ActivateWeatherNodes = 33,
+        InsertKeys = 34,
+        ResetSeismic = 35,
+        ScanBoardingPass = 36,
+        OpenWaterways = 37,
+        ReplaceWaterJug = 38,
+        RepairDrill = 39,
+        AlignTelescope = 40,
+        RecordTemperature = 41,
+        RebootWifi = 42,
+    }
+}
\ No newline at end of file
index c80ee07846740d0b842066ef2dbc110e43b618f4..3a6f07531724e2ec6a980f2f82f46aaa3701e843 100644 (file)
@@ -1,10 +1,11 @@
-using Impostor.Api.Net.Messages;
+using Impostor.Api.Innersloth;
+using Impostor.Api.Net.Messages;
 
 namespace Impostor.Api.Net.Inner.Objects
 {
     public interface ITaskInfo
     {
-        uint Id { get; }
+        TaskTypes Type { get; }
         
         bool Complete { get; }
     }
diff --git a/src/Impostor.Server/Events/Game/Player/PlayerCompletedTaskEvent.cs b/src/Impostor.Server/Events/Game/Player/PlayerCompletedTaskEvent.cs
new file mode 100644 (file)
index 0000000..f0f6ab7
--- /dev/null
@@ -0,0 +1,27 @@
+using Impostor.Api.Events.Player;
+using Impostor.Api.Games;
+using Impostor.Api.Innersloth;
+using Impostor.Api.Net;
+using Impostor.Api.Net.Inner.Objects;
+
+namespace Impostor.Server.Events.Player
+{
+    public class PlayerCompletedTaskEvent : IPlayerCompletedTaskEvent
+    {
+        public PlayerCompletedTaskEvent(IGame game, IClientPlayer clientPlayer, IInnerPlayerControl playerControl, uint taskID)
+        {
+            Game = game;
+            ClientPlayer = clientPlayer;
+            PlayerControl = playerControl;
+            Task = (TaskTypes)taskID;
+        }
+
+        public IGame Game { get; }
+
+        public IClientPlayer ClientPlayer { get; }
+
+        public IInnerPlayerControl PlayerControl { get; }
+
+        public TaskTypes Task { get; }
+    }
+}
\ No newline at end of file
index 40fcbb4c3850996ef08707eb20b7bdf4e90e0663..b4aa46a43cb46566c876912460657ca9f06f62c0 100644 (file)
@@ -1,4 +1,5 @@
-using Impostor.Api.Net.Inner.Objects;
+using Impostor.Api.Innersloth;
+using Impostor.Api.Net.Inner.Objects;
 using Impostor.Api.Net.Messages;
 
 namespace Impostor.Server.Net.Inner.Objects
@@ -7,19 +8,19 @@ namespace Impostor.Server.Net.Inner.Objects
     {
         public class TaskInfo : ITaskInfo
         {
-            public uint Id { get; internal set; }
+            public TaskTypes Type { get; internal set; }
 
             public bool Complete { get; internal set; }
 
             public void Serialize(IMessageWriter writer)
             {
-                writer.WritePacked(Id);
+                writer.WritePacked((uint)Type);
                 writer.Write(Complete);
             }
 
             public void Deserialize(IMessageReader reader)
             {
-                this.Id = reader.ReadPackedUInt32();
+                this.Type = (TaskTypes)reader.ReadPackedUInt32();
                 this.Complete = reader.ReadBoolean();
             }
         }
index ca3d9e01b73658f5430d4a3902c8f395b8a63716..af650e3f02b9c6446e979648f79a7542008f1807 100644 (file)
@@ -3,6 +3,7 @@ using System.Collections.Concurrent;
 using System.Collections.Generic;
 using System.Threading.Tasks;
 using Impostor.Api;
+using Impostor.Api.Innersloth;
 using Impostor.Api.Net;
 using Impostor.Api.Net.Inner.Objects;
 using Impostor.Api.Net.Messages;
@@ -176,7 +177,7 @@ namespace Impostor.Server.Net.Inner.Objects
 
             foreach (var taskId in taskTypeIds.ToArray())
             {
-                player.Tasks.Add(new TaskInfo { Id = taskId });
+                player.Tasks.Add(new TaskInfo { Type = (TaskTypes)taskId });
             }
         }
     }
index 14b268706308c2db20a732fed18d9134918eb220..4bfdfe4220171f0da6a20ce162e16d62737ed19d 100644 (file)
@@ -80,7 +80,8 @@ namespace Impostor.Server.Net.Inner.Objects
                         throw new ImpostorCheatException($"Client sent {nameof(RpcCalls.CompleteTask)} to a specific player instead of broadcast");
                     }
 
-                    var index = reader.ReadPackedUInt32();
+                    var taskId = reader.ReadPackedUInt32();
+                    await _eventManager.CallAsync(new PlayerCompletedTaskEvent(_game, sender, this, taskId));
                     break;
                 }
 
index 712b00afce514aea20dee2dc3dd570b288b87397..64b1f5f016543c95487eee1217eb081c0700bb51 100644 (file)
@@ -13,7 +13,6 @@ namespace Impostor.Server.Net.Inner.Objects.Systems.ShipStatus
 
         public DoorsSystemType(IGame game)
         {
-            // TODO: Check
             var doorCount = game.Options.Map switch
             {
                 MapTypes.Skeld => 13,