diff --git a/ArchiSteamFarm/CardsFarmer.cs b/ArchiSteamFarm/CardsFarmer.cs index dd2ef6ede..4d8a1e838 100755 --- a/ArchiSteamFarm/CardsFarmer.cs +++ b/ArchiSteamFarm/CardsFarmer.cs @@ -35,7 +35,7 @@ using System.Threading.Tasks; namespace ArchiSteamFarm { internal sealed class CardsFarmer { internal readonly ConcurrentDictionary GamesToFarm = new ConcurrentDictionary(); - internal readonly List CurrentGamesFarming = new List(); + internal readonly HashSet CurrentGamesFarming = new HashSet(); private readonly ManualResetEvent FarmResetEvent = new ManualResetEvent(false); private readonly SemaphoreSlim Semaphore = new SemaphoreSlim(1); @@ -53,22 +53,22 @@ namespace ArchiSteamFarm { Bot = bot; - if (Program.GlobalConfig.FarmingPeriod > 0 && Timer == null) { + if (Program.GlobalConfig.IdleFarmingPeriod > 0 && Timer == null) { Timer = new Timer( async e => await CheckGamesForFarming().ConfigureAwait(false), null, - TimeSpan.FromHours(Program.GlobalConfig.FarmingPeriod), // Delay - TimeSpan.FromHours(Program.GlobalConfig.FarmingPeriod) // Period + TimeSpan.FromHours(Program.GlobalConfig.IdleFarmingPeriod), // Delay + TimeSpan.FromHours(Program.GlobalConfig.IdleFarmingPeriod) // Period ); } } - internal static List GetGamesToFarmSolo(ConcurrentDictionary gamesToFarm) { + internal static HashSet GetGamesToFarmSolo(ConcurrentDictionary gamesToFarm) { if (gamesToFarm == null) { return null; } - List result = new List(); + HashSet result = new HashSet(); foreach (KeyValuePair keyValue in gamesToFarm) { if (keyValue.Value >= 2) { result.Add(keyValue.Key); @@ -181,10 +181,10 @@ namespace ArchiSteamFarm { if (Bot.BotConfig.CardDropsRestricted) { // If we have restricted card drops, we use complex algorithm Logging.LogGenericInfo("Chosen farming algorithm: Complex", Bot.BotName); while (GamesToFarm.Count > 0) { - List gamesToFarmSolo = GetGamesToFarmSolo(GamesToFarm); + HashSet gamesToFarmSolo = GetGamesToFarmSolo(GamesToFarm); if (gamesToFarmSolo.Count > 0) { while (gamesToFarmSolo.Count > 0) { - uint appID = gamesToFarmSolo[0]; + uint appID = gamesToFarmSolo.First(); if (await FarmSolo(appID).ConfigureAwait(false)) { farmedSomething = true; Logging.LogGenericInfo("Done farming: " + appID, Bot.BotName); @@ -197,7 +197,6 @@ namespace ArchiSteamFarm { } } else { if (FarmMultiple(GamesToFarm)) { - farmedSomething = true; Logging.LogGenericInfo("Done farming: " + string.Join(", ", GamesToFarm.Keys), Bot.BotName); } else { NowFarming = false; diff --git a/ArchiSteamFarm/GlobalConfig.cs b/ArchiSteamFarm/GlobalConfig.cs index 596fe8b31..16e557f75 100644 --- a/ArchiSteamFarm/GlobalConfig.cs +++ b/ArchiSteamFarm/GlobalConfig.cs @@ -51,7 +51,7 @@ namespace ArchiSteamFarm { internal byte MaxFarmingTime { get; private set; } = 10; [JsonProperty(Required = Required.DisallowNull)] - internal byte FarmingPeriod { get; private set; } = 3; + internal byte IdleFarmingPeriod { get; private set; } = 3; [JsonProperty(Required = Required.DisallowNull)] internal byte FarmingDelay { get; private set; } = 5; diff --git a/ArchiSteamFarm/config/ASF.json b/ArchiSteamFarm/config/ASF.json index 7811917bd..6e77c86f4 100644 --- a/ArchiSteamFarm/config/ASF.json +++ b/ArchiSteamFarm/config/ASF.json @@ -3,6 +3,7 @@ "AutoUpdates": true, "UpdateChannel": 1, "MaxFarmingTime": 10, + "IdleFarmingPeriod": 3, "FarmingDelay": 5, "AccountPlayingDelay": 5, "LoginLimiterDelay": 7,