using System;
using UnityEditor.Build.Reporting;
using UnityEngine;
using UnityEngine.Analytics;
using UnityEngine.Serialization;

namespace UnityEditor.UI.Analytics
{
    [AnalyticInfo(eventName: "ugui_onBuild", vendorKey: "unity.ugui")]
    internal class UGUIBuildEvent : IAnalytic
    {
        [Serializable]
        internal struct Payload : IAnalytic.IData
        {
            public string build_guid;
            public int build_type;
            public Counter component_count;
        }

        [Serializable]
        internal struct Counter
        {
            public int WorldSpaceCanvas;
            public int ScreenSpaceCanvas;
            public int OverlayCanvas;
            public int TMPElements;
        }

        public string buildGuid;
        public BuildType buildType;
        public Counter counter;

        public bool TryGatherData(out IAnalytic.IData data, out Exception error)
        {
            error = null;
            data = new Payload
            {
                build_guid = buildGuid,
                build_type = (int)buildType,
                component_count = counter,
            };
            return data != null;
        }
    }
}