diff --git a/Barotrauma/BarotraumaClient/Source/GUI/GUI.cs b/Barotrauma/BarotraumaClient/Source/GUI/GUI.cs
index 064473e99..7a10ff814 100644
--- a/Barotrauma/BarotraumaClient/Source/GUI/GUI.cs
+++ b/Barotrauma/BarotraumaClient/Source/GUI/GUI.cs
@@ -198,7 +198,8 @@ namespace Barotrauma
private static bool QuitClicked(GUIButton button, object obj)
{
- if (button.UserData as string == "save")
+ bool save = button.UserData as string == "save";
+ if (save)
{
SaveUtil.SaveGame(GameMain.GameSession.SavePath);
}
@@ -211,10 +212,15 @@ namespace Barotrauma
CoroutineManager.StopCoroutines("EndCinematic");
- GameMain.GameSession = null;
+ 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")));
+ GameMain.GameSession = null;
+ }
GameMain.MainMenuScreen.Select();
- //Game1.MainMenuScreen.SelectTab(null, (int)MainMenuScreen.Tabs.Main);
return true;
}
diff --git a/Barotrauma/BarotraumaClient/Source/GameMain.cs b/Barotrauma/BarotraumaClient/Source/GameMain.cs
index 158f66f8d..73363e61b 100644
--- a/Barotrauma/BarotraumaClient/Source/GameMain.cs
+++ b/Barotrauma/BarotraumaClient/Source/GameMain.cs
@@ -245,21 +245,16 @@ namespace Barotrauma
userStatsPrompt.Buttons[0].OnClicked += (btn, userdata) =>
{
GameSettings.SendUserStatistics = true;
- GameAnalytics.ConfigureBuild(Version.ToString());
- GameAnalytics.Initialize("a3a073c20982de7c15d21e840e149122", "dbcdabf31c6481129a024df3ee6bad02aeddbab7");
+ GameAnalyticsManager.Init();
return true;
};
userStatsPrompt.Buttons[0].OnClicked += userStatsPrompt.Close;
userStatsPrompt.Buttons[1].OnClicked += (btn, userdata) => { GameSettings.SendUserStatistics = false; return true; };
userStatsPrompt.Buttons[1].OnClicked += userStatsPrompt.Close;
}
- else
+ else if (GameSettings.SendUserStatistics)
{
- if (GameSettings.SendUserStatistics)
- {
- GameAnalytics.ConfigureBuild(Version.ToString());
- GameAnalytics.Initialize("a3a073c20982de7c15d21e840e149122", "dbcdabf31c6481129a024df3ee6bad02aeddbab7");
- }
+ GameAnalyticsManager.Init();
}
}
diff --git a/Barotrauma/BarotraumaClient/Source/Screens/LobbyScreen.cs b/Barotrauma/BarotraumaClient/Source/Screens/LobbyScreen.cs
index e4bb5e8d2..a5d5559f5 100644
--- a/Barotrauma/BarotraumaClient/Source/Screens/LobbyScreen.cs
+++ b/Barotrauma/BarotraumaClient/Source/Screens/LobbyScreen.cs
@@ -87,6 +87,9 @@ namespace Barotrauma
campaignUI.StartRound = StartRound;
campaignUI.OnLocationSelected = SelectLocation;
campaignUI.UpdateCharacterLists();
+
+
+ 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 6f9e323b1..06aed54fc 100644
--- a/Barotrauma/BarotraumaClient/Source/Screens/MainMenuScreen.cs
+++ b/Barotrauma/BarotraumaClient/Source/Screens/MainMenuScreen.cs
@@ -142,6 +142,8 @@ namespace Barotrauma
campaignSetupUI.UpdateSubList();
SelectTab(null, 0);
+
+ 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 3946e7ea4..c93808b5b 100644
--- a/Barotrauma/BarotraumaClient/Source/Screens/NetLobbyScreen.cs
+++ b/Barotrauma/BarotraumaClient/Source/Screens/NetLobbyScreen.cs
@@ -501,6 +501,8 @@ namespace Barotrauma
}
}
+ GameAnalyticsSDK.Net.GameAnalytics.SetCustomDimension01("multiplayer");
+
if (GameModePreset.list.Count > 0 && modeList.Selected == null) modeList.Select(0);
GameMain.Server.Voting.ResetVotes(GameMain.Server.ConnectedClients);
diff --git a/Barotrauma/BarotraumaClient/Source/Screens/SubEditorScreen.cs b/Barotrauma/BarotraumaClient/Source/Screens/SubEditorScreen.cs
index 7c3cf0daf..89f9f576a 100644
--- a/Barotrauma/BarotraumaClient/Source/Screens/SubEditorScreen.cs
+++ b/Barotrauma/BarotraumaClient/Source/Screens/SubEditorScreen.cs
@@ -348,6 +348,8 @@ namespace Barotrauma
}
cam.UpdateTransform();
+
+ GameAnalyticsSDK.Net.GameAnalytics.SetCustomDimension01("editor");
}
public override void Deselect()
diff --git a/Barotrauma/BarotraumaServer/Source/GameMain.cs b/Barotrauma/BarotraumaServer/Source/GameMain.cs
index 332e26424..f8f2f1ad5 100644
--- a/Barotrauma/BarotraumaServer/Source/GameMain.cs
+++ b/Barotrauma/BarotraumaServer/Source/GameMain.cs
@@ -75,8 +75,7 @@ namespace Barotrauma
if (GameSettings.SendUserStatistics)
{
- GameAnalytics.ConfigureBuild(Version.ToString());
- GameAnalytics.Initialize("a3a073c20982de7c15d21e840e149122", "dbcdabf31c6481129a024df3ee6bad02aeddbab7");
+ GameAnalyticsManager.Init();
}
GameScreen = new GameScreen();
diff --git a/Barotrauma/BarotraumaShared/BarotraumaShared.projitems b/Barotrauma/BarotraumaShared/BarotraumaShared.projitems
index 10c86e8ad..204cfebb4 100644
--- a/Barotrauma/BarotraumaShared/BarotraumaShared.projitems
+++ b/Barotrauma/BarotraumaShared/BarotraumaShared.projitems
@@ -1475,6 +1475,7 @@
+
diff --git a/Barotrauma/BarotraumaShared/Source/Characters/Character.cs b/Barotrauma/BarotraumaShared/Source/Characters/Character.cs
index 8d681550d..a7146cd65 100644
--- a/Barotrauma/BarotraumaShared/Source/Characters/Character.cs
+++ b/Barotrauma/BarotraumaShared/Source/Characters/Character.cs
@@ -1948,8 +1948,19 @@ namespace Barotrauma
AnimController.Frozen = false;
- GameServer.Log(LogName+" has died (Cause of death: "+causeOfDeath+")", ServerLog.MessageType.Attack);
+ 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 (OnDeath != null) OnDeath(this, causeOfDeath);
KillProjSpecific();
diff --git a/Barotrauma/BarotraumaShared/Source/GameAnalyticsManager.cs b/Barotrauma/BarotraumaShared/Source/GameAnalyticsManager.cs
new file mode 100644
index 000000000..428bf1c8a
--- /dev/null
+++ b/Barotrauma/BarotraumaShared/Source/GameAnalyticsManager.cs
@@ -0,0 +1,23 @@
+using GameAnalyticsSDK.Net;
+using System;
+
+namespace Barotrauma
+{
+ public static class GameAnalyticsManager
+ {
+ public static void Init()
+ {
+ GameAnalytics.SetEnabledInfoLog(true);
+ GameAnalytics.ConfigureBuild(GameMain.Version.ToString());
+ GameAnalytics.ConfigureAvailableCustomDimensions01("singleplayer", "multiplayer", "editor");
+ GameAnalytics.Initialize("a3a073c20982de7c15d21e840e149122", "9010ad9a671233b8d9610d76cec8c897d9ff3ba7");
+
+ string contentPackageName = GameMain.Config?.SelectedContentPackage?.Name;
+ if (!string.IsNullOrEmpty(contentPackageName))
+ {
+ GameAnalytics.AddDesignEvent("ContentPackage:" +
+ contentPackageName.Replace(":", "").Substring(0, Math.Min(32, contentPackageName.Length)));
+ }
+ }
+ }
+}
diff --git a/Barotrauma/BarotraumaShared/Source/GameSession/GameSession.cs b/Barotrauma/BarotraumaShared/Source/GameSession/GameSession.cs
index 7d4fdbde3..fcdd2932c 100644
--- a/Barotrauma/BarotraumaShared/Source/GameSession/GameSession.cs
+++ b/Barotrauma/BarotraumaShared/Source/GameSession/GameSession.cs
@@ -228,6 +228,10 @@ 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 CLIENT
roundSummary = new RoundSummary(this);
@@ -239,6 +243,9 @@ 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 CLIENT
if (roundSummary != null)
diff --git a/Barotrauma/BarotraumaShared/Source/GameSettings.cs b/Barotrauma/BarotraumaShared/Source/GameSettings.cs
index 08425020c..718e320bf 100644
--- a/Barotrauma/BarotraumaShared/Source/GameSettings.cs
+++ b/Barotrauma/BarotraumaShared/Source/GameSettings.cs
@@ -279,10 +279,8 @@ namespace Barotrauma
{
case "contentpackage":
string path = subElement.GetAttributeString("path", "");
-
-
+
SelectedContentPackage = ContentPackage.list.Find(cp => cp.Path == path);
-
if (SelectedContentPackage == null) SelectedContentPackage = new ContentPackage(path);
break;
}
diff --git a/Barotrauma/BarotraumaShared/Source/Networking/GameServer.cs b/Barotrauma/BarotraumaShared/Source/Networking/GameServer.cs
index aaf21bcdb..5e6a8c529 100644
--- a/Barotrauma/BarotraumaShared/Source/Networking/GameServer.cs
+++ b/Barotrauma/BarotraumaShared/Source/Networking/GameServer.cs
@@ -208,6 +208,8 @@ namespace Barotrauma.Networking
GameMain.NetLobbyScreen.Select();
GameMain.NetLobbyScreen.RandomizeSettings();
started = true;
+
+ GameAnalyticsSDK.Net.GameAnalytics.AddDesignEvent("GameServer:Start");
yield return CoroutineStatus.Success;
}
@@ -1357,6 +1359,8 @@ namespace Barotrauma.Networking
}
}
+ GameAnalyticsSDK.Net.GameAnalytics.AddDesignEvent("Traitors:" + (TraitorManager == null ? "Disabled" : "Enabled"));
+
SendStartMessage(roundStartSeed, Submarine.MainSub, GameMain.GameSession.GameMode.Preset, connectedClients);
yield return CoroutineStatus.Running;
@@ -2249,7 +2253,8 @@ namespace Barotrauma.Networking
Log("Shutting down the server...", ServerLog.MessageType.ServerMessage);
log.Save();
}
-
+
+ GameAnalyticsSDK.Net.GameAnalytics.AddDesignEvent("GameServer:ShutDown");
server.Shutdown("The server has been shut down");
}
}