﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[CreateAssetMenu(menuName = "Mapbox/ScriptablePalette")]
public class ScriptablePalette : ScriptableObject 
{
    public int m_numColors = 3;

    public Color m_keyColor = Color.white;

    public Color[] m_colors;

    public float m_hueRange;
    public float m_saturationRange;
    public float m_valueRange;

    public bool m_setBaseColor_Override;
    public bool m_setDetailColor1_Override;
    public bool m_setDetailColor2_Override;

    public Color m_baseColor_Override = Color.white;
    public Color m_detailColor1_Override = Color.white;
    public Color m_detailColor2_Override = Color.white;

    public void GeneratePalette()
    {

        float hue = 0.0f;
        float sat = 0.0f;;
        float val = 0.0f;

        Color.RGBToHSV(m_keyColor, out hue, out sat, out val);

        float hueMin = hue - m_hueRange;
        float hueMax = hue + m_hueRange;

        float satMin = Mathf.Clamp(sat - m_saturationRange, 0.0f, 1.0f);
        float satMax = Mathf.Clamp(sat + m_saturationRange, 0.0f, 1.0f);

        float valMin = Mathf.Clamp(val - m_valueRange, 0.0f, 1.0f);
        float valMax = Mathf.Clamp(val + m_valueRange, 0.0f, 1.0f);

        m_colors = new Color[m_numColors];

        for (int i = 0; i < m_numColors; i++)
        {
            m_colors[i] = Random.ColorHSV(hueMin, hueMax, satMin, satMax, valMin, valMax);
        }
    }
}
