private void OnCarriageSelected(Carriage c)
    {
        if (ReadyToFight)
        {
            Debug.Log("READY TO FIGHT");
            OnReadyToFight?.Invoke(m_player1, m_player2);
            return;
        }
        CarriageDefinition.Color color = c.CarriageDefinition.GetColor();

        if (color == CarriageDefinition.Color.Wild)
        {
            int rand = UnityEngine.Random.Range(0, 3);
            color = (CarriageDefinition.Color)rand;
        }

        CarriageDefinition.Ability ability = c.CarriageDefinition.GetAbility();

        Beetle player      = GetCurrentPlayer();
        Beetle otherPlayer = GetOtherPlayer();

        switch (ability)
        {
        case CarriageDefinition.Ability.None:
            player.AddCarriage(color);
            break;

        case CarriageDefinition.Ability.Copy:
            if (player.CarriageCount == 0)
            {
                return;
            }

            Carriage lastCarriage = player.GetLastCarriage();
            color = lastCarriage.CarriageDefinition.GetColor();
            player.AddCarriage(color);
            break;

        case CarriageDefinition.Ability.Send:
            if (otherPlayer.CarriageCount == GameConstants.MAX_CARRIAGE_CAPACITY)
            {
                player.AddCarriage(color);
            }
            else
            {
                otherPlayer.AddCarriage(color);
            }
            break;

        case CarriageDefinition.Ability.Swap:
            if (player.CarriageCount > 0 && otherPlayer.CarriageCount > 0)
            {
                Carriage c1 = player.RemoveLastCarriage();
                Carriage c2 = otherPlayer.RemoveLastCarriage();
                player.AddCarriage(c2.CarriageDefinition.GetColor());
                otherPlayer.AddCarriage(c1.CarriageDefinition.GetColor());
                Destroy(c1.gameObject);
                Destroy(c2.gameObject);
            }

            player.AddCarriage(color);
            break;

        case CarriageDefinition.Ability.DoubleDip:
            m_doubleDip = true;
            player.AddCarriage(color);
            break;

        case CarriageDefinition.Ability.Shuffle:
            player.AddCarriage(color);
            m_carriageContainer.GetComponent <CarriageMenu>().Reset();
            m_currentHand.Clear();
            DrawHand();
            m_carriageContainer.GetComponent <CarriageMenu>().Init();
            break;
        }

        c.gameObject.SetActive(false);

        if (m_doubleDip)
        {
            m_doubleDip = false;
        }
        else
        {
            NextTurn();
        }

        if (ReadyToFight)
        {
            OnReadyToFight?.Invoke(m_player1, m_player2);
        }
    }