]> git.deb.at Git - rhonda/impostor.git/commitdiff
Update and fix SnapTo
authorAeonLucid <aeonlucid@outlook.com>
Thu, 12 Nov 2020 02:58:43 +0000 (03:58 +0100)
committerAeonLucid <aeonlucid@outlook.com>
Thu, 12 Nov 2020 02:58:43 +0000 (03:58 +0100)
src/Impostor.Api/Net/Inner/Objects/Components/IInnerCustomNetworkTransform.cs
src/Impostor.Plugins.Example/Handlers/PlayerEventListener.cs
src/Impostor.Server/Net/Inner/Objects/Components/InnerCustomNetworkTransform.Api.cs
src/Impostor.Server/Net/Inner/Objects/Components/InnerCustomNetworkTransform.cs

index d238f3713c9af6939eaeaadee2a1e0a24e144f30..6d867e7936d75d370feb847f88c74c30158b00b8 100644 (file)
@@ -10,6 +10,6 @@ namespace Impostor.Api.Net.Inner.Objects.Components
         /// </summary>
         /// <param name="position">The target position.</param>
         /// <returns>Task that must be awaited.</returns>
-        ValueTask SnapTo(Vector2 position);
+        ValueTask SnapToAsync(Vector2 position);
     }
 }
index 7238c25295950ae9fa2e480b3a512bff6dcc7d1f..43691ef15773fbfd97fb1280c45cb5e7d59e8811 100644 (file)
@@ -1,4 +1,5 @@
 using System;
+using System.Numerics;
 using System.Threading.Tasks;
 using Impostor.Api.Events;
 using Impostor.Api.Events.Player;
@@ -81,6 +82,11 @@ namespace Impostor.Plugins.Example.Handlers
                 await e.PlayerControl.SetPetAsync(PetType.Ufo);
             }
 
+            if (e.Message == "snap")
+            {
+                await e.PlayerControl.NetworkTransform.SnapToAsync(new Vector2(1, 1));
+            }
+
             await e.PlayerControl.SetNameAsync(e.Message);
             await e.PlayerControl.SendChatAsync(e.Message);
         }
index 0f848ad8fe97a394a8d40316dffaa735fafbf3f0..62236267835e9aeaacd85e6b71ba74dd744b3bcf 100644 (file)
@@ -6,11 +6,17 @@ namespace Impostor.Server.Net.Inner.Objects.Components
 {
     internal partial class InnerCustomNetworkTransform : IInnerCustomNetworkTransform
     {
-        public async ValueTask SnapTo(Vector2 position)
+        public async ValueTask SnapToAsync(Vector2 position)
         {
+            var minSid = (ushort)(_lastSequenceId + 5U);
+
+            // Snap in the server.
+            SnapTo(position, minSid);
+
+            // Broadcast to all clients.
             var writer = _game.StartRpc(NetId, RpcCalls.SnapTo);
             WriteVector2(writer, position);
-            writer.Write(_lastSequenceId + 5U);
+            writer.Write(_lastSequenceId);
             await _game.FinishRpcAsync(writer);
         }
     }
index fe454798495ac4bbf0d5b6f79bc8120799d0d3dd..d261c11e047a0b091ecbc00d0395cafc6e82cc8c 100644 (file)
@@ -135,7 +135,7 @@ namespace Impostor.Server.Net.Inner.Objects.Components
 
         private void SnapTo(Vector2 position, ushort minSid)
         {
-            if (SidGreaterThan(minSid, _lastSequenceId))
+            if (!SidGreaterThan(minSid, _lastSequenceId))
             {
                 return;
             }