public async Task <TrainerCard> UpdateTrainerCard(TrainerCard card)
        {
            _trainingPlannerDbContext.Update(card);
            await _trainingPlannerDbContext.SaveChangesAsync();

            return(card);
        }
        public void DiscardAny_OnlyTrainer()
        {
            var effect = new DiscardCardEffect()
            {
                Amount   = 1,
                CardType = CardType.Any
            };

            var player = new Player();
            var target = new TrainerCard();

            player.Hand.Add(new EnergyCard());
            player.Hand.Add(new PokemonCard());
            player.Hand.Add(target);

            var sub = Substitute.For <INetworkPlayer>();

            sub.SendAndWaitForResponse <CardListMessage>(Arg.Any <NetworkMessage>()).ReturnsForAnyArgs(new CardListMessage {
                Cards = new List <NetworkId> {
                    target.Id
                }
            });
            player.SetNetworkPlayer(sub);

            effect.Process(new GameField(), player, null, null);

            Assert.Single(player.DiscardPile);
            Assert.Equal(2, player.Hand.Count);
            Assert.Equal(target.Id, player.DiscardPile[0].Id);
        }
Example #3
0
        public async Task <IActionResult> Edit(int id, [Bind("CardID,CardName,CardImageURL,CardImageHiURL,CardCatID,CardTypeID,SetID,CardNum,Artist,CardRarityID,LastUpdateDate")] TrainerCard trainerCard)
        {
            if (id != trainerCard.CardID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(trainerCard);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!TrainerCardExists(trainerCard.CardID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["CardCatID"]    = new SelectList(_context.CardCats, "CardCatID", "CardCatID", trainerCard.CardCatID);
            ViewData["CardRarityID"] = new SelectList(_context.CardRarities, "CardRarityID", "CardRarityID", trainerCard.CardRarityID);
            ViewData["CardTypeID"]   = new SelectList(_context.CardTypes, "CardTypeID", "CardTypeID", trainerCard.CardTypeID);
            ViewData["SetID"]        = new SelectList(_context.Sets, "SetID", "SetID", trainerCard.SetID);
            return(View(trainerCard));
        }
        public async Task <TrainerCard> CreateTrainerCard(TrainerCard card)
        {
            await _trainingPlannerDbContext.TrainerCards.AddAsync(card);

            await _trainingPlannerDbContext.SaveChangesAsync();

            return(card);
        }
Example #5
0
        internal void SetCard(TrainerCard trainerCard)
        {
            if (card == null || !card.Id.Equals(trainerCard.Id))
            {
                CardImageLoader.Instance.LoadSprite(trainerCard, image);
            }

            card = trainerCard;
        }
Example #6
0
        public void TriggerCardPlayed(TrainerCard card)
        {
            GameController.Instance.playerHand.RemoveCard(card);

            if (card.Owner.Id.Equals(GameController.Instance.myId))
            {
                GameController.Instance.Player.DiscardPile.Add(card);
            }

            StartCoroutine(DisplayCardEnumerator(card));
        }
Example #7
0
        public void CanActivate_Stadium()
        {
            var card = new TrainerCard();

            card.Ability = new RetreatCostModifierAbility();

            var game = new GameField();

            game.InitTest();

            Assert.True(card.Ability.CanActivate(game, game.ActivePlayer, game.NonActivePlayer));
        }
Example #8
0
        public async Task <IActionResult> Create([Bind("CardID,CardName,CardImageURL,CardImageHiURL,CardCatID,CardTypeID,SetID,CardNum,Artist,CardRarityID,LastUpdateDate")] TrainerCard trainerCard)
        {
            if (ModelState.IsValid)
            {
                _context.Add(trainerCard);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["CardCatID"]    = new SelectList(_context.CardCats, "CardCatID", "CardCatID", trainerCard.CardCatID);
            ViewData["CardRarityID"] = new SelectList(_context.CardRarities, "CardRarityID", "CardRarityID", trainerCard.CardRarityID);
            ViewData["CardTypeID"]   = new SelectList(_context.CardTypes, "CardTypeID", "CardTypeID", trainerCard.CardTypeID);
            ViewData["SetID"]        = new SelectList(_context.Sets, "SetID", "SetID", trainerCard.SetID);
            return(View(trainerCard));
        }
Example #9
0
        IEnumerator DisplayCardEnumerator(TrainerCard card)
        {
            cardImage.sprite = null;
            cardImage.rectTransform.localScale = new Vector3(0.1f, 0.1f, 1);
            cardImage.color = new Color(cardImage.color.r, cardImage.color.g, cardImage.color.b, 0);

            yield return(loader.LoadSpriteRoutine(card, cardImage));

            while (true)
            {
                bool anyChanged = false;

                if (cardImage.color.a < 1)
                {
                    cardImage.color = new Color(cardImage.color.r, cardImage.color.g, cardImage.color.b, cardImage.color.a + 0.05f);
                    anyChanged      = true;
                }
                if (cardImage.rectTransform.localScale.x < 1)
                {
                    cardImage.rectTransform.localScale = new Vector3(cardImage.rectTransform.localScale.x + 0.05f, cardImage.rectTransform.localScale.y + 0.05f, 1);
                    anyChanged = true;
                }

                if (!anyChanged)
                {
                    break;
                }

                yield return(new WaitForSeconds(0.01f));
            }

            yield return(new WaitForSeconds(1));

            while (cardImage.color.a > 0)
            {
                cardImage.color = new Color(cardImage.color.r, cardImage.color.g, cardImage.color.b, cardImage.color.a - 0.05f);
                yield return(new WaitForSeconds(0.01f));
            }

            GameEventHandler.Instance.EventCompleted();
        }
Example #10
0
        private void PlayStadiumCard(TrainerCard trainerCard)
        {
            trainerCard.RevealToAll();
            CurrentTrainerCard = trainerCard;
            TriggerAllAbilitiesOfType(TriggerType.TrainerCardPlayed);

            GameLog.AddMessage(ActivePlayer.NetworkPlayer?.Name + " Plays " + trainerCard.GetName());
            PushGameLogUpdatesToPlayers();

            ActivePlayer.Hand.Remove(trainerCard);

            var trainerEvent = new StadiumCardPlayedEvent()
            {
                Card   = trainerCard,
                Player = ActivePlayer.Id
            };

            SendEventToPlayers(trainerEvent);

            trainerCard.Process(this, ActivePlayer, NonActivePlayer);

            if (StadiumCard != null)
            {
                StadiumCard.Owner.DiscardPile.Add(StadiumCard);
            }

            StadiumCard = trainerCard;

            CurrentTrainerCard = null;

            if (ActivePlayer.IsDead)
            {
                GameLog.AddMessage($"{ActivePlayer.NetworkPlayer?.Name} loses because they drew to many cards");
                EndGame(NonActivePlayer.Id);
            }

            SendEventToPlayers(new GameInfoEvent {
            });
        }
Example #11
0
        public void PlayTrainerCard(TrainerCard trainerCard, Player asPlayer = null)
        {
            var caster   = asPlayer == null ? ActivePlayer : asPlayer;
            var opponent = GetOpponentOf(caster);

            if (asPlayer == null && !caster.Hand.Contains(trainerCard))
            {
                GameLog.AddMessage($"{ActivePlayer?.NetworkPlayer?.Name} Tried to play a trainer ({trainerCard.Name}) card not in his hand");
                return;
            }

            if (GetAllPassiveAbilities().Any(ability => ability.ModifierType == PassiveModifierType.StopTrainerCast))
            {
                GameLog.AddMessage($"{trainerCard.Name} stopped by ability");
                return;
            }
            else if (!trainerCard.CanCast(this, caster, opponent))
            {
                GameLog.AddMessage($"{trainerCard.Name} could not be cast because something is missing");
                return;
            }

            if (trainerCard.IsStadium())
            {
                PlayStadiumCard(trainerCard);
                return;
            }

            trainerCard.RevealToAll();
            CurrentTrainerCard = trainerCard;

            TriggerAllAbilitiesOfType(TriggerType.TrainerCardPlayed);

            GameLog.AddMessage(caster.NetworkPlayer?.Name + " Plays " + trainerCard.GetName());
            PushGameLogUpdatesToPlayers();

            caster.Hand.Remove(trainerCard);

            var trainerEvent = new TrainerCardPlayed()
            {
                Card   = trainerCard,
                Player = caster.Id
            };

            SendEventToPlayers(trainerEvent);

            trainerCard.Process(this, caster, opponent);

            if (trainerCard.AddToDiscardWhenCasting)
            {
                trainerCard.Owner.DiscardPile.Add(trainerCard);
            }

            CurrentTrainerCard = null;

            if (caster.IsDead)
            {
                GameLog.AddMessage($"{caster.NetworkPlayer?.Name} loses because they drew to many cards");
                EndGame(opponent.Id);
            }

            SendEventToPlayers(new GameInfoEvent {
            });
        }
Example #12
0
 public async Task DeleteTrainerCard(TrainerCard card)
 {
     _trainingPlannerDbContext.TrainerCards.Remove(card);
     await _trainingPlannerDbContext.SaveChangesAsync();
 }
Example #13
0
 public void Update(TrainerCard obj)
 {
     throw new NotImplementedException();
 }