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