-
Notifications
You must be signed in to change notification settings - Fork 16
/
QuestActions.cs
44 lines (38 loc) · 1.44 KB
/
QuestActions.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using AutomaticTypeMapper;
using EOLib.Net;
using EOLib.Net.Communication;
namespace EOLib.Domain.Interact.Quest
{
[AutoMappedType]
public class QuestActions : IQuestActions
{
private readonly IPacketSendService _packetSendService;
private readonly IQuestDataProvider _questDataProvider;
public QuestActions(IPacketSendService packetSendService,
IQuestDataProvider questDataProvider)
{
_packetSendService = packetSendService;
_questDataProvider = questDataProvider;
}
public void RespondToQuestDialog(DialogReply reply, byte linkId = 0)
{
_questDataProvider.QuestDialogData.MatchSome(data =>
{
var builder = new PacketBuilder(PacketFamily.Quest, PacketAction.Accept)
.AddShort(data.SessionID) // ignored by eoserv
.AddShort(data.DialogID) // ignored by eoserv
.AddShort(data.QuestID)
.AddShort(data.VendorID) // ignored by eoserv
.AddChar((byte)reply);
if (reply == DialogReply.Link)
builder = builder.AddChar(linkId);
var packet = builder.Build();
_packetSendService.SendPacket(packet);
});
}
}
public interface IQuestActions
{
void RespondToQuestDialog(DialogReply reply, byte linkId);
}
}