From 015eacbcb0f6276aa9849161cb8656c3fa9c77a0 Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Fri, 13 Jul 2018 11:29:11 +0300 Subject: [PATCH] Fixed GameAnalytics thread becoming active despite user statistics being disabled, causing the game to stay active in the background when quitting. --- Barotrauma/BarotraumaClient/Source/GUI/GUI.cs | 9 ++++--- .../Source/Screens/LobbyScreen.cs | 3 +-- .../Source/Screens/MainMenuScreen.cs | 2 +- .../Source/Screens/NetLobbyScreen.cs | 2 +- .../Source/Screens/SubEditorScreen.cs | 2 +- .../Source/Characters/Character.cs | 26 ++++++++++--------- .../Source/GameSession/GameSession.cs | 17 +++++++----- .../Source/Networking/GameServer.cs | 13 ++++++---- 8 files changed, 43 insertions(+), 31 deletions(-) diff --git a/Barotrauma/BarotraumaClient/Source/GUI/GUI.cs b/Barotrauma/BarotraumaClient/Source/GUI/GUI.cs index 7a10ff814..162a109f8 100644 --- a/Barotrauma/BarotraumaClient/Source/GUI/GUI.cs +++ b/Barotrauma/BarotraumaClient/Source/GUI/GUI.cs @@ -214,9 +214,12 @@ namespace Barotrauma if (GameMain.GameSession != null) { - Mission mission = GameMain.GameSession.Mission; - GameAnalyticsSDK.Net.GameAnalytics.AddDesignEvent("QuitRound:" + (save ? "Save" : "NoSave")); - GameAnalyticsSDK.Net.GameAnalytics.AddDesignEvent("EndRound:" + (mission == null ? "NoMission" : (mission.Completed ? "MissionCompleted" : "MissionFailed"))); + if (GameSettings.SendUserStatistics) + { + Mission mission = GameMain.GameSession.Mission; + GameAnalyticsSDK.Net.GameAnalytics.AddDesignEvent("QuitRound:" + (save ? "Save" : "NoSave")); + GameAnalyticsSDK.Net.GameAnalytics.AddDesignEvent("EndRound:" + (mission == null ? "NoMission" : (mission.Completed ? "MissionCompleted" : "MissionFailed"))); + } GameMain.GameSession = null; } diff --git a/Barotrauma/BarotraumaClient/Source/Screens/LobbyScreen.cs b/Barotrauma/BarotraumaClient/Source/Screens/LobbyScreen.cs index a5d5559f5..41ce03dfd 100644 --- a/Barotrauma/BarotraumaClient/Source/Screens/LobbyScreen.cs +++ b/Barotrauma/BarotraumaClient/Source/Screens/LobbyScreen.cs @@ -88,8 +88,7 @@ namespace Barotrauma campaignUI.OnLocationSelected = SelectLocation; campaignUI.UpdateCharacterLists(); - - GameAnalyticsSDK.Net.GameAnalytics.SetCustomDimension01("singleplayer"); + if (GameSettings.SendUserStatistics) GameAnalyticsSDK.Net.GameAnalytics.SetCustomDimension01("singleplayer"); } public override void AddToGUIUpdateList() diff --git a/Barotrauma/BarotraumaClient/Source/Screens/MainMenuScreen.cs b/Barotrauma/BarotraumaClient/Source/Screens/MainMenuScreen.cs index 06aed54fc..6785b2c01 100644 --- a/Barotrauma/BarotraumaClient/Source/Screens/MainMenuScreen.cs +++ b/Barotrauma/BarotraumaClient/Source/Screens/MainMenuScreen.cs @@ -143,7 +143,7 @@ namespace Barotrauma SelectTab(null, 0); - GameAnalyticsSDK.Net.GameAnalytics.SetCustomDimension01(""); + if (GameSettings.SendUserStatistics) GameAnalyticsSDK.Net.GameAnalytics.SetCustomDimension01(""); } public bool SelectTab(GUIButton button, object obj) diff --git a/Barotrauma/BarotraumaClient/Source/Screens/NetLobbyScreen.cs b/Barotrauma/BarotraumaClient/Source/Screens/NetLobbyScreen.cs index c93808b5b..eee9771d2 100644 --- a/Barotrauma/BarotraumaClient/Source/Screens/NetLobbyScreen.cs +++ b/Barotrauma/BarotraumaClient/Source/Screens/NetLobbyScreen.cs @@ -501,7 +501,7 @@ namespace Barotrauma } } - GameAnalyticsSDK.Net.GameAnalytics.SetCustomDimension01("multiplayer"); + if (GameSettings.SendUserStatistics) GameAnalyticsSDK.Net.GameAnalytics.SetCustomDimension01("multiplayer"); if (GameModePreset.list.Count > 0 && modeList.Selected == null) modeList.Select(0); diff --git a/Barotrauma/BarotraumaClient/Source/Screens/SubEditorScreen.cs b/Barotrauma/BarotraumaClient/Source/Screens/SubEditorScreen.cs index 89f9f576a..12659034f 100644 --- a/Barotrauma/BarotraumaClient/Source/Screens/SubEditorScreen.cs +++ b/Barotrauma/BarotraumaClient/Source/Screens/SubEditorScreen.cs @@ -349,7 +349,7 @@ namespace Barotrauma cam.UpdateTransform(); - GameAnalyticsSDK.Net.GameAnalytics.SetCustomDimension01("editor"); + if (GameSettings.SendUserStatistics) GameAnalyticsSDK.Net.GameAnalytics.SetCustomDimension01("editor"); } public override void Deselect() diff --git a/Barotrauma/BarotraumaShared/Source/Characters/Character.cs b/Barotrauma/BarotraumaShared/Source/Characters/Character.cs index a7146cd65..dbf3e7e0c 100644 --- a/Barotrauma/BarotraumaShared/Source/Characters/Character.cs +++ b/Barotrauma/BarotraumaShared/Source/Characters/Character.cs @@ -1949,18 +1949,20 @@ namespace Barotrauma AnimController.Frozen = false; GameServer.Log(LogName + " has died (Cause of death: " + causeOfDeath + ")", ServerLog.MessageType.Attack); - - string characterType = "Unknown"; - if (this == controlled) - characterType = "Player"; - else if (IsRemotePlayer) - characterType = "RemotePlayer"; - else if (AIController is EnemyAIController) - characterType = "Enemy"; - else if (AIController is HumanAIController) - characterType = "AICrew"; - GameAnalyticsSDK.Net.GameAnalytics.AddDesignEvent("Kill:" + characterType + ":" + SpeciesName + ":" + causeOfDeath); - + if (GameSettings.SendUserStatistics) + { + string characterType = "Unknown"; + if (this == controlled) + characterType = "Player"; + else if (IsRemotePlayer) + characterType = "RemotePlayer"; + else if (AIController is EnemyAIController) + characterType = "Enemy"; + else if (AIController is HumanAIController) + characterType = "AICrew"; + GameAnalyticsSDK.Net.GameAnalytics.AddDesignEvent("Kill:" + characterType + ":" + SpeciesName + ":" + causeOfDeath); + } + if (OnDeath != null) OnDeath(this, causeOfDeath); KillProjSpecific(); diff --git a/Barotrauma/BarotraumaShared/Source/GameSession/GameSession.cs b/Barotrauma/BarotraumaShared/Source/GameSession/GameSession.cs index fcdd2932c..855db7f5f 100644 --- a/Barotrauma/BarotraumaShared/Source/GameSession/GameSession.cs +++ b/Barotrauma/BarotraumaShared/Source/GameSession/GameSession.cs @@ -228,9 +228,12 @@ namespace Barotrauma if (GameMode != null) GameMode.MsgBox(); - GameAnalyticsSDK.Net.GameAnalytics.AddDesignEvent("Submarine:" + submarine.Name); - GameAnalyticsSDK.Net.GameAnalytics.AddProgressionEvent(GameAnalyticsSDK.Net.EGAProgressionStatus.Start, - GameMode.Name, (Mission == null ? "None" : Mission.GetType().ToString())); + if (GameSettings.SendUserStatistics) + { + GameAnalyticsSDK.Net.GameAnalytics.AddDesignEvent("Submarine:" + submarine.Name); + GameAnalyticsSDK.Net.GameAnalytics.AddProgressionEvent(GameAnalyticsSDK.Net.EGAProgressionStatus.Start, + GameMode.Name, (Mission == null ? "None" : Mission.GetType().ToString())); + } #if CLIENT roundSummary = new RoundSummary(this); @@ -243,9 +246,11 @@ namespace Barotrauma public void EndRound(string endMessage) { if (Mission != null) Mission.End(); - - GameAnalyticsSDK.Net.GameAnalytics.AddProgressionEvent((Mission == null || Mission.Completed) ? GameAnalyticsSDK.Net.EGAProgressionStatus.Complete : GameAnalyticsSDK.Net.EGAProgressionStatus.Fail, - GameMode.Name, (Mission == null ? "None" : Mission.GetType().ToString())); + if (GameSettings.SendUserStatistics) + { + GameAnalyticsSDK.Net.GameAnalytics.AddProgressionEvent((Mission == null || Mission.Completed) ? GameAnalyticsSDK.Net.EGAProgressionStatus.Complete : GameAnalyticsSDK.Net.EGAProgressionStatus.Fail, + GameMode.Name, (Mission == null ? "None" : Mission.GetType().ToString())); + } #if CLIENT if (roundSummary != null) diff --git a/Barotrauma/BarotraumaShared/Source/Networking/GameServer.cs b/Barotrauma/BarotraumaShared/Source/Networking/GameServer.cs index 5e6a8c529..81d633979 100644 --- a/Barotrauma/BarotraumaShared/Source/Networking/GameServer.cs +++ b/Barotrauma/BarotraumaShared/Source/Networking/GameServer.cs @@ -208,8 +208,8 @@ namespace Barotrauma.Networking GameMain.NetLobbyScreen.Select(); GameMain.NetLobbyScreen.RandomizeSettings(); started = true; - - GameAnalyticsSDK.Net.GameAnalytics.AddDesignEvent("GameServer:Start"); + + if (GameSettings.SendUserStatistics) GameAnalyticsSDK.Net.GameAnalytics.AddDesignEvent("GameServer:Start"); yield return CoroutineStatus.Success; } @@ -1359,7 +1359,7 @@ namespace Barotrauma.Networking } } - GameAnalyticsSDK.Net.GameAnalytics.AddDesignEvent("Traitors:" + (TraitorManager == null ? "Disabled" : "Enabled")); + if (GameSettings.SendUserStatistics) GameAnalyticsSDK.Net.GameAnalytics.AddDesignEvent("Traitors:" + (TraitorManager == null ? "Disabled" : "Enabled")); SendStartMessage(roundStartSeed, Submarine.MainSub, GameMain.GameSession.GameMode.Preset, connectedClients); @@ -2253,8 +2253,11 @@ namespace Barotrauma.Networking Log("Shutting down the server...", ServerLog.MessageType.ServerMessage); log.Save(); } - - GameAnalyticsSDK.Net.GameAnalytics.AddDesignEvent("GameServer:ShutDown"); + + if (GameSettings.SendUserStatistics) + { + GameAnalyticsSDK.Net.GameAnalytics.AddDesignEvent("GameServer:ShutDown"); + } server.Shutdown("The server has been shut down"); } }