コード例 #1
0
 private void Validate(ICardModel selectedCard)
 {
     if (selectedCard != null && !Candidates.Contains(selectedCard))
     {
         throw new InteractionValidationFailException("Selection is not candidate.");
     }
 }
コード例 #2
0
ファイル: CardInstance.cs プロジェクト: galaxyyao/TouhouGrave
 internal void Reset(ICardModel newModel)
 {
     Behaviors.RemoveAll();
     if (newModel != null)
     {
         Model = newModel;
     }
     InstantiateBehaviors();
     m_counters.Clear();
 }
コード例 #3
0
        // TODO: save/load score library

        private int GetScore(ICardModel cardModel)
        {
            int score;
            if (m_scoreLibrary.TryGetValue(cardModel.Id, out score))
            {
                return score;
            }

            var initialScore = GetInitialScore(cardModel);
            m_scoreLibrary.Add(cardModel.Id, initialScore);
            return initialScore;
        }
コード例 #4
0
 private int GetInitialScore(ICardModel cardModel)
 {
     var manaCost = cardModel.Behaviors.FirstOrDefault(bm => bm is Behaviors.ManaCost.ModelType);
     if (manaCost == null)
     {
         return 0;
     }
     else
     {
         return (manaCost as Behaviors.ManaCost.ModelType).Cost * 10;
     }
 }
コード例 #5
0
ファイル: CardInstance.cs プロジェクト: galaxyyao/TouhouGrave
        private CardInstance(ICardModel model, Player owner, bool hasGuid) : this()
        {
            if (model == null)
            {
                throw new ArgumentNullException("model");
            }
            else if (owner == null)
            {
                throw new ArgumentNullException("owner");
            }

            Model = model;
            Owner = owner;
            Guid = hasGuid ? owner.Game.GenerateNextCardGuid() : 0;
            InstantiateBehaviors();
        }
コード例 #6
0
ファイル: Transform.cs プロジェクト: galaxyyao/TouhouGrave
        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;
        }
コード例 #7
0
ファイル: SummonMove.cs プロジェクト: galaxyyao/TouhouGrave
        public SummonMove(ICardModel model, Player owner, int toZone, ICause cause)
            : base(cause)
        {
            if (model == null)
            {
                throw new ArgumentNullException("model");
            }
            else if (owner == null)
            {
                throw new ArgumentNullException("owner");
            }

            m_toZone = owner.m_zones.GetZone(toZone);

            Subject = null;
            Model = model;
            Owner = owner;
        }
コード例 #8
0
ファイル: ReviveMove.cs プロジェクト: galaxyyao/TouhouGrave
        public ReviveMove(Player player, ICardModel cardToRevive, int fromZone, int toZone, ICause cause)
            : base(cause)
        {
            if (player == null)
            {
                throw new ArgumentNullException("player");
            }
            else if (cardToRevive == null)
            {
                throw new ArgumentNullException("cardToRevive");
            }

            m_fromZone = player.m_zones.GetZone(fromZone);
            m_toZone = player.m_zones.GetZone(toZone);

            Subject = null;
            Player = player;
            CardToRevive = cardToRevive;
        }
コード例 #9
0
ファイル: Choice.cs プロジェクト: galaxyyao/TouhouGrave
 public SacrificeChoice(int cardIndex, ICardModel cardModel) : base(1)
 {
     CardIndex = cardIndex;
     CardModel = cardModel;
 }
コード例 #10
0
ファイル: ReviveMove.cs プロジェクト: galaxyyao/TouhouGrave
 public ReviveMove(Player player, ICardModel cardToRevive, int fromZone, int toZone)
     : this(player, cardToRevive, fromZone, toZone, null)
 { }
コード例 #11
0
 public void Respond(ICardModel selectedCard)
 {
     Validate(selectedCard);
     RespondBack(selectedCard);
 }
コード例 #12
0
ファイル: Deck.cs プロジェクト: galaxyyao/TouhouGrave
 public void Add(ICardModel cardModel)
 {
     if (cardModel == null)
     {
         throw new ArgumentNullException("cardModel");
     }
     Cards.Add(cardModel);
 }
コード例 #13
0
ファイル: CardInstance.cs プロジェクト: galaxyyao/TouhouGrave
 internal CardInstance(ICardModel model, Player owner)
     : this(model, owner, true)
 { }
コード例 #14
0
ファイル: Pile.cs プロジェクト: galaxyyao/TouhouGrave
 /// <summary>
 /// Add one card to the top of the pile.
 /// </summary>
 /// <param name="card">The card to be added.</param>
 public void AddToTop(ICardModel cardModel)
 {
     m_orderedCardModels.Add(cardModel);
 }
コード例 #15
0
ファイル: Pile.cs プロジェクト: galaxyyao/TouhouGrave
 /// <summary>
 /// Add one card to the bottom of the pile.
 /// </summary>
 /// <param name="card">The card to be added.</param>
 public void AddToBottom(ICardModel cardModel)
 {
     m_orderedCardModels.Insert(0, cardModel);
 }
コード例 #16
0
ファイル: Pile.cs プロジェクト: galaxyyao/TouhouGrave
 public bool Contains(ICardModel cardModel)
 {
     return m_orderedCardModels.Contains(cardModel);
 }
コード例 #17
0
ファイル: Deck.cs プロジェクト: galaxyyao/TouhouGrave
 public int IndexOf(ICardModel element)
 {
     return Cards.IndexOf(element);
 }
コード例 #18
0
ファイル: SummonMove.cs プロジェクト: galaxyyao/TouhouGrave
 public SummonMove(ICardModel model, Player owner, int toZone)
     : this(model, owner, toZone, null)
 { }