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

namespace mgaia.Utils
{
    /// <summary>
    /// Behaviour utilizado para aplicar um determinado conjunto de posicionamento para um conjunto de objetos
    /// </summary>
    public class MultiplePositionsSetter : MonoBehaviour
    {
        private Dictionary<string, PositionSetterGroup> mGroups = new Dictionary<string, PositionSetterGroup>();

        private void Awake()
        {
            foreach (PositionSetterGroup positionSetterGroup in GetComponentsInChildren<PositionSetterGroup>())
            {
                string groupName = positionSetterGroup.name;

                Assert.AssertTrue(!mGroups.ContainsKey(groupName), "Já existe um grupo com nome " + groupName + "!");

                mGroups.Add(groupName, positionSetterGroup);
            }
        }

        /// <summary>
        /// Seta as posições seguindo as regras do grupo de nome passado
        /// </summary>
        public void SetPositionsOfGroup(string groupName)
        {
            Assert.AssertTrue(mGroups.ContainsKey(groupName), "Não existe um grupo com o nome " + groupName + "!");

            mGroups[groupName].SetObjectPositions();
        }
    }
}