Example #1
0
 public ChangeZoneEventArg(CardInstance _source, CardGroupEnum _origine, CardGroupEnum _destination)
 {
     Type        = MagicEventType.ChangeZone;
     Source      = _source;
     Origine     = _origine;
     Destination = _destination;
 }
Example #2
0
    public override void Execute(float d)
    {
        if (Input.GetMouseButtonDown(0))
        {
            List <RaycastResult> results = Settings.GetUIObjects();

            foreach (RaycastResult result in results)
            {
                CardInstance cardInst = result.gameObject.GetComponentInParent <CardInstance>();
                PlayerHolder player   = Settings.gameManager.currentPlayer;
                if (player.cardsOnTable.Contains(cardInst))
                {
                    if (cardInst.CanAttack())
                    {
                        player.attackingCards.Add(cardInst);
                        player.currentHolders.SetCardOnBattleLine(cardInst);
                    }
                }
                else
                {
                    return;
                }
            }
        }
    }
Example #3
0
 public override void OnCick(CardInstance inst)
 {
     //Debug.Log("click card");
     currentCard.Set(inst);
     Settings.gameManager.SetState(hodlingWithCard);
     onCurrentCardSelected.Raise();
 }
Example #4
0
 public LifeEventArg(Player _player, CardInstance _source, int _oldValue, int _newValue)
 {
     this.Player   = _player;
     this.Source   = _source;
     this.OldValue = _oldValue;
     this.NewValue = _newValue;
 }
Example #5
0
 public override void OnMouseLeftClick(CardInstance inst)
 {
     Debug.Log("This is my hand card");
     currentCard.Set(inst);
     Settings.gameManager.SetState(holdingCard);
     onCurrentCardSelected.Raise();
 }
        public CardDrawedViewSample()
        {
            int              baseId     = 123;
            Clan             clan       = Clan.GetClanById(ClanId.Raptors);
            string           cardName   = "Tester";
            Skill            ability    = new Skill(SkillPrefix.Courage, SkillSuffix.DecreasePillzXMinY, 2, 3);
            int              minLevel   = 2;
            int              maxLevel   = 4;
            List <CardLevel> cardLevels = new List <CardLevel>
            {
                new CardLevel(2, 2, 3),
                new CardLevel(3, 3, 4),
                new CardLevel(4, 6, 5),
            };
            int        abilityUnlockLevel = 3;
            CardRarity rarity             = CardRarity.Legendary;
            int        currentLevel       = 4;
            int        instanceId         = 222;


            CardBase     cardBase     = new CardBase(baseId, cardName, clan, minLevel, maxLevel, cardLevels, ability, abilityUnlockLevel, rarity);
            CardInstance cardInstance = new CardInstance(cardBase, instanceId, currentLevel);

            card = new CardDrawed(cardInstance);
        }
Example #7
0
    /// <summary>
    /// Retorna uma instância da carta a partir de seu id.
    /// </summary>
    public Card getCardById(int id)
    {
        Card card = CardInstance.createCard(id);

        card.setPlayerId(player_id);
        return(card);
    }
        internal void AddCard(CardInstance value, int qty)
        {
            if (value == null)
            {
                return;
            }
            foreach (var ci in CardsCollection.Where(ci => ci.BorderBrush != null))
            {
                ci.BorderBrush = null;
            }
            var card = CardsCollection.Where(ci => ci.CardId == value.CardId).FirstOrDefault();

            if (card != null)
            {
                card.Quantity   += qty; //if already in deck, inc qty
                card.BorderBrush = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromArgb(255, 255, 100, 15));
            }
            else
            {
                card             = value;
                card.BorderBrush = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromArgb(255, 255, 100, 15));
                card.Quantity    = qty;
                CardsCollection.Add(card);
            }
            if (LimitCardCount)
            {
                trackerFactory.GetService <IDeckService>().EnforceCardLimit(card);
            }
            NewCard = null;
        }
Example #9
0
 internal NotifyCardEvent(Game game, string notification, CardInstance card, string message)
     : base(game, notification)
 {
     Debug.Assert(card != null);
     Card = card;
     Message = message;
 }
Example #10
0
        public override Cost Pay(ref CardInstance ci, CardInstance source)
        {
            Costs tmp = new Costs();
            int   i   = 0;

            while (i < CostList.Count)
            {
                Cost res = CostList [i].Pay(ref ci, source);
                i++;
                if (res != null)
                {
                    tmp.CostList.Add(res);
                }
                if (ci == null)
                {
                    break;
                }
            }
            while (i < CostList.Count)
            {
                tmp.CostList.Add(CostList [i].Clone());
                i++;
            }
            return(tmp.CostList.Count == 0 ? null : tmp.CostList.Count == 1 ? tmp.CostList [0] : tmp);
        }
 public void DrawCard(CardInstance cardInstance)
 {
     if (owner == currentPlayer.Get())
     {
         cardInitializer.SpawnCard(cardInstance);
     }
 }
Example #12
0
    /// <summary>
    /// Cria uma instância de uma carta nova, e adiciona-a a mão.
    /// </summary>
    public void addCardToHand(int id)
    {
        Card card = CardInstance.createCard(id);

        card.setPlayerId(this.player_id);
        hand.addCard(card);
    }
Example #13
0
 public override void OnClick(CardInstance instance)
 {
     currentCard.Set(instance);
     onCurrentCardSelected.Raise();
     Settings.gameManager.SetState(holdingCard);
     Debug.Log("This card is in my hand - clicked");
 }
Example #14
0
        public Bataille()
        {
            YACE.YACEParameters parameters = new YACEParameters();

            CardDefinition battailDefinition = new CardDefinition()
            {
                Name = "BatailleCard",
            };

            parameters.ResourceDefinitions = new ResourceDefinition[]
            {
                new ResourceDefinition
                {
                    Name          = "Multiplier",
                    BaseValue     = 1,
                    IsPlayerBound = true,
                    MinValue      = 1,
                },

                new ResourceDefinition
                {
                    Name          = "Score",
                    BaseValue     = 0,
                    IsPlayerBound = true,
                }
            };

            parameters.ZoneDefinitions = new ZoneDefinition[]
            {
                new ZoneDefinition
                {
                    Name          = "MainDeck",
                    IsPlayerBound = false,
                    IsOrdered     = false,
                },
                new ZoneDefinition
                {
                    Name          = "PlayerHand",
                    IsPlayerBound = true,
                    IsOrdered     = false,
                },
                new ZoneDefinition
                {
                    Name = "DiscardPile",
                },
            };

            yace = new YACE.YACE(parameters);
            CardInstance lastCard = null;

            for (int i = 0; i < 10; ++i)
            {
                CardInstance card = new CardInstance(battailDefinition);
                card.AddTag("Value", i + 1);
                yace.SetCardToZone(card, "MainDeck");
                lastCard = card;
            }

            yace.ShuffleZone("MainDeck");
        }
        private Deck InitializaDeck()
        {
            Deck deck = new Deck("Test Deck");

            Card card = deck.AddCard();

            card.SideA = "sideA - 你好";
            card.SideB = "sideB - 你好";
            card.Notes = "notes - 你好";
            card.Tags  = "tags";

            CardInstance sideAToB     = card.GetInstanceSideAToB();
            CardPlan     sideAToBPlan = sideAToB.Plan;

            sideAToBPlan.LastDays = 1;
            CardReview sideAToBValue = sideAToB.AddReview();

            sideAToBValue.DateTime = DateTimeOffset.Now;
            sideAToBValue.Value    = ReviewValues.Values.VALUE_1;

            CardInstance sideBToA     = card.GetInstanceSideBToA();
            CardPlan     sideBToAPlan = sideBToA.Plan;

            sideBToAPlan.LastDays = 1;
            CardReview sideBToAValue = sideBToA.AddReview();

            sideBToAValue.DateTime = DateTimeOffset.Now;
            sideBToAValue.Value    = ReviewValues.Values.VALUE_1;

            return(deck);
        }
Example #16
0
 public override void OnClick(CardInstance cardInstance)
 {
     Debug.Log("This card is on hand and it was clicked");
     currentCard.Set(cardInstance);
     Settings.gameManager.SetState(holdingCard);
     onSelectCard.Raise();
 }
Example #17
0
 public bool UpgradeCards(List <ICardInstance> cardTargets)
 {
     foreach (var cardTarget in cardTargets)
     {
         if (cardTarget.BaseCard.UpgradeTarget != null)
         {
             //Then, upgrade it
             var newCard         = (Activator.CreateInstance(cardTarget.BaseCard.UpgradeTarget) as BaseCard);
             var newCardInstance = new CardInstance(newCard, _gameWorldManager);
             //Then, replace the original one
             if (_gameWorldManager.CardManager.Hand.Contains(cardTarget))
             {
                 _gameWorldManager.CardManager.Hand[_gameWorldManager.CardManager.Hand.FindIndex(ind => ind.Equals(cardTarget))] = newCardInstance;
                 Logger.Log($"Upgrading card {cardTarget.Name} into {newCard.Name} in Hand");
             }
             else if (_gameWorldManager.CardManager.DeckPile.Contains(cardTarget))
             {
                 _gameWorldManager.CardManager.DeckPile[_gameWorldManager.CardManager.Hand.FindIndex(ind => ind.Equals(cardTarget))] = newCardInstance;
                 Logger.Log($"Upgrading card {cardTarget.Name} into {newCard.Name} in Deck");
             }
             else if (_gameWorldManager.CardManager.DiscardPile.Contains(cardTarget))
             {
                 _gameWorldManager.CardManager.DiscardPile[_gameWorldManager.CardManager.Hand.FindIndex(ind => ind.Equals(cardTarget))] = newCardInstance;
                 Logger.Log($"Upgrading card {cardTarget.Name} into {newCard.Name} in Discord");
             }
             _gameWorldManager.EventManager.CardUpgraded(cardTarget, newCard, newCardInstance);
         }
     }
     return(true);
 }
Example #18
0
        private static bool PlayBombCard(BotMain bot, CardInstance card)
        {
            var allBombableEnemyTerritories = bot.Standing.Territories.Values
                                              .Where(o => o.OwnerPlayerID == bot.PlayerID)
                                              .SelectMany(o => bot.Map.Territories[o.ID].ConnectedTo.Keys)
                                              .Distinct()
                                              .Select(o => bot.Standing.Territories[o])
                                              .Where(o => bot.IsOpponent(o.OwnerPlayerID) && o.NumArmies.Fogged == false)
                                              .ToList();

            var minArmies = !bot.UseRandomness ? bot.BaseIncome.Total * 2 : SharedUtility.Round(bot.BaseIncome.Total * RandomUtility.BellRandom(1, 3));

            var weights = allBombableEnemyTerritories.Where(o => o.NumArmies.NumArmies > minArmies).ToDictionary(o => o.ID, o => o.NumArmies.NumArmies - minArmies);

            if (weights.Count == 0)
            {
                return(false);
            }

            var bomb = bot.UseRandomness ? RandomUtility.WeightedRandom(weights.Keys, o => weights[o]) : weights.OrderByDescending(o => o.Value).First().Key;

            AILog.Log("PlayCards", "Bombing " + bot.TerrString(bomb));
            bot.Orders.AddOrder(GameOrderPlayCardBomb.Create(card.ID, bot.PlayerID, bomb));
            return(true);
        }
        public void CloneTest001()
        {
            CardInstance ci = new CardInstance();

            PopulateObject(ci, StartProp);

            ci.PropertyChanged += (s, e) => { };

            CardInstance clone = ci.Clone() as CardInstance;

            foreach (PropertyInfo p in typeof(CardInstance).GetProperties())
            {
                if (p.CanWrite)
                {
                    TestContext.WriteLine("Checking prop:{0}.{1};{2}", p.Name, p.GetValue(ci), p.GetValue(clone));

                    if ((p.Name == nameof(CardInstance.Card)) ||//skip do not clone as this will never change anyway! (read from DB)
                        (p.Name == nameof(CardInstance.BorderBrush)))    //brush wont be modified
                    {
                        continue;
                    }
                    Assert.IsFalse(Object.ReferenceEquals(p.GetValue(ci), p.GetValue(clone)));
                }
            }

            foreach (EventInfo ev in typeof(CardInstance).GetEvents())
            {
                FieldInfo fieldTheEvent = GetAllFields(typeof(CardInstance)).Where(f => f.Name == ev.Name).First();
                Assert.IsNull(fieldTheEvent.GetValue(clone));
            }
        }
        public void SaveDeckTest001_OverwriteCurrent()
        {
            Mock <ITrackerFactory>      trackerFactory = new Mock <ITrackerFactory>();
            Mock <ITracker>             tracker        = new Mock <ITracker>();
            ObservableCollection <Deck> deckList       = new ObservableCollection <Deck>();

            tracker.Setup(t => t.Decks).Returns(deckList);

            trackerFactory.Setup(tf => tf.GetTracker()).Returns(tracker.Object);

            CardInstance card = new CardInstance(new Card(trackerFactory.Object));

            Deck deck = Deck.CreateNewDeck(trackerFactory.Object, "test deck");

            deck.SelectedVersion.Cards.Add(card);

            //  List<CardInstance> modifiedCollection = new List<CardInstance>()
            {
                //    card, //include this and ensure it has been cloned
                deck.SelectedVersion.Cards.Add(new CardInstance(Card.Unknown));
                deck.SelectedVersion.Cards.Add(new CardInstance(new Card(trackerFactory.Object)));
            };

            DeckEditViewModel model = new DeckEditViewModel();

            model.Deck = deck;

            model.SaveDeck(tracker.Object, new SerializableVersion(0, 0), deck.SelectedVersion.Cards);

            Assert.AreEqual(3, model.Deck.SelectedVersion.Cards.Count);
            Assert.AreEqual(1, model.Deck.History.Count);
        }
Example #21
0
    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown("space"))
        {
            if (desc == null)
            {
                ICardGenerator cardGenerator = new ProceduralCardGenerator(model, images, creatureModels, nameModel);

                if (providedSeed == 0)
                {
                    generatedSeed = Random.Range(0, 10000);
                }
                else
                {
                    generatedSeed = providedSeed;
                }
                instance = new CardInstance(cardGenerator.GenerateCard(generatedSeed, flags));
            }
            else
            {
                display.SetCard(new CardInstance(desc));
            }
            display.SetCard(instance);
        }
        else if (Input.GetKeyDown("q"))
        {
            if (instance != null)
            {
                double power = instance.baseCard.PowerLevel();
                double mana  = PowerBudget.PowerLevelToMana(power);
            }
        }
    }
Example #22
0
        private async Task <JsonResult> buildJsonResult(int deckId)
        {
            if (deckId == 0)
            {
                return(GetEmptyJson());
            }

            CardInstance cardInstance = null;

            using (var cardDao = new CardDao(DbContext))
            {
                cardInstance = await cardDao.GetNextCardInstanceToReview(deckId);
            }

            if (cardInstance == null)
            {
                return(GetEmptyJson());
            }

            var card = cardInstance.Card;

            var result = new
            {
                cardId         = card.Id,
                sideA          = card.SideA,
                sideB          = card.SideB,
                notes          = card.Notes,
                tags           = card.Tags,
                cardInstanceId = cardInstance.Id,
                sideAToB       = cardInstance.SideAToB
            };

            return(Json(result));
        }
        public void ImportFromTextProcess(string importData)
        {
            var importLines = importData.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);

            this.DeckName = importLines[0].Replace("###", String.Empty).Trim();

            foreach (string cardLine in importLines.Skip(1))
            {
                if (String.IsNullOrWhiteSpace(cardLine))
                {
                    continue;
                }
                var      cardData    = RemoveTextInCurlyBraces(cardLine);
                string[] splitedLine = cardData.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);

                int    cardCount = GetCardQty(splitedLine);
                string cardName  = GetCardName(splitedLine);

                Card card = this.cardsDatabase.FindCardByName(cardName);

                CardInstance cardInstance = new CardInstance(card, trackerFactory);
                cardInstance.Quantity = cardCount;

                Cards.Add(cardInstance);
            }
        }
        public void SaveDeckTest003_SaveMinor()
        {
            Mock <ITrackerFactory>      trackerFactory = new Mock <ITrackerFactory>();
            Mock <ITracker>             tracker        = new Mock <ITracker>();
            ObservableCollection <Deck> deckList       = new ObservableCollection <Deck>();

            tracker.Setup(t => t.Decks).Returns(deckList);

            trackerFactory.Setup(tf => tf.GetTracker()).Returns(tracker.Object);

            CardInstance card = new CardInstance(new Card(trackerFactory.Object));

            Deck deck = Deck.CreateNewDeck(trackerFactory.Object, "test deck");

            deck.Class = DataModel.Enums.DeckClass.Assassin; //any
            deck.SelectedVersion.Cards.Add(card);

            DeckEditViewModel model = new DeckEditViewModel();

            model.Deck = deck;

            model.BeginEdit();

            deck.SelectedVersion.Cards.Add(new CardInstance(Card.Unknown));
            deck.SelectedVersion.Cards.Add(new CardInstance(new Card(trackerFactory.Object)));

            model.SaveDeck(tracker.Object, new SerializableVersion(0, 1), deck.SelectedVersion.Cards);

            Assert.AreEqual(3, model.Deck.SelectedVersion.Cards.Count);
            Assert.AreEqual(new SerializableVersion(1, 1), model.Deck.SelectedVersion.Version);
            Assert.AreEqual(1, model.Deck.History[0].Cards.Count);
            Assert.AreEqual(2, model.Deck.History.Count);
            //endsure inial card has ebeen cloned
            Assert.IsFalse(model.Deck.SelectedVersion.Cards.Contains(card));
        }
Example #25
0
 /// <summary>
 /// 将手牌移动到弃牌堆
 /// </summary>
 /// <param name="cardInstance"></param>
 internal void MoveHandCardToUsed(CardInstance cardInstance)
 {
     _lstHand.Remove(cardInstance);
     _lstUsed.Add(cardInstance);
     SendEvent(BattleEvent.MOVE_HAND_TO_USED, cardInstance);
     SendEvent(BattleEvent.USED_NUM_UPDATE);
 }
Example #26
0
    private IEnumerator DrawCardUntilNotAttack()
    {
        CardInstance drawCardInst = null;

        while (true)
        {
            if (!BattleTool.IsDeckHasCard()) //如果没卡了
            {
                if (!BattleTool.IsUsedHasCard())
                {
                    yield break;
                }

                float shuffleTime = BattleTool.ShuffleDeckFromUsed();
                yield return(new WaitForSeconds(shuffleTime));
            }

            if (BattleTool.IsHandCardFull())// 如果手牌满了
            {
                yield break;
            }

            drawCardInst = _battleModel.DrawOneCard(false);
            if (null == drawCardInst || drawCardInst.cardType != CardType.ATTACK)
            {
                yield break;
            }
            yield return(new WaitForSeconds(0.2f));
        }
    }
Example #27
0
    //处理卡牌效果
    private void HandleCardEffect(CardInstance cardInstance, uint effectId, int targetInstId = 0)
    {
        CardEffectTemplate effectTemplate = CardEffectTemplateData.GetData(effectId);

        if (effectTemplate == null)
        {
            return;
        }

        CardEffectBase cardEffect = CardEffectFactory.GetCardEffect(effectTemplate.nType);

        if (cardEffect == null)
        {
            return;
        }

        if (cardEffect.CanTriggerCardEffect(effectTemplate))
        {
            cardEffect.DoEffect(this, cardInstance, effectTemplate, targetInstId);
        }

        if (effectTemplate.nLinkId != 0)
        {
            HandleCardEffect(cardInstance, effectTemplate.nLinkId, targetInstId);
        }
    }
Example #28
0
    public override bool IsComplete()
    {
        PlayerHolder playerHolder      = Settings.gameManager.currentPlayer;
        PlayerHolder enemyPlayerHolder = Settings.gameManager.GetEnemyOf(playerHolder);

        if (playerHolder.attackingCards.Count == 0)
        {
            return(true);
        }

        for (int i = 0; i < playerHolder.attackingCards.Count; i++)
        {
            CardInstance   cardInst       = playerHolder.attackingCards[i];
            Card           card           = cardInst.viz.card;
            CardProperties attackProperty = card.GetProperty(attackElement);
            if (attackProperty == null)
            {
                Debug.LogError("You are attacking with a card that cant attack");
                continue;
            }

            playerHolder.DropCard(cardInst, false);
            playerHolder.currentHolders.SetCardDown(cardInst);
            cardInst.SetFlatfooted(true);
            enemyPlayerHolder.DoDamage(attackProperty.intVal);
        }

        playerHolder.attackingCards.Clear();

        return(true);
    }
Example #29
0
        public virtual void AddCard(CardInstance c, bool anim = true)
        {
            if (c == null)
            {
                return;
            }

            c.CurrentGroup = this;
            float hSpace = HorizontalSpacing;

            if (HorizontalSpacing * (Cards.Count + 1) > MaxHorizontalSpace)
            {
                hSpace = MaxHorizontalSpace / (Cards.Count + 1);
            }


            Animation.StartAnimation(new FloatAnimation(c, "x", this.x + hSpace / 2 * Cards.Count, 0.2f));

            float halfWidth = hSpace * (Cards.Count) / 2;

            foreach (CardInstance i in Cards)
            {
                Animation.StartAnimation(new FloatAnimation(i, "x", this.x - halfWidth + hSpace * Cards.IndexOf(i), 0.2f));
                Animation.StartAnimation(new FloatAnimation(i, "z", this.z + VerticalSpacing * Cards.IndexOf(i), 0.2f));
            }

            Animation.StartAnimation(new FloatAnimation(c, "y", this.y, 0.2f));
            Animation.StartAnimation(new FloatAnimation(c, "z", this.z + VerticalSpacing * (Cards.Count + 1), 0.2f));
            Animation.StartAnimation(new AngleAnimation(c, "yAngle", this.yAngle, MathHelper.Pi * 0.1f));
            Animation.StartAnimation(new AngleAnimation(c, "xAngle", this.xAngle, MathHelper.Pi * 0.03f));

            Cards.Add(c);
            UpdateLayout(anim);
        }
Example #30
0
        public override void Execute(float d)
        {
            if (Input.GetMouseButtonDown(0))
            {
                List <RaycastResult> results = Settings.GetUIObjs();

                foreach (RaycastResult r in results)
                {
                    CardInstance c = r.gameObject.GetComponentInParent <CardInstance>();
                    if (c != null)
                    {
                        GameManager  gm    = Settings.gameManager;
                        PlayerHolder enemy = gm.GetEnemyOf(gm.currentPlayer);

                        if (c.owner != enemy)
                        {
                            if (gm.currentPlayer.downCards.Contains(c))
                            {
                                if (!c.isFlatfooted)
                                {
                                    Debug.Log(c.name);
                                    currentCard.value = c;
                                    gm.SetState(holdingCard);
                                    onCurrentCardSelected.Raise();
                                }
                            }
                        }

                        return;
                    }
                }
            }
        }
Example #31
0
 public override void OnClick(CardInstance inst)
 {
     // Debug.Log("this card is on my hand");
     currentCard.Set(inst);
     Settings.gameManager.SetState(holdingCard);
     onCurrentCardSelected.Raise();
 }
Example #32
0
 public static CardInstance[] MapToCards(this List<int> cardGuidArray, IIndexable<CardInstance> candidates)
 {
     var cardArray = new CardInstance[cardGuidArray.Count];
     for (int i = 0; i < cardGuidArray.Count; ++i)
     {
         cardArray[i] = candidates.Find(cardGuidArray[i]);
     }
     return cardArray;
 }
Example #33
0
        public DeactivateAssist(CardInstance cardToDeactivate)
        {
            if (cardToDeactivate == null)
            {
                throw new ArgumentNullException("cardToDeactivate");
            }

            CardToDeactivate = cardToDeactivate;
        }
Example #34
0
        public ResetCard(CardInstance cardToReset, ICause cause)
            : base(cause)
        {
            if (cardToReset == null)
            {
                throw new ArgumentNullException("cardToReset");
            }

            CardToReset = cardToReset;
        }
 protected void Validate(CardInstance card)
 {
     if (card == null)
     {
         FailValidation("Card can't be null.");
     }
     else
     {
         Validate(card.Owner);
     }
 }
Example #36
0
        public DealDamageToCard(CardInstance target, int damageToDeal, ICause cause)
            : base(cause)
        {
            if (target == null)
            {
                throw new ArgumentNullException("target");
            }

            Target = target;
            DamageToDeal = damageToDeal;
        }
Example #37
0
        public HealCard(CardInstance target, int lifeToHeal, ICause cause)
            : base(cause)
        {
            if (target == null)
            {
                throw new ArgumentNullException("target");
            }

            Target = target;
            LifeToHeal = lifeToHeal;
        }
Example #38
0
        public MoveCard(CardInstance subject, int toZone, ICause cause)
            : base(cause)
        {
            if (subject == null)
            {
                throw new ArgumentNullException("subject");
            }

            m_fromZone = subject.Owner.m_zones.GetZone(subject.Zone);
            m_toZone = subject.Owner.m_zones.GetZone(toZone);

            Subject = subject;
        }
Example #39
0
        public AddBehavior(CardInstance target, Behaviors.IBehavior behavior)
        {
            if (target == null)
            {
                throw new ArgumentNullException("target");
            }
            else if (behavior == null)
            {
                throw new ArgumentNullException("behavior");
            }

            Target = target;
            Behavior = behavior;
        }
Example #40
0
        public Transform(CardInstance cardToTransform, ICardModel newModel)
        {
            if (cardToTransform == null)
            {
                throw new ArgumentNullException("cardToTransform");
            }
            else if (newModel == null)
            {
                throw new ArgumentNullException("newModel");
            }
            else if (newModel == cardToTransform.Model)
            {
                throw new ArgumentException("Card will not be transformed.");
            }

            CardToTransform = cardToTransform;
            NewCardModel = newModel;
        }
Example #41
0
        public AddCounter(CardInstance target, Behaviors.ICounter counter, int numToAdd)
        {
            if (target == null)
            {
                throw new ArgumentNullException("target");
            }
            else if (counter == null)
            {
                throw new ArgumentNullException("behavior");
            }
            else if (numToAdd <= 0)
            {
                throw new ArgumentOutOfRangeException("numToAdd", "NumToAdd must be greater than zero.");
            }

            Target = target;
            Counter = counter;
            NumToAdd = numToAdd;
        }
Example #42
0
            public InternalCardData(CardInstance card, int zonePosition)
            {
                Guid = card.Guid;
                Zone = card.Zone;
                ZonePosition = zonePosition;
                OwnerPlayerIndex = card.Owner.Index;
                Model = card.Model;

                var manaCost = card.Behaviors.Get<Behaviors.ManaCost>();
                SummonCost = manaCost != null ? manaCost.Cost : -1;

                var warrior = card.Warrior;
                IsWarrior = warrior != null;
                AttackAndInitialAttack = new Tuple<int, int>(warrior != null ? warrior.Attack : -1, warrior != null ? warrior.InitialAttack : -1);
                LifeAndInitialLife = new Tuple<int, int>(warrior != null ? warrior.Life : -1, warrior != null ? warrior.InitialLife : -1);
                IsWarriorCoolingDown = warrior != null && warrior.State == Behaviors.WarriorState.CoolingDown;

                IsAssist = card.Behaviors.Has<Behaviors.Assist>();
                IsAssistActivated = card.IsActivatedAssist;

                IsInstant = card.Behaviors.Has<Behaviors.Instant>();
                IsTrap = card.Behaviors.Has<Behaviors.Trap>();

                var counters = card.Counters;
                var statusEffects = card.Behaviors.OfType<Behaviors.IStatusEffect>();
                var counterArray = new InternalCounterData[counters.Count() + statusEffects.Count()];
                int i = 0;
                foreach (var counter in counters)
                {
                    counterArray[i++] = new InternalCounterData(counter.Text, counter.IconUri, card.GetCounterCount(counter.GetType()));
                }
                foreach (var statusEffect in statusEffects)
                {
                    counterArray[i++] = new InternalCounterData(statusEffect.Text, statusEffect.IconUri, 0);
                }
                Counters = counterArray.ToIndexable();
            }
Example #43
0
 public override void OnSelectCards(Interactions.SelectCards io)
 {
     var respond = m_playingBack.ReadLine().Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries);
     if (respond[0] == "se")
     {
         if (respond[1] == "null")
         {
             io.Respond(null);
         }
         else
         {
             CardInstance[] cards = new CardInstance[respond.Length - 1];
             for (int i = 1; i < respond.Length; ++i)
             {
                 cards[i - 1] = io.Candidates.First(c => c.Guid == Int32.Parse(respond[i]));
             }
             io.Respond(cards.ToIndexable());
         }
     }
     else
     {
         throw new NotSupportedException(String.Format("Unrecognized verb {0}", respond[0]));
     }
 }
 public CompiledPlayCard(CardInstance card)
 {
     m_cardGuid = card.Guid;
 }
Example #45
0
        public void RespondAttackPlayer(CardInstance attacker, Player player)
        {
            if (attacker == null)
            {
                throw new ArgumentNullException("attacker");
            }
            else if (player == null)
            {
                throw new ArgumentNullException("player");
            }

            var result = new Result
            {
                ActionType = Interactions.BaseInteraction.PlayerAction.AttackPlayer,
                Data = new object[] { attacker, player }
            };

            Validate(result);
            RespondBack(result);
        }
Example #46
0
        public void RespondAttackCard(CardInstance attacker, CardInstance defender)
        {
            if (attacker == null)
            {
                throw new ArgumentNullException("attacker");
            }
            else if (defender == null)
            {
                throw new ArgumentNullException("defender");
            }

            var result = new Result
            {
                ActionType = Interactions.BaseInteraction.PlayerAction.AttackCard,
                Data = new CardInstance[] { attacker, defender }
            };

            Validate(result);
            RespondBack(result);
        }
Example #47
0
        public void RespondRedeem(CardInstance selectedCard)
        {
            if (selectedCard == null)
            {
                throw new ArgumentNullException("selectedCard");
            }

            var result = new Result
            {
                ActionType = Interactions.BaseInteraction.PlayerAction.Redeem,
                Data = selectedCard
            };

            Validate(result);
            RespondBack(result);
        }
Example #48
0
 public AddCounter(CardInstance target, Behaviors.ICounter counter)
     : this(target, counter, 1)
 { }
Example #49
0
 public InitiativeMoveCard(CardInstance subject, int toZone, ICause cause)
     : base(subject, toZone, cause)
 { }
        public CompiledResponse CompiledRespondRedeem(CardInstance selectedCard)
        {
            if (selectedCard == null)
            {
                throw new ArgumentNullException("selectedCard");
            }

            Validate(new Result
            {
                ActionType = Interactions.BaseInteraction.PlayerAction.Redeem,
                Data = selectedCard
            });

            return new CompiledRedeem(selectedCard);
        }
 public CompiledSacrifice(CardInstance card)
 {
     m_cardGuid = card.Guid;
 }
 public CompiledRedeem(CardInstance card)
 {
     m_cardGuid = card.Guid;
 }
 public CompiledAttackCard(CardInstance attacker, CardInstance defender)
 {
     m_attackerGuid = attacker.Guid;
     m_defenderGuid = defender.Guid;
 }
Example #54
0
 public MoveCard(CardInstance subject, int toZone)
     : this(subject, toZone, null)
 { }
Example #55
0
 public PlayCard(CardInstance subject, int toZone, Game cause)
     : base(subject, toZone, cause)
 {
     if (subject == null)
     {
         throw new ArgumentNullException("subject");
     }
     else if (cause == null)
     {
         throw new ArgumentNullException("cause");
     }
     else if (FromZone != SystemZone.Hand
         || ToZoneType != ZoneType.OnBattlefield)
     {
         throw new InvalidOperationException("Invalid card to be played.");
     }
 }
        public CompiledResponse CompiledRespondAttackPlayer(CardInstance attacker, Player player)
        {
            if (attacker == null)
            {
                throw new ArgumentNullException("attacker");
            }
            else if (player == null)
            {
                throw new ArgumentNullException("player");
            }

            Validate(new Result
            {
                ActionType = Interactions.BaseInteraction.PlayerAction.AttackPlayer,
                Data = new object[] { attacker, player }
            });

            return new CompiledAttackPlayer(attacker, player);
        }
Example #57
0
        internal override void RunMain()
        {
            var index = m_fromZone.CardModels.IndexOf(CardToRevive);
            m_fromZone.CardModels.RemoveAt(index);

            Subject = new CardInstance(CardToRevive, Player);
            m_toZone.CardInstances.Add(Subject);
            Subject.Zone = ToZone;

            if (m_toZone.Type == ZoneType.OnBattlefield)
            {
                Context.Game.SubscribeCardToCommands(Subject);
            }
        }
 public CompiledAttackPlayer(CardInstance attacker, Player player)
 {
     m_attackerGuid = attacker.Guid;
     m_playerIndex = player.Index;
 }
        public CompiledResponse CompiledRespondAttackCard(CardInstance attacker, CardInstance defender)
        {
            if (attacker == null)
            {
                throw new ArgumentNullException("attacker");
            }
            else if (defender == null)
            {
                throw new ArgumentNullException("defender");
            }

            Validate(new Result
            {
                ActionType = Interactions.BaseInteraction.PlayerAction.AttackCard,
                Data = new CardInstance[] { attacker, defender }
            });

            return new CompiledAttackCard(attacker, defender);
        }
 public CompiledActivateAssist(CardInstance card)
 {
     m_cardGuid = card.Guid;
 }