From b686383517582c3fe66667892a9d00b6306e0003 Mon Sep 17 00:00:00 2001 From: NotKappa Date: Wed, 8 Feb 2023 21:36:07 +0300 Subject: [PATCH] Dispatch MapChangedEvent --- .../Events/Map/MapChangedEvent.cs | 2 +- .../PacketHandlers/Map/CMapResponder.cs | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/Core/NosSmooth.Game/Events/Map/MapChangedEvent.cs b/Core/NosSmooth.Game/Events/Map/MapChangedEvent.cs index f342035..7ebd8ca 100644 --- a/Core/NosSmooth.Game/Events/Map/MapChangedEvent.cs +++ b/Core/NosSmooth.Game/Events/Map/MapChangedEvent.cs @@ -14,5 +14,5 @@ namespace NosSmooth.Game.Events.Map; public record MapChangedEvent ( Data.Maps.Map? PreviousMap, - Data.Maps.Map CurrentMap + Data.Maps.Map? CurrentMap ) : IGameEvent; \ No newline at end of file diff --git a/Core/NosSmooth.Game/PacketHandlers/Map/CMapResponder.cs b/Core/NosSmooth.Game/PacketHandlers/Map/CMapResponder.cs index 5ae8267..b005255 100644 --- a/Core/NosSmooth.Game/PacketHandlers/Map/CMapResponder.cs +++ b/Core/NosSmooth.Game/PacketHandlers/Map/CMapResponder.cs @@ -9,6 +9,9 @@ using NosSmooth.Core.Extensions; using NosSmooth.Core.Packets; using NosSmooth.Data.Abstractions; using NosSmooth.Game.Data.Maps; +using NosSmooth.Game.Events.Characters; +using NosSmooth.Game.Events.Core; +using NosSmooth.Game.Events.Map; using NosSmooth.Packets.Server.Maps; using Remora.Results; @@ -20,6 +23,7 @@ namespace NosSmooth.Game.PacketHandlers.Map; public class CMapResponder : IPacketResponder { private readonly Game _game; + private readonly EventDispatcher _eventDispatcher; private readonly IInfoService _infoService; private readonly ILogger _logger; @@ -27,11 +31,19 @@ public class CMapResponder : IPacketResponder /// Initializes a new instance of the class. /// /// The nostale game. + /// The event dispatcher. /// The info service. /// The logger. - public CMapResponder(Game game, IInfoService infoService, ILogger logger) + public CMapResponder + ( + Game game, + EventDispatcher eventDispatcher, + IInfoService infoService, + ILogger logger + ) { _game = game; + _eventDispatcher = eventDispatcher; _infoService = infoService; _logger = logger; } @@ -51,7 +63,8 @@ public class CMapResponder : IPacketResponder ); } - await _game.CreateMapAsync + var previousMap = _game.CurrentMap; + var currentMap = await _game.CreateMapAsync ( () => { @@ -84,6 +97,6 @@ public class CMapResponder : IPacketResponder ct: ct ); - return Result.FromSuccess(); + return await _eventDispatcher.DispatchEvent(new MapChangedEvent(previousMap, _game.CurrentMap), ct); } } \ No newline at end of file -- 2.49.0