예제 #1
0
        internal override void End(Player player, Deck deck)
        {
            // Add back any set aside cards that are still on this
            if (_SetAsideCard != null)
            {
                deck.AddRange(player, new CardCollection()
                {
                    _SetAsideCard
                });
            }
            if (_SetAsideCardInPlay != null)
            {
                deck.AddRange(player, new CardCollection()
                {
                    _SetAsideCardInPlay
                });
            }
            _SetAsideCard       = null;
            _SetAsideCardInPlay = null;

            if (_TurnStartedEventHandler != null && _TurnStartedPlayer != null)
            {
                _TurnStartedPlayer.TurnStarted -= _TurnStartedEventHandler;
            }
            _TurnStartedPlayer       = null;
            _TurnStartedEventHandler = null;
        }
예제 #2
0
        public override void Play(Player player)
        {
            base.Play(player);
            if (player.InPlay.Contains(this.PhysicalCard))
            {
                Choice       choice = Choice.CreateYesNoChoice("Do you want to set this card aside?", this, player);
                ChoiceResult result = player.MakeChoice(choice);
                if (result.Options[0] == "Yes")
                {
                    player.AddCardInto(TypeClass.PrinceSetAside, player.RetrieveCardFrom(DeckLocation.InPlay, this.PhysicalCard));

                    if (_TurnStartedEventHandler != null)
                    {
                        player.TurnStarted -= _TurnStartedEventHandler;
                    }
                    _TurnStartedPlayer              = player;
                    _TurnStartedEventHandler        = new Player.TurnStartedEventHandler(player_TurnStarted);
                    _TurnStartedPlayer.TurnStarted += _TurnStartedEventHandler;

                    Choice       setAsideChoice = new Choice("Choose a card to set aside", this, player.Hand[c => (c.Category & Cards.Category.Action) == Cards.Category.Action && player._Game.ComputeCost(c) <= new Coin(4)], player, false, 1, 1);
                    ChoiceResult setAsideResult = player.MakeChoice(setAsideChoice);
                    if (setAsideResult.Cards.Count > 0)
                    {
                        _SetAsideCard = player.RetrieveCardFrom(DeckLocation.Hand, setAsideResult.Cards[0]);
                        player.PlayerMats[TypeClass.PrinceSetAside].Refresh(player);
                        player._Game.SendMessage(player, this, this._SetAsideCard);
                    }
                }
            }
        }
예제 #3
0
        public override void AddedTo(DeckLocation location, Player player)
        {
            base.AddedTo(location, player);

            switch (location)
            {
            case DeckLocation.Hand:
                if (_AttackHandler != null)
                {
                    player.Attacked -= _AttackHandler;
                }

                _AttackHandler   = new Player.AttackedEventHandler(player_Attacked);
                player.Attacked += _AttackHandler;
                break;

            case DeckLocation.SetAside:
                if (_TurnStartedEventHandler != null)
                {
                    player.TurnStarted -= _TurnStartedEventHandler;
                }
                _TurnStartedEventPlayer              = player;
                _TurnStartedEventHandler             = new Player.TurnStartedEventHandler(player_TurnStarted);
                _TurnStartedEventPlayer.TurnStarted += _TurnStartedEventHandler;
                break;
            }
        }
예제 #4
0
 void player_TurnStarted(object sender, TurnStartedEventArgs e)
 {
     this.PlayDuration(e.Player);
     if (_TurnStartedEventHandler != null)
     {
         e.Player.TurnStarted -= _TurnStartedEventHandler;
     }
     _TurnStartedEventHandler = null;
 }
예제 #5
0
        internal override void TearDown()
        {
            base.TearDown();

            if (_TurnStartedEventHandler != null && _TurnStartedEventPlayer != null)
            {
                _TurnStartedEventPlayer.TurnStarted -= _TurnStartedEventHandler;
            }
            _TurnStartedEventPlayer  = null;
            _TurnStartedEventHandler = null;
        }
예제 #6
0
        internal override void TearDown()
        {
            base.TearDown();

            _SetAsideCard       = null;
            _SetAsideCardInPlay = null;

            if (_TurnStartedEventHandler != null && _TurnStartedPlayer != null)
            {
                _TurnStartedPlayer.TurnStarted -= _TurnStartedEventHandler;
            }
            _TurnStartedPlayer       = null;
            _TurnStartedEventHandler = null;
        }
예제 #7
0
		internal override void End(Player player, Deck deck)
		{
			// Add back any set aside cards that are still on this
			if (_SetAsideCard != null)
				deck.AddRange(player, new CardCollection() { _SetAsideCard });
			if (_SetAsideCardInPlay != null)
				deck.AddRange(player, new CardCollection() { _SetAsideCardInPlay });
			_SetAsideCard = null;
			_SetAsideCardInPlay = null;

			if (_TurnStartedEventHandler != null && _TurnStartedPlayer != null)
				_TurnStartedPlayer.TurnStarted -= _TurnStartedEventHandler;
			_TurnStartedPlayer = null;
			_TurnStartedEventHandler = null;
		}
예제 #8
0
		public override void Play(Player player)
		{
			base.Play(player);
			if (player.InPlay.Contains(this.PhysicalCard))
			{
				Choice choice = Choice.CreateYesNoChoice("Do you want to set this card aside?", this, player);
				ChoiceResult result = player.MakeChoice(choice);
				if (result.Options[0] == "Yes")
				{
					player.AddCardInto(TypeClass.PrinceSetAside, player.RetrieveCardFrom(DeckLocation.InPlay, this.PhysicalCard));

					if (_TurnStartedEventHandler != null)
						player.TurnStarted -= _TurnStartedEventHandler;
					_TurnStartedPlayer = player;
					_TurnStartedEventHandler = new Player.TurnStartedEventHandler(player_TurnStarted);
					_TurnStartedPlayer.TurnStarted += _TurnStartedEventHandler;

					Choice setAsideChoice = new Choice("Choose a card to set aside", this, player.Hand[c => (c.Category & Cards.Category.Action) == Cards.Category.Action && player._Game.ComputeCost(c) <= new Coin(4)], player, false, 1, 1);
					ChoiceResult setAsideResult = player.MakeChoice(setAsideChoice);
					if (setAsideResult.Cards.Count > 0)
					{
						_SetAsideCard = player.RetrieveCardFrom(DeckLocation.Hand, setAsideResult.Cards[0]);
						player.PlayerMats[TypeClass.PrinceSetAside].Refresh(player);
						player._Game.SendMessage(player, this, this._SetAsideCard);
					}

				}
			}
		}
예제 #9
0
		internal override void TearDown()
		{
			base.TearDown();

			_SetAsideCard = null;
			_SetAsideCardInPlay = null;

			if (_TurnStartedEventHandler != null && _TurnStartedPlayer != null)
				_TurnStartedPlayer.TurnStarted -= _TurnStartedEventHandler;
			_TurnStartedPlayer = null;
			_TurnStartedEventHandler = null;
		}
예제 #10
0
		void player_TurnStarted(object sender, TurnStartedEventArgs e)
		{
			this.PlayDuration(e.Player);
			if (_TurnStartedEventHandler != null)
				e.Player.TurnStarted -= _TurnStartedEventHandler;
			_TurnStartedEventHandler = null;
		}
예제 #11
0
		public override void AddedTo(DeckLocation location, Player player)
		{
			base.AddedTo(location, player);

			switch (location)
			{
				case DeckLocation.Hand:
					if (_AttackHandler != null)
						player.Attacked -= _AttackHandler;

					_AttackHandler = new Player.AttackedEventHandler(player_Attacked);
					player.Attacked += _AttackHandler;
					break;

				case DeckLocation.SetAside:
					if (_TurnStartedEventHandler != null)
						player.TurnStarted -= _TurnStartedEventHandler;
					_TurnStartedEventPlayer = player;
					_TurnStartedEventHandler = new Player.TurnStartedEventHandler(player_TurnStarted);
					_TurnStartedEventPlayer.TurnStarted += _TurnStartedEventHandler;
					break;
			}
		}
예제 #12
0
		internal override void TearDown()
		{
			base.TearDown();

			if (_TurnStartedEventHandler != null && _TurnStartedEventPlayer != null)
				_TurnStartedEventPlayer.TurnStarted -= _TurnStartedEventHandler;
			_TurnStartedEventPlayer = null;
			_TurnStartedEventHandler = null;
		}
예제 #13
0
		void player_TurnStarted(object sender, TurnStartedEventArgs e)
		{
			Player player = sender as Player;

			if (_TurnStartedEventHandler != null && _TurnStartedPlayer != null)
				_TurnStartedPlayer.TurnStarted -= _TurnStartedEventHandler;
			_TurnStartedPlayer = null;
			_TurnStartedEventHandler = null;
		}
예제 #14
0
		internal void player_Action(Player player, ref TurnStartedEventArgs e)
		{
			this.PlayDuration(e.Player);
			if (_TurnStartedEventHandler != null)
				e.Player.TurnStarted -= _TurnStartedEventHandler;
			_TurnStartedPlayer = null;
			_TurnStartedEventHandler = null;
		}
예제 #15
0
		public override void AddedTo(DeckLocation location, Player player)
		{
			base.AddedTo(location, player);
			switch (location)
			{
				case DeckLocation.InPlay:
					this._CanCleanUp = false;
					break;

				case DeckLocation.SetAside:
					if (_TurnStartedEventHandler != null)
						player.TurnStarted -= _TurnStartedEventHandler;
					_TurnStartedPlayer = player;
					_TurnStartedEventHandler = new Player.TurnStartedEventHandler(player_TurnStarted);
					_TurnStartedPlayer.TurnStarted += _TurnStartedEventHandler;
					this._CanCleanUp = true;
					break;

				default:
					this._CanCleanUp = true;
					break;
			}
		}