mirror of
https://github.com/JustArchiNET/ArchiSteamFarm.git
synced 2026-01-06 17:10:13 +00:00
First wave of family sharing bugfixes
This commit is contained in:
@@ -179,7 +179,7 @@ namespace ArchiSteamFarm {
|
||||
}
|
||||
|
||||
internal sealed class SharedLibraryLockStatusCallback : CallbackMsg {
|
||||
internal readonly bool LibraryLocked;
|
||||
internal readonly ulong LibraryLockedBySteamID;
|
||||
|
||||
internal SharedLibraryLockStatusCallback(JobID jobID, CMsgClientSharedLibraryLockStatus msg) {
|
||||
if ((jobID == null) || (msg == null)) {
|
||||
@@ -187,7 +187,12 @@ namespace ArchiSteamFarm {
|
||||
}
|
||||
|
||||
JobID = jobID;
|
||||
LibraryLocked = msg.own_library_locked_by != 0;
|
||||
|
||||
if (msg.own_library_locked_by == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
LibraryLockedBySteamID = new SteamID(msg.own_library_locked_by, EUniverse.Public, EAccountType.Individual);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -587,12 +587,13 @@ namespace ArchiSteamFarm {
|
||||
}
|
||||
|
||||
private void CheckOccupationStatus() {
|
||||
if (IsFarmingPossible) {
|
||||
Logging.LogGenericInfo("Account is no longer occupied, farming process resumed!", BotName);
|
||||
CardsFarmer.StartFarming().Forget();
|
||||
} else {
|
||||
if (!IsFarmingPossible) {
|
||||
Logging.LogGenericInfo("Account is currently being used, ASF will resume farming when it's free...", BotName);
|
||||
return;
|
||||
}
|
||||
|
||||
Logging.LogGenericInfo("Account is no longer occupied, farming process resumed!", BotName);
|
||||
CardsFarmer.Resume();
|
||||
}
|
||||
|
||||
private async Task InitializeFamilySharing() {
|
||||
@@ -693,20 +694,20 @@ namespace ArchiSteamFarm {
|
||||
}
|
||||
|
||||
if (pause) {
|
||||
if (CardsFarmer.ManualMode) {
|
||||
return "Automatic farming is stopped already!";
|
||||
if (CardsFarmer.Paused) {
|
||||
return "Automatic farming is paused already!";
|
||||
}
|
||||
|
||||
await CardsFarmer.SwitchToManualMode(true).ConfigureAwait(false);
|
||||
return "Automatic farming is now stopped!";
|
||||
await CardsFarmer.Pause().ConfigureAwait(false);
|
||||
return "Automatic farming is now paused!";
|
||||
}
|
||||
|
||||
if (!CardsFarmer.ManualMode) {
|
||||
return "Automatic farming is enabled already!";
|
||||
if (!CardsFarmer.Paused) {
|
||||
return "Automatic farming is resumed already!";
|
||||
}
|
||||
|
||||
await CardsFarmer.SwitchToManualMode(false).ConfigureAwait(false);
|
||||
return "Automatic farming is now enabled!";
|
||||
CardsFarmer.Resume();
|
||||
return "Automatic farming is now resumed!";
|
||||
}
|
||||
|
||||
private static async Task<string> ResponsePause(ulong steamID, string botName, bool pause) {
|
||||
@@ -749,8 +750,8 @@ namespace ArchiSteamFarm {
|
||||
return "Bot " + BotName + " is currently being used.";
|
||||
}
|
||||
|
||||
if (CardsFarmer.ManualMode) {
|
||||
return "Bot " + BotName + " is running in manual mode.";
|
||||
if (CardsFarmer.Paused) {
|
||||
return "Bot " + BotName + " is paused or running in manual mode.";
|
||||
}
|
||||
|
||||
if (CardsFarmer.CurrentGamesFarming.Count == 0) {
|
||||
@@ -1374,20 +1375,11 @@ namespace ArchiSteamFarm {
|
||||
return "This bot instance is not connected!";
|
||||
}
|
||||
|
||||
if (gameIDs.Contains(0)) {
|
||||
if (!CardsFarmer.ManualMode) {
|
||||
return "Done!";
|
||||
}
|
||||
|
||||
await CardsFarmer.SwitchToManualMode(false).ConfigureAwait(false);
|
||||
} else {
|
||||
if (!CardsFarmer.ManualMode) {
|
||||
await CardsFarmer.SwitchToManualMode(true).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
ArchiHandler.PlayGames(gameIDs);
|
||||
if (!CardsFarmer.Paused) {
|
||||
await CardsFarmer.Pause().ConfigureAwait(false);
|
||||
}
|
||||
|
||||
ArchiHandler.PlayGames(gameIDs);
|
||||
return "Done!";
|
||||
}
|
||||
|
||||
@@ -2164,11 +2156,21 @@ namespace ArchiSteamFarm {
|
||||
return;
|
||||
}
|
||||
|
||||
if (callback.LibraryLocked == LibraryLocked) {
|
||||
return; // No status update, we're not interested
|
||||
// Ignore no status updates
|
||||
if (!LibraryLocked) {
|
||||
if (callback.LibraryLockedBySteamID == 0 || callback.LibraryLockedBySteamID == SteamClient.SteamID) {
|
||||
return;
|
||||
}
|
||||
|
||||
LibraryLocked = true;
|
||||
} else {
|
||||
if (callback.LibraryLockedBySteamID != 0 && callback.LibraryLockedBySteamID != SteamClient.SteamID) {
|
||||
return;
|
||||
}
|
||||
|
||||
LibraryLocked = false;
|
||||
}
|
||||
|
||||
LibraryLocked = callback.LibraryLocked;
|
||||
CheckOccupationStatus();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -92,7 +92,7 @@ namespace ArchiSteamFarm {
|
||||
private readonly Timer IdleFarmingTimer;
|
||||
|
||||
[JsonProperty]
|
||||
internal bool ManualMode { get; private set; }
|
||||
internal bool Paused { get; private set; }
|
||||
|
||||
private bool KeepFarming, NowFarming;
|
||||
|
||||
@@ -124,31 +124,29 @@ namespace ArchiSteamFarm {
|
||||
IdleFarmingTimer?.Dispose();
|
||||
}
|
||||
|
||||
internal async Task SwitchToManualMode(bool manualMode) {
|
||||
if (ManualMode == manualMode) {
|
||||
return;
|
||||
}
|
||||
|
||||
ManualMode = manualMode;
|
||||
|
||||
if (ManualMode) {
|
||||
Logging.LogGenericInfo("Now running in Manual Farming mode", Bot.BotName);
|
||||
internal async Task Pause() {
|
||||
Paused = true;
|
||||
if (NowFarming) {
|
||||
await StopFarming().ConfigureAwait(false);
|
||||
} else {
|
||||
Logging.LogGenericInfo("Now running in Automatic Farming mode", Bot.BotName);
|
||||
}
|
||||
}
|
||||
|
||||
internal void Resume() {
|
||||
Paused = false;
|
||||
if (!NowFarming) {
|
||||
StartFarming().Forget();
|
||||
}
|
||||
}
|
||||
|
||||
internal async Task StartFarming() {
|
||||
if (NowFarming || ManualMode || !Bot.IsFarmingPossible) {
|
||||
if (NowFarming || Paused || !Bot.IsFarmingPossible) {
|
||||
return;
|
||||
}
|
||||
|
||||
await FarmingSemaphore.WaitAsync().ConfigureAwait(false);
|
||||
|
||||
try {
|
||||
if (NowFarming || ManualMode || !Bot.IsFarmingPossible) {
|
||||
if (NowFarming || Paused || !Bot.IsFarmingPossible) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -506,7 +504,7 @@ namespace ArchiSteamFarm {
|
||||
}
|
||||
|
||||
private void CheckGamesForFarming() {
|
||||
if (NowFarming || ManualMode || !Bot.IsConnectedAndLoggedOn) {
|
||||
if (NowFarming || Paused || !Bot.IsConnectedAndLoggedOn) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user