public void RemoveCard(string cardName)
    {
        Debug.Log("Remove card from deck:" + cardName);

        DeckTableControllerComponent.RemoveCardFromDeck(CardsBaseComponent.GetIdByName(cardName).ToString());
        CardsInDeckNames.Remove(cardName);
        foreach (GameObject findedPanelOb in PanelsInDeckList)
        {
            if (findedPanelOb != null)
            {
                CardPanel findedPanel = findedPanelOb.GetComponent <CardPanel> ();
                if (findedPanel != null)
                {
                    if (findedPanel.PanelCardName == cardName)
                    {
                        findedPanel.CardsNumber--;
                        findedPanel.RefreshCardsNumber();
                        if (findedPanel.CardsNumber < 1)
                        {
                            findedPanel.DestroyPanel();
                            PanelsInDeckList.Remove(findedPanelOb);
                            break;
                        }
                    }
                }
                else
                {
                    CardViewPanel panel = findedPanelOb.GetComponent <CardViewPanel> ();
                    if (panel != null)
                    {
                        if (panel.PanelPawn.GetComponent <Pawn> ().Name == cardName)
                        {
                            PanelsInDeckList.Remove(findedPanelOb);
                            //Destroy (findedPanelOb);
                            break;
                        }
                    }
                }
            }
        }
    }
    private void AddCardToTable(string cardName, Vector3 startCardGlobalPosition, bool noAnim, List <GameObject> spawnedPawns = null)
    {
        GameObject card = null;
        GameObject pawn = null;

        if (DeckBuildV2 && spawnedPawns != null)
        {
            pawn = FindSpawnedCard(spawnedPawns, cardName);
        }
        if (pawn == null)
        {
            card = CardsBaseComponent.SpawnCardByName(cardName);
        }

        if (DeckBuildV2)
        {
            bool availble = true;
            if (card)
            {
                //availble = CheckCardQuantity (cardName);
                pawn = card.transform.Find("Pawn").gameObject;
                pawn.transform.SetParent(CardsInDeckPositionRoot);
                Destroy(card);
            }
            if (availble)
            {
                CardsInDeckNames.Add(pawn.GetComponent <Pawn>().Name);
                CardsInDeckNames = CardsBaseComponent.SortCardsList(CardsInDeckNames);
                GameObject panel = Instantiate(DeckPanelV2Prefab);
                if (panel != null)
                {
                    panel.transform.SetParent(DeckBuildV2Table.transform, false);
                    panel.transform.SetSiblingIndex(CardsInDeckNames.IndexOf(pawn.GetComponent <Pawn>().Name));
                    PanelsInDeckList.Add(panel);
                    if (pawn != null)
                    {
                        CardViewPanel panelView = panel.GetComponent <CardViewPanel> ();
                        pawn.GetComponent <KeepParentRenderLayer> ().KeepingActive    = false;
                        pawn.gameObject.GetComponent <SpriteRenderer> ().sortingOrder = 55;
                        pawn.transform.SetParent(CardsInDeckPositionRoot);
                        pawn.transform.position = startCardGlobalPosition;
                        panelView.SetPawn(pawn, null);
                        panelView.TableWidth = DeckBuildV2Table.GetComponent <RectTransform> ().rect.width;
                        panelView.MovePawn(true);
                        panelView.CardsControllerComp = GetComponent <CardsBaseTableController> ();
                        pawn.transform.localScale     = InTableCardScale;
                    }
                }
            }
            else
            {
                DeckTableControllerComponent.RemoveCardFromDeck(cardName);
            }
        }
        else
        {
            GameObject panel;
            bool       panelFinded = false;
            CardPanel  panelComp;

            if (card)
            {
                card.transform.SetParent(CardsInDeckPositionRoot);
                card.transform.localScale = InTableCardScale;
                card.transform.position   = startCardGlobalPosition;
                card.GetComponent <CardInteraction> ().SetCardOrder(3);
                foreach (GameObject findedPanelOb in PanelsInDeckList)
                {
                    CardPanel findedPanel = findedPanelOb.GetComponent <CardPanel> ();
                    if (findedPanel.PanelCardName == cardName)
                    {
                        CardInteraction CardInter = card.GetComponent <CardInteraction> ();
                        bool            availble  = true;
                        if ((CardInter.CardRarity == CardInteraction.CardRarityEnum.common) &&
                            (findedPanel.CardsNumber >= 3))
                        {
                            availble = false;
                        }
                        else if ((CardInter.CardRarity == CardInteraction.CardRarityEnum.gold) &&
                                 (findedPanel.CardsNumber >= 2))
                        {
                            availble = false;
                        }
                        else if ((CardInter.CardRarity == CardInteraction.CardRarityEnum.diamond) &&
                                 (findedPanel.CardsNumber >= 1))
                        {
                            availble = false;
                        }
                        if (availble)
                        {
                            findedPanel.CardsNumber++;
                            findedPanel.RefreshCardsNumber();
                            panelComp = findedPanel;
                            //panelComp.KeepCardPosition = false;
                            if (noAnim)
                            {
                                Destroy(card);
                            }
                            panelComp.AddCard(card);
                            //panelComp.SmoothMoveCard ();
                            //panelComp.KeepCardPosition = true;
                        }
                        else
                        {
                            DeckTableControllerComponent.RemoveCardFromDeck(cardName);
                            Destroy(card);
                        }
                        panelFinded = true;
                    }
                }
                if (panelFinded == false)
                {
                    panel     = Instantiate(CardPanel);
                    panelComp = panel.GetComponent <CardPanel> ();
                    panel.transform.SetParent(CardsInDeckTable, false);
                    panelComp.PanelInDeck = true;
                    //panelComp.KeepCardPosition = false;
                    panelComp.PanelCardName = cardName;
                    panelComp.AddCard(card);
                    //panelComp.SmoothMoveCard ();
                    panelComp.RefreshCardsNumber();
                    //panelComp.KeepCardPosition = true;
                    PanelsInDeckList.Add(panel);
                    SortList();
                }
            }
        }
    }