diff options
Diffstat (limited to 'AnodyneArchipelago/ArchipelagoManager.cs')
-rw-r--r-- | AnodyneArchipelago/ArchipelagoManager.cs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/AnodyneArchipelago/ArchipelagoManager.cs b/AnodyneArchipelago/ArchipelagoManager.cs index e4ccf36..94085f0 100644 --- a/AnodyneArchipelago/ArchipelagoManager.cs +++ b/AnodyneArchipelago/ArchipelagoManager.cs | |||
@@ -25,6 +25,8 @@ namespace AnodyneArchipelago | |||
25 | private readonly Queue<NetworkItem> _itemsToCollect = new(); | 25 | private readonly Queue<NetworkItem> _itemsToCollect = new(); |
26 | private readonly Queue<string> _messages = new(); | 26 | private readonly Queue<string> _messages = new(); |
27 | 27 | ||
28 | private Task<Dictionary<string, NetworkItem>> _scoutTask; | ||
29 | |||
28 | public long EndgameCardRequirement => _endgameCardRequirement; | 30 | public long EndgameCardRequirement => _endgameCardRequirement; |
29 | 31 | ||
30 | public async Task<LoginResult> Connect(string url, string slotName, string password) | 32 | public async Task<LoginResult> Connect(string url, string slotName, string password) |
@@ -54,6 +56,8 @@ namespace AnodyneArchipelago | |||
54 | _endgameCardRequirement = (long)login.SlotData["endgame_card_requirement"]; | 56 | _endgameCardRequirement = (long)login.SlotData["endgame_card_requirement"]; |
55 | } | 57 | } |
56 | 58 | ||
59 | _scoutTask = Task.Run(() => ScoutAllLocations()); | ||
60 | |||
57 | return result; | 61 | return result; |
58 | } | 62 | } |
59 | 63 | ||
@@ -73,6 +77,34 @@ namespace AnodyneArchipelago | |||
73 | _session = null; | 77 | _session = null; |
74 | } | 78 | } |
75 | 79 | ||
80 | private async Task<Dictionary<string, NetworkItem>> ScoutAllLocations() | ||
81 | { | ||
82 | LocationInfoPacket locationInfo = await _session.Locations.ScoutLocationsAsync(_session.Locations.AllLocations.ToArray()); | ||
83 | |||
84 | Dictionary<string, NetworkItem> result = new(); | ||
85 | foreach (NetworkItem networkItem in locationInfo.Locations) | ||
86 | { | ||
87 | result[_session.Locations.GetLocationNameFromId(networkItem.Location)] = networkItem; | ||
88 | } | ||
89 | |||
90 | return result; | ||
91 | } | ||
92 | |||
93 | public NetworkItem? GetScoutedLocation(string locationName) | ||
94 | { | ||
95 | if (_scoutTask == null || !_scoutTask.IsCompleted || !_scoutTask.Result.ContainsKey(locationName)) | ||
96 | { | ||
97 | return null; | ||
98 | } | ||
99 | |||
100 | return _scoutTask.Result[locationName]; | ||
101 | } | ||
102 | |||
103 | public string GetItemName(long id) | ||
104 | { | ||
105 | return _session.Items.GetItemName(id); | ||
106 | } | ||
107 | |||
76 | public string GetSeed() | 108 | public string GetSeed() |
77 | { | 109 | { |
78 | return _seedName; | 110 | return _seedName; |