Esempio n. 1
0
    private void AddCardsToAim(List <Card> addedCards, List <ISkillAim> aims, CardEffect.CardsAimType cardAim, bool dontWait)
    {
        foreach (ISkillAim aim in aims)
        {
            if (aim.GetType() == typeof(PlayerVisual))
            {
                LocalPlayerVisual.CardAnimationAim animationAim = LocalPlayerVisual.CardAnimationAim.Top;

                if (dontWait)
                {
                    animationAim = LocalPlayerVisual.CardAnimationAim.Choose;
                }

                switch (cardAim)
                {
                case CardEffect.CardsAimType.Hand:
                    NetworkCardGameManager.sInstance.AddCardsToHand(addedCards, ((PlayerVisual)aim).Player, animationAim, true, dontWait);
                    break;

                case CardEffect.CardsAimType.Drop:
                    NetworkCardGameManager.sInstance.AddCardsToDrop(addedCards, ((PlayerVisual)aim).Player, animationAim, true, dontWait);
                    break;

                case CardEffect.CardsAimType.Pile:
                    NetworkCardGameManager.sInstance.AddCardsToPile(addedCards, ((PlayerVisual)aim).Player, animationAim, true, dontWait);
                    break;
                }
            }
        }
    }
Esempio n. 2
0
    private List <Card> GetCards(CardEffect.CardsAimType aim, PhotonPlayer owner, int count)
    {
        List <Card> cards = new List <Card> ();

        switch (aim)
        {
        case CardEffect.CardsAimType.Drop:
            cards = NetworkCardGameManager.sInstance.GetPlayerDrop(owner);
            break;

        case CardEffect.CardsAimType.Hand:
            cards = NetworkCardGameManager.sInstance.GetPlayerHand(owner);
            break;

        case CardEffect.CardsAimType.Pile:
            cards = NetworkCardGameManager.sInstance.GetPlayerPile(owner);
            break;

        case CardEffect.CardsAimType.All:
            cards = NetworkCardGameManager.sInstance.GetPlayerCards(owner);
            break;
        }

        cards = cards.OrderBy(x => Guid.NewGuid()).ToList();
        cards = cards.Take(Mathf.Min(cards.Count, count)).ToList();
        return(cards);
    }
Esempio n. 3
0
    private void Watch(PhotonPlayer owner, CardEffect effect, List <PlayerVisual> stayedPlayers)
    {
        CardEffect.CardsAimType aim   = effect.cardsAimType;
        List <Card>             cards = GetCards(effect.cardsAimType, owner, effect.NumberOfCards);


        CardsManager.Instance.ChooseManager.FillChooseCardField(cards, effect.NumberOfChosenCards, (List <CardVisual> chosenCards) => {
            BurnCards(owner, aim, chosenCards.Select(c => c.CardAsset).ToList());
            if (stayedPlayers.Count > 0)
            {
                PhotonPlayer aimPlayer = (stayedPlayers[0] as PlayerVisual).Player;
                stayedPlayers.RemoveAt(0);
                Watch(aimPlayer, effect, stayedPlayers);
            }

            if (effect == effects[effects.Count - 1] && stayedPlayers.Count == 0)
            {
                callback.Invoke();
            }

            foreach (CardVisual cv in chosenCards)
            {
                GameObject.Destroy(cv.gameObject);
            }
        });
    }
Esempio n. 4
0
    private void Watch(PhotonPlayer owner, CardEffect effect, List <PlayerVisual> stayedPlayers)
    {
        CardEffect.CardsAimType aim = effect.cardsAimType;
        int count = effect.NumberOfCards;

        List <Card> cards = new List <Card> ();

        switch (aim)
        {
        case CardEffect.CardsAimType.Drop:
            cards = NetworkCardGameManager.sInstance.GetPlayerDrop(owner);
            break;

        case CardEffect.CardsAimType.Hand:
            cards = NetworkCardGameManager.sInstance.GetPlayerHand(owner);
            break;

        case CardEffect.CardsAimType.Pile:
            cards = NetworkCardGameManager.sInstance.GetPlayerPile(owner);
            break;

        case CardEffect.CardsAimType.All:
            cards = NetworkCardGameManager.sInstance.GetPlayerCards(owner);
            break;
        }

        cards = cards.OrderBy(x => Guid.NewGuid()).ToList();


        cards = cards.Take(Mathf.Min(cards.Count, count)).ToList();


        Debug.Log(cards.Count);

        CardsManager.Instance.ChooseManager.FillChooseCardField(cards, 0, (List <CardVisual> chodenCards) => {
            if (stayedPlayers.Count > 0)
            {
                PhotonPlayer aimPlayer = (stayedPlayers[0] as PlayerVisual).Player;
                stayedPlayers.RemoveAt(0);
                Watch(aimPlayer, effect, stayedPlayers);
            }

            if (effect == effects[effects.Count - 1] && stayedPlayers.Count == 0)
            {
                callback.Invoke();
            }
        });
    }
Esempio n. 5
0
    private void BurnCards(PhotonPlayer owner, CardEffect.CardsAimType aim, List <Card> chosenCards)
    {
        switch (aim)
        {
        case CardEffect.CardsAimType.Drop:
            NetworkCardGameManager.sInstance.RemoveCardsFromDrop(chosenCards, owner, true);
            break;

        case CardEffect.CardsAimType.Hand:
            NetworkCardGameManager.sInstance.RemoveCardsFromHand(chosenCards, owner, true);
            break;

        case CardEffect.CardsAimType.Pile:
            NetworkCardGameManager.sInstance.RemoveCardsFromPile(chosenCards, owner, true);
            break;

        case CardEffect.CardsAimType.All:
            NetworkCardGameManager.sInstance.RemoveCardsFromPlayer(chosenCards, owner, true);
            break;
        }
    }