diff options
Diffstat (limited to 'AnodyneArchipelago/ArchipelagoManager.cs')
| -rw-r--r-- | AnodyneArchipelago/ArchipelagoManager.cs | 43 | 
1 files changed, 43 insertions, 0 deletions
| diff --git a/AnodyneArchipelago/ArchipelagoManager.cs b/AnodyneArchipelago/ArchipelagoManager.cs new file mode 100644 index 0000000..8c107a3 --- /dev/null +++ b/AnodyneArchipelago/ArchipelagoManager.cs | |||
| @@ -0,0 +1,43 @@ | |||
| 1 | using Archipelago.MultiClient.Net; | ||
| 2 | using Archipelago.MultiClient.Net.Enums; | ||
| 3 | using System; | ||
| 4 | |||
| 5 | namespace AnodyneArchipelago | ||
| 6 | { | ||
| 7 | internal class ArchipelagoManager | ||
| 8 | { | ||
| 9 | private static ArchipelagoSession _session; | ||
| 10 | |||
| 11 | public static void Connect(string url, string slotName, string password) | ||
| 12 | { | ||
| 13 | LoginResult result; | ||
| 14 | try | ||
| 15 | { | ||
| 16 | _session = ArchipelagoSessionFactory.CreateSession(url); | ||
| 17 | result = _session.TryConnectAndLogin("Anodyne", slotName, ItemsHandlingFlags.AllItems, null, null, null, password == "" ? null : password); | ||
| 18 | } | ||
| 19 | catch (Exception e) | ||
| 20 | { | ||
| 21 | result = new LoginFailure(e.GetBaseException().Message); | ||
| 22 | } | ||
| 23 | |||
| 24 | if (!result.Successful) | ||
| 25 | { | ||
| 26 | LoginFailure failure = result as LoginFailure; | ||
| 27 | string errorMessage = $"Failed to connect to {url} as {slotName}:"; | ||
| 28 | foreach (string error in failure.Errors) | ||
| 29 | { | ||
| 30 | errorMessage += $"\n {error}"; | ||
| 31 | } | ||
| 32 | foreach (ConnectionRefusedError error in failure.ErrorCodes) | ||
| 33 | { | ||
| 34 | errorMessage += $"\n {error}"; | ||
| 35 | } | ||
| 36 | |||
| 37 | Plugin.Instance.Log.LogError(errorMessage); | ||
| 38 | |||
| 39 | return; | ||
| 40 | } | ||
| 41 | } | ||
| 42 | } | ||
| 43 | } | ||
