]> git.deb.at Git - rhonda/impostor.git/commitdiff
Rework vent api
authorjs6pak <kubastaron@hotmail.com>
Tue, 6 Apr 2021 18:23:44 +0000 (20:23 +0200)
committerjs6pak <kubastaron@hotmail.com>
Tue, 6 Apr 2021 18:51:06 +0000 (20:51 +0200)
19 files changed:
src/Impostor.Api/Events/Game/Player/IPlayerVentEvent.cs
src/Impostor.Api/Innersloth/Maps/AirshipData.cs [new file with mode: 0644]
src/Impostor.Api/Innersloth/Maps/MapData.cs [new file with mode: 0644]
src/Impostor.Api/Innersloth/Maps/MiraData.cs [new file with mode: 0644]
src/Impostor.Api/Innersloth/Maps/PolusData.cs [new file with mode: 0644]
src/Impostor.Api/Innersloth/Maps/SkeldData.cs [new file with mode: 0644]
src/Impostor.Api/Innersloth/Maps/Vents/AirshipVent.cs [new file with mode: 0644]
src/Impostor.Api/Innersloth/Maps/Vents/MiraVent.cs [new file with mode: 0644]
src/Impostor.Api/Innersloth/Maps/Vents/PolusVent.cs [new file with mode: 0644]
src/Impostor.Api/Innersloth/Maps/Vents/SkeldVent.cs [new file with mode: 0644]
src/Impostor.Api/Innersloth/Vent.cs [new file with mode: 0644]
src/Impostor.Api/Innersloth/VentLocation.cs [deleted file]
src/Impostor.Server/Events/Game/Player/PlayerVentEvent.cs
src/Impostor.Server/Net/Inner/Objects/Components/InnerPlayerPhysics.cs
src/Impostor.Server/Net/Inner/Objects/ShipStatus/InnerAirshipStatus.cs
src/Impostor.Server/Net/Inner/Objects/ShipStatus/InnerMiraShipStatus.cs
src/Impostor.Server/Net/Inner/Objects/ShipStatus/InnerPolusShipStatus.cs
src/Impostor.Server/Net/Inner/Objects/ShipStatus/InnerShipStatus.cs
src/Impostor.Server/Net/Inner/Objects/ShipStatus/InnerSkeldShipStatus.cs

index 81f178bc75ad0294b93594f5fc778c9e1191d953..b1d6d8bd21ee10a3c521dad84c583621be986728 100644 (file)
@@ -7,7 +7,7 @@ namespace Impostor.Api.Events.Player
         /// <summary>
         ///     Gets get the id of the used vent.
         /// </summary>
-        public VentLocation VentId { get; }
+        public Vent Vent { get; }
 
         /// <summary>
         ///     Gets a value indicating whether the vent was entered or exited.
diff --git a/src/Impostor.Api/Innersloth/Maps/AirshipData.cs b/src/Impostor.Api/Innersloth/Maps/AirshipData.cs
new file mode 100644 (file)
index 0000000..04657d0
--- /dev/null
@@ -0,0 +1,49 @@
+using System.Collections.Generic;
+using System.Linq;
+using System.Numerics;
+using Impostor.Api.Innersloth.Maps.Vents;
+
+namespace Impostor.Api.Innersloth.Maps
+{
+    public class AirshipData : MapData
+    {
+        public AirshipData()
+        {
+            Vents = new[]
+            {
+                new AirshipVent(AirshipVent.Ids.Vault, new Vector2(-12.6322f, 8.4735f)),
+                new AirshipVent(AirshipVent.Ids.Cockpit, new Vector2(-22.099f, -1.512f)),
+                new AirshipVent(AirshipVent.Ids.ViewingDeck, new Vector2(-15.659f, -11.6991f)),
+                new AirshipVent(AirshipVent.Ids.EngineRoom, new Vector2(0.203f, -2.5361f)),
+                new AirshipVent(AirshipVent.Ids.Kitchen, new Vector2(-2.6019f, -9.338f)),
+                new AirshipVent(AirshipVent.Ids.MainHallBottom, new Vector2(7.021f, -3.730999f)),
+                new AirshipVent(AirshipVent.Ids.GapRight, new Vector2(9.814f, 3.206f)),
+                new AirshipVent(AirshipVent.Ids.GapLeft, new Vector2(12.663f, 5.922f)),
+                new AirshipVent(AirshipVent.Ids.MainHallTop, new Vector2(3.605f, 6.923f)),
+                new AirshipVent(AirshipVent.Ids.Showers, new Vector2(23.9869f, -1.386f)),
+                new AirshipVent(AirshipVent.Ids.Records, new Vector2(23.2799f, 8.259998f)),
+                new AirshipVent(AirshipVent.Ids.CargoBay, new Vector2(30.4409f, -3.577f)),
+            }.ToDictionary(x => x.Id, x => (Vent)x);
+
+            ConnectVents(AirshipVent.Ids.Vault, left: AirshipVent.Ids.Cockpit);
+            ConnectVents(AirshipVent.Ids.Cockpit, left: AirshipVent.Ids.Vault, right: AirshipVent.Ids.ViewingDeck);
+            ConnectVents(AirshipVent.Ids.ViewingDeck, left: AirshipVent.Ids.Cockpit);
+            ConnectVents(AirshipVent.Ids.EngineRoom, left: AirshipVent.Ids.Kitchen, right: AirshipVent.Ids.MainHallBottom);
+            ConnectVents(AirshipVent.Ids.Kitchen, left: AirshipVent.Ids.EngineRoom, right: AirshipVent.Ids.MainHallBottom);
+            ConnectVents(AirshipVent.Ids.MainHallBottom, left: AirshipVent.Ids.EngineRoom, right: AirshipVent.Ids.Kitchen);
+            ConnectVents(AirshipVent.Ids.GapRight, left: AirshipVent.Ids.MainHallTop, right: AirshipVent.Ids.GapLeft);
+            ConnectVents(AirshipVent.Ids.GapLeft, left: AirshipVent.Ids.MainHallTop, right: AirshipVent.Ids.GapRight);
+            ConnectVents(AirshipVent.Ids.MainHallTop, left: AirshipVent.Ids.GapLeft, right: AirshipVent.Ids.GapRight);
+            ConnectVents(AirshipVent.Ids.Showers, left: AirshipVent.Ids.Records, right: AirshipVent.Ids.CargoBay);
+            ConnectVents(AirshipVent.Ids.Records, left: AirshipVent.Ids.Showers, right: AirshipVent.Ids.CargoBay);
+            ConnectVents(AirshipVent.Ids.CargoBay, left: AirshipVent.Ids.Showers, right: AirshipVent.Ids.Records);
+        }
+
+        public override IReadOnlyDictionary<int, Vent> Vents { get; }
+
+        private void ConnectVents(AirshipVent.Ids vent, AirshipVent.Ids? left = null, AirshipVent.Ids? center = null, AirshipVent.Ids? right = null)
+        {
+            ConnectVents((int)vent, (int?)left, (int?)center, (int?)right);
+        }
+    }
+}
diff --git a/src/Impostor.Api/Innersloth/Maps/MapData.cs b/src/Impostor.Api/Innersloth/Maps/MapData.cs
new file mode 100644 (file)
index 0000000..53428f5
--- /dev/null
@@ -0,0 +1,24 @@
+using System.Collections.Generic;
+
+namespace Impostor.Api.Innersloth.Maps
+{
+    public abstract class MapData
+    {
+        public static IReadOnlyDictionary<MapTypes, MapData> Maps { get; } = new Dictionary<MapTypes, MapData>
+        {
+            [MapTypes.Skeld] = new SkeldData(),
+            [MapTypes.MiraHQ] = new MiraData(),
+            [MapTypes.Polus] = new PolusData(),
+            [MapTypes.Airship] = new AirshipData(),
+        };
+
+        public abstract IReadOnlyDictionary<int, Vent> Vents { get; }
+
+        protected void ConnectVents(int vent, int? left = null, int? center = null, int? right = null)
+        {
+            Vents[vent].Left = left != null ? Vents[left.Value] : null;
+            Vents[vent].Center = center != null ? Vents[center.Value] : null;
+            Vents[vent].Right = right != null ? Vents[right.Value] : null;
+        }
+    }
+}
diff --git a/src/Impostor.Api/Innersloth/Maps/MiraData.cs b/src/Impostor.Api/Innersloth/Maps/MiraData.cs
new file mode 100644 (file)
index 0000000..41f2c61
--- /dev/null
@@ -0,0 +1,47 @@
+using System.Collections.Generic;
+using System.Linq;
+using System.Numerics;
+using Impostor.Api.Innersloth.Maps.Vents;
+
+namespace Impostor.Api.Innersloth.Maps
+{
+    public class MiraData : MapData
+    {
+        public MiraData()
+        {
+            Vents = new[]
+            {
+                new MiraVent(MiraVent.Ids.Balcony, new Vector2(23.77f, -1.94f)),
+                new MiraVent(MiraVent.Ids.Cafeteria, new Vector2(23.9f, 7.18f)),
+                new MiraVent(MiraVent.Ids.Reactor, new Vector2(0.4800001f, 10.697f)),
+                new MiraVent(MiraVent.Ids.Laboratory, new Vector2(11.606f, 13.816f)),
+                new MiraVent(MiraVent.Ids.Office, new Vector2(13.28f, 20.13f)),
+                new MiraVent(MiraVent.Ids.Admin, new Vector2(22.39f, 17.23f)),
+                new MiraVent(MiraVent.Ids.Greenhouse, new Vector2(17.85f, 25.23f)),
+                new MiraVent(MiraVent.Ids.Medbay, new Vector2(15.41f, -1.82f)),
+                new MiraVent(MiraVent.Ids.Decontamination, new Vector2(6.83f, 3.145f)),
+                new MiraVent(MiraVent.Ids.LockerRoom, new Vector2(4.29f, 0.5299997f)),
+                new MiraVent(MiraVent.Ids.Launchpad, new Vector2(-6.18f, 3.56f)),
+            }.ToDictionary(x => x.Id, x => (Vent)x);
+
+            ConnectVents(MiraVent.Ids.Balcony, left: MiraVent.Ids.Medbay, right: MiraVent.Ids.Cafeteria);
+            ConnectVents(MiraVent.Ids.Cafeteria, left: MiraVent.Ids.Admin, right: MiraVent.Ids.Balcony);
+            ConnectVents(MiraVent.Ids.Reactor, left: MiraVent.Ids.Laboratory, center: MiraVent.Ids.Decontamination, right: MiraVent.Ids.Launchpad);
+            ConnectVents(MiraVent.Ids.Laboratory, left: MiraVent.Ids.Reactor, center: MiraVent.Ids.Decontamination, right: MiraVent.Ids.Office);
+            ConnectVents(MiraVent.Ids.Office, left: MiraVent.Ids.Laboratory, center: MiraVent.Ids.Admin, right: MiraVent.Ids.Greenhouse);
+            ConnectVents(MiraVent.Ids.Admin, left: MiraVent.Ids.Greenhouse, center: MiraVent.Ids.Cafeteria, right: MiraVent.Ids.Office);
+            ConnectVents(MiraVent.Ids.Greenhouse, left: MiraVent.Ids.Admin, right: MiraVent.Ids.Office);
+            ConnectVents(MiraVent.Ids.Medbay, left: MiraVent.Ids.Balcony, right: MiraVent.Ids.LockerRoom);
+            ConnectVents(MiraVent.Ids.Decontamination, left: MiraVent.Ids.Reactor, center: MiraVent.Ids.LockerRoom, right: MiraVent.Ids.Laboratory);
+            ConnectVents(MiraVent.Ids.LockerRoom, left: MiraVent.Ids.Medbay, center: MiraVent.Ids.Launchpad, right: MiraVent.Ids.Decontamination);
+            ConnectVents(MiraVent.Ids.Launchpad, left: MiraVent.Ids.Reactor, right: MiraVent.Ids.LockerRoom);
+        }
+
+        public override IReadOnlyDictionary<int, Vent> Vents { get; }
+
+        private void ConnectVents(MiraVent.Ids vent, MiraVent.Ids? left = null, MiraVent.Ids? center = null, MiraVent.Ids? right = null)
+        {
+            ConnectVents((int)vent, (int?)left, (int?)center, (int?)right);
+        }
+    }
+}
diff --git a/src/Impostor.Api/Innersloth/Maps/PolusData.cs b/src/Impostor.Api/Innersloth/Maps/PolusData.cs
new file mode 100644 (file)
index 0000000..5748d26
--- /dev/null
@@ -0,0 +1,49 @@
+using System.Collections.Generic;
+using System.Linq;
+using System.Numerics;
+using Impostor.Api.Innersloth.Maps.Vents;
+
+namespace Impostor.Api.Innersloth.Maps
+{
+    public class PolusData : MapData
+    {
+        public PolusData()
+        {
+            Vents = new[]
+            {
+                new PolusVent(PolusVent.Ids.Security, new Vector2(1.929f, -9.558001f)),
+                new PolusVent(PolusVent.Ids.Electrical, new Vector2(6.9f, -14.41f)),
+                new PolusVent(PolusVent.Ids.O2, new Vector2(3.51f, -16.58f)),
+                new PolusVent(PolusVent.Ids.Communications, new Vector2(12.304f, -18.898f)),
+                new PolusVent(PolusVent.Ids.Office, new Vector2(16.379f, -19.599f)),
+                new PolusVent(PolusVent.Ids.Admin, new Vector2(20.089f, -25.517f)),
+                new PolusVent(PolusVent.Ids.Laboratory, new Vector2(32.963f, -9.526f)),
+                new PolusVent(PolusVent.Ids.Lava, new Vector2(30.907f, -11.86f)),
+                new PolusVent(PolusVent.Ids.Storage, new Vector2(22f, -12.19f)),
+                new PolusVent(PolusVent.Ids.RightStabilizer, new Vector2(24.02f, -8.39f)),
+                new PolusVent(PolusVent.Ids.LeftStabilizer, new Vector2(9.64f, -7.72f)),
+                new PolusVent(PolusVent.Ids.OutsideAdmin, new Vector2(18.93f, -24.85f)),
+            }.ToDictionary(x => x.Id, x => (Vent)x);
+
+            ConnectVents(PolusVent.Ids.Security, left: PolusVent.Ids.O2, right: PolusVent.Ids.Electrical);
+            ConnectVents(PolusVent.Ids.Electrical, left: PolusVent.Ids.O2, right: PolusVent.Ids.Security);
+            ConnectVents(PolusVent.Ids.O2, left: PolusVent.Ids.Electrical, right: PolusVent.Ids.Security);
+            ConnectVents(PolusVent.Ids.Communications, left: PolusVent.Ids.Storage, right: PolusVent.Ids.Office);
+            ConnectVents(PolusVent.Ids.Office, left: PolusVent.Ids.Communications, right: PolusVent.Ids.Storage);
+            ConnectVents(PolusVent.Ids.Admin, left: PolusVent.Ids.OutsideAdmin, right: PolusVent.Ids.Lava);
+            ConnectVents(PolusVent.Ids.Laboratory, right: PolusVent.Ids.Lava);
+            ConnectVents(PolusVent.Ids.Lava, left: PolusVent.Ids.Laboratory, right: PolusVent.Ids.Admin);
+            ConnectVents(PolusVent.Ids.Storage, left: PolusVent.Ids.Communications, right: PolusVent.Ids.Office);
+            ConnectVents(PolusVent.Ids.RightStabilizer, left: PolusVent.Ids.LeftStabilizer);
+            ConnectVents(PolusVent.Ids.LeftStabilizer, left: PolusVent.Ids.RightStabilizer);
+            ConnectVents(PolusVent.Ids.OutsideAdmin, right: PolusVent.Ids.Admin);
+        }
+
+        public override IReadOnlyDictionary<int, Vent> Vents { get; }
+
+        private void ConnectVents(PolusVent.Ids vent, PolusVent.Ids? left = null, PolusVent.Ids? center = null, PolusVent.Ids? right = null)
+        {
+            ConnectVents((int)vent, (int?)left, (int?)center, (int?)right);
+        }
+    }
+}
diff --git a/src/Impostor.Api/Innersloth/Maps/SkeldData.cs b/src/Impostor.Api/Innersloth/Maps/SkeldData.cs
new file mode 100644 (file)
index 0000000..b0bb95d
--- /dev/null
@@ -0,0 +1,53 @@
+using System.Collections.Generic;
+using System.Linq;
+using System.Numerics;
+using Impostor.Api.Innersloth.Maps.Vents;
+
+namespace Impostor.Api.Innersloth.Maps
+{
+    public class SkeldData : MapData
+    {
+        public SkeldData()
+        {
+            Vents = new[]
+            {
+                new SkeldVent(SkeldVent.Ids.Admin, new Vector2(2.544f, -9.955201f)),
+                new SkeldVent(SkeldVent.Ids.RightHallway, new Vector2(9.384f, -6.438f)),
+                new SkeldVent(SkeldVent.Ids.Cafeteria, new Vector2(4.2588f, -0.276f)),
+                new SkeldVent(SkeldVent.Ids.Electrical, new Vector2(-9.7764f, -8.034f)),
+                new SkeldVent(SkeldVent.Ids.UpperEngine, new Vector2(-15.288f, 2.52f)),
+                new SkeldVent(SkeldVent.Ids.Security, new Vector2(-12.534f, -6.9492f)),
+                new SkeldVent(SkeldVent.Ids.Medbay, new Vector2(-10.608f, -4.176f)),
+                new SkeldVent(SkeldVent.Ids.Weapons, new Vector2(8.820001f, 3.324f)),
+                new SkeldVent(SkeldVent.Ids.LowerReactor, new Vector2(-20.796f, -6.9528f)),
+                new SkeldVent(SkeldVent.Ids.LowerEngine, new Vector2(-15.2508f, -13.656f)),
+                new SkeldVent(SkeldVent.Ids.Shields, new Vector2(9.5232f, -14.3376f)),
+                new SkeldVent(SkeldVent.Ids.UpperReactor, new Vector2(-21.876f, -3.0516f)),
+                new SkeldVent(SkeldVent.Ids.UpperNavigation, new Vector2(16.008f, -3.168f)),
+                new SkeldVent(SkeldVent.Ids.LowerNavigation, new Vector2(16.008f, -6.384f)),
+            }.ToDictionary(x => x.Id, x => (Vent)x);
+
+            ConnectVents(SkeldVent.Ids.Admin, left: SkeldVent.Ids.Cafeteria, right: SkeldVent.Ids.RightHallway);
+            ConnectVents(SkeldVent.Ids.RightHallway, left: SkeldVent.Ids.Admin, right: SkeldVent.Ids.Cafeteria);
+            ConnectVents(SkeldVent.Ids.Cafeteria, left: SkeldVent.Ids.Admin, right: SkeldVent.Ids.RightHallway);
+            ConnectVents(SkeldVent.Ids.Electrical, left: SkeldVent.Ids.Security, right: SkeldVent.Ids.Medbay);
+            ConnectVents(SkeldVent.Ids.UpperEngine, left: SkeldVent.Ids.UpperReactor);
+            ConnectVents(SkeldVent.Ids.Security, left: SkeldVent.Ids.Medbay, right: SkeldVent.Ids.Electrical);
+            ConnectVents(SkeldVent.Ids.Medbay, left: SkeldVent.Ids.Security, right: SkeldVent.Ids.Electrical);
+            ConnectVents(SkeldVent.Ids.Weapons, right: SkeldVent.Ids.UpperNavigation);
+            ConnectVents(SkeldVent.Ids.LowerReactor, left: SkeldVent.Ids.LowerEngine);
+            ConnectVents(SkeldVent.Ids.LowerEngine, left: SkeldVent.Ids.LowerReactor);
+            ConnectVents(SkeldVent.Ids.Shields, left: SkeldVent.Ids.LowerNavigation);
+            ConnectVents(SkeldVent.Ids.UpperReactor, left: SkeldVent.Ids.UpperEngine);
+            ConnectVents(SkeldVent.Ids.UpperNavigation, right: SkeldVent.Ids.Weapons);
+            ConnectVents(SkeldVent.Ids.LowerNavigation, right: SkeldVent.Ids.Shields);
+        }
+
+        public override IReadOnlyDictionary<int, Vent> Vents { get; }
+
+        private void ConnectVents(SkeldVent.Ids vent, SkeldVent.Ids? left = null, SkeldVent.Ids? center = null, SkeldVent.Ids? right = null)
+        {
+            ConnectVents((int)vent, (int?)left, (int?)center, (int?)right);
+        }
+    }
+}
diff --git a/src/Impostor.Api/Innersloth/Maps/Vents/AirshipVent.cs b/src/Impostor.Api/Innersloth/Maps/Vents/AirshipVent.cs
new file mode 100644 (file)
index 0000000..7605504
--- /dev/null
@@ -0,0 +1,27 @@
+using System.Numerics;
+
+namespace Impostor.Api.Innersloth.Maps.Vents
+{
+    public class AirshipVent : Vent
+    {
+        internal AirshipVent(Ids id, Vector2 position) : base((int)id, id.ToString(), position)
+        {
+        }
+
+        public enum Ids
+        {
+            Vault = 0,
+            Cockpit = 1,
+            ViewingDeck = 2,
+            EngineRoom = 3,
+            Kitchen = 4,
+            MainHallBottom = 5,
+            GapRight = 6,
+            GapLeft = 7,
+            MainHallTop = 8,
+            Showers = 9,
+            Records = 10,
+            CargoBay = 11,
+        }
+    }
+}
diff --git a/src/Impostor.Api/Innersloth/Maps/Vents/MiraVent.cs b/src/Impostor.Api/Innersloth/Maps/Vents/MiraVent.cs
new file mode 100644 (file)
index 0000000..775401a
--- /dev/null
@@ -0,0 +1,26 @@
+using System.Numerics;
+
+namespace Impostor.Api.Innersloth.Maps.Vents
+{
+    public class MiraVent : Vent
+    {
+        internal MiraVent(Ids id, Vector2 position) : base((int)id, id.ToString(), position)
+        {
+        }
+
+        public enum Ids
+        {
+            Balcony = 1,
+            Cafeteria = 2,
+            Reactor = 3,
+            Laboratory = 4,
+            Office = 5,
+            Admin = 6,
+            Greenhouse = 7,
+            Medbay = 8,
+            Decontamination = 9,
+            LockerRoom = 10,
+            Launchpad = 11,
+        }
+    }
+}
diff --git a/src/Impostor.Api/Innersloth/Maps/Vents/PolusVent.cs b/src/Impostor.Api/Innersloth/Maps/Vents/PolusVent.cs
new file mode 100644 (file)
index 0000000..8310af0
--- /dev/null
@@ -0,0 +1,27 @@
+using System.Numerics;
+
+namespace Impostor.Api.Innersloth.Maps.Vents
+{
+    public class PolusVent : Vent
+    {
+        internal PolusVent(Ids id, Vector2 position) : base((int)id, id.ToString(), position)
+        {
+        }
+
+        public enum Ids
+        {
+            Security = 0,
+            Electrical = 1,
+            O2 = 2,
+            Communications = 3,
+            Office = 4,
+            Admin = 5,
+            Laboratory = 6,
+            Lava = 7,
+            Storage = 8,
+            RightStabilizer = 9,
+            LeftStabilizer = 10,
+            OutsideAdmin = 11,
+        }
+    }
+}
diff --git a/src/Impostor.Api/Innersloth/Maps/Vents/SkeldVent.cs b/src/Impostor.Api/Innersloth/Maps/Vents/SkeldVent.cs
new file mode 100644 (file)
index 0000000..e670a8d
--- /dev/null
@@ -0,0 +1,29 @@
+using System.Numerics;
+
+namespace Impostor.Api.Innersloth.Maps.Vents
+{
+    public class SkeldVent : Vent
+    {
+        internal SkeldVent(Ids id, Vector2 position) : base((int)id, id.ToString(), position)
+        {
+        }
+
+        public enum Ids
+        {
+            Admin = 0,
+            RightHallway = 1,
+            Cafeteria = 2,
+            Electrical = 3,
+            UpperEngine = 4,
+            Security = 5,
+            Medbay = 6,
+            Weapons = 7,
+            LowerReactor = 8,
+            LowerEngine = 9,
+            Shields = 10,
+            UpperReactor = 11,
+            UpperNavigation = 12,
+            LowerNavigation = 13,
+        }
+    }
+}
diff --git a/src/Impostor.Api/Innersloth/Vent.cs b/src/Impostor.Api/Innersloth/Vent.cs
new file mode 100644 (file)
index 0000000..723207b
--- /dev/null
@@ -0,0 +1,26 @@
+using System.Numerics;
+
+namespace Impostor.Api.Innersloth
+{
+    public abstract class Vent
+    {
+        internal Vent(int id, string name, Vector2 position)
+        {
+            Id = id;
+            Name = name;
+            Position = position;
+        }
+
+        public int Id { get; }
+
+        public string Name { get; }
+
+        public Vector2 Position { get; }
+
+        public Vent? Left { get; internal set; }
+
+        public Vent? Center { get; internal set; }
+
+        public Vent? Right { get; internal set; }
+    }
+}
diff --git a/src/Impostor.Api/Innersloth/VentLocation.cs b/src/Impostor.Api/Innersloth/VentLocation.cs
deleted file mode 100644 (file)
index 0092c69..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-namespace Impostor.Api.Innersloth
-{
-    public enum VentLocation : uint
-    {
-        // Skeld
-        SkeldAdmin = 0,
-        SkeldRightHallway = 1,
-        SkeldCafeteria = 2,
-        SkeldElectrical = 3,
-        SkeldUpperEngine = 4,
-        SkeldSecurity = 5,
-        SkeldMedbay = 6,
-        SkeldWeapons = 7,
-        SkeldLowerReactor = 8,
-        SkeldLowerEngine = 9,
-        SkeldShields = 10,
-        SkeldUpperReactor = 11,
-        SkeldUpperNavigation = 12,
-        SkeldLowerNavigation = 13,
-
-        // Mira HQ
-        MiraBalcony = 1,
-        MiraCafeteria = 2,
-        MiraReactor = 3,
-        MiraLaboratory = 4,
-        MiraOffice = 5,
-        MiraAdmin = 6,
-        MiraGreenhouse = 7,
-        MiraMedbay = 8,
-        MiraDecontamination = 9,
-        MiraLockerRoom = 10,
-        MiraLaunchpad = 11,
-
-        // Polus
-        PolusSecurity = 0,
-        PolusElectrical = 1,
-        PolusO2 = 2,
-        PolusCommunications = 3,
-        PolusOffice = 4,
-        PolusAdmin = 5,
-        PolusLaboratory = 6,
-        PolusLava = 7,
-        PolusStorage = 8,
-        PolusRightStabilizer = 9,
-        PolusLeftStabilizer = 10,
-        PolusOutsideAdmin = 11,
-
-        // Airship
-        AirshipVault = 0,
-        AirshipCockpit = 1,
-        AirshipViewingDeck = 2,
-        AirshipEngineRoom = 3,
-        AirshipKitchen = 4,
-        AirshipMainHallBottom = 5,
-        AirshipGapRight = 6,
-        AirshipGapLeft = 7,
-        AirshipMainHallTop = 8,
-        AirshipShowers = 9,
-        AirshipRecords = 10,
-        AirshipCargoBay = 11,
-    }
-}
index 0798d40b94a6daa2f40dc9119dfa9acc1abb00d6..e64cec0d9ceca2861fdfb8bfe0dc22550dc05c3f 100644 (file)
@@ -8,12 +8,12 @@ namespace Impostor.Server.Events.Player
 {
     public class PlayerVentEvent : IPlayerVentEvent
     {
-        public PlayerVentEvent(IGame game, IClientPlayer sender, IInnerPlayerControl innerPlayerPhysics, VentLocation ventId, bool ventEnter)
+        public PlayerVentEvent(IGame game, IClientPlayer sender, IInnerPlayerControl innerPlayerPhysics, Vent vent, bool ventEnter)
         {
             Game = game;
             ClientPlayer = sender;
             PlayerControl = innerPlayerPhysics;
-            VentId = ventId;
+            Vent = vent;
             VentEnter = ventEnter;
         }
 
@@ -23,7 +23,7 @@ namespace Impostor.Server.Events.Player
 
         public IInnerPlayerControl PlayerControl { get; }
 
-        public VentLocation VentId { get; }
+        public Vent Vent { get; }
 
         public bool VentEnter { get; }
     }
index 0f20750c69927510cf6ddef23bcd10c421e8b40b..b51c97a502dace8a384919776cbcf031b96f88a2 100644 (file)
@@ -2,6 +2,7 @@ using System;
 using System.Threading.Tasks;
 using Impostor.Api.Events.Managers;
 using Impostor.Api.Innersloth;
+using Impostor.Api.Innersloth.Maps;
 using Impostor.Api.Net;
 using Impostor.Api.Net.Inner;
 using Impostor.Api.Net.Messages;
@@ -65,7 +66,7 @@ namespace Impostor.Server.Net.Inner.Objects.Components
                             throw new ArgumentOutOfRangeException(nameof(call), call, null);
                     }
 
-                    await _eventManager.CallAsync(new PlayerVentEvent(Game, sender, _playerControl, (VentLocation)ventId, call == RpcCalls.EnterVent));
+                    await _eventManager.CallAsync(new PlayerVentEvent(Game, sender, _playerControl, Game.GameNet.ShipStatus!.Data.Vents[ventId], call == RpcCalls.EnterVent));
                     break;
 
                 case RpcCalls.ClimbLadder:
index 7f8562809a78cf787529675f1e6a009d8b54c11b..84861b1a4d99e4be15fe28c61aa3ea119a257422 100644 (file)
@@ -2,6 +2,7 @@ using System;
 using System.Collections.Generic;
 using System.Numerics;
 using Impostor.Api.Innersloth;
+using Impostor.Api.Innersloth.Maps;
 using Impostor.Api.Net.Inner.Objects.ShipStatus;
 using Impostor.Server.Net.Inner.Objects.Systems;
 using Impostor.Server.Net.Inner.Objects.Systems.ShipStatus;
@@ -15,6 +16,8 @@ namespace Impostor.Server.Net.Inner.Objects.ShipStatus
         {
         }
 
+        public override MapData Data => MapData.Maps[MapTypes.Airship];
+
         public override Dictionary<int, bool> Doors { get; } = new Dictionary<int, bool>(21);
 
         public override float SpawnRadius => throw new NotSupportedException();
index 02daf3160b5e1168b93761b2c88037ec4053b02a..143c98f779c539dcac13f28e27d6563dec1f534e 100644 (file)
@@ -1,6 +1,7 @@
 using System.Collections.Generic;
 using System.Numerics;
 using Impostor.Api.Innersloth;
+using Impostor.Api.Innersloth.Maps;
 using Impostor.Api.Net.Inner.Objects.ShipStatus;
 using Impostor.Server.Net.Inner.Objects.Systems;
 using Impostor.Server.Net.Inner.Objects.Systems.ShipStatus;
@@ -14,6 +15,8 @@ namespace Impostor.Server.Net.Inner.Objects.ShipStatus
         {
         }
 
+        public override MapData Data => MapData.Maps[MapTypes.MiraHQ];
+
         public override Dictionary<int, bool> Doors { get; } = new Dictionary<int, bool>(0);
 
         public override float SpawnRadius => 1.55f;
index 262b313b89dad01f70501244b1f1d10ba96b7147..7301bc44c114caa7ded3b963c8a4f6ebdcb53335 100644 (file)
@@ -1,6 +1,7 @@
 using System.Collections.Generic;
 using System.Numerics;
 using Impostor.Api.Innersloth;
+using Impostor.Api.Innersloth.Maps;
 using Impostor.Api.Net.Inner.Objects.ShipStatus;
 using Impostor.Server.Net.Inner.Objects.Systems;
 using Impostor.Server.Net.Inner.Objects.Systems.ShipStatus;
@@ -14,6 +15,8 @@ namespace Impostor.Server.Net.Inner.Objects.ShipStatus
         {
         }
 
+        public override MapData Data => MapData.Maps[MapTypes.Polus];
+
         public override Dictionary<int, bool> Doors { get; } = new Dictionary<int, bool>(12);
 
         public override float SpawnRadius => 1f;
index dcfa24f08255e1a7dec4e6db90722169f6165578..0f7a4edd832bb818551fd027dc5dfdf1b58fe22a 100644 (file)
@@ -5,6 +5,7 @@ using System.Numerics;
 using System.Threading.Tasks;
 using Impostor.Api;
 using Impostor.Api.Innersloth;
+using Impostor.Api.Innersloth.Maps;
 using Impostor.Api.Net;
 using Impostor.Api.Net.Inner;
 using Impostor.Api.Net.Inner.Objects.ShipStatus;
@@ -25,6 +26,8 @@ namespace Impostor.Server.Net.Inner.Objects.ShipStatus
             Components.Add(this);
         }
 
+        public abstract MapData Data { get; }
+
         public abstract Dictionary<int, bool> Doors { get; }
 
         public abstract float SpawnRadius { get; }
index 9580b7be47f431fc6372701e1f091334cd384090..6d04f5bb2b9ae70e38e077325f24182887a1a9a5 100644 (file)
@@ -1,6 +1,7 @@
 using System.Collections.Generic;
 using System.Numerics;
 using Impostor.Api.Innersloth;
+using Impostor.Api.Innersloth.Maps;
 using Impostor.Api.Net.Inner.Objects.ShipStatus;
 using Impostor.Server.Net.Inner.Objects.Systems;
 using Impostor.Server.Net.Inner.Objects.Systems.ShipStatus;
@@ -14,6 +15,8 @@ namespace Impostor.Server.Net.Inner.Objects.ShipStatus
         {
         }
 
+        public override MapData Data { get; } = MapData.Maps[MapTypes.Skeld];
+
         public override Dictionary<int, bool> Doors { get; } = new Dictionary<int, bool>(13);
 
         public override float SpawnRadius => 1.6f;