Пример #1
0
        public bool CanPlay(IRuntimeCard card)
        {
            var cost    = card.Data.CardCost;
            var hasMana = Player.HasMana(cost);

            return(hasMana);
        }
Пример #2
0
        public IUiCard Get(IRuntimeCard card)
        {
            var obj = Get(modelsPooled[0]);

            obj.Data.SetData(card);
            return(obj);
        }
Пример #3
0
        void GameEvents.IPlayerDiscardCard.OnDiscardCard(IPlayer player, IRuntimeCard card)
        {
            if (player.Seat != UiPlayer.Seat)
            {
                return;
            }

            CardUtils.Discard(card);
        }
Пример #4
0
        void IPlayerDrawCard.OnDrawCard(IPlayer player, IRuntimeCard card)
        {
            if (player.Seat != UiPlayer.Seat)
            {
                return;
            }

            CardUtils.Draw(card);
        }
Пример #5
0
        //--------------------------------------------------------------------------------------------------------------

        public void Draw(IRuntimeCard card)
        {
            var uiCard = CardFactory.Instance.Get(card);

            uiCard.MonoBehavior.name  = "Card_" + Count;
            uiCard.transform.position = deckPosition.position;
            Count++;
            PlayerHand.AddCard(uiCard);
        }
Пример #6
0
        public bool Discard(IRuntimeCard card)
        {
            var hasCard = Player.Hand.Has(card);

            if (!hasCard)
            {
                return(false);
            }
            card.Discard();
            Player.Hand.Remove(card);
            Player.Graveyard.AddCard(card);
            OnDiscardCard(Player, card);
            return(true);
        }
Пример #7
0
        public bool Play(IRuntimeCard card)
        {
            var hasCard = Player.Hand.Has(card);

            if (!hasCard)
            {
                return(false);
            }

            var cost = card.Data.CardCost;

            Player.ConsumeMana(cost);
            Player.Hand.Remove(card);
            card.Play();
            Player.Graveyard.AddCard(card);
            OnPlayCard(Player, card);
            return(true);
        }
Пример #8
0
        //TODO: Merge these two classes into one. I'm building out the relic class now, so don't want too f**k up two things at once
        public static void DispatchEffects(IRuntimeCard card, EffectTriggerType triggerType)
        {
            //grab all effects from the card
            var effects = GetEffects(card);

            //return if the specified trigger is not present
            if (effects.All(eff => eff.Key.tType != triggerType))
            {
                return;
            }

            //grab all effects of the specified trigger
            var effectsByTrigger = effects[effects.First(eff => eff.Key.tType == triggerType).Key].Effects;

            //dispatch all effects
            foreach (var effect in effectsByTrigger)
            {
                EffectsResolver.Resolve(effect, card, card.Targets[effect]);
            }
        }
Пример #9
0
        /// <summary>
        ///     Dispatch card played to the listeners.
        /// </summary>
        /// <param name="player"></param>
        /// <param name="card"></param>
        void OnPlayCard(IPlayer player, IRuntimeCard card)
        {
            GameEvents.Instance.Notify <GameEvents.IPlayerPlayCard>(i => i.OnPlayCard(player, card));
            switch (card.Data.CardType)
            {
            case CardType.Minion:
                GameEvents.Instance.Notify <GameEvents.IPlayerPlayMinionCard>(i => i.OnPlayMinionCard(player, card));
                break;

            case CardType.Spell:
                GameEvents.Instance.Notify <GameEvents.IPlayerPlaySpellCard>(i => i.OnPlaySpellCard(player, card));
                break;

            case CardType.Power:
                GameEvents.Instance.Notify <GameEvents.IPlayerPlayPowerCard>(i => i.OnPlayPowerCard(player, card));
                break;

            case CardType.Curse:
                GameEvents.Instance.Notify <GameEvents.IPlayerPlayCurseCard>(i => i.OnPlayCurseCard(player, card));
                break;
            }
        }
Пример #10
0
 void IPlayerDrawCard.OnDrawCard(IPlayer player, IRuntimeCard card) => SetSize(player);
Пример #11
0
 public IUiCard GetCard(IRuntimeCard card) => Cards.Find(x => x.Data.StaticData == card.Data);
Пример #12
0
        public void PlayCard(IRuntimeCard card)
        {
            var uiCard = PlayerHand.GetCard(card);

            PlayerHand.PlayCard(uiCard);
        }
Пример #13
0
        public void Discard(IRuntimeCard card)
        {
            var uiCard = PlayerHand.GetCard(card);

            PlayerHand.DiscardCard(uiCard);
        }
Пример #14
0
 void IPlayerPlayCard.OnPlayCard(IPlayer player, IRuntimeCard card) => SetSize(player);
Пример #15
0
 public bool CanPlay(IRuntimeCard card) => PlayCardMechanics.CanPlay(card);
Пример #16
0
 bool IPlayer.Play(IRuntimeCard card) => PlayCardMechanics.Play(card);
Пример #17
0
 public bool Discard(IRuntimeCard card) => DiscardMechanics.Discard(card);
Пример #18
0
 static EffectRegister GetEffects(IRuntimeCard card) => card.Data.Effects.Register;
Пример #19
0
 /// <summary>
 ///     Set a card
 /// </summary>
 /// <param name="card"></param>
 public void SetData(IRuntimeCard card)
 {
     RuntimeData = card;
     OnSetData?.Invoke(StaticData);
 }
Пример #20
0
 void GameEvents.IPlayerPlayCard.OnPlayCard(IPlayer player, IRuntimeCard card) => SetSize(player);
Пример #21
0
 void IPlayerDiscardCard.OnDiscardCard(IPlayer player, IRuntimeCard card) => SetSize(player);