From 62904e13cb400eab6987212c11894000ced42e26 Mon Sep 17 00:00:00 2001 From: JustArchi Date: Wed, 13 Jun 2018 00:48:33 +0200 Subject: [PATCH] FarmOffline -> OnlineStatus --- ArchiSteamFarm/Bot.cs | 6 +++--- ArchiSteamFarm/BotConfig.cs | 33 ++++++++++++++++++++++-------- ArchiSteamFarm/GlobalConfig.cs | 2 +- ArchiSteamFarm/config/example.json | 2 +- 4 files changed, 29 insertions(+), 14 deletions(-) diff --git a/ArchiSteamFarm/Bot.cs b/ArchiSteamFarm/Bot.cs index a81545f45..1fe723009 100755 --- a/ArchiSteamFarm/Bot.cs +++ b/ArchiSteamFarm/Bot.cs @@ -1846,7 +1846,7 @@ namespace ArchiSteamFarm { // We should never ever get friend message in the first place when we're using FarmOffline // But due to Valve's fuckups, everything is possible, and this case must be checked too // Additionally, we might even make use of that if user didn't enable HandleOfflineMessages - if (!IsAllowedToExecuteCommands(callback.Sender) || (BotConfig.FarmOffline && BotConfig.HandleOfflineMessages)) { + if (!IsAllowedToExecuteCommands(callback.Sender) || ((BotConfig.OnlineStatus == EPersonaState.Offline) && BotConfig.HandleOfflineMessages)) { return; } @@ -2156,8 +2156,8 @@ namespace ArchiSteamFarm { }); } - if (!BotConfig.FarmOffline) { - SteamFriends.SetPersonaState(EPersonaState.Online); + if (BotConfig.OnlineStatus != EPersonaState.Offline) { + SteamFriends.SetPersonaState(BotConfig.OnlineStatus); } break; diff --git a/ArchiSteamFarm/BotConfig.cs b/ArchiSteamFarm/BotConfig.cs index 48c92618a..4714e2bb6 100644 --- a/ArchiSteamFarm/BotConfig.cs +++ b/ArchiSteamFarm/BotConfig.cs @@ -29,6 +29,7 @@ using System.Threading.Tasks; using ArchiSteamFarm.Json; using ArchiSteamFarm.Localization; using Newtonsoft.Json; +using SteamKit2; namespace ArchiSteamFarm { [SuppressMessage("ReSharper", "ClassCannotBeInstantiated")] @@ -59,9 +60,6 @@ namespace ArchiSteamFarm { [JsonProperty(Required = Required.DisallowNull)] internal readonly EFarmingOrder FarmingOrder = EFarmingOrder.Unordered; - [JsonProperty(Required = Required.DisallowNull)] - internal readonly bool FarmOffline; - [JsonProperty(Required = Required.DisallowNull)] internal readonly HashSet GamesPlayedWhileIdle = new HashSet(); @@ -117,6 +115,8 @@ namespace ArchiSteamFarm { [JsonProperty(Required = Required.DisallowNull)] internal readonly bool UseLoginKeys = true; + internal EPersonaState OnlineStatus { get; private set; } = EPersonaState.Online; + [JsonProperty] internal string SteamLogin { get; set; } @@ -131,6 +131,17 @@ namespace ArchiSteamFarm { private bool ShouldSerializeSensitiveDetails = true; + [JsonProperty(Required = Required.DisallowNull)] + private bool FarmOffline { + set { + ASF.ArchiLogger.LogGenericWarning(string.Format(Strings.WarningDeprecated, nameof(FarmOffline), nameof(OnlineStatus))); + + if (value) { + OnlineStatus = EPersonaState.Offline; + } + } + } + [JsonProperty(PropertyName = SharedInfo.UlongCompatibilityStringPrefix + nameof(SteamMasterClanID), Required = Required.DisallowNull)] private string SSteamMasterClanID { get => SteamMasterClanID.ToString(); @@ -182,15 +193,19 @@ namespace ArchiSteamFarm { // User might not know what he's doing // Ensure that he can't screw core ASF variables - if (botConfig.GamesPlayedWhileIdle.Count <= ArchiHandler.MaxGamesPlayedConcurrently) { - return botConfig; + // TODO: Change me to >= EPersonaState.Max with next SK2 release + if ((botConfig.OnlineStatus < EPersonaState.Offline) || (botConfig.OnlineStatus > EPersonaState.Max)) { + ASF.ArchiLogger.LogGenericError(string.Format(Strings.ErrorConfigPropertyInvalid, nameof(botConfig.OnlineStatus), botConfig.OnlineStatus)); + return null; } - ASF.ArchiLogger.LogGenericWarning(string.Format(Strings.WarningTooManyGamesToPlay, ArchiHandler.MaxGamesPlayedConcurrently, nameof(botConfig.GamesPlayedWhileIdle))); + if (botConfig.GamesPlayedWhileIdle.Count > ArchiHandler.MaxGamesPlayedConcurrently) { + ASF.ArchiLogger.LogGenericWarning(string.Format(Strings.WarningTooManyGamesToPlay, ArchiHandler.MaxGamesPlayedConcurrently, nameof(botConfig.GamesPlayedWhileIdle))); - HashSet validGames = botConfig.GamesPlayedWhileIdle.Take(ArchiHandler.MaxGamesPlayedConcurrently).ToHashSet(); - botConfig.GamesPlayedWhileIdle.IntersectWith(validGames); - botConfig.GamesPlayedWhileIdle.TrimExcess(); + HashSet validGames = botConfig.GamesPlayedWhileIdle.Take(ArchiHandler.MaxGamesPlayedConcurrently).ToHashSet(); + botConfig.GamesPlayedWhileIdle.IntersectWith(validGames); + botConfig.GamesPlayedWhileIdle.TrimExcess(); + } return botConfig; } diff --git a/ArchiSteamFarm/GlobalConfig.cs b/ArchiSteamFarm/GlobalConfig.cs index 7aac43993..196a67331 100644 --- a/ArchiSteamFarm/GlobalConfig.cs +++ b/ArchiSteamFarm/GlobalConfig.cs @@ -285,7 +285,7 @@ namespace ArchiSteamFarm { return null; } - if ((globalConfig.SteamProtocols == 0) || (globalConfig.SteamProtocols > ProtocolTypes.All)) { + if ((globalConfig.SteamProtocols <= 0) || (globalConfig.SteamProtocols > ProtocolTypes.All)) { ASF.ArchiLogger.LogGenericError(string.Format(Strings.ErrorConfigPropertyInvalid, nameof(globalConfig.SteamProtocols), globalConfig.SteamProtocols)); return null; } diff --git a/ArchiSteamFarm/config/example.json b/ArchiSteamFarm/config/example.json index 5a8c3d4d0..3058e722e 100644 --- a/ArchiSteamFarm/config/example.json +++ b/ArchiSteamFarm/config/example.json @@ -7,7 +7,6 @@ "DismissInventoryNotifications": false, "Enabled": false, "FarmingOrder": 0, - "FarmOffline": false, "GamesPlayedWhileIdle": [], "HandleOfflineMessages": false, "HoursUntilCardDrops": 3, @@ -21,6 +20,7 @@ "MatchableTypes": [ 5 ], + "OnlineStatus": 1, "PasswordFormat": 0, "Paused": false, "RedeemingPreferences": 0,