From f6d0bd9e9ce29b8cbd0bc2a787dd3385dffa3fb8 Mon Sep 17 00:00:00 2001 From: JustArchi Date: Sun, 5 Mar 2017 16:51:14 +0100 Subject: [PATCH] Closes #486 Further tests might be needed --- ArchiSteamFarm/ArchiHandler.cs | 8 -------- ArchiSteamFarm/Bot.cs | 23 +++++++++++++++++++++-- ArchiSteamFarm/CardsFarmer.cs | 4 ++-- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/ArchiSteamFarm/ArchiHandler.cs b/ArchiSteamFarm/ArchiHandler.cs index 8800e4d28..6ea619789 100644 --- a/ArchiSteamFarm/ArchiHandler.cs +++ b/ArchiSteamFarm/ArchiHandler.cs @@ -154,14 +154,6 @@ namespace ArchiSteamFarm { Client.Send(logon); } - internal void PlayGame(uint gameID, string gameName = null) { - if (!Client.IsConnected) { - return; - } - - PlayGames(gameID.ToEnumerable(), gameName); - } - internal void PlayGames(IEnumerable gameIDs, string gameName = null) { if (gameIDs == null) { ArchiLogger.LogNullError(nameof(gameIDs)); diff --git a/ArchiSteamFarm/Bot.cs b/ArchiSteamFarm/Bot.cs index 1e17a78d6..0bc7cdd6c 100755 --- a/ArchiSteamFarm/Bot.cs +++ b/ArchiSteamFarm/Bot.cs @@ -54,8 +54,6 @@ namespace ArchiSteamFarm { private static readonly SemaphoreSlim GiftsSemaphore = new SemaphoreSlim(1); private static readonly SemaphoreSlim LoginSemaphore = new SemaphoreSlim(1); - - internal readonly ArchiHandler ArchiHandler; internal readonly ArchiLogger ArchiLogger; internal readonly ArchiWebHandler ArchiWebHandler; internal readonly string BotName; @@ -68,6 +66,8 @@ namespace ArchiSteamFarm { [JsonProperty] internal ulong SteamID => SteamClient?.SteamID ?? 0; + private readonly ArchiHandler ArchiHandler; + private readonly BotDatabase BotDatabase; private readonly CallbackManager CallbackManager; private readonly SemaphoreSlim CallbackSemaphore = new SemaphoreSlim(1); @@ -113,6 +113,7 @@ namespace ArchiSteamFarm { private ulong LibraryLockedBySteamID; private bool LootingAllowed = true; private bool PlayingBlocked; + private bool PlayingWasBlocked; private Timer SendItemsTimer; private bool SkipFirstShutdown; private string TwoFactorCode; @@ -508,6 +509,17 @@ namespace ArchiSteamFarm { } } + internal void PlayGame(uint gameID, string gameName = null) => PlayGames(gameID.ToEnumerable(), gameName); + + internal void PlayGames(IEnumerable gameIDs, string gameName = null) { + if (gameIDs == null) { + ArchiLogger.LogNullError(nameof(gameIDs)); + return; + } + + ArchiHandler.PlayGames(gameIDs, gameName); + } + internal async Task RefreshSession() { if (!IsConnectedAndLoggedOn) { return false; @@ -720,11 +732,13 @@ namespace ArchiSteamFarm { private void CheckOccupationStatus() { if (!IsPlayingPossible) { ArchiLogger.LogGenericInfo(Strings.BotAccountOccupied); + PlayingWasBlocked = true; StopFamilySharingInactivityTimer(); return; } ArchiLogger.LogGenericInfo(Strings.BotAccountFree); + PlayingWasBlocked = false; CardsFarmer.Resume(false); } @@ -1420,6 +1434,11 @@ namespace ArchiSteamFarm { } // We trigger OnNewGameAdded() anyway, as CardsFarmer has other things to handle regardless of being Paused or not + if (PlayingWasBlocked) { + await Task.Delay(60 * 1000).ConfigureAwait(false); + PlayingWasBlocked = false; + } + await CardsFarmer.OnNewGameAdded().ConfigureAwait(false); } diff --git a/ArchiSteamFarm/CardsFarmer.cs b/ArchiSteamFarm/CardsFarmer.cs index 3e16d5947..4e5ea3f05 100755 --- a/ArchiSteamFarm/CardsFarmer.cs +++ b/ArchiSteamFarm/CardsFarmer.cs @@ -532,7 +532,7 @@ namespace ArchiSteamFarm { Bot.ArchiLogger.LogGenericWarning(string.Format(Strings.WarningIdlingGameMismatch, game.AppID, game.GameName, appID)); } - Bot.ArchiHandler.PlayGame(appID, Bot.BotConfig.CustomGamePlayedWhileFarming); + Bot.PlayGame(appID, Bot.BotConfig.CustomGamePlayedWhileFarming); DateTime endFarmingDate = DateTime.UtcNow.AddHours(Program.GlobalConfig.MaxFarmingTime); bool? keepFarming = await ShouldFarm(game).ConfigureAwait(false); @@ -580,7 +580,7 @@ namespace ArchiSteamFarm { return true; } - Bot.ArchiHandler.PlayGames(games.Select(game => game.AppID), Bot.BotConfig.CustomGamePlayedWhileFarming); + Bot.PlayGames(games.Select(game => game.AppID), Bot.BotConfig.CustomGamePlayedWhileFarming); bool success = true; while (maxHour < 2) {