Esempio n. 1
0
        private async Task <bool> FarmCards(Game game)
        {
            if (game == null)
            {
                Bot.ArchiLogger.LogNullError(nameof(game));
                return(false);
            }

            if (game.AppID != game.PlayableAppID)
            {
                Bot.ArchiLogger.LogGenericWarning(string.Format(Strings.WarningIdlingGameMismatch, game.AppID, game.GameName, game.PlayableAppID));
            }

            await Bot.IdleGame(game).ConfigureAwait(false);

            bool     success        = true;
            DateTime endFarmingDate = DateTime.UtcNow.AddHours(Program.GlobalConfig.MaxFarmingTime);

            while ((DateTime.UtcNow < endFarmingDate) && (await ShouldFarm(game).ConfigureAwait(false)).GetValueOrDefault(true))
            {
                Bot.ArchiLogger.LogGenericInfo(string.Format(Strings.StillIdling, game.AppID, game.GameName));

                DateTime startFarmingPeriod = DateTime.UtcNow;
                if (await FarmingResetSemaphore.WaitAsync(Program.GlobalConfig.FarmingDelay * 60 * 1000 + ExtraFarmingDelaySeconds * 1000).ConfigureAwait(false))
                {
                    success = KeepFarming;
                }

                // Don't forget to update our GamesToFarm hours
                game.HoursPlayed += (float)DateTime.UtcNow.Subtract(startFarmingPeriod).TotalHours;

                if (!success)
                {
                    break;
                }
            }

            Bot.ArchiLogger.LogGenericInfo(string.Format(Strings.StoppedIdling, game.AppID, game.GameName));
            return(success);
        }