mirror of
https://github.com/JustArchiNET/ArchiSteamFarm.git
synced 2026-01-01 14:10:53 +00:00
Add random FarmingOrder + misc
This commit is contained in:
@@ -211,7 +211,8 @@ namespace ArchiSteamFarm {
|
||||
HoursAscending,
|
||||
HoursDescending,
|
||||
NamesAscending,
|
||||
NamesDescending
|
||||
NamesDescending,
|
||||
Random
|
||||
}
|
||||
|
||||
internal enum EPermission : byte {
|
||||
|
||||
@@ -188,7 +188,12 @@ namespace ArchiSteamFarm {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!await IsAnythingToFarm().ConfigureAwait(false)) {
|
||||
bool? isAnythingToFarm = await IsAnythingToFarm().ConfigureAwait(false);
|
||||
if (isAnythingToFarm == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isAnythingToFarm.Value) {
|
||||
Bot.ArchiLogger.LogGenericInfo(Strings.NothingToIdle);
|
||||
await Bot.OnFarmingFinished(false).ConfigureAwait(false);
|
||||
return;
|
||||
@@ -543,7 +548,7 @@ namespace ArchiSteamFarm {
|
||||
return;
|
||||
}
|
||||
}
|
||||
} while (await IsAnythingToFarm().ConfigureAwait(false));
|
||||
} while ((await IsAnythingToFarm().ConfigureAwait(false)).GetValueOrDefault());
|
||||
|
||||
CurrentGamesFarming.ClearAndTrim();
|
||||
NowFarming = false;
|
||||
@@ -713,13 +718,13 @@ namespace ArchiSteamFarm {
|
||||
return null;
|
||||
}
|
||||
|
||||
private async Task<bool> IsAnythingToFarm() {
|
||||
private async Task<bool?> IsAnythingToFarm() {
|
||||
// Find the number of badge pages
|
||||
Bot.ArchiLogger.LogGenericInfo(Strings.CheckingFirstBadgePage);
|
||||
HtmlDocument htmlDocument = await Bot.ArchiWebHandler.GetBadgePage(1).ConfigureAwait(false);
|
||||
if (htmlDocument == null) {
|
||||
Bot.ArchiLogger.LogGenericWarning(Strings.WarningCouldNotCheckBadges);
|
||||
return false;
|
||||
return null;
|
||||
}
|
||||
|
||||
byte maxPages = 1;
|
||||
@@ -729,12 +734,12 @@ namespace ArchiSteamFarm {
|
||||
string lastPage = htmlNode.InnerText;
|
||||
if (string.IsNullOrEmpty(lastPage)) {
|
||||
Bot.ArchiLogger.LogNullError(nameof(lastPage));
|
||||
return false;
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!byte.TryParse(lastPage, out maxPages) || (maxPages == 0)) {
|
||||
Bot.ArchiLogger.LogNullError(nameof(maxPages));
|
||||
return false;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -777,8 +782,12 @@ namespace ArchiSteamFarm {
|
||||
await Task.WhenAll(tasks).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
if (GamesToFarm.Count == 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
SortGamesToFarm();
|
||||
return GamesToFarm.Count > 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
private async Task<bool?> ShouldFarm(Game game) {
|
||||
@@ -801,6 +810,7 @@ namespace ArchiSteamFarm {
|
||||
|
||||
private void SortGamesToFarm() {
|
||||
IOrderedEnumerable<Game> gamesToFarm;
|
||||
|
||||
switch (Bot.BotConfig.FarmingOrder) {
|
||||
case BotConfig.EFarmingOrder.Unordered:
|
||||
return;
|
||||
@@ -828,6 +838,9 @@ namespace ArchiSteamFarm {
|
||||
case BotConfig.EFarmingOrder.NamesDescending:
|
||||
gamesToFarm = GamesToFarm.OrderByDescending(game => game.GameName);
|
||||
break;
|
||||
case BotConfig.EFarmingOrder.Random:
|
||||
gamesToFarm = GamesToFarm.OrderBy(game => Utilities.RandomNext());
|
||||
break;
|
||||
default:
|
||||
Bot.ArchiLogger.LogGenericError(string.Format(Strings.ErrorIsInvalid, nameof(Bot.BotConfig.FarmingOrder)));
|
||||
return;
|
||||
|
||||
@@ -34,7 +34,7 @@ using Humanizer;
|
||||
|
||||
namespace ArchiSteamFarm {
|
||||
internal static class Utilities {
|
||||
//private static readonly Random Random = new Random();
|
||||
private static readonly Random Random = new Random();
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
[SuppressMessage("ReSharper", "UnusedParameter.Global")]
|
||||
@@ -105,6 +105,12 @@ namespace ArchiSteamFarm {
|
||||
return true;
|
||||
}
|
||||
|
||||
internal static int RandomNext() {
|
||||
lock (Random) {
|
||||
return Random.Next();
|
||||
}
|
||||
}
|
||||
|
||||
internal static IEnumerable<T> ToEnumerable<T>(this T item) {
|
||||
yield return item;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user