Ejemplo n.º 1
0
        public void PlayOpponentCard(
            Player player, WorkingCard card, object target, Action <WorkingCard, object> completePlayCardCallback)
        {
            GameObject randomCard =
                _battlegroundController.OpponentHandCards[
                    Random.Range(0, _battlegroundController.OpponentHandCards.Count)];

            _battlegroundController.OpponentHandCards.Remove(randomCard);

            _tutorialManager.ReportAction(Enumerators.TutorialReportAction.MOVE_CARD);

            _soundManager.PlaySound(Enumerators.SoundType.CARD_FLY_HAND_TO_BATTLEGROUND,
                                    Constants.CardsMoveSoundVolume);

            player.ThrowPlayCardEvent(card);

            randomCard.transform.DOMove(Vector3.up * 2.5f, 0.6f).OnComplete(
                () =>
            {
                randomCard.transform.Find("RemoveCardParticle").GetComponent <ParticleSystem>().Play();

                randomCard.transform.DOScale(Vector3.one * 1.2f, 0.6f).OnComplete(
                    () =>
                {
                    RemoveOpponentCard(new object[]
                    {
                        randomCard
                    });

                    _timerManager.AddTimer(
                        x =>
                    {
                        completePlayCardCallback?.Invoke(card, target);
                    },
                        null,
                        0.1f);
                    _ranksController.UpdateRanksByElements(player.BoardCards, card.LibraryCard);
                    _timerManager.AddTimer(
                        x =>
                    {
                        player.GraveyardCardsCount++;
                    });
                });
            });

            randomCard.transform.DORotate(Vector3.zero, 0.5f);

            _battlegroundController.UpdatePositionOfCardsInOpponentHand(true);
        }
Ejemplo n.º 2
0
        public void InitializePlayer()
        {
            _gameplayManager.OpponentPlayer = new Player(GameObject.Find("Opponent"), true);

            _fightTargetingArrowPrefab = _loadObjectsManager.GetObjectByPath <GameObject>("Prefabs/Gameplay/Arrow/AttackArrowVFX_Object");

            _attackedUnitTargets   = new List <BoardUnit>();
            _unitsToIgnoreThisTurn = new List <BoardUnit>();

            if (!_gameplayManager.IsSpecificGameplayBattleground)
            {
                List <string> playerDeck = new List <string>();

                int deckId = _gameplayManager.OpponentDeckId;
                foreach (DeckCardData card in _dataManager.CachedOpponentDecksData.Decks.First(d => d.Id == deckId)
                         .Cards)
                {
                    for (int i = 0; i < card.Amount; i++)
                    {
                        playerDeck.Add(card.CardName);
                    }
                }

                _gameplayManager.OpponentPlayer.SetDeck(playerDeck);

                _battlegroundController.UpdatePositionOfCardsInOpponentHand();
            }

            _gameplayManager.OpponentPlayer.TurnStarted += TurnStartedHandler;
            _gameplayManager.OpponentPlayer.TurnEnded   += TurnEndedHandler;
        }
        public void MoveCardFromPlayerDeckToOpponentHandAnimation(Player fromDeck, Player toHand, GameObject boardCard)
        {
            Animator animator = boardCard.GetComponent <Animator>();

            boardCard.transform.localScale = Vector3.zero;
            boardCard.transform.DOScale(new Vector3(0.9f, 0.9f, 0.9f), 0.15f);

            animator.enabled = true;
            animator.StopPlayback();
            animator.Play("MoveCardFromPlayerDeckToOpponentHand");

            _timerManager.AddTimer(
                x =>
            {
                animator.enabled = false;

                _battlegroundController.OpponentHandCards.Add(boardCard);

                _battlegroundController.UpdatePositionOfCardsInOpponentHand(true);
            },
                null,
                1.1f);
        }