From 62d0a525ca943c4d10e2d765903d14521f9fee6b Mon Sep 17 00:00:00 2001 From: Rutherther Date: Sun, 1 Jan 2023 18:38:54 +0100 Subject: [PATCH] fix(game): create character on at packet received --- .../PacketHandlers/Map/AtResponder.cs | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/Core/NosSmooth.Game/PacketHandlers/Map/AtResponder.cs b/Core/NosSmooth.Game/PacketHandlers/Map/AtResponder.cs index 2b21cd7..9c6925e 100644 --- a/Core/NosSmooth.Game/PacketHandlers/Map/AtResponder.cs +++ b/Core/NosSmooth.Game/PacketHandlers/Map/AtResponder.cs @@ -5,6 +5,7 @@ // Licensed under the MIT license. See LICENSE file in the project root for full license information. using NosSmooth.Core.Packets; +using NosSmooth.Game.Data.Characters; using NosSmooth.Game.Data.Info; using NosSmooth.Packets.Server.Maps; using Remora.Results; @@ -32,17 +33,20 @@ public class AtResponder : IPacketResponder public Task Respond(PacketEventArgs packetArgs, CancellationToken ct = default) { var packet = packetArgs.Packet; - var map = _game.CurrentMap; - if (map is null) - { - return Task.FromResult(Result.FromSuccess()); - } - - var entity = map.Entities.GetEntity(packet.CharacterId); - if (entity is not null) - { - entity.Position = new Position(packet.X, packet.Y); - } + + _game.CreateOrUpdateCharacterAsync + ( + () => new Character() + { + Id = packet.CharacterId, + Position = new Position(packet.X, packet.Y) + }, + c => + { + c.Position = new Position(packet.X, packet.Y); + return c; + } + ); return Task.FromResult(Result.FromSuccess()); } -- 2.48.1