namespace Robust.Client.Graphics.Clyde
{
    internal sealed partial class Clyde
    {
        private readonly ClydeDebugStats _debugStats = new();

        private sealed class ClydeDebugInfo : IClydeDebugInfo
        {
            public ClydeDebugInfo(OpenGLVersion openGLVersion, string renderer, string vendor, string versionString, bool overriding)
            {
                OpenGLVersion = openGLVersion;
                Renderer = renderer;
                Vendor = vendor;
                VersionString = versionString;
                Overriding = overriding;
            }

            public OpenGLVersion OpenGLVersion { get; }
            public bool Overriding { get; }
            public string Renderer { get; }
            public string Vendor { get; }
            public string VersionString { get; }
        }

        private sealed class ClydeDebugStats : IClydeDebugStats
        {
            public int LastGLDrawCalls { get; set; }
            public int LastClydeDrawCalls { get; set; }
            public int LastBatches { get; set; }
            public (int vertices, int indices) LargestBatchSize => (LargestBatchVertices, LargestBatchIndices);
            public int LargestBatchVertices { get; set; }
            public int LargestBatchIndices { get; set; }
            public int TotalLights { get; set; }

            public void Reset()
            {
                LastGLDrawCalls = 0;
                LastClydeDrawCalls = 0;
                LastBatches = 0;
                LargestBatchVertices = 0;
                LargestBatchIndices = 0;
                TotalLights = 0;
            }
        }
    }
}
