public async Task CloseGate(uint Offset, CancellationToken token) { // Navigate through dialog with Dodo to close the gate, then inject empty dodo bytes await Task.Delay(0_500, token).ConfigureAwait(false); var Hold = SwitchCommand.Hold(SwitchButton.L); await Connection.SendAsync(Hold, token).ConfigureAwait(false); await Task.Delay(0_700, token).ConfigureAwait(false); await BotRunner.Click(SwitchButton.A, 3_000, token).ConfigureAwait(false); await BotRunner.Click(SwitchButton.A, 1_000, token).ConfigureAwait(false); await BotRunner.Click(SwitchButton.A, 2_000, token).ConfigureAwait(false); await BotRunner.Click(SwitchButton.A, 3_000, token).ConfigureAwait(false); for (int i = 0; i < 5; ++i) { await BotRunner.Click(SwitchButton.B, 1_000, token).ConfigureAwait(false); } await Task.Delay(0_500, token).ConfigureAwait(false); var Release = SwitchCommand.Release(SwitchButton.L); await Connection.SendAsync(Release, token).ConfigureAwait(false); await Connection.WriteBytesAsync(new byte[5], Offset, token).ConfigureAwait(false); DodoCode = string.Empty; }
public async Task <InjectionResult> Write(Item[] items, CancellationToken token) { var(valid, data) = await ReadValidateAsync(token); if (!valid) { return(InjectionResult.FailValidate); } var orig = (byte[])data.Clone(); var pocket2 = items.Take(20).ToArray(); var pocket1 = items.Skip(20).ToArray(); var p1 = Item.SetArray(pocket1); var p2 = Item.SetArray(pocket2); p1.CopyTo(data, 0); p2.CopyTo(data, pocket + 0x18); if (data.SequenceEqual(orig)) { return(InjectionResult.Same); } await Bot.WriteBytesAsync(data, DataOffset, token); return(InjectionResult.Success); }