diff --git a/MainWindow.cs b/MainWindow.cs index 8b1ea73..2a0e872 100644 --- a/MainWindow.cs +++ b/MainWindow.cs @@ -7,6 +7,7 @@ using SysBot.Base; using System.Data; using System.Net.Sockets; +using static RaidCrawler.Structures.Offsets; using static SysBot.Base.SwitchButton; namespace RaidCrawler @@ -93,6 +94,22 @@ private async void Connect() SwitchConnection.Connect(); ConnectionStatusText.Text = "Connected!"; IsReading = true; + string id = await GetGameID(CancellationToken.None); + if (id is ScarletID) + { + Game.SelectedIndex = Game.FindString("Scarlet"); + } + else if (id is VioletID) + { + Game.SelectedIndex = Game.FindString("Violet"); + } + else + { + MessageBox.Show("Unable to detect Pokémon Scarlet or Pokémon Violet running on your switch!"); + Disconnect(); + IsReading = false; + } + await ReadRaids(CancellationToken.None); IsReading = false; ButtonAdvanceDate.Enabled = true; @@ -338,6 +355,8 @@ private static async Task PressAndHold(SwitchButton b, int hold, int delay, Canc await Task.Delay(delay, token).ConfigureAwait(false); } + private static async Task GetGameID(CancellationToken token) => await SwitchConnection.GetTitleID(token).ConfigureAwait(false); + private async Task AdvanceDate(CancellationToken token) { ConnectionStatusText.Text = "Changing date..."; @@ -413,7 +432,7 @@ private async void ButtonReadRaids_Click(object sender, EventArgs e) private async Task ReadRaids(CancellationToken token) { ConnectionStatusText.Text = "Parsing pointer..."; - offset = await OffsetUtil.GetPointerAddress(Offsets.RaidBlockPointer, CancellationToken.None); + offset = await OffsetUtil.GetPointerAddress(RaidBlockPointer, CancellationToken.None); Raids.Clear(); index = 0; diff --git a/Structures/Offsets.cs b/Structures/Offsets.cs index 20c2c20..da0d077 100644 --- a/Structures/Offsets.cs +++ b/Structures/Offsets.cs @@ -5,6 +5,9 @@ namespace RaidCrawler.Structures { internal class Offsets { + public const string ScarletID = "0100A3D008C5C000"; + public const string VioletID = "01008F6008C5E000"; + public const string RaidBlockPointer = "[[main+4384B18]+180]+40"; }