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}"; | ||
|  |     } | ||
|  | } |