Skip to content

Commit

Permalink
Fix packet handling for jukebox packets. Add missing Jukebox_Agree ha…
Browse files Browse the repository at this point in the history
…ndler.
  • Loading branch information
ethanmoffat committed May 19, 2023
1 parent 01789a3 commit 853d190
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 0 deletions.
39 changes: 39 additions & 0 deletions EOLib/PacketHandlers/Jukebox/JukeboxAgreeHandler.cs
@@ -0,0 +1,39 @@
using AutomaticTypeMapper;
using EOLib.Domain.Character;
using EOLib.Domain.Login;
using EOLib.Net;
using EOLib.Net.Handlers;
using Optional.Collections;

namespace EOLib.PacketHandlers.Jukebox
{
/// <summary>
/// Sent to update character's remaining gold after requesting a song
/// </summary>
[AutoMappedType]
public class JukeboxAgreeHandler : InGameOnlyPacketHandler
{
private readonly ICharacterInventoryRepository _characterInventoryRepository;

public override PacketFamily Family => PacketFamily.JukeBox;

public override PacketAction Action => PacketAction.Agree;

public JukeboxAgreeHandler(IPlayerInfoProvider playerInfoProvider,
ICharacterInventoryRepository characterInventoryRepository)
: base(playerInfoProvider)
{
_characterInventoryRepository = characterInventoryRepository;
}

public override bool HandlePacket(IPacket packet)
{
var goldRemaining = packet.ReadInt();

_characterInventoryRepository.ItemInventory.SingleOrNone(x => x.ItemID == 1).MatchSome(x => _characterInventoryRepository.ItemInventory.Remove(x));
_characterInventoryRepository.ItemInventory.Add(new InventoryItem(1, goldRemaining));

return true;
}
}
}
4 changes: 4 additions & 0 deletions EOLib/PacketHandlers/Jukebox/JukeboxOpenHandler.cs
Expand Up @@ -37,6 +37,10 @@ public override bool HandlePacket(IPacket packet)
{
_jukeboxRepository.PlayingRequestName = Option.Some(packet.ReadEndString());
}
else
{
_jukeboxRepository.PlayingRequestName = Option.None<string>();
}

foreach (var notifier in _userInterfaceNotifiers)
notifier.NotifyPacketDialog(PacketFamily.JukeBox);
Expand Down
9 changes: 9 additions & 0 deletions EOLib/PacketHandlers/Jukebox/JukeboxUseHandler.cs
@@ -1,8 +1,10 @@
using AutomaticTypeMapper;
using EOLib.Domain.Interact.Jukebox;
using EOLib.Domain.Login;
using EOLib.Domain.Notifiers;
using EOLib.Net;
using EOLib.Net.Handlers;
using Optional;
using System.Collections.Generic;

namespace EOLib.PacketHandlers.Jukebox
Expand All @@ -13,24 +15,31 @@ namespace EOLib.PacketHandlers.Jukebox
[AutoMappedType]
public class JukeboxUseHandler : InGameOnlyPacketHandler
{
private readonly IJukeboxRepository _jukeboxRepository;
private readonly IEnumerable<ISoundNotifier> _soundNotifiers;

public override PacketFamily Family => PacketFamily.JukeBox;

public override PacketAction Action => PacketAction.Use;

public JukeboxUseHandler(IPlayerInfoProvider playerInfoProvider,
IJukeboxRepository jukeboxRepository,
IEnumerable<ISoundNotifier> soundNotifiers)
: base(playerInfoProvider)
{
_jukeboxRepository = jukeboxRepository;
_soundNotifiers = soundNotifiers;
}

public override bool HandlePacket(IPacket packet)
{
var id = packet.ReadShort();

_jukeboxRepository.PlayingRequestName = Option.Some(string.Empty);

foreach (var notifier in _soundNotifiers)
notifier.NotifyMusic(id, isJukebox: true);

return true;
}
}
Expand Down

0 comments on commit 853d190

Please sign in to comment.