From: AeonLucid Date: Thu, 12 Nov 2020 02:58:43 +0000 (+0100) Subject: Update and fix SnapTo X-Git-Tag: v1.2.2~29 X-Git-Url: https://git.deb.at/?a=commitdiff_plain;h=32bfabddd03a603bd94030265d125efe84bcad59;p=rhonda%2Fimpostor.git Update and fix SnapTo --- diff --git a/src/Impostor.Api/Net/Inner/Objects/Components/IInnerCustomNetworkTransform.cs b/src/Impostor.Api/Net/Inner/Objects/Components/IInnerCustomNetworkTransform.cs index d238f37..6d867e7 100644 --- a/src/Impostor.Api/Net/Inner/Objects/Components/IInnerCustomNetworkTransform.cs +++ b/src/Impostor.Api/Net/Inner/Objects/Components/IInnerCustomNetworkTransform.cs @@ -10,6 +10,6 @@ namespace Impostor.Api.Net.Inner.Objects.Components /// /// The target position. /// Task that must be awaited. - ValueTask SnapTo(Vector2 position); + ValueTask SnapToAsync(Vector2 position); } } diff --git a/src/Impostor.Plugins.Example/Handlers/PlayerEventListener.cs b/src/Impostor.Plugins.Example/Handlers/PlayerEventListener.cs index 7238c25..43691ef 100644 --- a/src/Impostor.Plugins.Example/Handlers/PlayerEventListener.cs +++ b/src/Impostor.Plugins.Example/Handlers/PlayerEventListener.cs @@ -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); } diff --git a/src/Impostor.Server/Net/Inner/Objects/Components/InnerCustomNetworkTransform.Api.cs b/src/Impostor.Server/Net/Inner/Objects/Components/InnerCustomNetworkTransform.Api.cs index 0f848ad..6223626 100644 --- a/src/Impostor.Server/Net/Inner/Objects/Components/InnerCustomNetworkTransform.Api.cs +++ b/src/Impostor.Server/Net/Inner/Objects/Components/InnerCustomNetworkTransform.Api.cs @@ -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); } } diff --git a/src/Impostor.Server/Net/Inner/Objects/Components/InnerCustomNetworkTransform.cs b/src/Impostor.Server/Net/Inner/Objects/Components/InnerCustomNetworkTransform.cs index fe45479..d261c11 100644 --- a/src/Impostor.Server/Net/Inner/Objects/Components/InnerCustomNetworkTransform.cs +++ b/src/Impostor.Server/Net/Inner/Objects/Components/InnerCustomNetworkTransform.cs @@ -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; }