~ruther/NosSmooth

62d0a525ca943c4d10e2d765903d14521f9fee6b — Rutherther 2 years ago 784037c
fix(game): create character on at packet received
1 files changed, 15 insertions(+), 11 deletions(-)

M Core/NosSmooth.Game/PacketHandlers/Map/AtResponder.cs
M Core/NosSmooth.Game/PacketHandlers/Map/AtResponder.cs => Core/NosSmooth.Game/PacketHandlers/Map/AtResponder.cs +15 -11
@@ 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<AtPacket>
    public Task<Result> Respond(PacketEventArgs<AtPacket> 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());
    }

Do not follow this link