public void Enter(BattleAction action, TargetData targetData)
    {
        BattleMoveTemplate template = templateInstancePool.Dequeue();

        template.UpdateMoveText(action.MenuText);
        template.UpdateOriginText(targetData.origin.CharacterClass.ClassName + " used");
        StartCoroutine(AddActiveTemplate(template));
    }
    private void Start()
    {
        for (int i = 0; i < maxHistory + buffer; i++)
        {
            BattleMoveTemplate obj = Instantiate(templatePrefab, area);
            obj.gameObject.SetActive(false);
            templateInstancePool.Enqueue(obj);
        }

        yDelta = templatePrefab.RectTransform.sizeDelta.y - padding;
    }
    private IEnumerator AddActiveTemplate(BattleMoveTemplate template)
    {
        template.gameObject.transform.position = new Vector3(10000, 0);
        template.gameObject.SetActive(true);

        yield return(null);

        yield return(new WaitForEndOfFrame());

        float y = (-activeTemplates.Count * template.RectTransform.sizeDelta.y) + (padding * activeTemplates.Count);

        template.RectTransform.anchoredPosition = new Vector2(template.RectTransform.sizeDelta.x, y + offset.y);
        template.RectTransform.DOAnchorPosX(0 + offset.x, 0.5f);

        activeTemplates.Add(template);
    }