From 05df0ee72534526cd69de07a79064ed60e4eda4f Mon Sep 17 00:00:00 2001 From: JustArchi Date: Wed, 16 Aug 2017 00:42:20 +0200 Subject: [PATCH] Add extra logic for disconnects --- ArchiSteamFarm/Bot.cs | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/ArchiSteamFarm/Bot.cs b/ArchiSteamFarm/Bot.cs index 357ba7c62..b931b4ff9 100755 --- a/ArchiSteamFarm/Bot.cs +++ b/ArchiSteamFarm/Bot.cs @@ -1732,6 +1732,13 @@ namespace ArchiSteamFarm { return; } + // Return early if this update doesn't bring anything new + if (callback.LicenseList.Count == OwnedPackageIDs.Count) { + if (callback.LicenseList.All(license => OwnedPackageIDs.ContainsKey(license.PackageID))) { + return; + } + } + OwnedPackageIDs.Clear(); foreach (SteamApps.LicenseListCallback.License license in callback.LicenseList) { OwnedPackageIDs[license.PackageID] = (license.PaymentMethod, license.TimeCreated); @@ -1743,13 +1750,8 @@ namespace ArchiSteamFarm { } } - await Task.Delay(1000).ConfigureAwait(false); // Wait a second for eventual PlayingSessionStateCallback or SharedLibraryLockStatusCallback - - // Normally we ResetGamesPlayed() in OnFarmingStopped() but there is no farming event if CardsFarmer module is disabled - // Therefore, trigger extra ResetGamesPlayed(), but only in this specific case - if (CardsFarmer.Paused) { - ResetGamesPlayed(); - } + // Wait a second for eventual PlayingSessionStateCallback or SharedLibraryLockStatusCallback + await Task.Delay(1000).ConfigureAwait(false); // We trigger OnNewGameAdded() anyway, as CardsFarmer has other things to handle regardless of being Paused or not await CardsFarmer.OnNewGameAdded().ConfigureAwait(false); @@ -1877,6 +1879,15 @@ namespace ArchiSteamFarm { Statistics?.OnLoggedOn().Forget(); Trading.OnNewTrade().Forget(); + + // Normally we ResetGamesPlayed() in OnFarmingStopped() but there is no farming event if CardsFarmer module is disabled + // Therefore, trigger extra ResetGamesPlayed(), but only in this specific case + if (CardsFarmer.Paused) { + // Wait two seconds for eventual PlayingSessionStateCallback or SharedLibraryLockStatusCallback + await Task.Delay(2000).ConfigureAwait(false); + + ResetGamesPlayed(); + } break; case EResult.InvalidPassword: case EResult.NoConnection: