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

namespace mgaia.Utils
{
    /// <summary>
    /// Atributo utilizado para sinalizar elementos que utilizam pool, para geração automática do banco de dados
    /// </summary>
    /// <owner>Victor</owner>
    [AttributeUsage(AttributeTargets.Class)]
    public class PoolElementDescriptorAttribute : Attribute
    {
        private string _mPath;
        private int _mQuantity;
        private string _mAlias;

        /// <summary>
        /// Caminho relativo até o prefab desse elemento, sem a extensão .prefab
        /// </summary>
        public string Path
        {
            get { return _mPath; }
        }

        /// <summary>
        /// Quantidade de elementos que a pool vai criar inicialmente
        /// </summary>
        public int Quantity
        {
            get { return _mQuantity; }
        }

        /// <summary>
        /// Alias para acessar o elemento
        /// </summary>
        public string Alias
        {
            get { return _mAlias; }
        }

        /// <summary>
        /// Testa se o elemento possui um alias, caso contrário ele é buscado pelo nome da classe
        /// </summary>
        public bool HasAlias
        {
            get { return !String.IsNullOrEmpty(Alias); }
        }

        public PoolElementDescriptorAttribute(string path, int quantity = 1, string alias = null)
        {
            _mPath = path;
            _mQuantity = quantity;
            _mAlias = alias;
        }
    }
}