A game about forced loneliness, made by TACStudios
1using System;
2using System.Collections.Generic;
3using UnityEngine;
4using UnityEngine.Analytics;
5
6namespace Unity.Multiplayer.Center.Analytics
7{
8 /// <summary>
9 /// Does the same as the MultiplayerCenterAnalytics, but logs the events to the console instead of sending them.
10 /// It is useful to debug fast, without the EditorAnalytics Debugger package (but it does not replace it).
11 /// </summary>
12 internal class DebugAnalytics : MultiplayerCenterAnalytics
13 {
14 public DebugAnalytics(string questionnaireVersion, IReadOnlyDictionary<string, string> questionDisplayNames,
15 IReadOnlyDictionary<string,string> answerDisplayNames)
16 : base(questionnaireVersion, questionDisplayNames, answerDisplayNames) { }
17
18 protected override void SendAnalytic(IAnalytic analytic)
19 {
20 analytic.TryGatherData(out var data, out var _);
21 switch (data)
22 {
23 case InstallData installData:
24 Debug.Log($"Event: {analytic.GetType()} - Data: {ToString(installData)}");
25 break;
26 case RecommendationData recommendationData:
27 Debug.Log($"Event: {analytic.GetType()} - Data: {ToString(recommendationData)}");
28 break;
29 case InteractionData interactionEventAnalytic:
30 Debug.Log($"Event: {analytic.GetType()} - Data: {ToString(interactionEventAnalytic)}");
31 break;
32 default:
33 Debug.Log($"Unknown event: {analytic.GetType()} - Data: {data}");
34 break;
35 }
36 }
37
38 static string ToString(GameSpec p) => $"GameSpec [{p.QuestionText} -> {p.AnswerText}]";
39
40 static string ToString(Package p) => $"Package [{p.PackageId} - Selected {p.SelectedForInstall} - Reco {p.IsRecommended} - Inst {p.IsAlreadyInstalled}]";
41
42 static string ToString(InstallData data)
43 {
44 var packageStrings = new List<string>(data.Packages.Length);
45 foreach (var package in data.Packages)
46 {
47 packageStrings.Add(ToString(package));
48 }
49 return $"{data.PresetName} - Packages [{data.Packages.Length}] packages: \n{string.Join("\n", packageStrings)}";
50 }
51
52 static string ToString(RecommendationData data)
53 {
54 var gameSpecStrings = new List<string>(data.GameSpecs.Length);
55 foreach (var gameSpec in data.GameSpecs)
56 {
57 gameSpecStrings.Add(ToString(gameSpec));
58 }
59 return $"{data.PresetName} - GameSpecs [{data.GameSpecs.Length}] gamespecs: \n{string.Join("\n", gameSpecStrings)}";
60 }
61
62 static string ToString(InteractionData data) => $"{data.SectionId}({data.TargetPackageId}) - {data.Type} - {data.DisplayName}";
63 }
64}