Exemplo n.º 1
0
        private void ReviveUnit(WorkingCard workingCard)
        {
            Player playerOwner = workingCard.Owner;

            if (playerOwner.BoardCards.Count >= Constants.MaxBoardUnits)
            {
                return;
            }

            Card libraryCard = workingCard.LibraryCard.Clone();

            WorkingCard card = new WorkingCard(libraryCard, playerOwner);
            BoardUnit   unit = BattlegroundController.CreateBoardUnit(playerOwner, card);

            playerOwner.RemoveCardFromGraveyard(workingCard);
            playerOwner.AddCardToBoard(card);
            playerOwner.BoardCards.Add(unit);

            if (playerOwner.IsLocalPlayer)
            {
                BattlegroundController.PlayerBoardCards.Add(unit);
                BattlegroundController.UpdatePositionOfBoardUnitsOfPlayer(GameplayManager.CurrentPlayer.BoardCards);
            }
            else
            {
                BattlegroundController.OpponentBoardCards.Add(unit);
                BattlegroundController.UpdatePositionOfBoardUnitsOfOpponent();
            }
        }
Exemplo n.º 2
0
        public override void Action(object info = null)
        {
            base.Action(info);

            if (AbilityUnitOwner.IsReanimated)
            {
                return;
            }

            Player      owner       = AbilityUnitOwner.OwnerPlayer;
            Card        libraryCard = AbilityUnitOwner.Card.LibraryCard.Clone();
            WorkingCard card        = new WorkingCard(libraryCard, owner);
            BoardUnit   unit        = CreateBoardUnit(card, owner);

            unit.IsReanimated             = true;
            AbilityUnitOwner.IsReanimated = true;

            owner.AddCardToBoard(card);
            owner.BoardCards.Add(unit);

            if (!owner.IsLocalPlayer)
            {
                BattlegroundController.OpponentBoardCards.Add(unit);
                BattlegroundController.UpdatePositionOfBoardUnitsOfOpponent();
            }
            else
            {
                BattlegroundController.PlayerBoardCards.Add(unit);
                BattlegroundController.UpdatePositionOfBoardUnitsOfPlayer(GameplayManager.CurrentPlayer.BoardCards);
            }

            ActionsQueueController.PostGameActionReport(ActionsQueueController.FormatGameActionReport(
                                                            Enumerators.ActionType.REANIMATE_UNIT_BY_ABILITY, new object[]
            {
                owner, unit
            }));
        }
Exemplo n.º 3
0
        public BoardUnit SpawnUnitOnBoard(Player owner, string name)
        {
            if (owner.BoardCards.Count >= Constants.MaxBoardUnits)
            {
                return(null);
            }

            Card libraryCard = _dataManager.CachedCardsLibraryData.GetCardFromName(name).Clone();

            WorkingCard card = new WorkingCard(libraryCard, owner);
            BoardUnit   unit = CreateBoardUnitForSpawn(card, owner);

            owner.AddCardToBoard(card);
            owner.BoardCards.Add(unit);

            _abilitiesController.ResolveAllAbilitiesOnUnit(unit, true);

            if (!owner.IsLocalPlayer)
            {
                _battlegroundController.OpponentBoardCards.Add(unit);
                _battlegroundController.UpdatePositionOfBoardUnitsOfOpponent();
            }
            else
            {
                _battlegroundController.PlayerBoardCards.Add(unit);
                _battlegroundController.UpdatePositionOfBoardUnitsOfPlayer(owner.BoardCards);
            }

            _actionsQueueController.PostGameActionReport(_actionsQueueController.FormatGameActionReport(
                                                             Enumerators.ActionType.SUMMON_UNIT_CARD, new object[]
            {
                owner, unit
            }));

            return(unit);
        }
Exemplo n.º 4
0
        private void PlayCardCompleteHandler(WorkingCard card, object target)
        {
            WorkingCard workingCard =
                _gameplayManager.OpponentPlayer.CardsOnBoard[_gameplayManager.OpponentPlayer.CardsOnBoard.Count - 1];

            switch (card.LibraryCard.CardKind)
            {
            case Enumerators.CardKind.CREATURE:
            {
                BoardUnit  boardUnitElement = new BoardUnit(GameObject.Find("OpponentBoard").transform);
                GameObject boardCreature    = boardUnitElement.GameObject;
                boardCreature.tag = SRTags.OpponentOwned;
                boardCreature.transform.position = Vector3.zero;
                boardUnitElement.OwnerPlayer     = card.Owner;

                boardUnitElement.SetObjectInfo(workingCard);
                _battlegroundController.OpponentBoardCards.Add(boardUnitElement);

                boardCreature.transform.position +=
                    Vector3.up * 2f;     // Start pos before moving cards to the opponents board

                // PlayArrivalAnimation(boardCreature, libraryCard.cardType);
                _gameplayManager.OpponentPlayer.BoardCards.Add(boardUnitElement);

                _actionsQueueController.PostGameActionReport(_actionsQueueController.FormatGameActionReport(
                                                                 Enumerators.ActionType.PLAY_UNIT_CARD, new object[]
                    {
                        boardUnitElement.OwnerPlayer, boardUnitElement
                    }));

                boardUnitElement.PlayArrivalAnimation();

                _battlegroundController.UpdatePositionOfBoardUnitsOfOpponent(
                    () =>
                    {
                        bool createTargetArrow = false;

                        if (card.LibraryCard.Abilities != null && card.LibraryCard.Abilities.Count > 0)
                        {
                            createTargetArrow =
                                _abilitiesController.IsAbilityCanActivateTargetAtStart(
                                    card.LibraryCard.Abilities[0]);
                        }

                        if (target != null)
                        {
                            CreateOpponentTarget(
                                createTargetArrow,
                                false,
                                boardCreature.gameObject,
                                target,
                                () =>
                            {
                                _abilitiesController.CallAbility(card.LibraryCard, null, workingCard,
                                                                 Enumerators.CardKind.CREATURE, boardUnitElement, null, false, null, target);
                            });
                        }
                        else
                        {
                            _abilitiesController.CallAbility(card.LibraryCard, null, workingCard,
                                                             Enumerators.CardKind.CREATURE, boardUnitElement, null, false, null);
                        }
                    });
                break;
            }

            case Enumerators.CardKind.SPELL:
            {
                GameObject spellCard = Object.Instantiate(_cardsController.SpellCardViewPrefab);
                spellCard.transform.position = GameObject.Find("OpponentSpellsPivot").transform.position;

                CurrentSpellCard = new SpellBoardCard(spellCard);

                CurrentSpellCard.Init(workingCard);
                CurrentSpellCard.SetHighlightingEnabled(false);

                BoardSpell boardSpell = new BoardSpell(spellCard, workingCard);

                spellCard.gameObject.SetActive(false);

                bool createTargetArrow = false;

                if (card.LibraryCard.Abilities != null && card.LibraryCard.Abilities.Count > 0)
                {
                    createTargetArrow =
                        _abilitiesController.IsAbilityCanActivateTargetAtStart(card.LibraryCard.Abilities[0]);
                }

                if (target != null)
                {
                    CreateOpponentTarget(
                        createTargetArrow,
                        false,
                        _gameplayManager.OpponentPlayer.AvatarObject,
                        target,
                        () =>
                        {
                            _abilitiesController.CallAbility(card.LibraryCard, null, workingCard,
                                                             Enumerators.CardKind.SPELL, boardSpell, null, false, null, target);
                        });
                }
                else
                {
                    _abilitiesController.CallAbility(card.LibraryCard, null, workingCard,
                                                     Enumerators.CardKind.SPELL, boardSpell, null, false, null);
                }

                break;
            }
            }
        }