public Player(MagicGame game, Deck deck)
 {
     game.Add(this);
     game.StartGame += StartGame;
     this.game = game;
     this.deck = deck;
     manaPool = new ManaPool();
 }
 public bool CanBePaidWith(ManaPool pool)
 {
     Dictionary<MTGColor, int> manaRemaining = pool.GetManaRemaining();
     return TryTakeMana(manaRemaining);
 }
        public bool TryPayWith(ManaPool pool)
        {
            Dictionary<MTGColor, int> manaRemaining = pool.GetManaRemaining();
            bool result = TryTakeMana(manaRemaining);

            if( result )
                pool.SetManaRemaining(manaRemaining);

            return result;
        }
        public void PayWith(ManaPool pool)
        {
            Dictionary<MTGColor, int> manaRemaining = pool.GetManaRemaining();
            if (!TryTakeMana(manaRemaining))
                throw new NotSupportedException("Can't afford this payment!");

            pool.SetManaRemaining(manaRemaining);
        }