From c6d7af45fa044bbc3749c8012beb5bcc022e41a2 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Sun, 26 May 2024 12:50:11 -0400 Subject: Scout locations for personal chest icons --- AnodyneArchipelago/ArchipelagoManager.cs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'AnodyneArchipelago/ArchipelagoManager.cs') 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 private readonly Queue _itemsToCollect = new(); private readonly Queue _messages = new(); + private Task> _scoutTask; + public long EndgameCardRequirement => _endgameCardRequirement; public async Task Connect(string url, string slotName, string password) @@ -54,6 +56,8 @@ namespace AnodyneArchipelago _endgameCardRequirement = (long)login.SlotData["endgame_card_requirement"]; } + _scoutTask = Task.Run(() => ScoutAllLocations()); + return result; } @@ -73,6 +77,34 @@ namespace AnodyneArchipelago _session = null; } + private async Task> ScoutAllLocations() + { + LocationInfoPacket locationInfo = await _session.Locations.ScoutLocationsAsync(_session.Locations.AllLocations.ToArray()); + + Dictionary result = new(); + foreach (NetworkItem networkItem in locationInfo.Locations) + { + result[_session.Locations.GetLocationNameFromId(networkItem.Location)] = networkItem; + } + + return result; + } + + public NetworkItem? GetScoutedLocation(string locationName) + { + if (_scoutTask == null || !_scoutTask.IsCompleted || !_scoutTask.Result.ContainsKey(locationName)) + { + return null; + } + + return _scoutTask.Result[locationName]; + } + + public string GetItemName(long id) + { + return _session.Items.GetItemName(id); + } + public string GetSeed() { return _seedName; -- cgit 1.4.1