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; } } } }
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); }
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); } }); }
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(); } }); }
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; } }