about summary refs log tree commit diff stats
path: root/AnodyneArchipelago/ArchipelagoManager.cs
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2024-05-26 12:50:11 -0400
committerStar Rauchenberger <fefferburbia@gmail.com>2024-05-26 12:50:11 -0400
commitc6d7af45fa044bbc3749c8012beb5bcc022e41a2 (patch)
tree38139b9bafe04bef05317f34a55b1fc87616088e /AnodyneArchipelago/ArchipelagoManager.cs
parentba2a395da7026de4be32733fc27011e161ead255 (diff)
downloadanodyne-archipelago-c6d7af45fa044bbc3749c8012beb5bcc022e41a2.tar.gz
anodyne-archipelago-c6d7af45fa044bbc3749c8012beb5bcc022e41a2.tar.bz2
anodyne-archipelago-c6d7af45fa044bbc3749c8012beb5bcc022e41a2.zip
Scout locations for personal chest icons
Diffstat (limited to 'AnodyneArchipelago/ArchipelagoManager.cs')
-rw-r--r--AnodyneArchipelago/ArchipelagoManager.cs32
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;