using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using UnityEngine;

namespace Plotting
{
    public class DebugPlot
    {
        #region signleton

        private static Lazy<DebugPlot>
            instance =
                new Lazy<DebugPlot>
                    (() => new DebugPlot());

        public static DebugPlot Instance => instance.Value;

        public static void DestroyInstance()
        {
            if (instance.IsValueCreated)
            {
                instance.Value.Dispose();
                instance =
                    new Lazy<DebugPlot>
                        (() => new DebugPlot());
            }
        }

        #endregion

        private List<PlotFileWriter> plotWriters = new List<PlotFileWriter>();
        private Process plottingProc;

        private DebugPlot()
        { }

        public PlotFileWriter StartPlotting(string path)
        {
            var writer = new PlotFileWriter(path);
            plotWriters.Add(writer);
            return writer;
        }

        public void ShowPlots()
        {
            plottingProc = Process.Start("CMD.exe",$"/C cd Assets/Plotting & python plot.py");
        }

        private void Dispose()
        {
            plottingProc?.Kill();
            foreach (var p in plotWriters)
            {
                p.Dispose();
            }
        }
    }
}