using NaughtyAttributes;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

namespace GameplayIngredients
{
    [ManagerDefaultPrefab("ScreenshotManager")]
    public class ScreenshotManager : Manager
    {
        [Header("Capture")]
        public KeyCode ScreenshotKeyCode = KeyCode.F11;
        [Range(1, 5)]
        public int SuperSize = 1;

        [Header("File name")]
        public string Prefix = "Screenshot";

        [Header("Actions")]
        [ReorderableList]
        public Callable[] OnBeforeScreenshot;

        [ReorderableList]
        public Callable[] OnAfterScreenshot;

        public void Update()
        {
            if (Input.GetKeyDown(ScreenshotKeyCode))
            {
                var now = System.DateTime.Now;
                Callable.Call(OnBeforeScreenshot);
                string path = $"{Application.dataPath}/../{Prefix}-{now.Year}{now.Month}{now.Day}-{now.Hour}{now.Minute}{now.Second}{now.Millisecond}.png";
                Debug.Log($"Capturing Screenshot (Supersampled to {SuperSize}x) to the file : {path}");
                ScreenCapture.CaptureScreenshot(path, SuperSize);
                Callable.Call(OnAfterScreenshot);
            }
        }
    }
}