-
Notifications
You must be signed in to change notification settings - Fork 16
/
InGameDialogActions.cs
94 lines (80 loc) · 3.56 KB
/
InGameDialogActions.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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
using AutomaticTypeMapper;
using EndlessClient.Dialogs.Factories;
using EOLib.Domain.Character;
using EOLib.Domain.Interact.Shop;
using Optional;
namespace EndlessClient.Dialogs.Actions
{
[AutoMappedType]
public class InGameDialogActions : IInGameDialogActions
{
private readonly IFriendIgnoreListDialogFactory _friendIgnoreListDialogFactory;
private readonly IPaperdollDialogFactory _paperdollDialogFactory;
private readonly IActiveDialogRepository _activeDialogRepository;
private readonly IShopDataRepository _shopDataRepository;
private readonly IShopDialogFactory _shopDialogFactory;
public InGameDialogActions(IFriendIgnoreListDialogFactory friendIgnoreListDialogFactory,
IPaperdollDialogFactory paperdollDialogFactory,
IActiveDialogRepository activeDialogRepository,
IShopDataRepository shopDataRepository,
IShopDialogFactory shopDialogFactory)
{
_friendIgnoreListDialogFactory = friendIgnoreListDialogFactory;
_paperdollDialogFactory = paperdollDialogFactory;
_activeDialogRepository = activeDialogRepository;
_shopDataRepository = shopDataRepository;
_shopDialogFactory = shopDialogFactory;
}
public void ShowFriendListDialog()
{
_activeDialogRepository.FriendIgnoreDialog.MatchNone(() =>
{
var dlg = _friendIgnoreListDialogFactory.Create(isFriendList: true);
dlg.DialogClosed += (_, _) => _activeDialogRepository.FriendIgnoreDialog = Option.None<ScrollingListDialog>();
_activeDialogRepository.FriendIgnoreDialog = Option.Some(dlg);
dlg.Show();
});
}
public void ShowIgnoreListDialog()
{
_activeDialogRepository.FriendIgnoreDialog.MatchNone(() =>
{
var dlg = _friendIgnoreListDialogFactory.Create(isFriendList: false);
dlg.DialogClosed += (_, _) => _activeDialogRepository.FriendIgnoreDialog = Option.None<ScrollingListDialog>();
_activeDialogRepository.FriendIgnoreDialog = Option.Some(dlg);
dlg.Show();
});
}
public void ShowPaperdollDialog(ICharacter character, bool isMainCharacter)
{
_activeDialogRepository.PaperdollDialog.MatchNone(() =>
{
var dlg = _paperdollDialogFactory.Create(character, isMainCharacter);
dlg.DialogClosed += (_, _) => _activeDialogRepository.PaperdollDialog = Option.None<PaperdollDialog>();
_activeDialogRepository.PaperdollDialog = Option.Some(dlg);
dlg.Show();
});
}
public void ShowShopDialog()
{
_activeDialogRepository.ShopDialog.MatchNone(() =>
{
var dlg = _shopDialogFactory.Create();
dlg.DialogClosed += (_, _) =>
{
_activeDialogRepository.ShopDialog = Option.None<ShopDialog>();
_shopDataRepository.ResetState();
};
_activeDialogRepository.ShopDialog = Option.Some(dlg);
dlg.Show();
});
}
}
public interface IInGameDialogActions
{
void ShowFriendListDialog();
void ShowIgnoreListDialog();
void ShowPaperdollDialog(ICharacter character, bool isMainCharacter);
void ShowShopDialog();
}
}