private void SortList()
    {
        List <string> cardNames = new List <string> ();

        framesToWait = true;
        foreach (GameObject findedPanelOb in PanelsInDeckList)
        {
            cardDescStruct newCard     = new cardDescStruct();
            CardPanel      findedPanel = findedPanelOb.GetComponent <CardPanel> ();
            newCard.CardName = findedPanel.PanelCardName;
            if (findedPanel.Card != null)
            {
                newCard.Card = findedPanel.Card;
            }
            newCard.CardsNumber = findedPanel.CardsNumber;
            PanelsInDeckCards.Add(newCard);
            cardNames.Add(findedPanel.PanelCardName);
            Destroy(findedPanel.PrevCard);
            findedPanel.DestroyPanelOnly();
        }
        PanelsInDeckList.Clear();
        cardNames = CardsBaseComponent.SortCardsList(cardNames);
        foreach (string cardName in cardNames)
        {
            GameObject panel     = Instantiate(CardPanel);
            CardPanel  panelComp = panel.GetComponent <CardPanel> ();
            panel.transform.SetParent(CardsInDeckTable, false);
            panelComp.PanelInDeck = true;
            foreach (cardDescStruct cardStOb in PanelsInDeckCards)
            {
                if (string.Compare(cardStOb.CardName, cardName) == 0)
                {
                    panelComp.KeepCardPosition = false;
                    panelComp.CardPosReached   = false;
                    if (cardStOb.Card != null)
                    {
                        panelComp.AddCard(cardStOb.Card);
                    }
                    panelComp.PanelCardName = cardStOb.CardName;
                    panelComp.CardsNumber   = cardStOb.CardsNumber;
                    panelComp.RefreshCardsNumber();
                    break;
                }
            }
            PanelsInDeckList.Add(panel);
        }
        PanelsInDeckCards.Clear();
    }
Exemplo n.º 2
0
 public void AddCard(GameObject card)
 {
     Debug.Log("Add card to hand canvas:" + card);
     if (card != null)
     {
         GameObject panel     = Instantiate(HandPanel, Table);
         CardPanel  cardPanel = panel.GetComponent <CardPanel> ();
         Panels.Add(panel);
         card.transform.localRotation = Quaternion.identity;
         card.transform.SetParent(panel.transform, false);
         card.GetComponent <SmothTransform> ().StopAll();
         cardPanel.AddCard(card);
         card.GetComponent <CardInteraction>().SetCardOrder(50);
         card.GetComponent <CardInteraction> ().CardPanelComp = cardPanel;
         card.GetComponent <SmothTransform> ().SmoothScaleTo(new Vector3(CardInHandScale, CardInHandScale, CardInHandScale), 15);
     }
 }
Exemplo n.º 3
0
        private void HandleMessage(GameMessage message)
        {
            if (message is PlayerActionMessage)
            {
                PlayerActionMessage actionMessage     = (PlayerActionMessage)message;
                CardPanel           relevantCardPanel = actionMessage.Player == _game.PlayerOne ? pYourHand : pOpponentsHand;
                switch (actionMessage.PlayerActionValue)
                {
                case PlayerActionMessage.PlayerAction.DrawDiscard:
                    relevantCardPanel.AddCard(actionMessage.Card);
                    pStacks.DiscardCount--;
                    pStacks.VisibleDiscard = _game.GetVisibleDiscard();
                    pActions.AllowDraw     = false;
                    pActions.AllowTake     = false;
                    pActions.AllowDiscard  = true;
                    break;

                case PlayerActionMessage.PlayerAction.DrawStock:
                    pStacks.StockCount--;
                    relevantCardPanel.AddCard(actionMessage.Card);
                    pActions.AllowDraw    = false;
                    pActions.AllowTake    = false;
                    pActions.AllowDiscard = true;
                    break;

                case PlayerActionMessage.PlayerAction.SetDiscard:
                    pStacks.DiscardCount++;
                    pStacks.VisibleDiscard = actionMessage.Card;
                    relevantCardPanel.RemoveCard(actionMessage.Card);
                    pActions.AllowDraw    = false;
                    pActions.AllowTake    = false;
                    pActions.AllowDiscard = false;
                    break;

                case PlayerActionMessage.PlayerAction.Knock:
                    // TODO: handle Knock message
                    break;

                default:
                    break;
                }
            }
            else if (message is GameStatusMessage)
            {
                GameStatusMessage statusMessage = (GameStatusMessage)message;
                switch (statusMessage.GameStatusChangeValue)
                {
                case GameStatusMessage.GameStatusChange.GameInitialised:
                    // TODO: assumes PlayerOne is always the human player
                    pYourHand.Clear();
                    InitialisePlayerCardPanel(pYourHand);
                    foreach (Card c in _game.PlayerOne.GetCards())
                    {
                        pYourHand.AddCard(c);
                    }

                    pOpponentsHand.Clear();
                    InitialiseOpponentCardPanel(pOpponentsHand);
                    foreach (Card c in _game.PlayerTwo.GetCards())
                    {
                        pOpponentsHand.AddCard(c);
                    }

                    InitialiseStacks(_game.GetStockCount(), _game.GetVisibleDiscard());
                    InitialisePlayerActions();
                    break;

                case GameStatusMessage.GameStatusChange.StartTurn:
                    if (statusMessage.Player == _game.PlayerOne)
                    {
                        pActions.AllowTake = true;
                        pActions.AllowDraw = true;
                    }
                    else
                    {
                        pActions.AllowTake = false;
                        pActions.AllowDraw = false;
                    }
                    break;

                default:
                    break;
                }
            }
        }
    private IEnumerator LoadCardPoolTask(Hero hero)
    {
        PoolUnload = false;
        while (PoolLoading)
        {
            yield return(new WaitForSeconds(0.01f));
        }
        PoolLoading = true;
        List <CardsBase.CardDescriptionClass> cardsList;
        Color panelColor = Color.white;

        if (hero != null)
        {
            cardsList   = CardsBaseComponent.GetCardsList(hero.CardsPool);
            panelColor  = hero.HeroColor;
            CurrentHero = hero;
            Debug.Log(" Load Card pool for: " + hero.Name + " pool:" + hero.CardsPool);
        }
        else
        {
            cardsList = CardsBaseComponent.GetCardsList(CardsBase.SelectedHeroCards.Uniwersal);
            Debug.Log(" Load Card uniwersal pool");
        }
        foreach (CardsBase.CardDescriptionClass cardToSpawn in cardsList)
        {
            if (PoolUnload)
            {
                break;
            }
            bool FilterOut = false;

            //public List<string> RarityFilterList = new List<string>() {"Wszystkie", "Srebrne", "Złote", "Diamentowe"};
            //public List<string> RolesFilterList = new List<string>() {"Wszystkie role", "Ofensywne", "Defensywne", "Wspierające"};

            if ((CurrentRarityFilter == 1) && (cardToSpawn.Rarity != CardInteraction.CardRarityEnum.common))
            {
                FilterOut = true;
            }
            else if ((CurrentRarityFilter == 2) && (cardToSpawn.Rarity != CardInteraction.CardRarityEnum.gold))
            {
                FilterOut = true;
            }
            else if ((CurrentRarityFilter == 3) && (cardToSpawn.Rarity != CardInteraction.CardRarityEnum.diamond))
            {
                FilterOut = true;
            }
            if ((CurrentRoleFilter == 1) && (cardToSpawn.Role != CardInteraction.CardRoleEnum.offence))
            {
                FilterOut = true;
            }
            else if ((CurrentRoleFilter == 2) && (cardToSpawn.Role != CardInteraction.CardRoleEnum.defence))
            {
                FilterOut = true;
            }
            else if ((CurrentRoleFilter == 3) && (cardToSpawn.Role != CardInteraction.CardRoleEnum.support))
            {
                FilterOut = true;
            }

            if (!FilterOut)
            {
                GameObject card = CardsBaseComponent.SpawnCard(cardToSpawn, true);
                if (card)
                {
                    CardInteraction CardInter = card.GetComponent <CardInteraction> ();
                    GameObject      panel     = Instantiate(CardPanel);
                    CardPanel       panelComp = panel.GetComponent <CardPanel> ();

                    if (!cardToSpawn.CardUnlocked)
                    {
                        if (ShowAllToggle.isOn)
                        {
                            card.GetComponent <SpriteRenderer> ().color = new Color(1f, 1f, 1f, 0.5f);
                        }
                        else
                        {
                            FilterOut = true;
                        }
                    }

                    if (SetCardAsButtonChild)
                    {
                        card.transform.SetParent(panel.transform);
                    }
                    else
                    {
                        card.transform.SetParent(CardsBasePositionRoot);
                    }
                    card.transform.position = new Vector3(-10000, 0, 0);                     //just keep card outside of camera
                    card.GetComponent <CardInteraction> ().SetCardOrder(1);
                    if (collectionMode)
                    {
                        panel.transform.SetParent(CardsCollectionTable, false);
                        card.transform.localScale = InCollectionCardScale;
                        panelComp.BuildDeckMode   = false;
                    }
                    else
                    {
                        panel.transform.SetParent(CardsBaseTable, false);
                        //card.transform.localScale = InTableCardScale;
                        card.transform.localScale = InCollectionCardScale;
                        panelComp.BuildDeckMode   = true;
                    }
                    if (cardToSpawn.NewlyUnlocked)
                    {
                        panelComp.NewNotifyObject = Instantiate(NewCardNotifyPrefab, panel.transform);
                    }

                    panelComp.PanelInDeck             = false;
                    panelComp.PanelButton.image.color = panelColor;
                    panelComp.AddCard(card);
                    panelComp.KeepCardPosition = true;
                    panelComp.CardsNumber      = cardToSpawn.Quantity;
                    panelComp.RefreshCardsNumber();
                    card.transform.position = panel.transform.position;
                    PanelsInCardsList.Add(panel);
                    yield return(new WaitForSeconds(0.01f));
                }
            }
            //Debug.Log ("set card from current pos: " + card.transform.position + " to new pos: " + panel.transform.position);
        }
        PoolLoading = false;
        yield return(null);
    }