65 lines
2.8 KiB
C#
65 lines
2.8 KiB
C#
|
using System;
|
||
|
using System.Collections.Generic;
|
||
|
using UnityEngine;
|
||
|
using UnityEngine.Analytics;
|
||
|
|
||
|
namespace Unity.Multiplayer.Center.Analytics
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// Does the same as the MultiplayerCenterAnalytics, but logs the events to the console instead of sending them.
|
||
|
/// It is useful to debug fast, without the EditorAnalytics Debugger package (but it does not replace it).
|
||
|
/// </summary>
|
||
|
internal class DebugAnalytics : MultiplayerCenterAnalytics
|
||
|
{
|
||
|
public DebugAnalytics(string questionnaireVersion, IReadOnlyDictionary<string, string> questionDisplayNames,
|
||
|
IReadOnlyDictionary<string,string> answerDisplayNames)
|
||
|
: base(questionnaireVersion, questionDisplayNames, answerDisplayNames) { }
|
||
|
|
||
|
protected override void SendAnalytic(IAnalytic analytic)
|
||
|
{
|
||
|
analytic.TryGatherData(out var data, out var _);
|
||
|
switch (data)
|
||
|
{
|
||
|
case InstallData installData:
|
||
|
Debug.Log($"Event: {analytic.GetType()} - Data: {ToString(installData)}");
|
||
|
break;
|
||
|
case RecommendationData recommendationData:
|
||
|
Debug.Log($"Event: {analytic.GetType()} - Data: {ToString(recommendationData)}");
|
||
|
break;
|
||
|
case InteractionData interactionEventAnalytic:
|
||
|
Debug.Log($"Event: {analytic.GetType()} - Data: {ToString(interactionEventAnalytic)}");
|
||
|
break;
|
||
|
default:
|
||
|
Debug.Log($"Unknown event: {analytic.GetType()} - Data: {data}");
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static string ToString(GameSpec p) => $"GameSpec [{p.QuestionText} -> {p.AnswerText}]";
|
||
|
|
||
|
static string ToString(Package p) => $"Package [{p.PackageId} - Selected {p.SelectedForInstall} - Reco {p.IsRecommended} - Inst {p.IsAlreadyInstalled}]";
|
||
|
|
||
|
static string ToString(InstallData data)
|
||
|
{
|
||
|
var packageStrings = new List<string>(data.Packages.Length);
|
||
|
foreach (var package in data.Packages)
|
||
|
{
|
||
|
packageStrings.Add(ToString(package));
|
||
|
}
|
||
|
return $"{data.PresetName} - Packages [{data.Packages.Length}] packages: \n{string.Join("\n", packageStrings)}";
|
||
|
}
|
||
|
|
||
|
static string ToString(RecommendationData data)
|
||
|
{
|
||
|
var gameSpecStrings = new List<string>(data.GameSpecs.Length);
|
||
|
foreach (var gameSpec in data.GameSpecs)
|
||
|
{
|
||
|
gameSpecStrings.Add(ToString(gameSpec));
|
||
|
}
|
||
|
return $"{data.PresetName} - GameSpecs [{data.GameSpecs.Length}] gamespecs: \n{string.Join("\n", gameSpecStrings)}";
|
||
|
}
|
||
|
|
||
|
static string ToString(InteractionData data) => $"{data.SectionId}({data.TargetPackageId}) - {data.Type} - {data.DisplayName}";
|
||
|
}
|
||
|
}
|